找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3197|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:
1 y! R  Q4 W: l3 t  O
- W0 [# u6 g* b# A& o2 R7 p1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。& ~0 z* g# b5 s

1 n" @4 W5 p- m6 Y& @' O1 r* P4 K2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~3 o" ^* |- a1 C1 K' k
/ }; s/ {) Q- Q; `, T% Z0 ~
求各位大侠帮忙哈~
/ ?8 G' s! j( l2 I0 `& L3 ~0 {& u# E4 x
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。
( Q% |( j8 ^6 E8 G$ p. v, K) T* ?' }/ s& S
签名.JPG
发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)& D! L4 i- }/ C& a
  (setq osd (getvar "osmode"))
% K! W- R/ c- O+ M2 n8 U) V2 W  (setq pt0 '(142.0 5.0))
, v0 N4 \. H1 l  `: i, s% L  (initget 128)4 _" M9 m5 V6 Y0 A% L: G$ w
  (setq pt (getpoint "\n请选取签名插入点"))
/ K! k* U: H" X$ B; K' `  (if (= pt nil)9 U% S9 A5 I  R% S& d( T! B
      (setq pt pt0)
' A# |$ r. y" r% e  )( E/ w# h: I, g# `# m7 R6 ~
            (setq pt1 (polar pt (/ pi 6) 35))
2 e% X; R: {6 t3 m+ \            (setq pt2 (polar pt1 (/ pi 8) 3))/ g' V6 X. A+ `& ^" ?
            (setq sse (ssget "_c" pt1 pt2)) 0 c+ p: B/ S3 i7 j, j
            (command "erase" sse "")
+ g$ H* |9 i7 v! P; p5 m4 I3 B5 l, @4 [# }9 Y
  (command "insert" "n1" pt "" "" "")
  o) O' k+ @% K6 [  (setq s (getvar "cdate"))& _+ R% o2 D1 `( q- v& V
  (setq rr (- (* s 100000000) (fix (* s 100000000))))
1 @& Y8 a5 m8 [  }  (setq yy (fix (/ s 10000)))
% s" `' r) F7 X' F  (setq mm (fix (/ (- s (* yy 10000)) 100)))3 k" [: o$ X! ?6 |4 ^5 R
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
4 e1 h7 K6 |, Z) |  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))
: P" c& j: U, I0 k3 J) }1 {  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
! e0 c: [& A$ H1 X8 f5 S+ e  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))
; c3 O. I6 X. s. [- D/ ^  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")
4 \+ T; ~( M/ M2 U5 i; ?  i  (setq layer_old (getvar "clayer"))
! u5 c" w  j9 z8 y9 @, T8 o  (setvar "clayer" "text")/ ^, m- V. l0 g( M
  (setvar "osmode" 0)
# g) g, B* Q9 V" t: h9 _  (command "text" p1 2 0 text1)
. `: T' ~3 v; N  (setvar "cecolor" "40")
  z4 M2 O! B# o; j, d( @+ C) a; j  (command "point" p2)
2 _  Q3 i2 u) o+ X7 Y& Y& }  (setvar "cecolor" "bylayer")
9 E9 K2 H2 v, O& ^4 x! |  (setvar "clayer" layer_old)5 G% v% w6 D2 w
  (setvar "osmode" osd)
" j  m9 U5 `6 f% P" D1 p5 [8 s  (princ)
' u3 A8 d7 h0 D- `! G) Y: h)
 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56 ! F% G# J* C6 H* }' g
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
6 i. J5 C& n8 U! z  (setq osd (getvar "osmode"))
2 l3 i+ Y; a/ z; W' x   ...

) p* I1 |, c8 _. }' d/ Y, P感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~
5 `6 }) H- R' V* t4 W  q
 楼主| 发表于 2014-11-12 21:34:01 | 显示全部楼层
还请各位大侠帮帮忙哈~
 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开. @  t2 ]' d' o; t# a
直接用宏命令做的,5 W) Q7 p" [/ Z" s2 n
^C^C-insert KK \1 1 0
5 H+ v+ {: B8 J) x第二个,完全找不到方向~
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-6-18 08:05 , Processed in 0.071303 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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