找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3404|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:
7 S/ l; F8 Z9 ]8 i( p7 v
- W  }6 a5 a) ^1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。/ k0 _7 L# V" t# i% O% I
7 J7 L7 Q! M" E3 z, j5 S% a
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~8 A# R7 L/ s. ~6 C* ]; W# Q

9 a' ?% |0 b1 B2 O& o求各位大侠帮忙哈~2 @6 o  k0 N# I1 n# b
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。
! p" h8 d8 ?9 Z+ E; F# x
+ H& l0 g4 Y4 C; r) L2 e# ? 签名.JPG
发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)1 C8 ^4 u+ E8 r& g" Q4 N+ a5 ]4 l
  (setq osd (getvar "osmode"))
+ g3 x, Z1 V4 r0 ~# `  F( z: ]( n  (setq pt0 '(142.0 5.0))
+ K) z# x, D! W( ]3 h) L& V  (initget 128); Q$ Z* T; J6 O# g5 A8 v
  (setq pt (getpoint "\n请选取签名插入点"))
- u7 k; Y* b- v. W  (if (= pt nil)( o) ~: A  m1 d0 Q- E  K2 |
      (setq pt pt0)
4 w7 }( w& g, D& ^  )
7 K% V& b7 o% \' U/ n3 k            (setq pt1 (polar pt (/ pi 6) 35)); k& k1 y9 f' `1 b
            (setq pt2 (polar pt1 (/ pi 8) 3))
! P& }2 s( M. n3 i6 t6 t# s: |' H5 ?            (setq sse (ssget "_c" pt1 pt2)) 2 B. g7 X8 E* q: ?: i
            (command "erase" sse "")
, B8 x! P) N) _' {# }2 |
3 r5 J& K! }% d! X9 g! N% \$ `  (command "insert" "n1" pt "" "" "")- o* W# y' G- {" |* F: V: Q
  (setq s (getvar "cdate"))
/ G) R/ v0 `: X9 G. r  (setq rr (- (* s 100000000) (fix (* s 100000000))))
  ]) M1 G' W! B: F8 F: C/ q" ~  (setq yy (fix (/ s 10000)))  M( i* _/ Q4 s/ N, b0 T
  (setq mm (fix (/ (- s (* yy 10000)) 100)))
) u- z. X- w* W6 V8 x7 ~  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))) V& i9 x, x7 Y( n
  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))& ?! m; ?: h! P% _/ A
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
7 [, X! z8 j: @, Z$ z" B# r  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))& b& Y* m, c* {! K3 @
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" ""). w5 e* f  ~$ h( o* x
  (setq layer_old (getvar "clayer"))
$ h- `$ S3 O& ]- s' T  (setvar "clayer" "text")8 k9 w2 Q  Y" d, y& o. i1 b/ P
  (setvar "osmode" 0)1 j$ t. a" ], B7 J; I# T3 G# g
  (command "text" p1 2 0 text1)) J# p" r% a2 J7 w) j5 R1 H! |: x
  (setvar "cecolor" "40"), m  q9 t: k4 e1 ]  Y
  (command "point" p2); ]  F+ B0 D0 n& T# `' c% E1 Y
  (setvar "cecolor" "bylayer")
& b2 r: \8 `( l5 z8 z; O  (setvar "clayer" layer_old): ?6 ?5 }9 \# L9 c
  (setvar "osmode" osd)7 P8 e$ a# M7 T/ M! x' o
  (princ)
- ]2 v+ T) a% j% L! L" r4 H1 p! y)
 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56 4 V8 a0 \3 n0 [- {' `- |: C
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr); {+ P0 z$ \( P2 E3 a0 F
  (setq osd (getvar "osmode"))
5 U$ F6 g8 Z$ n6 D   ...

2 F$ C6 h4 q7 U! n感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~, u& ^0 R) Z) ]) ?
 楼主| 发表于 2014-11-12 21:34:01 | 显示全部楼层
还请各位大侠帮帮忙哈~
 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开8 D% a7 z! n3 A0 `7 X5 N
直接用宏命令做的,: `& v1 P- o+ K" h' W1 b* v0 t
^C^C-insert KK \1 1 08 ~8 q3 i( S. }" w$ L7 L1 q4 }
第二个,完全找不到方向~
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-10-26 00:49 , Processed in 0.077060 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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