请问怎么从小到大的修改圆?
(defun c:bcnc ( / li et)(if (and(setq ss (ssget "x"(list(cons 8 "1")))) )
(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(cons 8 "1")r1)))
(setq r (assoc 40 ent))
(setq newd (getdist (strcat "\n直径-->" (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)
)
上面是论坛找到的改圆大小的程序目前程序对圆没有排列
就是说从最大直径开始
帮忙修改一下从最小直径往大的排列?
谢谢
例:5,6,8,9,10,15,16,
程序现在结果:从16,15,10,9,8,6,5
想要的结果:从5,6,8,9,10,15,16
(defun c:bcnc ( / li et clst cenlist l2 EN ENT ENT1 I J NEWD R1 SS SS1 )
(if (and(setq ss (ssget "x"(list '(0 . "CIRCLE")(cons 8 "1")))) )
(progn
(setq i 0 clst nill2 nil)
(repeat (sslength ss)
(setq en (ssname ss i)
ent (entget en)
r1 (assoc 40 ent)
cenlist (cons(cdr r1) cenlist)
i (1+ i))
(setq cenlist (vl-sort cenlist '< ))
)
(setq l2 (cons (car cenlist)l2))
(while(setq cenlist (vl-remove(car cenlist)(cdr cenlist)))(setq l2 (cons(car cenlist) l2)))
(foreach e (reverse l2)
(if (not (member e clst))
(progn
(setq ss1 (ssget "x"(list(cons 8 "1") '(0 . "CIRCLE")(cons 40 e))))
(setq newd (getdist (strcat "\n直径-->" (rtos (* e 2) 2 4) "<--:")))
(if newd (progn
(setq j 0)
(setq e (/ newd 2))
(setq clst (cons e clst))
(repeat (sslength ss1)
(setq ent1 (entget(ssname ss1 j))
ent1 (subst (cons 40 e) (assoc 40 ent1) ent1)
j (1+ j))
(entmod ent1)
)
)
)
)
)
)
)
)
(princ)
)
jun353835273 发表于 2017-11-19 20:17
院长的代码值得学习
嗯,但要加载一个工具,其实用不到太多,所以
不过还是谢谢院长的帮助 168a 发表于 2017-11-13 20:54
缺少参数? 哪位老师帮忙帮忙谢谢啦
装了院长的插件才行
...从最小直径往大的排列?...
未见程序有排序呀? 程序根本就没有排序功能。。 所以请帮忙加上排序,谢谢 各位老师帮忙帮忙,谢谢
缺少参数? 哪位老师帮忙帮忙谢谢啦 有没有可以实现的啊,在线等 一定要安装插件的吗,有没有直接加载可以用的呀
页:
[1]
2