找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3231|回复: 5

刚开始学习autocad的VBA,请大侠帮帮忙~

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:
6 M3 N. Z  t8 G$ W) m, L$ z/ U2 j3 I
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。
* C9 V) a+ `% M# W7 {$ P) v8 s5 C0 a" |/ b) n( H
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
+ x6 {+ z. D6 j7 n/ {3 f* W
8 X/ R' o1 [; O* ~/ \( p求各位大侠帮忙哈~
. g4 j# Z5 `3 o$ q
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。1 X4 s! m; _6 E8 _: s" k

% p& F8 i/ @* x3 F# y" u, R 签名.JPG
发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)7 a. P  H6 w7 q( y- C6 c. z- N
  (setq osd (getvar "osmode"))
% x, Q/ X- D5 X( L+ }  (setq pt0 '(142.0 5.0))2 z2 V, [3 y9 |; E2 n; {
  (initget 128)
4 E  r' Q7 Y9 o# x8 J$ @/ ~% g  (setq pt (getpoint "\n请选取签名插入点"))
2 A( _7 n. b6 ~; @  (if (= pt nil)5 j& L* h6 Q  h* |
      (setq pt pt0)
% N& _; q/ S: o: J/ Q: J4 s0 F6 u  )
; [, q5 d7 {+ x2 l6 V            (setq pt1 (polar pt (/ pi 6) 35))5 d! P$ w( a& y" Y! D7 ]& r7 ^
            (setq pt2 (polar pt1 (/ pi 8) 3))
3 ^( c4 P/ m4 J; n7 R3 M8 p            (setq sse (ssget "_c" pt1 pt2)) 7 m* K3 O) g8 [( r0 @8 H. n0 A
            (command "erase" sse "")  e2 V7 `8 }- x, `
0 g; m: P5 I8 u* A% X- q$ E  G* N
  (command "insert" "n1" pt "" "" "")
$ ^( q" W0 R5 G' i  (setq s (getvar "cdate"))
4 s+ W1 }! }6 {  (setq rr (- (* s 100000000) (fix (* s 100000000))))* \; w2 w: b! m/ \
  (setq yy (fix (/ s 10000))). p! T2 h$ G5 G0 }1 ^
  (setq mm (fix (/ (- s (* yy 10000)) 100)))- q  Z( ~, p9 b$ X3 x0 n0 r
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))2 _# O/ N3 ?$ \
  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))
( ]" f: _9 T+ P; P3 H3 [  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
% o2 [  f( ^. ]2 y. E) N# l( ]# z3 H  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))1 l$ z- ^5 e0 Z3 x/ q
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")7 r/ a3 y; D6 e( A( E
  (setq layer_old (getvar "clayer"))4 S) i* K. V9 _! l& m# M
  (setvar "clayer" "text")
7 g& _# ?) o/ @- i  (setvar "osmode" 0)
/ S# k' K' p2 @5 ~5 d  {& U  (command "text" p1 2 0 text1)
4 F; C" n6 i+ F3 R8 {  C  (setvar "cecolor" "40")
3 v( ^- G9 p6 M  v% }" |% ?5 u- p  (command "point" p2)
8 n' d  g# s% m: X* g  (setvar "cecolor" "bylayer")  G) m- S5 B3 P" _) o3 _; I( I3 Z. _
  (setvar "clayer" layer_old)
. q, m, I. e, u9 T$ r% H  (setvar "osmode" osd)
3 w: d& z" p7 @  (princ)
9 h. q+ d' U0 R# y: l)
 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56
. P( e& `  x% @" M; Q(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr): i9 r2 N% L# E" \9 w
  (setq osd (getvar "osmode"))
2 _2 I8 K) {% b+ V& W1 c5 ~   ...
" ~4 K; c% ?* y4 B, p
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~* P4 d, U1 B& U- ^. u0 ^4 n
 楼主| 发表于 2014-11-12 21:34:01 | 显示全部楼层
还请各位大侠帮帮忙哈~
 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开. |" ^& @* u8 v% F5 [# u
直接用宏命令做的,9 T6 v% [5 I& v! A6 M
^C^C-insert KK \1 1 03 m$ T1 m# x8 W4 Y7 H8 v" o
第二个,完全找不到方向~
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-7-9 13:50 , Processed in 0.069571 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表