[求助]批量修改圆的直径!
求高手帮忙编一lisp 能批量修改0层不同的直径 这个其实不能按层选,得按孔径选择才行,万一好多孔径的都在一个层的呢 <p>比如0层下有0.8、0.9、1.0等圆孔,我要输入一个命令,在命令行提示旧圆多大,输入要改的尺寸,不改就回车</p> 本帖最后由 ljttjl 于 2011-9-17 22:57 编辑autocad本身就可以实现,filter过滤器命令批量选择相同的圆后,用属性修改管理就可以修改 本帖最后由 作者 于 2008-11-15 12:15:57 编辑
再试试看
;提示改变圆的直径 明经 ZZXXQQ 2008.11.9
(defun c:tt ()
(if (and (princ "\nSelect Circle(s) 选择圆:")
(setq ss (ssget '((0 . "CIRCLE"))))) (progn
(setq i 0 clst (list))
(repeat (sslength ss)
(setq en (ssname ss i)
ent (entget en)
r1 (assoc 40 ent)
i (1+ i))
(if (not (member (cdr r1) clst)) (progn
(setq ss1 (ssget "X" (list '(0 . "CIRCLE") r1)))
(setq r (assoc 40 ent))
(setq newd (getdist (strcat "\nNew diameter 新直径<" (rtos (* (cdr r) 2) 2 4) "> :")))
(if newd (progn
(setq j 0)
(setq r (/ newd 2))
(setq clst (cons r clst))
(repeat (sslength ss1)
(setq ent1 (entget(ssname ss1 j))
ent1 (subst (cons 40 r) (assoc 40 ent1) ent1)
j (1+ j))
(entmod ent1)
)
)
(setq clst (cons r clst))
)
))
)
))
(princ)
)
<p><strong><font face="Verdana" color="#da2549">ZZXXQQ大哥,程式出错:</font></strong></p><p>命令: tt<br/>Select Circle(s) 选择圆:<br/>选择对象: 指定对角点: 找到 2 个</p><p>选择对象:<br/>选择对象: ; 错误: 参数类型错误: numberp: nil</p><p>能不能让程式自动选择0层?</p><p>(setq ss (ssget "X" '((0 . "CIRCLE")(8 . "0"))))</p> 4楼已改 程式还有一个问题不够完善:当某一种孔径不用改时,直接回车的话有多少个圆就要按多少次,麻烦~
命令: tt
请输入0层此种孔的新直径 <1.0000> :
请输入0层此种孔的新直径 <1.0000> :
请输入0层此种孔的新直径 <1.0000> :
请输入0层此种孔的新直径 <1.0000> :
请输入0层此种孔的新直径 <2.0000> :3
;提示改变圆的直径 明经 ZZXXQQ
(defun c:tt ()
(if (and ;(princ "\nSelect Circle(s) 选择圆:")
(setq ss (ssget "X" '((0 . "CIRCLE")(8 . "0")))))
(progn
(setq i 0 clst (list))
(repeat (sslength ss)
(setq en (ssname ss i)
ent (entget en)
r1 (assoc 40 ent)
i (1+ i))
(if (not (member (cdr r1) clst)) (progn
(setq ss1 (ssget "X" (list '(0 . "CIRCLE") r1)))
(setq r (assoc 40 ent))
(setq newd (getdist (strcat "\n请输入0层此种孔的新直径 <" (rtos (* (cdr r) 2) 2 4) "> :")))
(if newd (progn
(setq j 0)
(setq r (/ newd 2))
(setq clst (cons r clst))
(repeat (sslength ss1)
(setq ent1 (entget(ssname ss1 j))
ent1 (subst (cons 40 r) (assoc 40 ent1) ent1)
j (1+ j))
(entmod ent1)
)
))
))
)
))
(princ)
(alert (strcat "0 层的孔已配完"))
)
4楼又改了 <p>又有新问题,如选择集中有1.0、1.1、1.2、1.3的圆,当把1.0的改为1.2时,接着就到1.1 、1.3了,1.2的就不能修改了。<strong><font face="Verdana" color="#da2549">ZZXXQQ大哥</font></strong>这个问题如何解决。</p> <p>程序只能区分相同直径的圆。如果想要那么改,只能将1.2的圆改成别的直径再改1.1的圆。</p>
页:
[1]
2