QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 zjf00 于 2010-1-17 15:20 编辑
5 u5 `* Z) q. C7 _/ C7 N) P; N8 t# U. F2 h+ b6 S
在CAD中作图时,经常将尺寸标文字替换成相应的数字,目的是为了拉伸标注的对象时标注的数值不改变。! h4 c$ t2 ^' w% W7 ]: v
单个修改的话很容易,只要在标注属性的文字替代中写入相应的数字就可以了。不过在修改大量标注时,这就有点力不从心了。编写插件应该可以解决,这样的插件怎样编写,请教各位版友

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 编辑 + f% k8 i$ t  i0 W6 m) t
; q4 X% ?( L: n% m  E3 N( _
等了好久也没有等到有价值的回复。
7 _; \: R2 q( ?' O/ w5 j其实这对于会一些lisp的人来说真的是一件很容易的事
2 U2 Y% m/ P; g1 S( p" X5 W我没有学过lisp,不过依靠N久以前学过的一点点C语言的编程基础,再参照其他高手写的类似的lisp代码,总算凑齐了一段代码,解决了这个问题,现在发出来和有需要的同志共享一下:9 l0 A1 L4 q9 @0 d) H, U
(defun c:dimdd (/ measure real result ss text) " \' Y6 K: C# A
(vl-load-com)
# S8 n2 P+ l2 P- r" y(vla-endundomark
7 n" Z* i1 X3 B- E# x    (vla-get-activedocument 6 ^" C+ p6 w; p% L( j: W  H( T
      (vlax-get-acad-object)
8 j( |. A) n  m" P    )
, ?: D7 G# G  f& I. W( y) - z2 `# W/ v: P4 p% h
(vla-startundomark - P) _9 w" D/ s2 H0 `6 y. a
    (vla-get-activedocument # x) c6 K: r3 R/ A4 M) o4 ~
      (vlax-get-acad-object) + `0 u, m0 L% l* v  d: B! O
    )
+ j: z% B. e  j  h, J" q) ' c8 D- m- f2 N/ D
    (setq ss (ssget '((0 . "DIMENSION")))) 1 ]0 [7 u/ _7 \/ P
      
1 g/ O% x5 K- ~% q* B* c5 L    (foreach obj 6 ]& b8 ~/ K9 k- r
   (mapcar
8 Y; r" A7 y8 p( l2 Q     'vlax-ename->vla-object 7 O& p. N1 }. t: B
     (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) ; T/ t, _6 o+ D! k
   )
! @) w7 y( |8 {% J      (if (and (setq text (vla-get-textoverride obj))
1 B$ J7 y0 _/ G- h; ]        (setq measure (vla-get-measurement obj)) 8 v* c/ s; x* n  A* ?
        (/= text "") 9 {" C: \5 k( n, e( k8 v
        (numberp (read text)) , j8 z# a5 V# v
   )
% ~9 I5 L% z$ }9 m* L! ~) Y(setq real (read text)) , N. N! ^1 k7 }* ]& m* c1 G6 f2 f# L
(setq real measure) 8 \+ r2 [( V+ |( W$ A
      ) & m* q+ b! L1 e( c% |
      (and real
  P: O8 \& V& W' B1 O% y. {6 M    (setq result (vl-princ-to-string (+ real 0.0))) 2 _7 ?2 C$ {# Q; w
    (vla-put-textoverride obj result)
9 h- h, y0 Y- b      )
2 i) e5 I5 e) @: g# L' P& m    )
: C6 e# o9 Z/ H2 S7 c5 W( q6 Q* j6 B/ n
(vla-endundomark
0 D. ]( V& t1 F2 ]1 ~+ b4 y    (vla-get-activedocument 6 [( u, Y* ~( R1 p- i: [8 p
      (vlax-get-acad-object) 3 ?# ?$ ]4 @- _6 J0 l4 U% i7 ~' }
    )
+ W% {2 E+ }9 F9 {)
$ |8 Z: `5 U4 c; `, \) w# H(princ) 2 O5 ^5 k8 N) M  F
) 6 p* \3 ^9 A. q; \6 [* I
(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
; E8 o4 O) ?7 }# w2 _' C
  y1 Y2 x0 S& x0 Q# g- Ndimdd  R  Q. s4 O8 k4 o' P- {# Q
“defun c:”后面跟着的字符串
发表于 2011-4-13 18:14:26 | 显示全部楼层 来自: 中国上海
程序的命令:dimdd
+ N% J0 S, N7 U$ x' ?# A4 }; |找了很久,谢谢楼主的分享
发表于 2011-4-13 18:36:07 | 显示全部楼层 来自: 中国上海
程序在使用中,发现批量文字替换后都要精确小数点后两位
9 b/ r+ m. \5 Z当标注精确到整数位时,替换后面也带零% ^: L, c3 h! G% F1 C
是否能优化下程序,使替换后的标注数据和替换前一样
发表于 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 )

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