QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 zjf00 于 2010-1-17 15:20 编辑
) d0 c  n' J" S, k& W' \6 l
9 z  `' X- d8 d6 Y1 t: _在CAD中作图时,经常将尺寸标文字替换成相应的数字,目的是为了拉伸标注的对象时标注的数值不改变。5 L2 n9 C3 K8 R) x. C6 r. q4 T1 _
单个修改的话很容易,只要在标注属性的文字替代中写入相应的数字就可以了。不过在修改大量标注时,这就有点力不从心了。编写插件应该可以解决,这样的插件怎样编写,请教各位版友

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 编辑
" A) k5 i1 S3 Y
; g7 N6 E: S- i, I+ y9 |) [' ^等了好久也没有等到有价值的回复。8 \" F4 J; Y# M
其实这对于会一些lisp的人来说真的是一件很容易的事
# N% v8 ]: s/ M我没有学过lisp,不过依靠N久以前学过的一点点C语言的编程基础,再参照其他高手写的类似的lisp代码,总算凑齐了一段代码,解决了这个问题,现在发出来和有需要的同志共享一下:6 X- _1 D5 @4 E* g% e- L1 ^! X; v
(defun c:dimdd (/ measure real result ss text)
* V% Z  U7 {% w! Q(vl-load-com) $ [0 W. P7 p+ L0 U2 |; u4 }0 S: d
(vla-endundomark   ^9 K( [: m2 b7 y. ~8 \
    (vla-get-activedocument
  O7 s" \6 o" X/ _) c4 S$ P      (vlax-get-acad-object) 6 O0 j/ E* d, T) `
    )
( n+ G% j' {: E. h7 W, z1 ^/ _3 }$ A% G) 9 o- S5 ~, z5 R5 H* N1 W9 y' b
(vla-startundomark ) V( f/ |: {$ s  R+ E
    (vla-get-activedocument
& k. K( R8 q! f0 ?. B  `      (vlax-get-acad-object) * q% W: B/ Y- N  [3 ]7 i
    )   f* u# }, k  o" w; D4 ?. c8 S
)
  t& F8 x5 S# _# [    (setq ss (ssget '((0 . "DIMENSION"))))
  W" j- r- G+ o       ) [/ p1 [! |; D3 h/ m
    (foreach obj 6 X* V. ?! j) h! @$ O* w  L. m
   (mapcar # x8 x2 |  a! Y! {
     'vlax-ename->vla-object
: b) Z0 ~4 ~6 ?2 c; d     (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) 8 v6 W/ E0 k0 [: ^6 {) A
   ) 3 y3 D1 B: x0 `" \& N
      (if (and (setq text (vla-get-textoverride obj))
: V8 \0 R( N8 ?+ s5 ?5 i, ~        (setq measure (vla-get-measurement obj))
0 B2 O: C6 w& a5 v0 V% w1 b; h/ _% z        (/= text "") 3 V7 U( q" P7 {5 C4 I3 ~
        (numberp (read text)) # _1 I9 {. i9 Y  ?
   ) & N6 N4 l, ~/ T, a
(setq real (read text)) ! L" y( c4 g& j; q8 @
(setq real measure) 7 H8 i  t8 G( R' i# P5 A! v
      )
; ~3 S2 j0 y& r" r      (and real 0 m2 n1 F+ I9 T5 i/ a" a) R' @
    (setq result (vl-princ-to-string (+ real 0.0))) 9 L" m% w2 [( d6 D6 P
    (vla-put-textoverride obj result) # P+ p. \: G  p, K8 q0 A
      ) $ |' h" }1 X8 S1 X
    )
% h) |& h' Q1 a: T, z4 {! G- E, {9 d2 v: Y& Q: F
(vla-endundomark
0 @2 R7 L* X- N: z, N# z    (vla-get-activedocument : }1 u  |) m* ~' K- A) P" \) i7 T
      (vlax-get-acad-object)
7 ~" O( Z; i$ A+ s, q+ U    ) ( h1 y- p; ^  S0 \# q4 [' o$ m
) 8 l+ D/ w$ s3 O% t
(princ)
6 ?) b3 Y5 l, [8 R. B! u) ; }# X9 w* s& m' \. T
(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
* z5 g5 [- w5 w3 \+ W
) e$ Q0 T1 V& R# H; pdimdd
4 ?; B2 Z# j5 T' _* m“defun c:”后面跟着的字符串
发表于 2011-4-13 18:14:26 | 显示全部楼层 来自: 中国上海
程序的命令:dimdd9 l4 A; n% D- O( B
找了很久,谢谢楼主的分享
发表于 2011-4-13 18:36:07 | 显示全部楼层 来自: 中国上海
程序在使用中,发现批量文字替换后都要精确小数点后两位
3 D. s" M$ g: S9 G2 o$ y" P8 Z当标注精确到整数位时,替换后面也带零+ C" e4 D# |' W- \0 r
是否能优化下程序,使替换后的标注数据和替换前一样
发表于 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 )

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