机械必威体育网址

找回密码
注册会员

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2014-11-12 18:07:54 | 只看该作者 | 只看大图 回帖奖励 | 倒序浏览 | 阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:
6 \) P+ \) |* F! v- h( e/ r
" j; d7 S& f, f1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。
3 H# G, X% P' r& |; H* E, L6 ^/ r/ C4 q) {$ W3 [
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
+ W9 t# N- j% i2 N" I6 C
! E+ ?% V2 V7 X3 Q3 a; Z/ Z求各位大侠帮忙哈~n# i4 ]; I5 H! |4 T
2#
发表于 2014-11-12 19:52:54 | 只看该作者
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。
% }4 f: q& h' |" l# Q6 F ?
& N. w0 }6 C. W) J' S( C- y
3#
发表于 2014-11-12 19:56:26 | 只看该作者
(defun c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr), H0 t/ w5 A* s4 I' t5 V
(setq osd (getvar "osmode"))3 c- [' x2 q1 s( Y6 D6 E! B$ K
(setq pt0 '(142.0 5.0))8 L( R2 P/ ~# y8 s3 b5 C; L
(initget 128)
8 v- L( G2 d+ p& f5 r: n(setq pt (getpoint "\n请选取签名插入点"))* E. z2 @; u1 Q$ C$ q8 b; u
(if (= pt nil), g* z! S4 s7 P0 P( J# P/ i
(setq pt pt0)6 B7 h8 B5 a5 D, x _
)b( W* D; O/ I: D8 W
(setq pt1 (polar pt (/ pi 6) 35))
- {. K# J( u1 Z6 M! j6 e9 t& I(setq pt2 (polar pt1 (/ pi 8) 3))
2 S1 }, L3 e; J6 U1 G& c(setq sse (ssget "_c" pt1 pt2))
/ N5 L1 ^$ V( ]1 P# g+ P0 @4 Q(command "erase" sse "")
( j: R& x" W# Z/ ?* T1 C
/ \/ ^* |( p8 g6 M3 g! P( W( J(command "insert" "n1" pt "" "" "")
& u( V' \. g* M+ ~1 g(setq s (getvar "cdate"))
7 W1 @# q" |0 F(setq rr (- (* s 100000000) (fix (* s 100000000))))9 J7 j. Q3 C! T7 |6 t
(setq yy (fix (/ s 10000)))# n% B( D" F4 r5 `) `
(setq mm (fix (/ (- s (* yy 10000)) 100))), _7 C* W- ^4 E; M8 U) I. _8 r
(setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))) L: [& t4 t" j" Z. H! `6 U8 U
(setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))6 T# J9 o8 s3 ^% \" a
(setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0)), _5 E$ l4 C6 P3 Q- {
(setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))
. L2 M+ z- ~& b6 S(command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")+ _! }7 r5 {; J. C$ E" _2 b
(setq layer_old (getvar "clayer"))
0 c& ]. s+ E% n7 A# _' M c, W/ U& m(setvar "clayer" "text")
# L* J `9 j5 N& z& g) N(setvar "osmode" 0)% p9 O$ t2 n5 u# s0 f4 Q
(command "text" p1 2 0 text1)5 ?% v$ h# f/ o! w: f/ I2 g- Z+ `
(setvar "cecolor" "40")# W2 J; L3 N: n* L
(command "point" p2); e* g3 [2 o+ `4 N8 s* t: r0 T
(setvar "cecolor" "bylayer"): J K1 F" r+ Y2 c$ M' Y
(setvar "clayer" layer_old). M* v& l9 d" \- e% R2 w+ G: w: w
(setvar "osmode" osd)
6 u, ?% {+ s g8 f1 z/ f(princ)
) j. K+ L8 K. l: N6 j7 y)
4#
楼主 | 发表于 2014-11-12 20:27:18 | 只看该作者
zsdwx 发表于 2014-11-12 19:56 ) f. c9 I; }- W% n5 p0 r
(defun c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
2 r( }; P" o, W(setq osd (getvar "osmode"))
6 G7 y, T- t# Z0 d...

- p; l" R7 q5 G5 z; N3 `感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~# _# E4 g8 S! L; x. G: }5 F3 U
5#
楼主 | 发表于 2014-11-12 21:34:01 | 只看该作者
还请各位大侠帮帮忙哈~
6#
楼主 | 发表于 2014-11-13 18:23:07 | 只看该作者
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开; a* K9 }- @$ J% q! z- m o
直接用宏命令做的,
3 t1 q0 T7 l; ?4 L^C^C-insert KK \1 1 0+ c3 p! g) c+ w8 \, J
第二个,完全找不到方向~
您需要登录后才可以回帖 登录| 注册会员

本版积分规则

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

GMT+8, 2024-6-9 12:30, Processed in 0.062205 second(s), 22 queries , Gzip On.

Powered byDiscuz!X3.4Licensed

? 2001-2017Comsenz Inc.

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