Lee Mac 发表于 2022-7-6 08:19:11

 
我担心凸面外壳不适合此任务,因为结果将是一个凸面多边形(顾名思义),因此不会勾勒出测量的凹面区域。不过,谢谢你的推荐。

GP_ 发表于 2022-7-6 08:19:58

 
确切地DTM对我来说很好。
 
 
@马尔科
我也想到了李的“凸包”,但并不合适
 

 
 
 
哎呀。。。
嗨,李
我们同时发布

bigmaz 发表于 2022-7-6 08:23:20

李,你知道我想要的是lisp程序吗?

Lee Mac 发表于 2022-7-6 08:27:39

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

marko_ribar 发表于 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页

eldon 发表于 2022-7-6 08:33:45

 
论坛上有一些人知道什么是地形测量,但测量员不沿等高线测量。他们用现场数据创建DTM,以绘制等高线。在绘制您获得的图形的过程中,有一个DTM和一些中间数据,测量员选择不传递。
 
你对我在#5号帖子中的问题的回答很快,我确实想知道你是否真的问了测量员的问题。

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

无论如何,如果无法从勘测员处获得DTM,我建议您使用以下两个简单例程和上述链接来创建DTM-三角测量:
 

(vl-load-com)
(defun c:segcurves ( / msp ss seg ch n ent stpar enpar k pt ptlst )
(setq msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
(prompt "\nSelect curves to apply segmentation with point entities")
(while (not ss)
   (setq ss (ssget ":L" '((0 . "*LINE,ELLIPSE,ARC,CIRCLE"))))
)
(initget 7)
(setq seg (getint "\nType number of segments inbetween points for segmentation per single curve : "))
(initget "Yes No")
(setq ch (getkword "\nDo you want to keep curves (Yes) or do you want to remove them after segmentation (No) <Yes> : "))
(repeat (setq n (sslength ss))
   (setq ent (ssname ss (setq n (1- n))))
   (setq stpar (vlax-curve-getstartparam ent))
   (setq enpar (vlax-curve-getendparam ent))
   (setq k -1)
   (repeat seg
   (setq pt (vlax-curve-getpointatparam ent (+ stpar (* (- enpar stpar) (/ (setq k (1+ k)) seg 1.0)))))
   (setq ptlst (cons pt ptlst))
   )
   (setq ptlst (cons (vlax-curve-getendpoint ent) ptlst))
   (foreach pt ptlst
   (vla-addpoint msp (vlax-3d-point pt))
   )
   (setq ptlst nil)
   (if (eq ch "No")
   (entdel ent)
   )
)
(princ)
)
并在使用ee三角化创建DTM之后。lsp或DTM。vlx witch在某些情况下可能会失败,您会使3dfaces变平:
 
然后创建区域(命令“REGION”)选择所有三维面(在我的代码中的过滤器中查找以使用(ssget)获取)-或转到quickselect并过滤三维面对象…=>创建的区域=>并集,再次过滤区域对象,并=>创建的单个区域=>分解=>pedit(上一个选择-分解的内容)-创建表示边界的连接和LWPOLYLINE。。。
 
希望这有帮助。。。
M、 R。

Lee Mac 发表于 2022-7-6 08:38:37

 
那不是吉尔写的吗?
 
http://gile.pagesperso-orange.fr/LISP/Clean_poly.lsp

marko_ribar 发表于 2022-7-6 08:42:25

是的,是吉尔写的,那现在呢。。。我应该像我写的那样重新打字。。。你提供了来源,我认为这是可以接受的跟踪。。。我认为Gile在网站上发布了他的功能以供使用,并且认为他不会介意我使用他的子功能。。。
 
M、 R。

Lee Mac 发表于 2022-7-6 08:47:18

 
如果您使用的代码不是您自己的,则通常礼貌地包括对原始作者的认证。你关于链接“可接受跟踪”的观点是无效的,因为如果我没有反驳函数的起源,代码将被假定为你自己的。在任何情况下,为什么要故意删除原始代码头和作者?
页: 1 [2]
查看完整版本: 围绕地形创建边界