标注样式的替换LISP
<p> 大家新年好!新的一年祝大家心想事成!</p><p>我想请大家帮我写一个LISP,就是我一个档案里有三个标注样式UNIT1 UNIT2 UNIT3 ,我输入U1选中尺寸就变成UNIT1样式,我输入U2选中尺寸就变成UNIT2样式,我输入U3选中尺寸就变成UNIT3样式,谢谢!</p> millermin 发表于 2011-11-20 14:17我也贴一个给你参考。我自己做的。能够在整个图形文件里,自动找到指定的旧样式替换成你需要的新样式。所以 ...
哥们这个程序是不是有问题,我运行了没有反应, 你能给我一个能用的吗, 谢谢了 想看一下什么效果 谢谢版主的大作
;快速更改标注的标注类型 明经 ZZXXQQ 2009元旦
(defun c:u1 ()
(if (and (setq s1 (entsel "\n选择尺寸标注 :"))
(setq ent (entget(car s1)))
(= (cdr(assoc 0 ent)) "DIMENSION")
) (progn
(setq ent (subst '(3 . "UNIT1") (assoc 3 ent) ent))
(entmod ent)
))
(princ)
)
(defun c:u2 ()
(if (and (setq s1 (entsel "\n选择尺寸标注 :"))
(setq ent (entget(car s1)))
(= (cdr(assoc 0 ent)) "DIMENSION")
) (progn
(setq ent (subst '(3 . "UNIT2") (assoc 3 ent) ent))
(entmod ent)
))
(princ)
)
(defun c:u3 ()
(if (and (setq s1 (entsel "\n选择尺寸标注 :"))
(setq ent (entget(car s1)))
(= (cdr(assoc 0 ent)) "DIMENSION")
) (progn
(setq ent (subst '(3 . "UNIT3") (assoc 3 ent) ent))
(entmod ent)
))
(princ)
)
谢谢版主的新年礼物,版主下次再抽点时间看能不能复选,谢谢! 本帖最后由 作者 于 2009-1-2 22:51:56 编辑
这是多选的:
;快速更改标注的标注类型 明经 ZZXXQQ 2009元旦
(defun c:u1 ()
(if (and (princ "\n选择尺寸标注 :")
(setq ss (ssget '((0 . "DIMENSION"))))
) (progn
(setq i 0)
(repeat (sslength ss)
(setq ent (entget(ssname ss i)) i (1+ i)
ent (subst '(3 . "UNIT1") (assoc 3 ent) ent))
(entmod ent)
)
))
(princ)
)
(defun c:u2 ()
(if (and (princ "\n选择尺寸标注 :")
(setq ss (ssget '((0 . "DIMENSION"))))
) (progn
(setq i 0)
(repeat (sslength ss)
(setq ent (entget(ssname ss i)) i (1+ i)
ent (subst '(3 . "UNIT2") (assoc 3 ent) ent))
(entmod ent)
)
))
(princ)
)
(defun c:u3 ()
(if (and (princ "\n选择尺寸标注 :")
(setq ss (ssget '((0 . "DIMENSION"))))
) (progn
(setq i 0)
(repeat (sslength ss)
(setq ent (entget(ssname ss i)) i (1+ i)
ent (subst '(3 . "UNIT3") (assoc 3 ent) ent))
(entmod ent)
)
))
(princ)
)
版主上面LISP代码与第一次是一样的 随便问一下版主 '<font color="red">(</font><font color="green">3</font> . <font color="#ff00ff">"UNIT1"</font><font color="red">)里3.是什么意思,主要是问为什么要加点,谢谢!</font> <p>4楼贴错了,已更新。其实可以直接用格式刷。<br/>'(3 . "UNIT1")中间的点是ACAD的一种数据格式——点对。</p> 谢谢! 学习下...................... 谢谢楼主啊,