机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2990|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:, M! o% i8 W6 p  f; Y

+ ]  f# W; U: w1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。  z( U# C! u- ~! f
, G6 q1 e; i' k  q3 ]; o, v
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
5 B7 ^; g3 b" B4 g( @& x" M* u8 }/ o1 S2 A1 p3 K: p7 `
求各位大侠帮忙哈~
% q- w2 _% v7 r1 B
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。0 Y" D4 y9 V6 y2 t' j
; }( s$ b) c- f8 F1 ]
签名.JPG
回复 支持 反对

使用道具 举报

发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
' [9 o+ k) \9 R- l- Y$ h  (setq osd (getvar "osmode"))
, ^/ ^. i8 b* |8 z6 G" M. N9 u  (setq pt0 '(142.0 5.0))
$ x- X" y% H* a& h* A  (initget 128)5 J" g9 y' T1 C2 ?
  (setq pt (getpoint "\n请选取签名插入点"))
3 Q4 o) M5 i* X" F- @  (if (= pt nil); f6 u4 u# ]8 T, f) H9 {
      (setq pt pt0)
$ B/ R! `/ V; D/ Y/ s: {  )
) u6 y3 s4 G9 @  ^* I; K; d7 I            (setq pt1 (polar pt (/ pi 6) 35))
+ @* X0 w# j( B: y* ?2 r            (setq pt2 (polar pt1 (/ pi 8) 3))$ v! t) O6 A  a( z+ h; f
            (setq sse (ssget "_c" pt1 pt2)) % q9 x3 a+ a. Y7 r
            (command "erase" sse "")
+ R: C' S2 u4 T3 V+ O, K8 Z* h) [
  ^5 I7 R8 [+ @, |# z/ \  (command "insert" "n1" pt "" "" "")
) B# O8 C: j5 Z# ]2 n" L$ l9 X  (setq s (getvar "cdate"))
- P8 j+ _+ G5 X  (setq rr (- (* s 100000000) (fix (* s 100000000))))  X9 o& @* z" l: P
  (setq yy (fix (/ s 10000)))% e" H  J; W; M/ ^" ]+ V
  (setq mm (fix (/ (- s (* yy 10000)) 100)))7 t( h4 _% |$ F6 Y
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100))))); U+ H3 n8 x$ x  M
  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd))); H  @/ d& K' r( \
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))7 N( |( x3 a# Z: L% \
  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))
$ ]/ i5 D/ Z4 z9 y. q  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")* w4 \& b8 }; j) a; z
  (setq layer_old (getvar "clayer"))
* E1 T9 w$ U% I$ r4 t# |- S  (setvar "clayer" "text")
/ A9 W  Q8 Z6 y  (setvar "osmode" 0)# ]# E9 ^/ ^1 x, r0 G% f# B9 @
  (command "text" p1 2 0 text1)
: y% c* a. K0 ]  (setvar "cecolor" "40")5 S5 X/ |, u# T0 i5 J
  (command "point" p2)
; e) P; |# `1 A3 Q) ]  (setvar "cecolor" "bylayer")
: L7 u2 t) J" r& `4 Z  (setvar "clayer" layer_old)
5 O/ ?* E9 L1 ~1 X6 Z  (setvar "osmode" osd)
7 h1 Q# u# O1 c  (princ)* D$ R" v  T. W: X$ B2 c$ o
)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56
# W; T/ x, y3 ]! T2 }5 L(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)9 O. y' c3 L* C
  (setq osd (getvar "osmode"))* m  i7 [* v" x4 u8 W
   ...

  H* O* h: a- y5 [5 e1 c$ x感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~( q3 S4 A/ B7 E4 j9 g, m
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开* P/ |: [% j  n" ~# ?
直接用宏命令做的,* h* b! {/ P# s* X+ {' l
^C^C-insert KK \1 1 0
: y8 T1 [8 x( f2 N) o1 H  z第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:16 , Processed in 0.092474 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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