abtjy 发表于 2009-1-1 10:42:00

标注样式的替换LISP

<p>&nbsp;大家新年好!新的一年祝大家心想事成!</p><p>我想请大家帮我写一个LISP,就是我一个档案里有三个标注样式UNIT1 UNIT2 UNIT3 ,我输入U1选中尺寸就变成UNIT1样式,我输入U2选中尺寸就变成UNIT2样式,我输入U3选中尺寸就变成UNIT3样式,谢谢!</p>

juliana207 发表于 2021-4-26 20:49:41

millermin 发表于 2011-11-20 14:17
我也贴一个给你参考。我自己做的。能够在整个图形文件里,自动找到指定的旧样式替换成你需要的新样式。所以 ...

哥们这个程序是不是有问题,我运行了没有反应, 你能给我一个能用的吗, 谢谢了

Shing 发表于 2021-11-21 22:58:30

想看一下什么效果

趣意人生 发表于 2021-9-16 21:26:18

谢谢版主的大作

ZZXXQQ 发表于 2009-1-1 17:30:00


;快速更改标注的标注类型 明经 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)
)

abtjy 发表于 2009-1-1 20:34:00

谢谢版主的新年礼物,版主下次再抽点时间看能不能复选,谢谢!

ZZXXQQ 发表于 2009-1-1 22:53:00

本帖最后由 作者 于 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)
)

abtjy 发表于 2009-1-2 20:10:00

版主上面LISP代码与第一次是一样的

abtjy 发表于 2009-1-2 20:37:00

随便问一下版主&nbsp;'<font color="red">(</font><font color="green">3</font> . <font color="#ff00ff">"UNIT1"</font><font color="red">)里3.是什么意思,主要是问为什么要加点,谢谢!</font>

ZZXXQQ 发表于 2009-1-2 22:56:00

<p>4楼贴错了,已更新。其实可以直接用格式刷。<br/>'(3 . "UNIT1")中间的点是ACAD的一种数据格式——点对。</p>

abtjy 发表于 2009-1-3 06:52:00

谢谢!

八月 发表于 2009-1-7 11:32:00

学习下......................

yyt1234 发表于 2009-1-7 15:08:00

谢谢楼主啊,
页: [1] 2 3 4
查看完整版本: 标注样式的替换LISP