czb203 发表于 2023-8-13 15:45:52

用多边形PL线范围窗选图元

;用多边形PL线范围窗选图元(kxty).lsp
(defun c:kxty (/ aa en info pt_lst ss)
(setq en (car (entsel "\n选择一个多边形:")))
(setq info(entget en))
(setq pt_lst (mapcar 'cdr
               (vl-remove-if-not '(lambda (x) (= (car x) 10) ) info )
               )
)
(setq pt_lst pt_lst)
(setq ss(ssget"cp" pt_lst ))
(sssetfirst ss ss)
(setq aa (sslength ss))
(setq aa (- aa 1))
(princ (strcat "\n多边形范围内功选择图元对象:" (rtos aa 2 2)"个"))
(princ)
)
万能的大佬们,能不能帮我优化下,总感觉有点问题~:loveliness:

sammy 发表于 2023-8-13 16:06:49

;WP 窗围选多段线内所有实体
(defun C:WP (/ lss1 en enlist)
(print "选多段线后空格确定")
(setvar "cmdecho" 0)
(while (setq en (car (entsel)))
(setq enlist (entget en))
(setq lss1 (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) enlist)))
(Setq xuanze1 (ssget "WP" lss1))
(sssetfirst nil xuanze1)
)
(princ)
)

忘记在哪篇帖下看到的代码,之前保存的发给你参考下。
如果哪位朋友知道这段代码作者也麻烦帮忙署名一下,谢谢。

czb203 发表于 2023-8-13 17:18:00

sammy 发表于 2023-8-13 16:06
;WP 窗围选多段线内所有实体
(defun C:WP (/ lss1 en enlist)
(print "选多段线后空格确定")


非常感谢大佬热心帮助

包哥 发表于 2023-8-14 15:13:02

对的,CP和WP的区别没理解

花开富贵 发表于 2023-8-16 23:06:04

这个有个问题,如果多段线发生缠绕,上面这两段代码不会选中对象的,需要对得到的顶点再做个判断,优化,然后再执行ssget

czb203 发表于 2023-8-17 00:11:05

花开富贵 发表于 2023-8-16 23:06
这个有个问题,如果多段线发生缠绕,上面这两段代码不会选中对象的,需要对得到的顶点再做个判断,优化,然 ...

求大佬优化下

花开富贵 发表于 2023-8-17 11:40:38

czb203 发表于 2023-8-17 00:11
求大佬优化下

这个我没有写过,大致的思路是判断交点,然后判断交点和各个顶点的先后位置关系,根据这个先后关系判断分割区域,然后对每个区域做ssget
按照这个思路可以做出了的哦,加油,期待你的作品!
页: [1]
查看完整版本: 用多边形PL线范围窗选图元