机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2014-11-12 18:07:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:
5 Z9 m- P% ?1 ?& |" E" L4 w  O/ J8 J. C- A; I
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。( [8 @, z: T$ f! y" L- b
& A  {1 T# e& G9 O0 f; w
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
$ @; I3 w, {6 w
; `' J" ]1 j% A3 h/ z* I求各位大侠帮忙哈~/ s& U% `% E3 U9 F! T
回复

使用道具 举报

2#
发表于 2014-11-12 19:52:54 | 只看该作者
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。; V3 ]4 q* g, b
/ {3 h8 z  U0 F# g2 _. n2 m/ c
回复 支持 反对

使用道具 举报

3#
发表于 2014-11-12 19:56:26 | 只看该作者
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr): V* z5 b2 {$ `
  (setq osd (getvar "osmode"))
! Y, X- D* |* F4 Y- o( I  (setq pt0 '(142.0 5.0))
3 Q( A% B) k% h  (initget 128): U' S4 q0 G9 E
  (setq pt (getpoint "\n请选取签名插入点"))
& l3 q" ^4 O% v7 ~$ a1 W  (if (= pt nil)
( E! ]& A6 @4 r' ~% t/ V, ?      (setq pt pt0)5 I1 Z# h3 `5 J; f" U+ L' D; v
  )
' Z/ Y0 g+ v+ Q1 S: L' ^( P            (setq pt1 (polar pt (/ pi 6) 35)); Y+ m3 K1 P6 i( |' c( R
            (setq pt2 (polar pt1 (/ pi 8) 3))6 w# |8 V0 K" F6 p+ O
            (setq sse (ssget "_c" pt1 pt2))
1 h* u& J/ ]5 B0 d" [            (command "erase" sse "")
4 j* q2 K' t+ K1 k- w  n
7 E6 U4 e; J' l: g9 ^  (command "insert" "n1" pt "" "" "")3 J" U% X- z% V
  (setq s (getvar "cdate"))
; s2 z$ m8 b% V7 |. ]/ \# o( P  (setq rr (- (* s 100000000) (fix (* s 100000000))))
# M6 e, ^( L2 v  (setq yy (fix (/ s 10000)))2 P+ b7 g( o" L& q' w$ U' A2 \
  (setq mm (fix (/ (- s (* yy 10000)) 100)))
( H+ B1 L: j" ~# [( ~# d5 [2 l# x  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100))))); a  l# r" R& B4 E0 [
  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))/ ^" t3 c" J4 Y9 H# Q+ J
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
& W! J8 |& c/ c. `4 H* B  d  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))& A: `- E& q8 x9 {$ H/ f
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")
* Q- a6 Y3 {3 c/ |4 l/ c' n  (setq layer_old (getvar "clayer"))( S6 }: t5 h5 r5 M  U
  (setvar "clayer" "text")
9 p$ |! b! K! E, c. m4 u9 V5 \, d  (setvar "osmode" 0)
: _" d$ p  a& p/ d. S! e/ O  (command "text" p1 2 0 text1)
& k# d* V2 w" b1 N/ r  (setvar "cecolor" "40")3 f6 j2 B0 @: y1 ?" [7 M
  (command "point" p2)2 f/ V( c( @  u# G1 `
  (setvar "cecolor" "bylayer")! e; S4 N8 z/ `8 q
  (setvar "clayer" layer_old)
" P! @9 ?. j# J" O  (setvar "osmode" osd)
5 s+ s" E( _4 c' L  H  (princ)
. ]& l7 r8 j+ r  ], w)
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2014-11-12 20:27:18 | 只看该作者
zsdwx 发表于 2014-11-12 19:56 7 x7 |( X; n. b
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
" P# ]4 o9 m8 M( y( r  (setq osd (getvar "osmode"))9 r7 x3 f8 [0 j6 J  c
   ...
/ X" E2 i; I  J0 T5 D
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~1 x( E& y% I0 b0 N3 f  A/ [% A
回复 支持 反对

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2014-11-13 18:23:07 | 只看该作者
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开  m4 q* `+ w3 O/ e  y+ @- S1 p9 L
直接用宏命令做的,
& b8 ^& f8 U- c1 E/ m7 J1 L: [0 l^C^C-insert KK \1 1 0
! W' i+ p1 h! e3 i, ~第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:18 , Processed in 0.055837 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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