所以,如果我理解正确的话,用户正在选择块,您的任务是创建一个脚本,其中选定的是不在所选块周围的封闭折线?
所以首先你需要找到折线,你可以通过两种方式来完成它,你需要使用函数
ssget
和fence
模式。 (ssget "_F" (list p1 p2) '((0 . "LWPOLYLINE")))
。有关于此的大量信息,您可以在 LeeMac 文章中找到:ssget by LeeMac。
第一种方法,如果您或多或少知道多段线有多大,您可以想象线交叉块插入点和最大多段线尺寸一样大并计算
(setq maxsize 100)
(setq p0 (vlax-safearray->list(vlax-variant-value ( vlax-get-property block'InsertionPoint )))
p1 (list (- (car p0) maxsize) (cadr p0)(caddr p0))
p2 (list (+ (car p0) maxsize) (cadr p0)(caddr p0))
)
(ssget "_F" (list p1 p2) '((0 . "LWPOLYLINE")))
第二种方法是通过折线迭代,并选择其中的块。也使用
ssget
但这次你必须读取折线的所有坐标,并选择块 (ssget "_F" coordinates '((0 . "INSERT")))
每种方式您都会获得实体,但是您需要将其标记为选中。在您的帖子主题中,您询问如何选择,因此选择和突出显示不一样。要真正选择实体,您需要使用
sssetfirst
函数