机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2885|回复: 5

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

[复制链接]
发表于 2014-11-12 18:07:54 | 显示全部楼层 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:) E7 l. x1 R6 r' |& ~
  p: y7 c" y% c( h0 _' `8 M
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。* [* c+ W- ]% ]; U8 [0 S7 H/ E

; Q/ q7 f: m( P7 n, _, q6 R! ?' W0 ?2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
3 m( J# }; p, D% A. a' d  n6 ^! p( U- S
求各位大侠帮忙哈~
3 r1 T& u( w' r& w$ c
回复

使用道具 举报

发表于 2014-11-12 19:52:54 | 显示全部楼层
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。
. @+ z# S/ V7 J7 T* Y/ K" A# w9 I8 M" c8 p
签名.JPG
回复 支持 反对

使用道具 举报

发表于 2014-11-12 19:56:26 | 显示全部楼层
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
4 S9 J0 ?( Q: V  |+ R- H* @6 N  (setq osd (getvar "osmode"))
% J3 X# o7 t* l- a' Y3 \  (setq pt0 '(142.0 5.0)), K7 i8 l# e. I; k6 O
  (initget 128)
0 D! l7 `1 i4 ^# d3 W7 z  (setq pt (getpoint "\n请选取签名插入点"))& g5 |+ x4 Q0 e1 W
  (if (= pt nil)
: n" {6 t' l* }( Q+ r- Q      (setq pt pt0)0 D# }- n9 {  G, W
  )
, d9 `1 W0 ^& y- K( I8 F: A6 T            (setq pt1 (polar pt (/ pi 6) 35))0 S' z+ m9 L' F- A1 d& X% {
            (setq pt2 (polar pt1 (/ pi 8) 3))# R7 ~4 |$ `0 c) C2 U1 `7 a
            (setq sse (ssget "_c" pt1 pt2)) 1 z% G6 t/ y% q+ h; f
            (command "erase" sse "")2 `7 W, ^5 R; \  f; x
8 U( \. L: L8 B# u
  (command "insert" "n1" pt "" "" "")
7 M5 S( Z2 O* w! Q% a  (setq s (getvar "cdate"))+ k. ^- T3 _" l' E1 h
  (setq rr (- (* s 100000000) (fix (* s 100000000))))4 j# Z: V% S3 R; b  y' `' d  i
  (setq yy (fix (/ s 10000)))! a/ T( q) Y3 Q. J7 G* B
  (setq mm (fix (/ (- s (* yy 10000)) 100)))$ W5 H6 q$ w3 h/ P3 |( s
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
) b1 X: \: K, }7 a; g  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))
/ X$ f6 j. j  T, w" f4 p  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
% x* f/ N9 \  A  J; u) I8 F  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))4 n; X7 ^& n; Y6 e2 P5 l6 u
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")$ ]4 |3 C& @0 C# j
  (setq layer_old (getvar "clayer"))
/ J! z2 U3 C4 L; s$ N* y+ @  (setvar "clayer" "text")2 N* p# T  c, A& M8 L
  (setvar "osmode" 0)
& M( a1 o7 R$ i' U$ F  (command "text" p1 2 0 text1)
3 b/ j6 \, e# e5 d  (setvar "cecolor" "40"); l" t, m  M( X. v! H
  (command "point" p2)/ K5 y( N- e2 N% I
  (setvar "cecolor" "bylayer")8 D: \% r2 O0 w2 T1 |; x) H
  (setvar "clayer" layer_old)
" X, ]% a. ]8 P, `% r; x' q  (setvar "osmode" osd)
) j+ u* v, T9 H# f5 k1 j  (princ)
& ~2 s2 _- j* G% p! p  u! e# i' i)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-12 20:27:18 | 显示全部楼层
zsdwx 发表于 2014-11-12 19:56 # J  e5 C2 w2 q% O" I8 k8 k
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr): s9 e1 T( E: C) q2 D  i$ h) D
  (setq osd (getvar "osmode"))
) S2 h: |& z/ k. w; {2 {   ...

% U" u( y1 v% \感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~
" N/ r4 b5 n5 _0 W) T
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-11-13 18:23:07 | 显示全部楼层
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
, U* C9 }' Q! P. i9 D+ E8 f3 N直接用宏命令做的,2 A; N" C. k8 b
^C^C-insert KK \1 1 0
% |# D/ K) a' y+ F% v$ r* H4 o% y6 a( H第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-1 04:00 , Processed in 0.061855 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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