机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

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

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

# Y( x: c/ w8 h; s) m! i# a/ V1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。
: i1 i7 W& q/ C$ q5 N* O8 A# D
( Q' P1 N" t# F2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~* d% G/ p$ W; [; K! D6 r. R, Q+ P
- ^- J# k; Y3 W8 A# f6 q
求各位大侠帮忙哈~
: M& w; l  ?4 y6 V; E+ A3 g" v5 H
回复

使用道具 举报

2#
发表于 2014-11-12 19:52:54 | 只看该作者
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。
- p4 V7 E5 s# A  L+ P) [
& d. a0 A0 j/ V3 a6 G
回复 支持 反对

使用道具 举报

3#
发表于 2014-11-12 19:56:26 | 只看该作者
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)# U) T4 {4 O8 i) w
  (setq osd (getvar "osmode"))! ~! |1 q5 x$ G# J% @
  (setq pt0 '(142.0 5.0))1 m6 B: s( J6 M/ G, r2 X
  (initget 128)
" K. }5 w5 R: e. w& g$ P4 N  (setq pt (getpoint "\n请选取签名插入点"))# T0 S8 e& E/ X  i
  (if (= pt nil)9 d; k2 ^) A% {3 w
      (setq pt pt0)* u: w' W- P% t1 C, H
  )
8 P& j, N" }0 C' g0 \            (setq pt1 (polar pt (/ pi 6) 35))4 G1 H' U8 u7 E! A& r; g& V
            (setq pt2 (polar pt1 (/ pi 8) 3))6 z4 j/ Z# p. \2 O' r1 |8 `; n
            (setq sse (ssget "_c" pt1 pt2)) ' i* [0 ^9 P7 L2 S4 ?6 s% j
            (command "erase" sse "")
. i* F, b# y: ]1 B+ E+ X# U6 J; `5 A% X! m* H0 u
  (command "insert" "n1" pt "" "" "")
% d' n4 n$ [; g  g& T  (setq s (getvar "cdate"))
4 f, \) v/ Y, n  (setq rr (- (* s 100000000) (fix (* s 100000000))))
% w' i; n: D1 j  (setq yy (fix (/ s 10000)))$ N4 G/ s. B: F! N: H" `3 Z
  (setq mm (fix (/ (- s (* yy 10000)) 100))), l# [4 U: y5 {3 j3 G  p# N7 t
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
3 m3 w! L- W. G) l7 p& ^  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))+ X& G. z/ r, e9 S
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0)). k2 T; c2 i) W9 y  \
  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))
! d0 B; Y8 W3 t1 K/ k. @  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")% W4 ~( j/ L5 H3 `# h6 k
  (setq layer_old (getvar "clayer"))
5 R0 V7 H& ^8 Y/ Z  (setvar "clayer" "text")
) y% N) E; N! F* t  (setvar "osmode" 0)
  @2 z9 W& b  O3 F" ?2 d  (command "text" p1 2 0 text1)
: n) U" s: u" z' L  \* _  (setvar "cecolor" "40")7 S1 X3 N  ^) _' v
  (command "point" p2)  u# R! h: ~# u9 |, Q8 e
  (setvar "cecolor" "bylayer")$ V4 A& s  S) z& B3 Q
  (setvar "clayer" layer_old)
+ ?( A6 X' A( ]$ P  (setvar "osmode" osd)
9 L9 O. E# ?4 `# N  (princ)2 S0 ~; |; B6 y- |: X+ B
)
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2014-11-12 20:27:18 | 只看该作者
zsdwx 发表于 2014-11-12 19:56
% q# j" b, T8 c9 v8 O2 B(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
' _& V, A/ t5 \4 z  (setq osd (getvar "osmode"))9 E3 g1 A" B: S7 `" f
   ...
& z) V9 C3 j. Z, S) }) ~
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~. Q3 O% k7 a9 n, ?& R6 n2 I4 G
回复 支持 反对

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2014-11-13 18:23:07 | 只看该作者
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
( e2 [2 `* s% w1 A4 C& y+ q直接用宏命令做的,
, b2 b4 b. h5 L; I8 s7 b^C^C-insert KK \1 1 0
' z; j  X" N2 ]+ u, f  ?第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-30 15:24 , Processed in 0.056797 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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