提取标注尺寸进行替换
本帖最后由 lostbalance 于 2013-11-16 13:52 编辑编了一个提取标注的尺寸,并替换文本的程序,适用于线性、对齐、半径、直径、角度和弧长标注。
注:弧长标注老版本的cad,比如04版之类的,没这个功能。(defun C:DimReplace( / dim bl jd len diment dimss dimty )
(princ "\n选择标注: ")
(setq dim (ssget '((0 . "DIMENSION"))))
(setq bl (getreal "\n标注比例: <1>"))
(if (not bl) (setq bl 1))
(setq jd (getint "\n标注精度: <0>"))
(if (not jd) (setq jd 0))
(if dim
(progn
(repeat
(setq len (sslength dim))
(setq diment (entget (ssname dim (setq len (1- len)))))
(setq dimss (cdr (assoc 1 diment)))
(if (or (= dimss "") (= dimss "<>"))
(progn
(setq dimty (cdr (assoc 70 diment)))
(setq dimss (cdr (assoc 42 diment)))
(cond
((or (= dimty 32) (= dimty 160);线性
(= dimty 33) (= dimty 161);对齐
(= dimty 37) (= dimty 165);弧长
)
(setq dimss (rtos (* dimss bl) 2 jd))
)
((or (= dimty 34) (= dimty 162));角度
(setq dimss (strcat (rtos (WYB-rtod dimss) 2 jd) "%%D"))
)
((or (= dimty 35) (= dimty 163));直径
(setq dimss (strcat "%%C" (rtos (* dimss bl) 2 jd)))
)
((or (= dimty 36) (= dimty 164));半径
(setq dimss (strcat "R" (rtos (* dimss bl) 2 jd)))
)
)
(entmod (subst (cons 1 dimss) (assoc 1 diment) diment))
)
)
)
)
)
(princ "\n完成标注的文本替换")
(princ)
)
(defun WYB-rtod(r)
(/ (* r 180) pi)
) 梦里水香 发表于 2017-8-18 16:56
标注前面有文本的话替换失败,有没有解决办法呢?
用(wcmatch dimss "*<>*)定位<>,暂存其他的文字,然后计算并替换<>为数值。
有兴趣的话,还可以试着扩充一下功能,对于原来就是文字+数值的,分离出文字,然后重新计算并替换数值。 标注前面有文本的话替换失败,有没有解决办法呢? 很好用,不过坐标能不能也加进去? 东西太好了 楼主英明啊 看不了东西啊 支持,谢谢分享! 太棒啦!!!! 支持源码。 这个源码不错,谢谢分享。 看看如何,学习下
页:
[1]
2