乐筑天下

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

[编程交流] 围绕地形创建边界

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:19:11 | 显示全部楼层
 
我担心凸面外壳不适合此任务,因为结果将是一个凸面多边形(顾名思义),因此不会勾勒出测量的凹面区域。不过,谢谢你的推荐。
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 08:19:58 | 显示全部楼层
 
确切地DTM对我来说很好。
 
 
@马尔科
我也想到了李的“凸包”,但并不合适
 
084425yn9cio9xaac3s333.jpg
 
 
 
哎呀。。。
嗨,李
我们同时发布
回复

使用道具 举报

8

主题

45

帖子

37

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 08:23:20 | 显示全部楼层
李,你知道我想要的是lisp程序吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:27:39 | 显示全部楼层
 
在检查了您的示例图像后,我倾向于说这项任务将很难完成。如果等高线的端点始终延伸到边界,并且任何两个等高线之间的空间不超过要轮廓的区域的宽度,则可以检索一组这样的端点,并使用适当的算法通过最小化任何对之间的距离来连接点;然而,我从您的图形中看到,边界由等高线和单个点实体组成,因此这种方法在某些地方会失败。除去所有假设,我们只剩下一个非常大的坐标集:这样一个坐标集可以以几乎无限多的方式重新排序和连接。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 08:29:36 | 显示全部楼层
 
你可以用许多你喜欢的点分割轮廓,然后应用DTM或ElpanovEvgeniy三角化,然后你将得到带有3dfaces的三角形区域=>将其展平(每个z坐标变为0.0的entmod垂直度=>区域(选择所有3dfaces)=>并集=>提取边,并用explode=>连接线段制作轮廓LWPOLYLINE。。。
 
M、 R。
 
Elpanov E三角测量:
http://www.cadtutor.net/forum/showthread.php?68348-点密度密集。lsp重叠点和速度问题/第3页和第24页
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 08:33:45 | 显示全部楼层
 
论坛上有一些人知道什么是地形测量,但测量员不沿等高线测量。他们用现场数据创建DTM,以绘制等高线。在绘制您获得的图形的过程中,有一个DTM和一些中间数据,测量员选择不传递。
 
你对我在#5号帖子中的问题的回答很快,我确实想知道你是否真的问了测量员的问题。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 08:35:39 | 显示全部楼层
无论如何,如果无法从勘测员处获得DTM,我建议您使用以下两个简单例程和上述链接来创建DTM-三角测量:
 
  1. (vl-load-com)
  2. (defun c:segcurves ( / msp ss seg ch n ent stpar enpar k pt ptlst )
  3. (setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  4. (prompt "\nSelect curves to apply segmentation with point entities")
  5. (while (not ss)
  6.    (setq ss (ssget ":L" '((0 . "*LINE,ELLIPSE,ARC,CIRCLE"))))
  7. )
  8. (initget 7)
  9. (setq seg (getint "\nType number of segments inbetween points for segmentation per single curve : "))
  10. (initget "Yes No")
  11. (setq ch (getkword "\nDo you want to keep curves (Yes) or do you want to remove them after segmentation (No) <Yes> : "))
  12. (repeat (setq n (sslength ss))
  13.    (setq ent (ssname ss (setq n (1- n))))
  14.    (setq stpar (vlax-curve-getstartparam ent))
  15.    (setq enpar (vlax-curve-getendparam ent))
  16.    (setq k -1)
  17.    (repeat seg
  18.      (setq pt (vlax-curve-getpointatparam ent (+ stpar (* (- enpar stpar) (/ (setq k (1+ k)) seg 1.0)))))
  19.      (setq ptlst (cons pt ptlst))
  20.    )
  21.    (setq ptlst (cons (vlax-curve-getendpoint ent) ptlst))
  22.    (foreach pt ptlst
  23.      (vla-addpoint msp (vlax-3d-point pt))
  24.    )
  25.    (setq ptlst nil)
  26.    (if (eq ch "No")
  27.      (entdel ent)
  28.    )
  29. )
  30. (princ)
  31. )
并在使用ee三角化创建DTM之后。lsp或DTM。vlx witch在某些情况下可能会失败,您会使3dfaces变平:
 
然后创建区域(命令“REGION”)选择所有三维面(在我的代码中的过滤器中查找以使用(ssget)获取)-或转到quickselect并过滤三维面对象…=>创建的区域=>并集,再次过滤区域对象,并=>创建的单个区域=>分解=>pedit(上一个选择-分解的内容)-创建表示边界的连接和LWPOLYLINE。。。
 
希望这有帮助。。。
M、 R。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:38:37 | 显示全部楼层
 
那不是吉尔写的吗?
 
http://gile.pagesperso-orange.fr/LISP/Clean_poly.lsp
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 08:42:25 | 显示全部楼层
是的,是吉尔写的,那现在呢。。。我应该像我写的那样重新打字。。。你提供了来源,我认为这是可以接受的跟踪。。。我认为Gile在网站上发布了他的功能以供使用,并且认为他不会介意我使用他的子功能。。。
 
M、 R。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:47:18 | 显示全部楼层
 
如果您使用的代码不是您自己的,则通常礼貌地包括对原始作者的认证。你关于链接“可接受跟踪”的观点是无效的,因为如果我没有反驳函数的起源,代码将被假定为你自己的。在任何情况下,为什么要故意删除原始代码头和作者?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-15 05:38 , Processed in 1.617317 second(s), 74 queries .

© 2020-2025 乐筑天下

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