机械必威体育网址

找回密码
注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2679 | 回复: 5
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2014-11-12 18:07:54 | 只看该作者 | 只看大图 回帖奖励 | 倒序浏览 | 阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:4 ~+ [. p, O# O2 Y' d7 s, u
$ j2 k' X* u! Z7 Y
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。. R, w# c4 a9 K8 v

, `' `8 X l$ F9 y2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~0 E/ h& g' W. X7 @% E- V! y
' F; G. `. b1 w7 e" w' O
求各位大侠帮忙哈~
0 x# O$ i6 d9 a. E) c* s
2#
发表于 2014-11-12 19:52:54 | 只看该作者
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。
! N; V) _ X) o. s% ] n) r1 }* P. a) c y* X
3#
发表于 2014-11-12 19:56:26 | 只看该作者
(defun c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)5 ], e0 P. |/ m$ h
(setq osd (getvar "osmode"))
6 ?# Q( \( j5 G6 e0 D9 J+ k(setq pt0 '(142.0 5.0))
. G$ }4 w$ x7 Q; z7 A(initget 128)9 C( G9 D' K/ l
(setq pt (getpoint "\n请选取签名插入点"))0 A! c {4 l( z6 t& G0 A E
(if (= pt nil)( P: t! c. N: t) `8 k
(setq pt pt0)
3 T) N# L+ t' C7 t- P/ d)
4 @$ w( Y5 c1 h(setq pt1 (polar pt (/ pi 6) 35))! d: E0 X f7 Q f7 H7 x
(setq pt2 (polar pt1 (/ pi 8) 3))- k# a; P! I# a
(setq sse (ssget "_c" pt1 pt2))9 ]- e/ \1 R% S& a
(command "erase" sse "")6 z! b1 `+ Q1 [

\. \ f% X( q% X$ s(command "insert" "n1" pt "" "" "")
/ C3 O( c6 G4 w6 k(setq s (getvar "cdate"))
( K' T1 [4 Y9 R0 Y$ f9 f( e(setq rr (- (* s 100000000) (fix (* s 100000000)))); r2 G. f& O' @+ R0 }9 Q8 H% J' u5 R
(setq yy (fix (/ s 10000)))2 q' B' c. g0 o+ K! C
(setq mm (fix (/ (- s (* yy 10000)) 100)))0 S$ ^5 }% n7 Q: _8 u
(setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
' W. ^* E" b1 ]% a(setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))
5 b/ |) i' Y& J6 u1 k/ M. g(setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))* T, ?7 x) |8 |* [8 ^3 o
(setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))7 A8 V6 H' d" j
(command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")
! n% i3 i! Q- D; b(setq layer_old (getvar "clayer")). ?2 |2 M1 R+ Z% d, g% u
(setvar "clayer" "text")! f& h" L% f, Z( i
(setvar "osmode" 0)3 Y" ^, r) y9 l& b& S6 D
(command "text" p1 2 0 text1)
' a3 l$ O7 C" K4 L(setvar "cecolor" "40")1 R0 M* E, U, n! o9 }+ D
(command "point" p2)7 ?, |2 ^3 F8 h k
(setvar "cecolor" "bylayer")% H/ E$ b( c8 C7 I
(setvar "clayer" layer_old)
( e% F' a$ r) [: r/ k% F(setvar "osmode" osd), O' O4 v2 ^% _: J' T0 f, a
(princ)
9 M- u9 z. P. v3 b& e# ?7 h, t)
4#
楼主 | 发表于 2014-11-12 20:27:18 | 只看该作者
zsdwx 发表于 2014-11-12 19:56 / O2 T/ |6 B p( f" h+ t( h' d
(defun c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
( x, i; b! `! i! e* ?; _) p5 u(setq osd (getvar "osmode")) & d3 t% r- G% E: P' W4 Q& P" s
...
1 J( Z6 |3 K7 C3 v! S
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~; B& S* @% {) O+ R
5#
楼主 | 发表于 2014-11-12 21:34:01 | 只看该作者
还请各位大侠帮帮忙哈~
6#
楼主 | 发表于 2014-11-13 18:23:07 | 只看该作者
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
' x2 G& ]2 z& A/ y4 T直接用宏命令做的,
" ~8 O& y+ s* N7 m$ d* ~) V! w^C^C-insert KK \1 1 0
4 ?- \ k, i+ w5 J1 ~第二个,完全找不到方向~
您需要登录后才可以回帖 登录| 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址(京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号)

GMT+8, 2024-6-12 23:40, Processed in 0.056814 second(s), 22 queries , Gzip On.

Powered byDiscuz!X3.4Licensed

? 2001-2017Comsenz Inc.

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