aaryan 发表于 2022-7-6 07:48:13

闭合曲线的长度和宽度

大家好,
 
如何从autolisp的中点找到闭合多段线的长度和宽度,该闭合多段线不完全是矩形(但有四段)。
 
提前感谢
当做
 
如果有人能指导我做一个例程,找到多段线所有线段的中点,至少是这样。请

pBe 发表于 2022-7-6 07:56:57

你能再告诉我一次吗?这次发布一个示例

aaryan 发表于 2022-7-6 08:00:10

LxB。图纸
 
感谢回复pBe。我附上了一个图纸,其中有两条闭合多段线,其中有四段(但在我的实际工作中,段可以更多)。
我只需要知道这些折线的最大长度和最大宽度。我认为这可以从找到他们的中点到中点距离。
有可能吗?
请推荐我。
 
当做

pBe 发表于 2022-7-6 08:08:19

我懂了。最大宽度是多少?

aaryan 发表于 2022-7-6 08:10:24

最大基数。
LxBxH,其中H是高度,我不需要在我的图纸中只提及LxB。

pBe 发表于 2022-7-6 08:16:11

对不起,aaryan,我真的不明白最大基数是多少。告诉你吧。给我你张贴的样品图纸的最终结果。
 
最大长度:?
最大宽度:?

aaryan 发表于 2022-7-6 08:25:20

LxB。图纸
 
我希望随附的图纸能消除要求的混乱。
如果你们注意到了,我已经在两个方向上取了中点的长度。
 
当做
Aaryan公司

pBe 发表于 2022-7-6 08:27:07

知道了。我注意到样例图形上的一条多段线“实际上”不是闭合多段线。所以这条线
(setq ss (ssget "_X" '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
不会选择多段线。另一方面,使用它是安全的
(setq ss (ssget "_:L" '((0 . "LWPOLYLINE") )))
在屏幕上选择对象。
 
另一件事是。
 
这些的最大值是多少?四段多段线很容易。但是那些有多段的呢。形状有多复杂?
这是最大值吗?还是一般?

marko_ribar 发表于 2022-7-6 08:35:44

试试这个,帮助李的子功能。。。
 

(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。

pBe 发表于 2022-7-6 08:40:50

好了,给你。编码5分钟后,M.R.提供了一个解决方案
 
试试复杂的形状,看看它是否能给你想要的效果。
页: [1] 2
查看完整版本: 闭合曲线的长度和宽度