机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2014-11-12 18:07:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:
0 ~9 Y9 ?, P6 Z5 D# b& d- c4 Z. \" T8 ^  n; h1 d
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。" j$ t& d+ C4 O4 I4 l& u

( o/ ~. M- R4 @9 g5 k- N/ j4 D2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
* h$ J5 P: p" \: n2 f' F5 L8 U" u+ Q+ Z
求各位大侠帮忙哈~
$ b  g/ i2 Z- _; Y6 @# l$ _
回复

使用道具 举报

2#
发表于 2014-11-12 19:52:54 | 只看该作者
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。
/ _8 w# z' b  m, T  e6 |3 J6 m5 R+ p$ h% [& ^
回复 支持 反对

使用道具 举报

3#
发表于 2014-11-12 19:56:26 | 只看该作者
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)" @+ Z& [7 A2 h! I
  (setq osd (getvar "osmode"))
9 u, \& V$ }" s  (setq pt0 '(142.0 5.0))9 H% \9 p/ h+ d0 k8 Y
  (initget 128)
, ^5 N! Z( r5 y9 a" [: {  (setq pt (getpoint "\n请选取签名插入点"))
3 P; F' u( P" M- H% [  (if (= pt nil)- D8 F2 s/ u' d
      (setq pt pt0)* A$ x3 L2 ^! M# Z: Z
  )' R; t: c- r# C9 \! \
            (setq pt1 (polar pt (/ pi 6) 35))
/ B7 ~, q( O! s) N            (setq pt2 (polar pt1 (/ pi 8) 3))* e( \+ D* `( K2 D7 }8 O1 H
            (setq sse (ssget "_c" pt1 pt2)) ' d- d% U4 O* u) ^  P2 u
            (command "erase" sse "")
: L0 P  }% x% F) U
0 ^* ]3 y, B* X9 j  (command "insert" "n1" pt "" "" ""); X; s. g+ |1 W  q. z# Z
  (setq s (getvar "cdate")): ]* _8 U$ `9 O$ n& r3 F
  (setq rr (- (* s 100000000) (fix (* s 100000000)))), H% u2 d: G2 E
  (setq yy (fix (/ s 10000)))
5 r( _3 |* q3 y4 r  (setq mm (fix (/ (- s (* yy 10000)) 100)))  M1 E/ @4 h+ B! F1 Y
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))& T( S! A2 H. |2 A5 i# q
  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))
  }6 ?, R/ C* r- B; |  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))5 C) a; x/ k1 i, q
  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))
2 A" X  {1 k) S& y% D  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")
5 x0 @( x5 R! U; X2 Y) R! W  (setq layer_old (getvar "clayer"))
) ~, [5 z* j1 [! [  X- L5 A9 R9 `  (setvar "clayer" "text")4 U4 Q, |+ m! t. ?' j& P/ K
  (setvar "osmode" 0)1 N; ?8 `! p6 @: G: }, x
  (command "text" p1 2 0 text1)
' D9 E. J' D, Z4 j% R, B  (setvar "cecolor" "40")
& _+ v! s& u3 P4 ~9 d5 O2 k! }- |7 h& J  (command "point" p2)
  b" Z/ f2 V! x/ L  (setvar "cecolor" "bylayer")! I" r+ z# z. O$ a: K& s
  (setvar "clayer" layer_old)! ^4 \: l5 o1 v0 T/ f
  (setvar "osmode" osd)
$ P) I6 e  |5 k" T5 [; C6 u# H  (princ)% v% K7 P; p& Z; g) ~! Y
)
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2014-11-12 20:27:18 | 只看该作者
zsdwx 发表于 2014-11-12 19:56
2 s8 N+ e/ T5 T' F% L# v(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)+ O% M! h) f! M" {- d6 Y+ A
  (setq osd (getvar "osmode"))
& F; t$ b/ |7 b0 k% w7 K' p$ O   ...

) k- C$ ^% y: Y感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~2 s( I, v4 W- G; J% Z) T/ W/ ~
回复 支持 反对

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2014-11-13 18:23:07 | 只看该作者
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开4 G4 J; H1 F& ?
直接用宏命令做的,
2 X5 y8 A* b4 j^C^C-insert KK \1 1 04 q4 k8 r7 Z1 F  k# _9 n  @9 h
第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 13:25 , Processed in 0.051928 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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