机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2588|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:1 O/ n: p* n, {+ C: Y4 x; Y

+ P# s  W+ m* x2 r4 R& d, }6 Y0 o1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。
0 Q* N9 b% ^, `' @7 D1 f; f: E# f4 _
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
) |6 Q+ w  T8 {* S2 {7 B$ o3 H& X, t# M1 c& O7 F8 ^
求各位大侠帮忙哈~( S# @4 H/ s( k! j$ a
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。6 l, M/ h5 z( x: m+ ~. A+ ]
3 Z9 T5 L; N- `3 E$ @; c! ]" k4 u
签名.JPG
回复 支持 反对

使用道具 举报

发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
$ {  v6 u$ v5 q* s0 y+ ^: X7 r9 S* t  (setq osd (getvar "osmode"))0 X' Q( Z( q& E5 c7 f2 u. u
  (setq pt0 '(142.0 5.0))  c; R' V0 I8 S: c5 U
  (initget 128)
) G4 n. a: a1 [6 V  (setq pt (getpoint "\n请选取签名插入点"))7 ?$ f/ ~5 _! s, I& M
  (if (= pt nil)8 X! r* i2 f' x' ?5 N; b
      (setq pt pt0)
9 k, A+ H3 X+ R3 X  )
/ i+ a8 J! x1 q/ _8 s3 S& b8 t            (setq pt1 (polar pt (/ pi 6) 35)), e9 j' B+ `! j0 H, H9 ]. ]
            (setq pt2 (polar pt1 (/ pi 8) 3))
# M! |. U% c- V4 D            (setq sse (ssget "_c" pt1 pt2)) / s8 w/ V1 z. g. F/ F8 G3 F
            (command "erase" sse "")
; Y2 \8 C5 q) I1 Y8 K% L. y; z
5 F* j. z; D8 y2 [  (command "insert" "n1" pt "" "" "")
: Y1 |1 h5 E  [/ g3 r- U" |: p  (setq s (getvar "cdate"))
+ p) W6 q( [5 S" S! ?0 W  (setq rr (- (* s 100000000) (fix (* s 100000000))))
# L) N4 U; s. \  (setq yy (fix (/ s 10000))). a4 P* n! j! ]. [
  (setq mm (fix (/ (- s (* yy 10000)) 100)))0 S" x: F1 t* r! O: |. E9 ^2 R) i
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))  O; ]9 t$ F9 d6 I
  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))2 v* e  T0 _  c* m3 |% }+ n5 H, p" s
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
- x2 F! G+ I3 C( f0 @' l  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))
* V  J% h$ M: D) E  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")
0 ^( {3 ?. Z( _  k( q& a, n* j  (setq layer_old (getvar "clayer"))6 M( _6 {. O$ o3 f
  (setvar "clayer" "text")# u4 N: X7 U* u8 R5 Y# _
  (setvar "osmode" 0)
) ]' n& R- k6 N0 M: P  (command "text" p1 2 0 text1)
# Q/ t/ J' `' _% x6 s3 F' A0 x# M  (setvar "cecolor" "40")
: \) h" l2 C" K1 f9 U4 F; m  (command "point" p2)' b/ `! o; ^2 C0 i% l, k
  (setvar "cecolor" "bylayer")( U( ]1 F5 P# T( A# G( a3 q
  (setvar "clayer" layer_old)
: a9 B, \; l$ G8 a  (setvar "osmode" osd)" h/ u7 m" B) b, h( m7 ^+ z
  (princ)$ ~; a+ F7 s/ u# ~$ V
)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56
( w$ Y6 C8 X7 \9 e, z(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)0 d( J% Q7 M0 T, _7 C  V, B7 s& n) y
  (setq osd (getvar "osmode")), P; b0 s9 K7 f: w' Q$ `
   ...

8 b* d( y8 j6 `6 l" Y/ L- U感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~7 A+ h7 B" s; n' z& y
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
: {+ S* M5 l# U& |* x& G/ c, r直接用宏命令做的,
! E7 @! @( j* Z^C^C-insert KK \1 1 0
: Q0 [* v2 ?* J* {- M2 S第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 05:59 , Processed in 0.065836 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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