找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3315|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:) V8 ~' H% k) }( k& p

0 g$ B+ D% Y: ~; L0 P  c1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。
% o) _. m) o5 Y' ~
- y% w" R( |1 I- j  I4 x2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
; g* Q# y: R* r8 L! \  O/ J
) d) A' J% w9 |/ A- L( i. I5 @求各位大侠帮忙哈~
! c" b; e( U& b: N
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。! T* l/ z7 G% E4 ?$ k1 E. [$ A7 g& i( m
! H4 v/ ~  E% b' j; g6 C. S: p! Y, p
签名.JPG
发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
  M1 N; G: v9 F: D2 \" f! u. n  (setq osd (getvar "osmode")): V% F5 ]2 q  r- v6 [5 e$ o' @/ C
  (setq pt0 '(142.0 5.0))  }) A) S/ k; `" \
  (initget 128)
1 ]& H0 Z3 l. W( D% R6 `+ p  (setq pt (getpoint "\n请选取签名插入点"))1 Y+ l" @! l& s* }' w& K
  (if (= pt nil)
. v) [" ~2 }3 h9 P" l! C7 o      (setq pt pt0)# [& ^# g' O3 h8 F+ x9 X, c! R  o
  )
9 N* w6 d2 |( t+ B            (setq pt1 (polar pt (/ pi 6) 35))
9 ]8 j& ~7 u: ?/ e. a5 C+ T' J4 x            (setq pt2 (polar pt1 (/ pi 8) 3))
1 i6 r; L( l5 F2 }5 A6 r            (setq sse (ssget "_c" pt1 pt2)) ! ^" H% K7 i- ^3 K; u, G
            (command "erase" sse "")( b+ q6 F; F2 H, {; L4 D

5 H3 F. N# b1 b) Q0 C  (command "insert" "n1" pt "" "" "")2 f0 ~, D  ?0 d) t4 i
  (setq s (getvar "cdate"))
+ ]9 \( }6 z7 n# K! K. V  (setq rr (- (* s 100000000) (fix (* s 100000000))))& Y, R0 n5 \& C' s$ ]+ y* L( v; L5 ~. `
  (setq yy (fix (/ s 10000)))1 x3 g' c  f# K1 m" }* p" o
  (setq mm (fix (/ (- s (* yy 10000)) 100)))8 _# G7 W# X/ u5 p
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
$ G8 C5 A4 g1 p6 p6 q% G( j. z* }, D  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))1 n- w/ n! \3 c# ?. Y& c9 d3 }
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
$ L8 S0 R) n' d' C6 t3 K. C2 n, h4 H  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))2 z6 W- L* H3 {4 B
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")- L' \  h# z3 c( C% B. f
  (setq layer_old (getvar "clayer"))
4 [5 t; Z/ Q& W/ P  (setvar "clayer" "text")( y2 |; _1 o" p
  (setvar "osmode" 0)
7 t& _( A# o+ r" a4 [& O. a+ R  (command "text" p1 2 0 text1)
; j& r) c& s- f# U7 m  (setvar "cecolor" "40")
$ y, [) J4 v* j# e9 V  (command "point" p2)8 H1 ]+ I* c% |/ ?6 S- J
  (setvar "cecolor" "bylayer")% v$ O. `5 L- i- b- X# G
  (setvar "clayer" layer_old)) |: ^' {8 U6 G8 x) l" K6 @
  (setvar "osmode" osd)$ Y9 Q' A7 f* Z
  (princ)
# k4 \8 R0 f" R$ D  ~)
 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56
9 @- G: d4 s, b5 }# P5 Q: \(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)& ]% l: w- f2 _, y7 K* j+ D
  (setq osd (getvar "osmode"))( s. B# J! }% U* F3 N$ y
   ...
# y" V6 e/ c. ]9 W  Q0 r0 s7 @
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~
/ ~0 u  I: K9 q, Q/ `5 u) z
 楼主| 发表于 2014-11-12 21:34:01 | 显示全部楼层
还请各位大侠帮帮忙哈~
 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
2 H: g) N' \' z3 n% n0 s直接用宏命令做的,
8 ~0 f! D2 c- m' N) M3 ^^C^C-insert KK \1 1 0
3 u4 ^1 ^7 {' u% |: x# n% {) p) p第二个,完全找不到方向~
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-6 02:20 , Processed in 0.081788 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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