我在autocad中有以下二维多段线。
我正在尝试创建一个代码,在选择所有这些代码时,它会过滤掉那些内部有阴影的人。
从另一个来源我得到了以下一段代码(感谢tharwat),但是,尽管我理解了它的每一部分,但是从第二部ssget
我无法理解这些元素的含义。< / p>
(defun c:test (/ ss i sn e)
(if (setq ss (ssget '((0 . "POLYLINE")))) ;;selects all the polylines in a window
(repeat (setq i (sslength ss)) ;;cycles trough each one of them
(if (ssget "_CP" ;;???defines a crossing poligon inside wich the polylines will be considered???
(mapcar 'cdr ;;???
(vl-remove-if-not '(lambda (p) (= (car p) 10))
(entget (setq sn (ssname ss (setq i (1- i)))))
)
)
'((0 . "HATCH"))
)
(ssdel sn ss) ;;deletes the entities wich belong to the selection set
)
)
)
(sssetfirst nil ss)
(princ)
)
初学者,对不起,如果这不是一个好问题。
答案 0 :(得分:0)
“_ CP”实际上代表Crossing Polygon。 此选项需要一个点列表(多边形顶点)。
(mapcar 'cdr ;;???
(vl-remove-if-not '(lambda (p) (= (car p) 10))
(entget (setq sn (ssname ss (setq i (1- i)))))
)
)
从折线顶点构建此点列表。
因此,此例程首先提示用户选择折线。 然后,遍历选择集,并且对于每个选定的折线,尝试通过将多边形与折线顶点交叉来选择任何影线。如果从第一个选择集中删除了任何折线。
在我看来,由于“交叉”选项,此代码对您的目标并不安全。用“_WP”替换“_CP”将使用Window Polygon选择,如果折线没有弧段,则更安全。