乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 85|回复: 11

[编程交流] 闭合曲线的长度和宽度

[复制链接]

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 07:48:13 | 显示全部楼层 |阅读模式
大家好,
 
如何从autolisp的中点找到闭合多段线的长度和宽度,该闭合多段线不完全是矩形(但有四段)。
 
提前感谢
当做
 
如果有人能指导我做一个例程,找到多段线所有线段的中点,至少是这样。请
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 07:56:57 | 显示全部楼层
你能再告诉我一次吗?这次发布一个示例
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 08:00:10 | 显示全部楼层
LxB。图纸
 
感谢回复pBe。我附上了一个图纸,其中有两条闭合多段线,其中有四段(但在我的实际工作中,段可以更多)。
我只需要知道这些折线的最大长度和最大宽度。我认为这可以从找到他们的中点到中点距离。
有可能吗?
请推荐我。
 
当做
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:08:19 | 显示全部楼层
我懂了。最大宽度是多少?
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 08:10:24 | 显示全部楼层
最大基数。
LxBxH,其中H是高度,我不需要在我的图纸中只提及LxB。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:16:11 | 显示全部楼层
对不起,aaryan,我真的不明白最大基数是多少。告诉你吧。给我你张贴的样品图纸的最终结果。
 
最大长度:?
最大宽度:?
回复

使用道具 举报

43

主题

136

帖子

92

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
217
发表于 2022-7-6 08:25:20 | 显示全部楼层
LxB。图纸
 
我希望随附的图纸能消除要求的混乱。
如果你们注意到了,我已经在两个方向上取了中点的长度。
 
当做
Aaryan公司
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:27:07 | 显示全部楼层
知道了。我注意到样例图形上的一条多段线“实际上”不是闭合多段线。所以这条线
  1. (setq ss (ssget [b][color=blue]"_X"[/color][/b] '((0 . "LWPOLYLINE") [color=blue][b](-4 . "&=") (70 . 1)[/b][/color])))

不会选择多段线。另一方面,使用它是安全的
  1. (setq ss (ssget [b][color=blue]"_:L"[/color][/b] '((0 . "LWPOLYLINE") )))

在屏幕上选择对象。
 
另一件事是。
 
这些的最大值是多少?四段多段线很容易。但是那些有多段的呢。形状有多复杂?
这是最大值吗?还是一般?
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 08:35:44 | 显示全部楼层
试试这个,帮助李的子功能。。。
 
  1. (defun _vertices ( l )
  2. (if (eq "LWPOLYLINE" (cdr (assoc 0 l)))
  3.    (_vertices1 l)
  4.    (_vertices2 (entnext (cdr (assoc -1 l))))
  5. )
  6. )
  7. (defun _vertices1 ( l / p )
  8. (if (setq p (assoc 10 l))
  9.    (cons (cdr p) (_vertices1 (cdr (member p l))))
  10. )
  11. )
  12. (defun _vertices2 ( e )
  13. (if (eq "VERTEX" (cdr (assoc 0 (entget e))))
  14.    (cons (cdr (assoc 10 (entget e))) (_vertices2 (entnext e)))
  15. )
  16. )
  17. (defun _uniquefuzz ( l f )
  18. (if l
  19.    (cons (car l)
  20.      (_uniquefuzz
  21.        (vl-remove-if '(lambda ( x ) (equal x (car l) f)) (cdr l))
  22.        f
  23.      )
  24.    )
  25. )
  26. )
  27. (defun c:len&bre ( / ss pl ptlst l-r-ptlst d-u-ptlst midl midr midd midu len bre )
  28. (while (not ss)
  29.    (prompt "\nSelect 2dpolyline")
  30.    (setq ss (ssget "_+.:E:S:L" '((0 . "*POLYLINE"))))
  31. )
  32. (setq pl (ssname ss 0))
  33. (setq ptlst (_uniquefuzz (_vertices (entget pl)) 1e-)
  34. (setq l-r-ptlst (vl-sort ptlst '(lambda (a b) (< (car a) (car b)))))
  35. (setq d-u-ptlst (vl-sort ptlst '(lambda (a b) (< (cadr a) (cadr b)))))
  36. (setq midl (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (car l-r-ptlst) (cadr l-r-ptlst)))
  37. (setq midr (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (caddr l-r-ptlst) (cadddr l-r-ptlst)))
  38. (setq midd (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (car d-u-ptlst) (cadr d-u-ptlst)))
  39. (setq midu (mapcar '(lambda (a b) (/ (+ a b) 2.0)) (caddr d-u-ptlst) (cadddr d-u-ptlst)))
  40. (setq len (distance midl midr))
  41. (setq bre (distance midd midu))
  42. (prompt "\nLength : ")(princ len)
  43. (prompt "\nBreadth : ")(princ bre)
  44. (princ)
  45. )   

 
M、 R。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:40:50 | 显示全部楼层
好了,给你。编码5分钟后,M.R.提供了一个解决方案
 
试试复杂的形状,看看它是否能给你想要的效果。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 22:12 , Processed in 0.450390 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表