找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3329|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:8 g% s& G- [9 w9 B( ~( ^4 L
& O* R# ?) V& j% z5 t9 o
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。
% @) N* y+ d' i$ t& z+ t
2 o" @3 y3 E# ^( @% N- _$ j2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~) @+ ?. @, T+ ?4 Y$ f% e5 T4 O

+ J+ t. q7 U# V0 T  |; k8 S  b. c/ e求各位大侠帮忙哈~
5 ?/ D& _9 Y9 k0 }
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。5 Z7 o- ~/ X2 C4 ^! C) \$ ]

" d# b& ^* F) M$ t, q 签名.JPG
发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)/ K6 h. E. _; q
  (setq osd (getvar "osmode"))) |0 G& t  f. p# Z0 c8 Z
  (setq pt0 '(142.0 5.0))# r3 x5 |# q3 f: z, N3 @, O: y: q
  (initget 128)( c' m* F4 n& u9 N3 A
  (setq pt (getpoint "\n请选取签名插入点"))' M8 R6 [/ Z/ T6 `+ I
  (if (= pt nil)' z+ N3 A9 F% X( Z. _. s7 t
      (setq pt pt0)$ m. V+ x  x, k$ u3 K. p) b9 }
  )
9 `( Y( `5 J, F/ G8 P            (setq pt1 (polar pt (/ pi 6) 35)), p8 @7 H6 p' a9 Z! \3 `7 H
            (setq pt2 (polar pt1 (/ pi 8) 3))0 J  ], b7 ~9 ?# C! b; \  z' H$ W
            (setq sse (ssget "_c" pt1 pt2))
% g, Q4 }3 C& O8 |# O            (command "erase" sse "")) s0 e- i( ?& d, R

* P, y% h+ o4 t# w6 Z  (command "insert" "n1" pt "" "" "")0 R. o' H! J9 n: z3 J3 g/ [  A, ~
  (setq s (getvar "cdate"))
8 j/ v. |5 N  |. U9 X  (setq rr (- (* s 100000000) (fix (* s 100000000))))
+ o5 _# s* y- z# }% g  (setq yy (fix (/ s 10000)))
* M- Z8 _2 \4 j8 q  (setq mm (fix (/ (- s (* yy 10000)) 100)))
7 T) P9 S+ t' T1 j  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
2 Q' p4 u- l# d+ n  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))
3 z( o" I. {8 `. b( r1 B# a  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))9 I% W1 h1 f+ I9 [2 ^
  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))
& o. u% f0 ]. W+ ^) o  l! ^: u) z  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")7 B! r% V3 I7 ?
  (setq layer_old (getvar "clayer"))9 |' A# [  t1 t. r- S2 R
  (setvar "clayer" "text")
, Q" g* s/ b3 e. c3 R* k& ^  (setvar "osmode" 0)
& M2 b- x* e- ^  (command "text" p1 2 0 text1)
8 O% i1 ^$ b$ t2 }5 E8 _" Y* d4 a/ C  (setvar "cecolor" "40")
# E+ w. g4 {% j! m; V  (command "point" p2)
' ^& W  J0 a7 k4 u  (setvar "cecolor" "bylayer")* O) `$ s, M  ?2 X' A- {
  (setvar "clayer" layer_old)
: M0 A! }) N0 V  (setvar "osmode" osd)0 o( G- h! ?4 T
  (princ)
* F; u$ N  {5 q  a)
 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56
5 \- A( j7 E) r(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)1 Z: N! y9 Q; Z/ M* W  A4 q
  (setq osd (getvar "osmode"))8 e/ |# U: C* H6 m9 p
   ...
* z4 K( p' N% u# y* l, u
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~; _, {1 o. K# Z3 U5 g3 R: h" c* Y
 楼主| 发表于 2014-11-12 21:34:01 | 显示全部楼层
还请各位大侠帮帮忙哈~
 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开6 K! S4 a! m9 j1 E# \. w
直接用宏命令做的,7 N2 x, i( ?. N& V
^C^C-insert KK \1 1 00 w$ c0 S2 I# _; w4 p
第二个,完全找不到方向~
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-18 12:25 , Processed in 0.071899 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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