如何选择 Autocad 中没有特定块的闭合二维折线

问题描述 投票:0回答:1

我需要一个 lisp 例程来检查多边形(闭合折线)并验证内部是否有块(由用户选择)。之后,突出显示空多边形,如下图所示。

Autocad

我发现的唯一的事情就是突出显示外面的物体。

count lisp block autocad liskov-substitution-principle
1个回答
0
投票

所以,如果我理解正确的话,用户正在选择块,您的任务是创建一个脚本,其中选定的是不在所选块周围的封闭折线?

所以首先你需要找到折线,你可以通过两种方式来完成它,你需要使用函数

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
函数

© www.soinside.com 2019 - 2024. All rights reserved.