机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2014-11-12 18:07:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:
# r* a% A0 T8 E! ~6 ]( T4 [  s* F5 ^0 D& X6 S9 P7 ?
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。0 `) @  ^8 H9 p9 k- X
& W: u, l$ `8 S
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
0 C0 D" j6 B6 W2 \9 U; v! ^6 _! J
3 g9 i& t! o' A3 x' O求各位大侠帮忙哈~+ |: b0 X6 i$ g3 d+ N
回复

使用道具 举报

2#
发表于 2014-11-12 19:52:54 | 只看该作者
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。0 X/ W7 }$ B/ h
4 f1 Z: S0 `6 u) ~9 F* F& a
回复 支持 反对

使用道具 举报

3#
发表于 2014-11-12 19:56:26 | 只看该作者
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
- X. L& ?1 P' x9 H, G. G# ]  (setq osd (getvar "osmode"))9 h& y+ b9 _% k
  (setq pt0 '(142.0 5.0))
$ s: u) O4 V1 {9 C# t! q7 C8 V  (initget 128)
3 _+ q9 M' ?; P  (setq pt (getpoint "\n请选取签名插入点"))
4 T5 ?! P1 B0 t, m8 ?  (if (= pt nil)
0 y8 x& \" W) [* K2 G( Z7 d8 D      (setq pt pt0)3 D4 i, a' `0 g! x1 E
  )4 o  ]! U% m9 ]0 E  Z. _
            (setq pt1 (polar pt (/ pi 6) 35))
: l! G/ [6 M' C1 {( N1 c            (setq pt2 (polar pt1 (/ pi 8) 3))3 v0 l& v2 j$ @7 B* W
            (setq sse (ssget "_c" pt1 pt2))
1 b- w) u) q9 U) g5 h" C5 c* q            (command "erase" sse "")
8 |" h- s6 z1 O: d' G
2 C! N' D/ t# P6 x1 M" {  (command "insert" "n1" pt "" "" "")
: S. A/ M+ A) y& n4 P  (setq s (getvar "cdate"))
+ v" r% a4 u) q/ b8 L; a7 r+ i  (setq rr (- (* s 100000000) (fix (* s 100000000))))
, k7 Y. L) z  Z# x  (setq yy (fix (/ s 10000)))' e1 g3 v. n' q: ^
  (setq mm (fix (/ (- s (* yy 10000)) 100)))
" ]/ o* c9 F* e% T  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))1 I+ q, ~9 z: M! H6 a8 _$ ?3 N
  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))
$ R# U: ?6 @  x' x6 W/ b  p  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))6 v& m5 |# P& k* p2 M
  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))2 Z# Q' W) A5 F& K$ p- _' K% s
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")1 Z/ @) w0 }" \% L* j
  (setq layer_old (getvar "clayer"))
/ Y8 u8 p) u3 T' f: ^; l4 j  (setvar "clayer" "text")* i+ P3 i9 j5 ^6 q) N0 s
  (setvar "osmode" 0)3 |* r& f3 b/ T3 S' L
  (command "text" p1 2 0 text1)
' b; @  }/ R# q8 W' ], ]  (setvar "cecolor" "40")* m9 s& Y- T3 {# m; o# D
  (command "point" p2)2 c4 H$ R1 g' f% X$ O
  (setvar "cecolor" "bylayer")
! m+ E# o5 T" q  (setvar "clayer" layer_old)
! q7 P5 j$ G. w( r/ A( g' I! T  (setvar "osmode" osd)
9 h9 Q7 R- C, I8 H* }2 w  (princ)
$ r+ Y& M+ H  ^1 E2 R: a. k)
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2014-11-12 20:27:18 | 只看该作者
zsdwx 发表于 2014-11-12 19:56 " R6 u* B- U* c5 f# x
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)/ w! V: j+ R( X! J
  (setq osd (getvar "osmode")), q* w' `( A% }/ L5 T
   ...

. P$ R- O  x& T1 Y感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~
' e) N, A& r! k+ K8 h2 N
回复 支持 反对

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2014-11-13 18:23:07 | 只看该作者
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
1 t+ U3 F+ \" B% T% ]直接用宏命令做的,
2 n6 C6 v1 P; z& P9 Y% v' ~^C^C-insert KK \1 1 0; z) f# W* ]3 O# p& d
第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 09:05 , Processed in 0.054961 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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