明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 956|回复: 6

[讨论] 如何把多段线炸开,再加入选择集呢?

[复制链接]
发表于 2024-4-7 17:54:27 | 显示全部楼层 |阅读模式
我有一些线,分不清是多段线,还是直线
我想把它们都选中,然后都变成直线,再进行下一步操作

本来想着,先判断类型是不是多段线,
如果是,就加入到新选择集里面,后面统一炸开,再用(ssget “p”)获取炸开的直线
后来发现这样又得合并选择集,感觉挺笨的,
大家有更好的方法吗


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-4-7 20:28:04 | 显示全部楼层
你这个思路没问题 就是获得炸开的线再合并选择集
发表于 2024-4-7 20:29:13 | 显示全部楼层
感觉还是要做并集。
  1. (setq s1 (ssget))
  2. (command ".EXPLODE" s1 "")
  3. (command ".SELECT" s1 "add" (ssget "P") "")
  4. (sssetfirst nil (ssget "P"))
发表于 2024-4-7 20:29:25 | 显示全部楼层
本帖最后由 qazxswk 于 2024-4-7 21:12 编辑

先设定两点,P1、P2,再筛选多段线并炸开
(vl-cmdf "_.explode" (ssget "c" p1 p2 '((0 . "polyline,lwpolyline"))))
炸开后,再用两点窗选一次,就得到一个选择集了
(setq ss (ssget "c" p1 p2 '((0 . "line"))))

以上的方法,只适合框选的情况,如果是点选加框选,那就需要另一个方式了。不过你自己都说了,分不清是多段线,还是直线,那只能是筛选了。



(defun c:11(/ p1 p2 ss)
(setvar "qaflags" 1)
(setq p1 (getpoint "框选起点:"))
(setq p2 (getcorner p1 "指定对角点: " ))
(vl-cmdf "_.explode" (ssget "c" p1 p2 '((0 . "polyline,lwpolyline"))))
(setq ss (ssget "c" p1 p2 '((0 . "line"))))
(setvar "qaflags" 0)
(sssetfirst nil ss)
(princ)
)

本帖子中包含更多资源

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

x
发表于 2024-4-7 20:53:00 | 显示全部楼层
不笨,因为lisp想要做好需要注重提取成本.
这个提取成本就是自己一系列的多段线子段出来满足后面功能的集合.
 楼主| 发表于 2024-4-7 21:41:12 | 显示全部楼层
(defun c:ttg (/ en s1 s2 s3 s4 ss)
        (setq ss(ssget '((0 . "LINE,LWPOLYLINE"))))
        (setq s1(ssadd))
        (setq s2(ssadd))
        (repeat(sslength ss)
                (setq en(ssname ss 0))
                (if(equal(cdr(assoc 0(entget en)))"LWPOLYLINE")
                        (ssadd en s1)
                        (ssadd en s2)
                )
                (ssdel en ss)
        )
        (setvar "QAFLAGS" 1)
        (command "EXPLODE" s1 "")
        (setq s3(ssget "p"))
        (command "SELECT" S3 S2 "")
        (setq S4(ssget "P"))
        (sssetfirst nil s4)
        (princ)
)
发表于 2024-4-7 23:00:57 | 显示全部楼层
aws 发表于 2024-4-7 21:41
(defun c:ttg (/ en s1 s2 s3 s4 ss)
        (setq ss(ssget '((0 . "LINE,LWPOLYLINE"))))
        (setq s1(ssadd))
...

直接对遍历ss,直线直接加入新选集,多段线炸开再加入,这样应该简练点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 20:48 , Processed in 0.182313 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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