机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2014-11-12 18:07:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:/ B# q8 U& o0 z( y" ^

' ^/ |0 J9 w1 B8 Q) ]+ N# R. Y1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。/ D) U. v+ f* q* g
* P2 E2 X# S' q9 ^# V
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
( T* B( I5 k, a* D6 D& o3 w! O7 n5 X" e" t6 R
求各位大侠帮忙哈~! k' J4 \9 i: b9 ]: o0 \
回复

使用道具 举报

2#
发表于 2014-11-12 19:52:54 | 只看该作者
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。( ?7 {& R2 R+ t& c
6 |' }5 A! a. f4 b) j
回复 支持 反对

使用道具 举报

3#
发表于 2014-11-12 19:56:26 | 只看该作者
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
: h1 c5 o2 @. D9 M9 _; x  (setq osd (getvar "osmode"))
& m, h5 u" I/ b7 S; H# J  (setq pt0 '(142.0 5.0))
. z3 I  m  ?; d- m  (initget 128)
# L4 Y) \9 `0 ?% \% O8 r4 P$ Y  (setq pt (getpoint "\n请选取签名插入点"))( c% Y" G0 L8 L  y
  (if (= pt nil)% C  F* i1 Q1 ~$ g
      (setq pt pt0)+ F. Z  e. |  }2 M+ J) Z
  )  o1 d2 T$ l( P) X! Y
            (setq pt1 (polar pt (/ pi 6) 35)): G7 Q& h1 S; M3 F3 f8 h1 z
            (setq pt2 (polar pt1 (/ pi 8) 3))
4 ?8 D0 Q& U. [" i            (setq sse (ssget "_c" pt1 pt2)) 2 A$ Z! I- w8 s; \) m" a7 D6 i" B
            (command "erase" sse "")
& I* t. T/ U5 G* ], U# B8 r9 X
: A7 I  \' G0 m+ U  (command "insert" "n1" pt "" "" ""), z0 G7 S7 A6 f6 D
  (setq s (getvar "cdate"))
+ E! A5 I1 C. ^/ |& ?# o) A; C  (setq rr (- (* s 100000000) (fix (* s 100000000))))
. A1 f( Y4 o0 V  (setq yy (fix (/ s 10000)))
3 ?$ W4 i' ^- l& L8 B) p  (setq mm (fix (/ (- s (* yy 10000)) 100)))
5 F. l0 v0 o3 f, X: Y8 d& J3 h  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
( x3 s* H4 y, n/ l9 \  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))# ?# b$ z6 d0 ]1 m* l  z" D
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
- A% f% _3 f/ k. f& G/ z; r: `  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))
; B& F" q; T, h5 g% x1 Q  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" ""); o" I( `7 @# l5 e0 l. V
  (setq layer_old (getvar "clayer")), R7 \  D, V4 m4 Y' G. Z& y7 h
  (setvar "clayer" "text"): E6 S5 q  x) z2 j7 n, H
  (setvar "osmode" 0)
! c! ]  {& t  q# S8 i  (command "text" p1 2 0 text1)
; J$ A  f# k1 y: |" |  (setvar "cecolor" "40")8 l3 V/ L* N5 L' C8 |; h5 f
  (command "point" p2)
& y6 p1 }) C: }0 m0 x  (setvar "cecolor" "bylayer")
7 E: P5 m# R1 b. ^& ^  (setvar "clayer" layer_old). H- b' `6 a* a: k
  (setvar "osmode" osd)7 y2 L- y8 @( o/ a
  (princ)1 U, n' h3 c# B& X" m1 P. ]
)
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2014-11-12 20:27:18 | 只看该作者
zsdwx 发表于 2014-11-12 19:56
7 q, q8 c* r. M3 q3 X(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)+ w9 C0 U6 Q! T. L
  (setq osd (getvar "osmode"))6 R5 ^5 ~$ `" l% Z
   ...
6 ]" u9 q! h: K7 g2 i
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~
* ?1 h0 [" V$ N) p; R! [4 K. f
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2014-11-12 21:34:01 | 只看该作者
还请各位大侠帮帮忙哈~
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2014-11-13 18:23:07 | 只看该作者
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开! |$ L7 z$ P2 X
直接用宏命令做的,8 Q; \) B0 _" i1 r5 p5 O
^C^C-insert KK \1 1 0
# J1 h! f8 V% r" O1 U: l; @第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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