机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2014-11-12 18:07:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:: Y( ~# k( T/ n$ I, A' F
# S+ ?; [( A& X6 H+ R- J- i
1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。
9 n* X' l5 _2 S" K( i1 o
% M9 l) q( m2 I* S2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
! x/ {+ @* C% `/ t  d/ Z8 n. O- I+ ]' R
求各位大侠帮忙哈~
& k/ @8 X* S6 g+ ?% h  ]
回复

使用道具 举报

2#
发表于 2014-11-12 19:52:54 | 只看该作者
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。7 ]& w. Y0 Z# _
! x1 C6 ]4 _+ A9 d* U+ O3 c
回复 支持 反对

使用道具 举报

3#
发表于 2014-11-12 19:56:26 | 只看该作者
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)4 E: X. [  C. l; q7 ]3 N
  (setq osd (getvar "osmode"))# ]8 ]4 F6 f5 I0 ?8 v6 w' @
  (setq pt0 '(142.0 5.0))! J9 Z9 ]2 @$ ]  T# H  e
  (initget 128)  u" W. y( r% z/ b* [; ]% o! c! N
  (setq pt (getpoint "\n请选取签名插入点"))
$ _5 `6 {7 B/ ^, o  (if (= pt nil)
" `5 Z8 V9 p( E      (setq pt pt0)
% I: W1 H( J* q  )
! ^9 i; h$ j5 P, O5 K9 c3 B" c            (setq pt1 (polar pt (/ pi 6) 35))/ l  y+ I9 c! h9 K% Y
            (setq pt2 (polar pt1 (/ pi 8) 3))8 U5 @6 A& S0 B& M! h4 ~
            (setq sse (ssget "_c" pt1 pt2))
, e: I9 D7 B5 N: J9 d7 w+ h+ m            (command "erase" sse "")* p& b% ^' r9 I2 V% |' W
6 X% i! K" _/ Z% h6 f7 R0 R* h3 i
  (command "insert" "n1" pt "" "" "")* ^0 Z( J. B* [  [4 `2 V" [
  (setq s (getvar "cdate")); F& u( g1 [! R4 P$ _% g; D) i
  (setq rr (- (* s 100000000) (fix (* s 100000000))))$ W, g3 [" T0 X8 d! y3 L
  (setq yy (fix (/ s 10000)))
1 j$ P; r9 P4 z/ J, e' \  l4 ~9 I8 \  (setq mm (fix (/ (- s (* yy 10000)) 100)))8 V1 i3 K  f9 f- _) v
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
4 O8 j" W, N. Q& s7 v# c  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))
+ m4 e; _. w, t( n7 H* c8 G  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
! Q$ g9 _$ e( X/ N2 `( U( D  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr)))% Y& M- Y' e" T9 Z/ y+ [3 K
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")
( \* T6 ^" x* o* Y2 X, Z$ ?7 e  (setq layer_old (getvar "clayer"))
5 |. `3 m) j+ e8 ?, Y" h* j1 `  (setvar "clayer" "text")/ T0 U8 D# x$ U7 B
  (setvar "osmode" 0)* |. b' J7 n$ f4 X  G
  (command "text" p1 2 0 text1)
, B# c2 V$ D) p) @2 z, p) D  (setvar "cecolor" "40")  A$ B# m, t# \  b8 a/ _# F
  (command "point" p2). e& a% I- c3 u0 \
  (setvar "cecolor" "bylayer")2 U( s$ o2 m4 `. w, `+ y
  (setvar "clayer" layer_old)- ?* v0 T* z# C- I. S
  (setvar "osmode" osd)# a  Q# v# ~' U/ G* l8 c" X
  (princ)  S: J* Y9 G& x: |  H, o
)
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2014-11-12 20:27:18 | 只看该作者
zsdwx 发表于 2014-11-12 19:56 1 f1 b( D( l7 Z: Z
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
0 w! _+ \: k9 f7 O. x/ j7 V: M6 ]3 G  (setq osd (getvar "osmode"))* f8 C) J8 [; o+ V8 {
   ...

  D/ ~, N2 b* y* V$ T7 j" I' g) r* d感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~
5 T0 ~/ \" n% ]+ r( {
回复 支持 反对

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2014-11-13 18:23:07 | 只看该作者
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开3 S" W3 Y) G/ s+ A
直接用宏命令做的,, Q$ J" i/ ]) d( \
^C^C-insert KK \1 1 0
! P7 K; Y' N& ?第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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