乐筑天下

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

[编程交流] 多段线顶点问题

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:50:35 | 显示全部楼层 |阅读模式
大家好,
 
祝大家圣诞快乐,新年快乐。
 
只是一个简单的问题,我相信几分钟内就能回答。
 
当看到最近在这里发布的一个问题(关于在高尔夫球场上标记点…)时,我在考虑如何解决这个问题,并考虑使用用户绘制的多段线的顶点。
 
为了进行实验,我给自己画了一条多段线(附加),并对其执行entget操作,以查看它将返回什么。
 
结果如下:
 
  1. ((-1 . <Entity name: 7ef62ed8>)
  2. [color=Purple][b](0 . "LWPOLYLINE")  <<--- Entity Type[/b][/color]
  3. (330 . <Entity name: 7ef53cc0>)
  4. (5 . "2DC3")
  5. (100 . "AcDbEntity")
  6. (67 . 0)
  7. [b][color=Orange](410 . "Model")  [/color][color=Orange]<<--- Tab Name[/color][/b]
  8. [b][color=YellowGreen](8 . "3")  [/color][color=YellowGreen]<<--- Layer Name[/color][/b]
  9. (100 . "AcDbPolyline")
  10. (90 . 4)
  11. (70 . 0)
  12. (43 . 0.0)
  13. (38 . 0.0)
  14. (39 . 0.0) [color=Red][b]
  15. (10 0.0 0.0)[/b][/color]  [b][color=Red]<<--- First Vertex (Start Point)[/color][/b]
  16. [b][color=RoyalBlue](40 . 0.0)   [/color][color=RoyalBlue]<<--- Starting Thickness for First Segment[/color][/b]
  17. [b][color=SeaGreen](41 . 0.0)  [/color][color=SeaGreen]<<--- Ending Thickness for First Segment[/color][/b]
  18. (42 . 0.0)
  19. [b][color=Red](10 10.0 0.0)[/color][/b]   [b][color=Red]<<--- Second Vertex[/color][/b]
  20. [b][color=RoyalBlue](40 . 0.0)[/color]
  21. [color=SeaGreen](41 . 0.0)[/color][/b]
  22. (42 . 0.0)
  23. [b][color=Red](10 10.0 10.0)[/color][/b]  [b][color=Red]<<--- Third Vertex[/color][/b]
  24. [b][color=RoyalBlue](40 . 0.0)[/color]
  25. [color=SeaGreen](41 . 0.0)[/color][/b]
  26. (42 . 0.0)
  27. [b][color=Red](10 0.0 10.0)[/color][/b]  [b][color=Red]<<--- Fourth Vertex (End Point)[/color][/b]
  28. [b][color=RoyalBlue](40 . 0.0)[/color]
  29. [color=SeaGreen](41 . 0.0)[/color][/b]
  30. (42 . 0.0)
  31. (210 0.0 0.0 1.0))

 
删除所有非10组:
 
  1. (defun c:test (/ ent Vertex)
  2.    (setq ent (entget (car (entsel))))
  3.    (setq Vertex (cdr (assoc [b][color=Red]10[/color][/b] ent)))
  4.    (princ)
  5. ) ;_  end defun

 
删除每个列表的第一个成员“
 
  1. Command: (setq plDxf(entget(car(entsel))))
  2. Select object: ((-1 . <Entity name: 7efa3368>) (0 . "LWPOLYLINE") (330 .
  3. <Entity name: 7efa1cf8>) (5 . "1AD") (100 . "AcDbEntity") (67 . 0) (410 .
  4. "Model") (8 . "0") (100 . "AcDbPolyline") (90 . 4) (70 . 0) (43 . 0.0) (38 .
  5. 0.0) (39 . 0.0) (10 0.0 0.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 10.0 0.0) (40
  6. . 0.0) (41 . 0.0) (42 . 0.0) (10 10.0 10.0) (40 . 0.0) (41 . 0.0) (42 . 0.0)
  7. (10 0.0 10.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))

 
或者立即:
 
  1. Command: (setq lst10(vl-remove-if '(lambda(x)(/= 10(car x)))plDxf))
  2. ((10 0.0 0.0) (10 10.0 0.0) (10 10.0 10.0) (10 0.0 10.0))
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-5 15:56:50 | 显示全部楼层
谢谢你的回复,阿斯米-我从中学到了很多。
 
但是,我注意到这只适用于这个例子——例如,如果我有带坐标的顶点:
 
(1.0 5.0 0.0)
(2.0 6.0 0.0)
(3.0 7.0 0.0)
 
我该如何处理这种情况?
 
是否没有通用函数来处理同一DXF组码的多次出现?
 
谢谢你的帮助,非常感谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:59:05 | 显示全部楼层
它将适用于每个LW多段线。
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-5 16:01:55 | 显示全部楼层
啊,对不起,我误读了你上一篇文章-当你删除DXF 10代码。很抱歉
 
谢谢你的帮助!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:04:45 | 显示全部楼层
这可能会让你感兴趣。。。
http://www.theswamp.org/index.php?topic=23951.0
回复

使用道具 举报

4

主题

940

帖子

961

银币

初来乍到

Rank: 1

铜币
12
发表于 2022-7-5 16:08:44 | 显示全部楼层
谢谢lpseifert,
 
这很有趣!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:10:45 | 显示全部楼层
这将返回列表中键的值列表。正是为了应对这种情况。
 
你将不得不为每一个额外的编码等。
 
-大卫
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 16:13:48 | 显示全部楼层
很好,大卫,
 
简单有效。不错的一个
 
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 16:18:09 | 显示全部楼层
我可能在这里遗漏了什么,但可以从多段线中获取点并将其保存为pt1、pt2、pt3。。。。这样就可以在另一个命令中使用?
回复

使用道具 举报

31

主题

170

帖子

139

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2022-7-5 16:19:31 | 显示全部楼层
 
哇!这是一条古老的线索-让我回到我开始学习这一切的时候。。
 
至于你的问题,所有的点数据都在结果列表中,因此你可以从中分配变量。
 
但我会用不同的方法,使用vlax curve getPointatParam,因为你有更多的控制。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 20:57 , Processed in 0.871123 second(s), 72 queries .

© 2020-2025 乐筑天下

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