选择相似区域多段线
你好,我是来寻求帮助的。这是我的问题。我有很多poliline(复杂的custum拼花地板)。我必须选择所有具有相同区域的相同poliline(因此具有相同的形状)!有没有办法用列表例程解决我的问题?有人能帮我做吗?
非常感谢你! 欢迎来到CADTutor Ziorudy
尺寸相同? 请检查内置命令QSELECT是否允许根据面积选择多段线图元。
这就是我要建议的MSasu,但请求是不明确的,“因此具有相同的形状”,因此我的Q。 当然,一般来说,相同的面积并不意味着物品也有相同的形状。然而,在特定图纸中,它可以作为标准。
QSELECT也不会适应区域中的小变化。线程标题中的“相似区域”一词可能会让你想到这一点。 有些东西不起作用!
我选择我的所有多边形,qselect,choose area,等于:我单件的esact面积(123456789)。那么什么都不会发生!:x: x 试试这个快速编写的程序:
;; Select Similar Area-Lee Mac
;; Prompts the user to select a source polyline and
;; selects all polylines in the active layout with a similar area.
(defun c:ssarea ( / ent inc sel src )
(if
(and
(setq src
(LM:SelectIf "\nSelect Source Polyline: "
'(lambda ( x ) (wcmatch (cdr (assoc 0 (entget x))) "*POLYLINE"))
)
)
(setq sel
(ssget "_X"
(list '(0 . "*POLYLINE")
(if (= 1 (getvar 'cvport))
(cons 410 (getvar 'ctab))
'(410 . "Model")
)
)
)
)
(setq src (vla-get-area (vlax-ename->vla-object src)))
)
(repeat (setq inc (sslength sel))
(setq ent (ssname sel (setq inc (1- inc))))
(if (not (equal src (vla-get-area (vlax-ename->vla-object ent)) 1e-3))
(ssdel ent sel)
)
)
)
(sssetfirst nil sel)
(princ)
)
;; Select If-Lee Mac
;; Continuously prompts the user for a selection
;; until a given predicate function is validated
(defun LM:SelectIf ( msg prd / e )
(setq prd (eval prd))
(while
(progn (setvar 'ERRNO 0) (setq e (car (entsel msg)))
(cond
( (= 7 (getvar 'ERRNO))
(princ "\nMissed, try again.")
)
( (eq 'ENAME (type e))
(if (and prd (null (prd e)))
(princ "\nInvalid Object.")
)
)
)
)
)
e
)
(vl-load-com) (princ)
上述程序认为多段线面积等于1e-3(0.001)的公差-更改此公差以适合您的应用。 谢谢你!谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!你救了我一小时又一小时的愚蠢工作! 所以这不是形状而是面积。我现在明白了。
不客气。
根据我对OP要求的理解,他们希望选择形状相似的所有对象,并使用面积属性,因为两个不同形状具有相同面积的概率可能非常低。
页:
[1]
2