明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1260|回复: 16

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

[复制链接]
发表于 2017-11-12 17:20 | 显示全部楼层 |阅读模式
(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

发表于 2017-11-15 20:50 | 显示全部楼层
  1. (defun c:bcnc ( / li et clst cenlist l2 EN ENT ENT1 I J NEWD R1 SS SS1 )
  2.         (if (and(setq ss (ssget "x"(list '(0 . "CIRCLE")(cons 8 "1")))) )
  3.                 (progn
  4.                         (setq i 0 clst nil  l2 nil)
  5.                         (repeat (sslength ss)
  6.                                 (setq en (ssname ss i)
  7.                                         ent (entget en)
  8.                                         r1 (assoc 40 ent)
  9.                                         cenlist (cons(cdr r1) cenlist)
  10.                                         i (1+ i))
  11.                                 (setq cenlist (vl-sort cenlist '< ))
  12.                         )
  13.                         (setq l2 (cons (car cenlist)l2))
  14.                         (while(setq cenlist (vl-remove(car cenlist)(cdr cenlist)))(setq l2 (cons(car cenlist) l2)))
  15.                         (foreach e (reverse l2)
  16.                                 (if (not (member e clst))
  17.                                         (progn
  18.                                                 (setq ss1 (ssget "x"(list(cons 8 "1") '(0 . "CIRCLE")(cons 40 e))))
  19.                                                 (setq newd (getdist (strcat "\n直径-->" (rtos (* e 2) 2 4) "<--:")))
  20.                                                 (if newd (progn
  21.                                                                                          (setq j 0)
  22.                                                                                          (setq e (/ newd 2))
  23.                                                                                          (setq clst (cons e clst))
  24.                                                                                          (repeat (sslength ss1)
  25.                                                                                                  (setq ent1 (entget(ssname ss1 j))
  26.                                                                                                          ent1 (subst (cons 40 e) (assoc 40 ent1) ent1)
  27.                                                                                                          j (1+ j))
  28.                                                                                                  (entmod ent1)
  29.                                                                                          )
  30.                                                                                  )
  31.                                                 )
  32.                                         )
  33.                                 )
  34.                         )
  35.                 )
  36.         )
  37.         (princ)
  38. )

评分

参与人数 1明经币 +1 金钱 +20 收起 理由
168a + 1 + 20 赞一个!

查看全部评分

 楼主| 发表于 2017-11-21 09:44 | 显示全部楼层
jun353835273 发表于 2017-11-19 20:17
院长的代码值得学习

嗯,但要加载一个工具,其实用不到太多,所以
不过还是谢谢院长的帮助
发表于 2017-11-14 18:23 | 显示全部楼层
168a 发表于 2017-11-13 20:54
缺少参数? 哪位老师帮忙帮忙  谢谢啦

装了院长的插件才行
发表于 2017-11-12 17:44 | 显示全部楼层

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

未见程序有排序呀?
发表于 2017-11-12 17:55 来自手机 | 显示全部楼层
程序根本就没有排序功能。。
 楼主| 发表于 2017-11-12 18:19 来自手机 | 显示全部楼层
所以请帮忙加上排序,谢谢
 楼主| 发表于 2017-11-13 08:24 来自手机 | 显示全部楼层
各位老师帮忙帮忙,谢谢
发表于 2017-11-13 19:12 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2017-11-13 20:54 | 显示全部楼层
缺少参数? 哪位老师帮忙帮忙  谢谢啦
 楼主| 发表于 2017-11-14 11:58 来自手机 | 显示全部楼层
有没有可以实现的啊,在线等
 楼主| 发表于 2017-11-14 23:29 来自手机 | 显示全部楼层
一定要安装插件的吗,有没有直接加载可以用的呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 14:53 , Processed in 0.210374 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表