QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 12029|回复: 11
收起左侧

[已解决] cad中批量更改尺寸标注文字

 关闭 [复制链接]
发表于 2010-1-16 16:31:04 | 显示全部楼层 |阅读模式 来自: 中国上海

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 zjf00 于 2010-1-17 15:20 编辑
9 S6 |/ w( S$ s
+ g- M# Y# [* q. Y$ O在CAD中作图时,经常将尺寸标文字替换成相应的数字,目的是为了拉伸标注的对象时标注的数值不改变。' e  [* B+ a) {, _# P2 V( c
单个修改的话很容易,只要在标注属性的文字替代中写入相应的数字就可以了。不过在修改大量标注时,这就有点力不从心了。编写插件应该可以解决,这样的插件怎样编写,请教各位版友

bztd.rar

469 Bytes, 下载次数: 42

发表于 2010-1-17 08:23:42 | 显示全部楼层 来自: 中国广东汕头
CAD不是文字编辑软件,你说的功能暂时不能实现,建议导入到其他软件后(比如Word,记事本,写字板等)更改,再导入CAD。
发表于 2010-1-17 12:11:52 | 显示全部楼层 来自: 中国广西梧州
可以用查找替换功能试试
 楼主| 发表于 2010-1-17 15:19:47 | 显示全部楼层 来自: 中国上海
本帖最后由 zjf00 于 2010-1-17 15:22 编辑 1 P6 ]2 S1 \: Y' G: l/ A
# ?' y8 o/ u. P5 H' s
等了好久也没有等到有价值的回复。4 W# T3 U* H1 C
其实这对于会一些lisp的人来说真的是一件很容易的事6 p2 d/ V4 _. E: z6 E* C9 z
我没有学过lisp,不过依靠N久以前学过的一点点C语言的编程基础,再参照其他高手写的类似的lisp代码,总算凑齐了一段代码,解决了这个问题,现在发出来和有需要的同志共享一下:
9 y; Q7 `4 o  j& q* E. s(defun c:dimdd (/ measure real result ss text) ( i' T" {2 ^6 d( i! B& r0 v9 U# |
(vl-load-com) ) Y1 D* x4 z  v* t: e
(vla-endundomark - F% u. m( X# ^1 e8 n
    (vla-get-activedocument
; A: D7 t# r/ X) V. \" s3 R      (vlax-get-acad-object) - m  e, `; L' `; k) l. n! e" x
    )
5 i1 d  N8 {# \  ?) 0 q5 X2 v; x# l: x! s; x* u: O
(vla-startundomark
. V8 k* |4 c- B    (vla-get-activedocument   O: G# P$ S! J4 l
      (vlax-get-acad-object) , e+ H! [; O0 A( Z/ K6 }+ N* n
    )
3 Q5 K- @; Z; H) 8 Z) v3 d; S* t
    (setq ss (ssget '((0 . "DIMENSION"))))
2 C6 ?& n' j& F: [/ p& z      
$ k' |8 `" n7 p: ^. O    (foreach obj
% {( {1 |9 A& Y8 @, u6 z& k) D   (mapcar
. _$ C- ~, m- r+ L     'vlax-ename->vla-object
8 h- t; B: ~, @2 y     (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
# ^/ I; [( [/ v$ P' Y   )
+ I# e; n5 i1 a, U' `9 S      (if (and (setq text (vla-get-textoverride obj)) ; v6 A7 |  G) {: k
        (setq measure (vla-get-measurement obj)) # U- J! I% W9 a7 X
        (/= text "") 0 g- u" \1 B5 d- c0 e2 P
        (numberp (read text))
0 o# y) M3 _9 {   )
+ m3 X2 X% t; R" @% [, {(setq real (read text)) % I% K1 C- d/ g- K
(setq real measure) 0 k- {% }- _, d
      )
6 {  i1 A, o- D* b. X: S/ k% X3 v      (and real
1 ?& c: F+ @7 ~    (setq result (vl-princ-to-string (+ real 0.0)))
+ i# }) f" N  b, Z    (vla-put-textoverride obj result)
7 T6 Q$ P7 U) \. q* i0 H/ I      ) ) |+ R: u( w, \! V
    )
; Y$ H2 l! w* T9 F( q, ]& u$ H0 n! J7 Z3 O7 J6 D7 q2 M
(vla-endundomark
( q$ N% ?7 e, N6 m% L8 [4 E; i    (vla-get-activedocument
) q& [; v' M( g6 @' h8 L      (vlax-get-acad-object) ' k+ ]# u: y1 n1 f0 J) @
    )
+ Y/ f1 {3 A! o, d1 B)
) `7 d4 b; o+ v( U(princ) 9 w# s. o5 H( U* Z6 s
) 4 S; Z" x- I; Q" H  W/ ~) |7 v# [
(princ "\n本程序作者: zjf00 ")

bztd.rar

469 Bytes, 下载次数: 37

发表于 2010-1-17 15:37:36 | 显示全部楼层 来自: 中国广西梧州
LZ能不能加些注解啊!让我们初学者能看明白
发表于 2010-1-17 15:58:20 | 显示全部楼层 来自: 中国河北唐山
楼主的程序命令是什么啊。
 楼主| 发表于 2010-1-17 17:03:47 | 显示全部楼层 来自: 中国上海
6# xingshuo 8 T/ @9 W; Z. x" ~; v8 `! r% B" x9 e

. u0 U, Z( F* _6 o, g7 @' \1 n+ A  Idimdd
" J0 w2 L  O9 f* [/ p2 [“defun c:”后面跟着的字符串
发表于 2011-4-13 18:14:26 | 显示全部楼层 来自: 中国上海
程序的命令:dimdd
$ O6 D$ Z5 ^& m$ T5 `/ p2 J找了很久,谢谢楼主的分享
发表于 2011-4-13 18:36:07 | 显示全部楼层 来自: 中国上海
程序在使用中,发现批量文字替换后都要精确小数点后两位- i3 @: g+ o0 I5 G8 s( r
当标注精确到整数位时,替换后面也带零
) s, J0 x) J7 L6 r: p: z是否能优化下程序,使替换后的标注数据和替换前一样
发表于 2011-4-13 22:06:37 | 显示全部楼层 来自: 中国湖北武汉
也来学习一下
发表于 2011-4-14 18:13:35 | 显示全部楼层 来自: 中国江苏南通
可以用查找替换功能试试
发表于 2011-4-16 20:57:33 | 显示全部楼层 来自: 中国江苏苏州
这个工具也很强大了,呵呵,谢谢楼主
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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