闭合曲线的长度和宽度
大家好,如何从autolisp的中点找到闭合多段线的长度和宽度,该闭合多段线不完全是矩形(但有四段)。
提前感谢
当做
如果有人能指导我做一个例程,找到多段线所有线段的中点,至少是这样。请 你能再告诉我一次吗?这次发布一个示例 LxB。图纸
感谢回复pBe。我附上了一个图纸,其中有两条闭合多段线,其中有四段(但在我的实际工作中,段可以更多)。
我只需要知道这些折线的最大长度和最大宽度。我认为这可以从找到他们的中点到中点距离。
有可能吗?
请推荐我。
当做 我懂了。最大宽度是多少? 最大基数。
LxBxH,其中H是高度,我不需要在我的图纸中只提及LxB。 对不起,aaryan,我真的不明白最大基数是多少。告诉你吧。给我你张贴的样品图纸的最终结果。
最大长度:?
最大宽度:? LxB。图纸
我希望随附的图纸能消除要求的混乱。
如果你们注意到了,我已经在两个方向上取了中点的长度。
当做
Aaryan公司 知道了。我注意到样例图形上的一条多段线“实际上”不是闭合多段线。所以这条线
(setq ss (ssget "_X" '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
不会选择多段线。另一方面,使用它是安全的
(setq ss (ssget "_:L" '((0 . "LWPOLYLINE") )))
在屏幕上选择对象。
另一件事是。
这些的最大值是多少?四段多段线很容易。但是那些有多段的呢。形状有多复杂?
这是最大值吗?还是一般? 试试这个,帮助李的子功能。。。
(defun _vertices ( l )
(if (eq "LWPOLYLINE" (cdr (assoc 0 l)))
(_vertices1 l)
(_vertices2 (entnext (cdr (assoc -1 l))))
)
)
(defun _vertices1 ( l / p )
(if (setq p (assoc 10 l))
(cons (cdr p) (_vertices1 (cdr (member p l))))
)
)
(defun _vertices2 ( e )
(if (eq "VERTEX" (cdr (assoc 0 (entget e))))
(cons (cdr (assoc 10 (entget e))) (_vertices2 (entnext e)))
)
)
(defun _uniquefuzz ( l f )
(if l
(cons (car l)
(_uniquefuzz
(vl-remove-if '(lambda ( x ) (equal x (car l) f)) (cdr l))
f
)
)
)
)
(defun c:len&bre ( / ss pl ptlst l-r-ptlst d-u-ptlst midl midr midd midu len bre )
(while (not ss)
(prompt "\nSelect 2dpolyline")
(setq ss (ssget "_+.:E:S:L" '((0 . "*POLYLINE"))))
)
(setq pl (ssname ss 0))
(setq ptlst (_uniquefuzz (_vertices (entget pl)) 1e-)
(setq l-r-ptlst (vl-sort ptlst '(lambda (a b) (< (car a) (car b)))))
(setq d-u-ptlst (vl-sort ptlst '(lambda (a b) (< (cadr a) (cadr b)))))
(setq midl (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (car l-r-ptlst) (cadr l-r-ptlst)))
(setq midr (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (caddr l-r-ptlst) (cadddr l-r-ptlst)))
(setq midd (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (car d-u-ptlst) (cadr d-u-ptlst)))
(setq midu (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (caddr d-u-ptlst) (cadddr d-u-ptlst)))
(setq len (distance midl midr))
(setq bre (distance midd midu))
(prompt "\nLength : ")(princ len)
(prompt "\nBreadth : ")(princ bre)
(princ)
)
M、 R。 好了,给你。编码5分钟后,M.R.提供了一个解决方案
试试复杂的形状,看看它是否能给你想要的效果。
页:
[1]
2