机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2014-11-12 18:07:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:  g" O7 n) ?* ^. O7 y8 |5 s
" f+ |% _( I% p% r# f/ A
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。% i4 c: @" Q2 C9 O
2 V! A6 ~  Y8 L" l6 N% ?
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~- {  `, R; V& O* z' x9 i

+ s1 o( |, g) d  Q1 }; {) k求各位大侠帮忙哈~9 g3 p# C0 e$ d- o! a' x1 L
回复

使用道具 举报

2#
发表于 2014-11-12 19:52:54 | 只看该作者
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。
" ]& u1 M% i' T/ `2 m: V  {. K) ^4 k+ m
回复 支持 反对

使用道具 举报

3#
发表于 2014-11-12 19:56:26 | 只看该作者
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)9 Z' ~9 B+ @3 C/ j$ c$ o' G
  (setq osd (getvar "osmode"))
( z1 Y% k/ c: `7 |  (setq pt0 '(142.0 5.0))6 Y  l8 \& ~' _! J
  (initget 128)
' m4 G: x3 Y; U9 F% w! D8 Q  (setq pt (getpoint "\n请选取签名插入点"))4 y3 x0 n0 D5 G, M
  (if (= pt nil)# A& k6 O$ y" v! q( f) [7 Y$ z
      (setq pt pt0)6 ?, I' B7 G1 B3 ~7 O8 B
  )
: Q. g% k* S8 n8 u$ R6 ?  E            (setq pt1 (polar pt (/ pi 6) 35))
6 d/ x% e- a" G' q& B( \            (setq pt2 (polar pt1 (/ pi 8) 3))* p0 s6 ?8 a$ M
            (setq sse (ssget "_c" pt1 pt2)) ; B& O+ B2 O" G7 M  m
            (command "erase" sse "")
7 S! I2 G! a" m, M/ V, x
5 [( H, s0 G# i4 a  (command "insert" "n1" pt "" "" ""); v0 p3 t& Y" T+ ?4 \
  (setq s (getvar "cdate"))( ?. S4 z$ F& T5 g  |& D7 ]! n  v
  (setq rr (- (* s 100000000) (fix (* s 100000000))))* e% U9 g# {. o5 I4 Y5 M+ Q
  (setq yy (fix (/ s 10000)))( k* l& t) g* ?/ d  d
  (setq mm (fix (/ (- s (* yy 10000)) 100)))! k1 D- x& @& O
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))$ d* j* q  C) l, K+ \. P
  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))8 H2 ]) K7 j3 f: N$ Y# {& K
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
6 h2 H4 F$ e. E- ~2 |  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))5 W( J3 T4 D* m
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")
: \2 v6 o1 @/ _8 u7 b* u1 r6 P  (setq layer_old (getvar "clayer"))% s, \0 c: t. p# r6 S. d. s, D
  (setvar "clayer" "text")
7 Y0 ~0 e6 g: @/ S7 M8 k1 k! p  (setvar "osmode" 0)
" \' H7 q1 i: k2 p& f1 T  (command "text" p1 2 0 text1)! d, I% {1 G; E- o
  (setvar "cecolor" "40")7 y; Z  m6 K* f  B" f* f
  (command "point" p2)
  s  I3 L: v4 x& K4 j: [  (setvar "cecolor" "bylayer")) L$ ]0 L; a6 P, G
  (setvar "clayer" layer_old)
6 s" p7 \. A8 F! Z7 u0 {  (setvar "osmode" osd)' {+ M! D9 a, Y. d8 S/ X
  (princ)- g  [0 z2 n+ B, D( l. ]/ D
)
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2014-11-12 20:27:18 | 只看该作者
zsdwx 发表于 2014-11-12 19:56 ; p! @: X5 K. B  @' Y6 \5 ?1 @
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)/ g) ?6 E7 p) a& t% X: l
  (setq osd (getvar "osmode"))
  n# B7 f# D' v   ...
$ s, Y# a! j* P) Q6 R
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~% c" }: y- Q. l
回复 支持 反对

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2014-11-13 18:23:07 | 只看该作者
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开- d9 t2 E, x5 D7 C& a* N
直接用宏命令做的,
* y( S1 i# L9 R/ }8 b5 u^C^C-insert KK \1 1 0
# ~3 }: @1 f' D7 p$ B* U. M第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 08:23 , Processed in 0.054337 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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