机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2014-11-12 18:07:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
不知道能不能用Macro,或者VBA来实现下面的工作:' e* l- @6 y5 ?9 w* {, I. t

; k8 B7 b' Y2 K3 a: b0 b6 l1.在模型空间,插入一个已经在的 块,比如:名字为 “KK”, 效果是 能在工具条上创建按钮, 点击之后,只需要在屏幕上 点取 位置就能放置 块(有炸开 和 非炸开两种模式最好,做成两个按钮)。4 F$ R  k% {2 m/ }0 v
. T7 y" R% r0 r
2.在模型空间,进行 指定条件的筛选(2007自带快速选择功能),然后把筛选出来的一类目标的某些特性修改为另外的特性, 比如: 选择 所有 线型=Center 的目标,然后,把这些目标全部移动到 图层:200, 颜色=Bylayer,线型=Bylayer,线宽=Bylayer。 同样也做成按钮,放在工具条上~
5 K/ Y- s2 i4 |4 z( r% {7 T2 v- _3 R9 j8 L5 {; \& t
求各位大侠帮忙哈~
5 Z) h' K7 \3 I5 ]1 Y/ V
回复

使用道具 举报

2#
发表于 2014-11-12 19:52:54 | 只看该作者
Q1:这个我用autolisp实现过,点中自己制作的按钮,再点选标题栏左下角,就可以在设计栏中插入制作好的签名块并在后面写上当前日期。用VBA应该一样能行的。% A  N8 u& H) F0 I1 Y8 X
+ K+ p  q; K* q8 L
回复 支持 反对

使用道具 举报

3#
发表于 2014-11-12 19:56:26 | 只看该作者
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)2 R7 S% `0 D& c
  (setq osd (getvar "osmode"))( }4 l8 K% {! J8 R: C
  (setq pt0 '(142.0 5.0))4 X9 ^" F8 e; e) O  K' j+ i! _
  (initget 128)) R3 o* T- r7 B6 ?% k: l& L
  (setq pt (getpoint "\n请选取签名插入点"))0 A& y( M4 \) q3 f& P4 m' o
  (if (= pt nil)
2 m: F) n* r- Q1 }) P( A) g      (setq pt pt0)" V0 W' t. _1 b1 L
  )
6 Q  W9 m6 K7 t" O4 d3 R' w6 {3 T            (setq pt1 (polar pt (/ pi 6) 35))
/ w. D- s" }1 i+ t            (setq pt2 (polar pt1 (/ pi 8) 3))
- j6 y" q' {* b) l/ N            (setq sse (ssget "_c" pt1 pt2)) , U2 V  w" Z4 {' v8 G6 h( D
            (command "erase" sse "")
2 @- o8 M! l0 J) L  L4 _5 x- G. }' k5 m2 F* G# e7 e) E; n
  (command "insert" "n1" pt "" "" "")
* r6 ~" {) }6 @) W  (setq s (getvar "cdate"))
1 a) v: S# Q9 S2 K; r# v  (setq rr (- (* s 100000000) (fix (* s 100000000))))# R0 L% Z) ^" E* l
  (setq yy (fix (/ s 10000)))
- x$ n6 W0 T. s" F# {) R  (setq mm (fix (/ (- s (* yy 10000)) 100)))% M$ g# ?, W: i. K2 \% z
  (setq dd (fix (/ (- s (* (fix (/ s 100)) 100)))))
% D* n" e6 k% t) \" o% s  (setq text1 (strcat (rtos yy) "/" (rtos mm) "/" (rtos dd)))3 h! T8 G( Q6 E* f/ N. s
  (setq p1 (polar pt (* 41 (/ pi 180.0)) 44.0))
8 f& H$ s( q3 ]7 R! P9 W3 F  (setq p2 (polar pt (* 0 (/ pi 180.0)) (+ 50.0 rr))); j8 p# L) i# }- I) t
  (command "style" "txt" "txt.shx,gbcbig.shx" "" 0.85 "" "" "" "")
& `/ {9 F! g/ a0 S. J! E0 B9 O4 M" }  (setq layer_old (getvar "clayer"))# S7 R8 b: X' d/ O
  (setvar "clayer" "text")
  L; O9 i; s! n! a  (setvar "osmode" 0)
( d4 e. L5 }2 m2 D  (command "text" p1 2 0 text1). c) D- i3 s" ~) S. @2 X1 B2 O
  (setvar "cecolor" "40"): Z: B$ n: |/ V; x& L7 t
  (command "point" p2)& h% M+ |7 J; k4 U, R, n
  (setvar "cecolor" "bylayer")
3 i8 Y& G1 r2 r/ Z1 f/ H. q! w  (setvar "clayer" layer_old)
  E$ Q1 P7 Y& W) j  (setvar "osmode" osd)8 [5 Z8 E0 J. K2 j
  (princ)$ J$ f- V" m3 k' O' ^2 C$ P) q! j& C2 ?
)
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2014-11-12 20:27:18 | 只看该作者
zsdwx 发表于 2014-11-12 19:56 2 u8 B+ r. ]3 a
(defun  c:name(/ pt pt1 p1 p2 yy mm dd s text1 osd layer_old rr)
) I5 k3 C) s  Z, z6 w0 W  (setq osd (getvar "osmode"))  q3 m1 F* e; Z& c0 Y
   ...
- k, U: v. k( P0 F- l6 D% n
感谢回复,功能很好,能省下不少时间,不过我才刚入门,看不懂 ~。~5 S0 O9 M. |- g; f% B5 z, \
回复 支持 反对

使用道具 举报

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

使用道具 举报

6#
 楼主| 发表于 2014-11-13 18:23:07 | 只看该作者
第一个问题,自己在公司摸索了一上午, 大概能用了,能插入 命名为KK的块了,但是不会炸开
( ~" F" M) Q; T( B# K* ?0 r( m5 s8 Y直接用宏命令做的,
8 p9 E( O( o$ O  O^C^C-insert KK \1 1 0
- e# l, g+ Y7 r4 p, h: p第二个,完全找不到方向~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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