找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3316|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:
- N& r  d; {, `1 D4 s/ ], Z, d2 L# B& P
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。
, a* ]- E9 k8 e6 R' }
- J4 I7 b9 y: h2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~" V2 D: }5 d- E- Q
$ [  g' a* r; r7 h* w8 U
求各位大侠帮忙哈~
! B2 p) [" c) K( j$ E
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。4 }) Q4 D( u1 r7 N9 G* I7 u
4 @4 m5 [6 y9 R4 ~4 n
签名.JPG
发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)9 K. J, ]. x6 }) ^  @' Y
  (setq osd (getvar "osmode"))
: q- n1 C5 ]$ Y' }  (setq pt0 '(142.0 5.0))
# X( U2 z+ x* F! ?# q) a  (initget 128)
9 |" W( g) _' M& X) M5 ~3 k+ f  (setq pt (getpoint "\n请选取签名插入点"))/ o6 r3 o2 z* Q6 k+ ^4 I
  (if (= pt nil)7 Z( A9 f& w( e+ H
      (setq pt pt0)0 @$ _+ F8 Q3 q: j% ~! }1 L* _
  )
( A) @" U, f$ r$ P            (setq pt1 (polar pt (/ pi 6) 35))
- Z) H2 t2 e) G* G            (setq pt2 (polar pt1 (/ pi 8) 3))* c7 p+ }/ m  i/ q2 `. c; L
            (setq sse (ssget "_c" pt1 pt2))
+ A6 O  t) J) H            (command "erase" sse "")( o. Q3 T4 I5 @' K+ i( V

9 e! m' F0 F) B  (command "insert" "n1" pt "" "" "")
, V" n8 U$ W1 W# y" m8 E  (setq s (getvar "cdate"))" X2 o( W; B4 ~2 n- Q* P, e
  (setq rr (- (* s 100000000) (fix (* s 100000000))))
' D$ N! f& I) M: u7 V5 E/ q  C  (setq yy (fix (/ s 10000)))
6 w+ B$ b- s, F8 Z' p  (setq mm (fix (/ (- s (* yy 10000)) 100)))
' W$ J; E* f+ h3 \: C- G3 N0 v  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
3 ]. k( e" w0 q  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))
6 Y7 M, O+ a. }4 r  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
2 x4 j" e* G6 r; I+ \4 Q2 A  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))
6 J/ Y2 u! }4 o3 ]3 h2 G, E8 H  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")
2 u: w; [3 o. B  (setq layer_old (getvar "clayer"))9 ?1 T2 J' h7 Y- c
  (setvar "clayer" "text")
# S, T. r1 x# M2 |' ~3 F8 ~& K  (setvar "osmode" 0)7 f7 B- k9 H' Z
  (command "text" p1 2 0 text1)6 e9 z5 q9 r1 P2 J
  (setvar "cecolor" "40")( {* i; F* H" D- o
  (command "point" p2)
2 s5 c. d: p" H5 s; G1 P1 K, Q  (setvar "cecolor" "bylayer")' ?! U" h7 V% D1 N# v% e
  (setvar "clayer" layer_old)0 V7 R; i2 f' @7 ?4 S4 ~
  (setvar "osmode" osd)
' m- e% k5 U- L# D" U- e, J# j: m  (princ): @5 x5 d) P& V* B- n. j" D* z5 z4 h" Z& h
)
 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56 $ F. H% X/ q/ z. U
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)5 P7 m. M% J  S  s5 g
  (setq osd (getvar "osmode")), G( u2 P3 V2 f  r& u- }9 U
   ...
! W! o. O/ Z3 Y  \1 O$ e, \# [/ K
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~  e7 Z0 }! ]  g+ w
 楼主| 发表于 2014-11-12 21:34:01 | 显示全部楼层
还请各位大侠帮帮忙哈~
 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开1 u% _, _) E* L3 B; \5 M$ e9 h
直接用宏命令做的,
/ f- g6 l& G% h^C^C-insert KK \1 1 0
6 N8 h* c- H5 u2 Z8 f1 v第二个,完全找不到方向~
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-6 03:49 , Processed in 0.070980 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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