168a 发表于 2017-11-12 17:20:04

请问怎么从小到大的修改圆?

(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

jun353835273 发表于 2017-11-15 20:50:03

(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)
)

168a 发表于 2017-11-21 09:44:39

jun353835273 发表于 2017-11-19 20:17
院长的代码值得学习

嗯,但要加载一个工具,其实用不到太多,所以
不过还是谢谢院长的帮助

东升铮 发表于 2017-11-14 18:23:31

168a 发表于 2017-11-13 20:54
缺少参数? 哪位老师帮忙帮忙谢谢啦

装了院长的插件才行

Andyhon 发表于 2017-11-12 17:44:25


...从最小直径往大的排列?...

未见程序有排序呀?

南极人 发表于 2017-11-12 17:55:42

程序根本就没有排序功能。。

168a 发表于 2017-11-12 18:19:21

所以请帮忙加上排序,谢谢

168a 发表于 2017-11-13 08:24:28

各位老师帮忙帮忙,谢谢

xyp1964 发表于 2017-11-13 19:12:05


168a 发表于 2017-11-13 20:54:11

缺少参数? 哪位老师帮忙帮忙谢谢啦

168a 发表于 2017-11-14 11:58:10

有没有可以实现的啊,在线等

168a 发表于 2017-11-14 23:29:00

一定要安装插件的吗,有没有直接加载可以用的呀
页: [1] 2
查看完整版本: 请问怎么从小到大的修改圆?