机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2996|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:
" d% S5 c! N( o9 }: x( k! F/ F" P$ }
8 s! Y3 \' F5 M/ y. i1 Z. v1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。; x( g# y( F! s
# N+ m8 T# l: W4 s3 ^* v
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~7 t6 R: l& X3 i! q
, a, Q: |- g& G$ |8 R6 c+ K0 z
求各位大侠帮忙哈~6 V; Z+ H/ ^$ a+ `
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。0 G- v. v, D' V1 f

7 D" [0 u0 {" d9 Y 签名.JPG
回复 支持 反对

使用道具 举报

发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr). G9 [# \5 t5 _& C8 x) E5 x# @
  (setq osd (getvar "osmode"))
0 n" h/ Z* R! n, y  (setq pt0 '(142.0 5.0))
7 l/ e  F' L/ Z1 M& R! h  (initget 128)
+ J) @" ?$ T9 }! [0 ^  (setq pt (getpoint "\n请选取签名插入点"))
4 {" f. _7 E3 W& U  (if (= pt nil)
/ o" r- i" i; p5 \2 [      (setq pt pt0)) |, ?" u4 _- @5 K* C
  )0 }/ r3 B& u) c
            (setq pt1 (polar pt (/ pi 6) 35))
0 o0 F6 l0 R5 r1 d6 b7 Q- W            (setq pt2 (polar pt1 (/ pi 8) 3))( k- G; H7 {8 U: x) U# Q
            (setq sse (ssget "_c" pt1 pt2))
  e  P: A" K* \2 I( k; |, ?: x            (command "erase" sse "")1 B  u$ I- X; b7 I9 j! O5 S

/ i* M$ V5 d  p9 F  (command "insert" "n1" pt "" "" "")
, P+ [) m/ K  ?! B7 Y4 G  (setq s (getvar "cdate"))
* ~6 q8 }# @! C5 i5 _6 p) L  (setq rr (- (* s 100000000) (fix (* s 100000000))))
5 k' ?$ C+ {4 k  (setq yy (fix (/ s 10000)))
( d! c! p# @4 g% h/ ~$ H  (setq mm (fix (/ (- s (* yy 10000)) 100)))
/ a7 ]/ l4 z3 Y- }! y  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))! p+ {' Y; a0 L; v
  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd))). w+ c% x" W9 ]3 b
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))+ u7 Z3 a+ o, d5 @5 a
  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))0 f# S( V) m8 {; c
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")
/ d! {2 A  I; A  (setq layer_old (getvar "clayer"))# i# `2 u1 c3 s& }& I
  (setvar "clayer" "text")/ Q1 J( A# J) C2 {3 L2 p
  (setvar "osmode" 0)
- P4 @# [# E0 {/ K9 H, s5 M  r6 U  (command "text" p1 2 0 text1)( V# A- D# R$ U' E# f+ A: j
  (setvar "cecolor" "40"); G) k  }  {1 \( Z
  (command "point" p2)7 f; l4 Q; i! s
  (setvar "cecolor" "bylayer")
6 a7 l  e% e0 z2 l" E1 O5 h  (setvar "clayer" layer_old)/ z: R5 n: h8 }9 j
  (setvar "osmode" osd)
! p1 L# N; u% J5 O5 \! M5 a' X8 \  (princ)
% b5 k5 Y6 `8 g)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56 . L9 b9 ~9 N0 p1 m( @3 V
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)* W5 q# p# K1 {- I
  (setq osd (getvar "osmode"))' k( Y; t0 o4 `1 A7 g+ x* \
   ...

5 o, n$ m) v" i; Q' `感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~
' E. V6 f1 d/ V* g# P4 Q
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
9 z, w2 i% u. [& C* B! b直接用宏命令做的,! c0 R  t2 j' c; S
^C^C-insert KK \1 1 0
5 A' t* `+ }9 M, h# `! U/ L3 k! k第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 07:00 , Processed in 0.073195 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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