机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3088|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:! _* y( Y& }4 X: G5 ~
  P  L# M" @0 v9 D, j
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。1 }1 \8 c) S8 U0 w4 W( ^
$ i6 K# T! Q) I1 R
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
# I, ~1 G  x8 v% \9 s8 F. T+ E9 f" x0 a+ ]/ p( h' p9 ^
求各位大侠帮忙哈~* X5 `# s: [0 W* D7 b# M" v( e1 c
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。- n' {4 i6 {$ l( @0 ?0 t  X

: l" _9 }4 z7 E% l 签名.JPG
回复 支持 反对

使用道具 举报

发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)0 H) u+ K! K4 \/ s* T! A+ b
  (setq osd (getvar "osmode"))
, e$ n# R1 _4 V, x8 @  (setq pt0 '(142.0 5.0))
9 m4 Q6 L# V7 x/ d" N" I% @  (initget 128)
: i2 H4 o( i" U/ f, P- e7 s  (setq pt (getpoint "\n请选取签名插入点"))* A: w' \1 t$ X, A/ M! Z
  (if (= pt nil)3 U- f( f) V/ k3 }" X
      (setq pt pt0)
" S' N$ J% o$ V' M% Y# w  )( W5 ^& w0 n' N5 ^# ^' z  L
            (setq pt1 (polar pt (/ pi 6) 35)); e. P( V4 k1 J- {
            (setq pt2 (polar pt1 (/ pi 8) 3)): b! K; ^. V, h, J$ h1 F
            (setq sse (ssget "_c" pt1 pt2))
$ z9 [* i) t8 J9 B9 J            (command "erase" sse "")
* Y4 b" ]# j4 H! b0 _1 J6 V) h0 J0 T/ |5 u7 a( b3 N
  (command "insert" "n1" pt "" "" "")2 M! x! c0 i) e
  (setq s (getvar "cdate"))) f  g+ o+ Y4 Y+ @0 ~
  (setq rr (- (* s 100000000) (fix (* s 100000000))))3 j5 p3 p, X3 A' c
  (setq yy (fix (/ s 10000)))! m$ T) h# _+ e# f5 u/ P
  (setq mm (fix (/ (- s (* yy 10000)) 100)))7 i6 T: j5 r1 l1 x9 [; O
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
, Y8 J% ?" }* b) @$ @  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))% z: u& A1 y/ Z. \, i
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
7 G# ^/ Z- H& @: O* R, A$ J7 V' v- i  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))
+ W, i, q7 Q% n2 Y  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" ""), c: V: ?+ R& V, X7 D0 Y
  (setq layer_old (getvar "clayer"))
% t' P8 z) Y! O2 ~' g4 o  (setvar "clayer" "text")7 A  ?1 S8 j0 f$ ^: V# T4 G
  (setvar "osmode" 0). A- y6 D1 k6 r. t8 P) p
  (command "text" p1 2 0 text1). f. ]1 C7 t3 U  x7 S" J
  (setvar "cecolor" "40")
7 \+ p& c4 `. n2 F1 ]1 g  (command "point" p2)
" t' T9 y/ w. P  (setvar "cecolor" "bylayer")1 R% Y8 c/ k* Y+ |; J0 |
  (setvar "clayer" layer_old)2 [" v9 ]' L; o8 A
  (setvar "osmode" osd)
* w9 _* g( a0 c0 D, k) x  (princ)9 ]# y: T' G  a& L
)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56
2 H  P; ]4 F+ y; u6 D(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
) M- P1 K1 x. ^  (setq osd (getvar "osmode"))& v: ]9 N1 z3 f
   ...

0 i9 L1 L4 d8 Y0 A  `感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~
, }. A5 N9 V; D/ u6 r6 |
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-12 21:34:01 | 显示全部楼层
还请各位大侠帮帮忙哈~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
5 v$ h" W" Y4 @  J$ s直接用宏命令做的,
! u. f$ B8 o3 [* A^C^C-insert KK \1 1 0
" h) n% {# G0 |% ]" Y7 a第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-5-2 08:59 , Processed in 0.091701 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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