乐筑天下

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

[编程交流] 按点的二维到三维多段线

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 13:21:55 | 显示全部楼层 |阅读模式
大家好!!!
我是一名道路工程师,我知道很多人都有这个问题:我的地形测量是在2d中进行的,点和多段线没有Z高程,这些点是高程为a的块。
 
我在Autocad中借助EATTEXT命令提取了包含X、Y、Z和点代码的字段报告数据。我用lisp将这些点插入Autocad,现在都是3D点。
 
这些线仍然是二维多段线(道路边缘、挡土墙、沟渠等),我想请您帮助编写lisp(我对编写lisp的知识为0),将这些多段线提升到点的级别(多段线顶点与点匹配),以获得DTM。
我知道绘制三维多边形的一种方法是捕捉点,但我想使用自动模式,因为多段线的数量很多。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 13:26:21 | 显示全部楼层
欢迎来到CADTutor Alex
 
下面是一个可能的程序的草稿,但代码有望按要求执行:
  1. (defun c:poly23dpoly ( / enx idx lst pll ptl sel )
  2.    (princ "\nSelect points & 2d polylines: ")
  3.    (if (setq sel (ssget '((0 . "LWPOLYLINE,POINT"))))
  4.        (progn
  5.            (repeat (setq idx (sslength sel))
  6.                (setq enx (entget (ssname sel (setq idx (1- idx)))))
  7.                (if (= "POINT" (cdr (assoc 0 enx)))
  8.                    (setq ptl (cons (cdr (assoc 10 enx)) ptl))
  9.                    (setq pll (cons (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) enx)) pll))
  10.                )
  11.            )
  12.            (foreach grp pll
  13.                (foreach vtx grp
  14.                    (if (setq vtx (car (vl-member-if '(lambda ( a ) (equal vtx (list (car a) (cadr a)) 1e-4)) ptl)))
  15.                        (setq lst (cons vtx lst))
  16.                    )
  17.                )
  18.                (if (cdr lst)
  19.                    (progn
  20.                        (entmake '((0 . "POLYLINE") (70 . ))
  21.                        (foreach vtx lst
  22.                            (entmake
  23.                                (list
  24.                                   '(00 . "VERTEX")
  25.                                   '(70 . 32)
  26.                                    (cons 10 vtx)
  27.                                )
  28.                            )
  29.                        )
  30.                        (entmake '((0 . "SEQEND")))
  31.                    )
  32.                )
  33.                (setq lst nil)
  34.            )
  35.        )
  36.    )
  37.    (princ)
  38. )
回复

举报

5

主题

28

帖子

23

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 13:29:45 | 显示全部楼层
你好,李,我试过这个Lisp程序,但不适合我。当我选择二维多段线或多段线和点时,它表示未选择任何内容???我也需要那种lisp语言,我也是一名道路工程师,当我有大图的时候,这对我来说是一个很大的问题。
所以我附上了dwg图纸来说明这一点&元素,我希望你能用这张图纸锻炼。
 
thx 142159t6pbbiqnl5y46hiz.jpg
多段线到三维点。图纸
回复

举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 13:31:35 | 显示全部楼层
你是不是在试着倒退,从块的elev值建立一个曲面模型,如果是这样,那么你可以忽略线功,我们实际上把3d线功转化为2d,但保持曲面模型不变。停止所有关于二维/三维问题的麻烦列出一条99长的线,而实际上是2.47。
 
很多人说我们有一个3d平面,因为柱脚有一个立面标签。而事实上他们的公寓。
 
如果已将块转换为点,则只需直接加载到CIV3d并创建曲面,Autocad点是一个直接输入选项,可以通过两种方式作为点编组或Autocad对象。
 
您可能获得的唯一真正优势是通过沿直线和圆弧引入更多的点来创建更好的曲面模型。CIV3d不支持曲线特征线(我们的其他软件支持),因此浪费了弧的时间,甚至不确定它们是否作为使用Autocad对象的一部分添加。最后一条评论一个表面TIN由3个点组成,所以额外的行从行的开始到结束都不会有什么不同。
回复

举报

5

主题

28

帖子

23

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 13:35:41 | 显示全部楼层
比加尔,我没有表面喷射。我有一张平面2d的地图。所以我把我的atribut(块)提取到xyz文件中,得到三维的点,xyz。现在,当我从点和特征线创建时,我试图在这些点之间绘制一条特征线,以获得一个正确的曲面。这不是一个问题,从一点到另一点用手做。但是当我有圆形或弯曲的多段线时,我不能在civil中这样做,除非我进行对齐和提取多段线等。。。。。第二,我画了一幅大图,上面有很多点,用来在它们之间画特征线。如果可能的话,我想用lisp程序来实现。所以我需要把这些曲线提升到三维点,包括直线、多段线、圆。。。。。。
 
thx用于响应。。
回复

举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 13:40:53 | 显示全部楼层
 
这是因为您的“点”不是点对象,而是代理实体(可能由第三方或垂直软件创建),并且您的“二维多段线”不是轻量级[LW]多段线,而是旧式的二维[Heavy]多段线(您可以使用CONVERTPOLY命令进行转换)。
回复

举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 13:42:41 | 显示全部楼层
同样,不支持弧,也不能仅用线段替换,因为每个线段都需要计算高程。
 
回到提供信息的人那里,得到一个曲面或至少一个3dface网格,不是更好吗?
回复

举报

5

主题

28

帖子

23

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 13:45:09 | 显示全部楼层
但我不明白我有几何空间点插入从xyz文件,这不是一个点对象?我理解多段线&我转换它们没有问题,但点和多段线从点到z坐标?
不,我没有这个选择。只有在那种绘画中我才能理解?? 
所以,如果我理解,那不能用lisp完成?
 
为了重播,
 
伊兹托克
回复

举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 13:48:29 | 显示全部楼层
谢谢李!!!lisp对我来说很好,我可以将多段线转换为三维多段线。我必须添加一条注释:多段线应该是简单的多段线,而不是二维多段线(当您在“检查”中打开“属性”选项卡以查看其是否为多段线时)。使用CONVERTPOLY命令可以轻松地将二维多段线转换为多段线。
回复

举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 13:52:45 | 显示全部楼层
 
不幸的是,非坐标几何(COGO)点对象是Civil 3D等垂直应用程序固有的对象;而点对象(也称为“节点”)是在普通AutoCAD中通过点命令创建的对象。
 
 
很高兴听到-非常欢迎Alex。
回复

举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 08:51 , Processed in 1.753055 second(s), 74 queries .

© 2020-2025 乐筑天下

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