本帖最后由 qinhengda 于 2025-9-26 23:53 编辑

请问各位大神,如何打断圆内的线条?如图片所示:


网友答: (defun c:ctr (/ ss n s1)
        (setq ss (ssget '((0 . "circle"))) n 0)
        (repeat (sslength ss)
                (setq s1 (ssname ss n))
                (command "trim" s1 "" "non" (cdr (assoc 10 (entget s1))) "" )
                (setq n (1+ n))
        )       
        (princ)
)


网友答: 本帖最后由 amook147 于 2025-9-28 11:06 编辑
隽轩2013 发表于 2025-9-28 10:45
(defun c:ctr (/ ss n s1)
        (setq ss (ssget '((0 . "circle"))) n 0)
        (repeat (sslength ss)

圆心不在直线上删除不了     而且有各种BUG        而且圆弧多了 裁剪的时候  明显慢

网友答:
amook147 发表于 2025-9-28 11:02
圆心不在直线上删除不了     而且有各种BUG        而且圆弧多了 裁剪的时候  明显慢

是的,我原先的思路就是这个,就是太多bug了,线一定要精准穿过圆心

网友答: 用横线和每个圆形求交点,之后得到一堆的X,排序一下,然后不断打断就好了.

网友答: 如果只是直线,直接求交点,重新生成需要的直线段

网友答: 把原始直线删除,entmake重新画短的连接线,只需要心动的那么点时间。

网友答: 如果是直线,还不如重新阵列画一个这样的

网友答:



是这个意思吧   你试试吧



网友答:
lxl217114 发表于 2025-9-27 09:50
如果是直线,还不如重新阵列画一个这样的

阵列也可以   但是不规则的 阵列就没办法了

网友答:
amook147 发表于 2025-9-27 09:58
是这个意思吧   你试试吧

这个好 下载研究;这次居然不收费了

网友答:
amook147 发表于 2025-9-27 09:58
是这个意思吧   你试试吧

感觉代码还可以精简些

网友答:
guosheyang 发表于 2025-9-27 15:38
感觉代码还可以精简些

改成直接框选 一次成型的就行了    框选的时候连线段也一起选择上  一次性处理  
  • 上一篇:求最小包围框(二分法)
  • 下一篇:没有了