机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2876|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:
, X  k8 y& d$ o2 O+ _
! i6 h! }6 E! `: i  W# h$ b1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。/ r: [& W. P+ e, Q; A
8 }9 }* a) X: j# R2 V
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~" f5 w9 ^1 a# a# F5 r, ~  J/ p
) k- J3 C, g! H% O* g6 m
求各位大侠帮忙哈~% Y5 g! S" m* D/ V; s* U
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。
' r& [* ~. o; g4 b& A0 u. S2 {$ q5 A
+ z+ i- s/ L6 T9 F7 B3 Y 签名.JPG
回复 支持 反对

使用道具 举报

发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr); C3 Z+ `1 `* V2 ~1 j
  (setq osd (getvar "osmode"))
& _2 V+ m6 _2 G4 A# m: O  (setq pt0 '(142.0 5.0))' ^' ]0 Q6 G8 ^& z
  (initget 128)  w; x7 i5 v1 M- d' E) x
  (setq pt (getpoint "\n请选取签名插入点"))
5 L) f$ v- l- e7 t0 i  (if (= pt nil)$ \% l( U2 n. ^, \; J, l
      (setq pt pt0)
1 }  u8 U5 t7 q9 K3 m. A  )
2 z# j; a% Q& v% C4 J2 n' s            (setq pt1 (polar pt (/ pi 6) 35))
2 r3 I. ?: l/ D            (setq pt2 (polar pt1 (/ pi 8) 3))
" [1 m  J$ T, ?  n' }            (setq sse (ssget "_c" pt1 pt2)) : T3 v. J  L2 s- X
            (command "erase" sse "")
5 e: l3 e( w  I# k, \5 k# w0 M& P# W+ U
  (command "insert" "n1" pt "" "" "")
4 V( d/ H6 B, P0 }0 t  (setq s (getvar "cdate"))( }/ E9 L' b) P/ O6 ?& K
  (setq rr (- (* s 100000000) (fix (* s 100000000))))
  `  ?: _% f: @, g: C  (setq yy (fix (/ s 10000)))' N  P  ^) M5 c" X# o; d
  (setq mm (fix (/ (- s (* yy 10000)) 100)))
# Y: x. W* F' m4 K8 s" T. S* Q0 _  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
+ l/ K- i+ k  o+ b  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))
0 z% w" Q6 O  k5 r8 v6 M+ u) B6 I' O  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
/ j( y; ^: B# A  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))5 n4 b2 q$ h0 z. U8 N: q
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")0 W8 a, _/ w' d6 A4 N, R, r
  (setq layer_old (getvar "clayer"))
. u/ @. p+ b: \' c8 z9 ^7 I  e  (setvar "clayer" "text")+ ]! e8 }3 \! E9 ^0 f
  (setvar "osmode" 0)
4 l/ V% H; q* r5 d5 W: j: [  (command "text" p1 2 0 text1)
) Y4 W5 b  l- j- \6 D  (setvar "cecolor" "40")
( w& G8 c' U" O; m. X. e* a3 f, d* w  (command "point" p2)
# N; Z! j* z: N* _  (setvar "cecolor" "bylayer")
" x8 ]: y- f% h/ |( U# g6 E2 I  (setvar "clayer" layer_old)
# F% u; D" z% \& F, U0 T  (setvar "osmode" osd)
; t/ t3 \# h2 L9 p( Y2 V2 L. k  (princ)8 G) K6 V. V+ n/ Z
)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56 ; c9 h5 A; u& i. |4 T
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
6 c: e! Q# y3 a! y7 B! x& J  (setq osd (getvar "osmode"))
, G/ M# \0 a! _  z4 U   ...

2 c! G% k1 m4 K感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~
' r8 |; |2 z2 H0 V  q* I$ h
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
  t+ n  t6 F/ T6 A直接用宏命令做的,1 H  w3 p9 J" R  V
^C^C-insert KK \1 1 09 j. Z6 f0 f$ N, [  ?. q
第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 14:00 , Processed in 0.058997 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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