机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2989|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:0 L( U/ M7 y; g5 G+ G
7 N/ ?- R( U4 b! c) j
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。) g6 M! m6 f- T" O* t6 h

8 F8 D- @. t0 @& {) n) h; G2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
& K; f$ g7 R5 P+ x* n
; l& D( r+ b& a7 ?求各位大侠帮忙哈~
/ j4 n+ o+ ]0 J# w& Q/ u" F
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。# P7 }1 h0 H6 z/ o7 \* Y! O

# E/ E$ L4 b5 J' s 签名.JPG
回复 支持 反对

使用道具 举报

发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
% U/ z- P" k* o% x  (setq osd (getvar "osmode"))/ u/ |) A) x' u) C4 _( o  p
  (setq pt0 '(142.0 5.0))! `+ k; A2 P3 D. P( i' ^9 J: ?
  (initget 128)& y5 g4 |. e- W3 D" F- G# a, K
  (setq pt (getpoint "\n请选取签名插入点"))
. M& D$ z0 _4 R; k3 b' d4 e  (if (= pt nil); z; r% m: }! q3 u& S
      (setq pt pt0)
) ]( z$ z9 \3 |  K- D) L4 S  )1 l( g2 B& L& V9 Y8 E
            (setq pt1 (polar pt (/ pi 6) 35))
2 y* R$ E! \: P1 l9 y            (setq pt2 (polar pt1 (/ pi 8) 3))& W# F$ Q# d* Z) f0 V
            (setq sse (ssget "_c" pt1 pt2))
% t* u' a8 O+ Y; V            (command "erase" sse ""): H. s4 M+ L: B$ H1 L: F! z+ A
" R; j) W& y' a
  (command "insert" "n1" pt "" "" "")  y3 L! f7 l) v9 N5 p& F: C
  (setq s (getvar "cdate"))
3 j! G8 T  ~" L$ O8 V- |0 ~* }  (setq rr (- (* s 100000000) (fix (* s 100000000))))! I9 n8 T2 y! f  ~' L4 @
  (setq yy (fix (/ s 10000)))4 q/ m2 ], R+ T# k# W) f# Q
  (setq mm (fix (/ (- s (* yy 10000)) 100)))
  O0 Z' n3 v: D  _9 B7 I  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
9 ~  ~! K3 f; P- C8 f' a6 Z& }  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))( h: M$ p7 C0 E, C) W
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
% u& s0 `0 p' V! I: u" L  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr))): [3 \# p2 h: w% N+ e# E! V9 z
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" ""), x8 n% z; \# ?) T' @1 u# p
  (setq layer_old (getvar "clayer"))0 W' h$ U  l: N: S# k
  (setvar "clayer" "text")4 G2 z3 N  X- L8 c
  (setvar "osmode" 0)0 i, B+ t+ D: j
  (command "text" p1 2 0 text1): l; m' e) @4 E. X5 a3 c7 G# `" X- `. f
  (setvar "cecolor" "40")
; q  P. p; d, h& p1 m  (command "point" p2)
! v+ `3 U# M1 b( Q  (setvar "cecolor" "bylayer")2 y9 y. R& }" x( Q
  (setvar "clayer" layer_old); ~; R% W0 [, E% B$ n2 ~7 @) W
  (setvar "osmode" osd)7 c3 `; ~  ?: H0 b9 ~& u
  (princ)0 z# D4 A0 J- A5 R5 o/ T! G
)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56 7 a# h& R/ N7 H' |5 z
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
/ c1 G6 M- l# Y0 N% E8 Q. N  (setq osd (getvar "osmode"))' ^/ v; n/ x9 `" i: ~+ \4 h
   ...
3 {$ K7 M; v8 @6 K* ~
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~2 |8 Z' t+ m3 L
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-12 21:34:01 | 显示全部楼层
还请各位大侠帮帮忙哈~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
' z' d. W7 T9 [& }直接用宏命令做的,
$ Z. v- ~& _$ _! h# K^C^C-insert KK \1 1 0% {. N; d# ~! u5 y
第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-2-19 05:56 , Processed in 0.060634 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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