Alex_Faur 发表于 2022-7-5 13:21:55

按点的二维到三维多段线

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

Lee Mac 发表于 2022-7-5 13:26:21

欢迎来到CADTutor Alex
 
下面是一个可能的程序的草稿,但代码有望按要求执行:
(defun c:poly23dpoly ( / enx idx lst pll ptl sel )
   (princ "\nSelect points & 2d polylines: ")
   (if (setq sel (ssget '((0 . "LWPOLYLINE,POINT"))))
       (progn
         (repeat (setq idx (sslength sel))
               (setq enx (entget (ssname sel (setq idx (1- idx)))))
               (if (= "POINT" (cdr (assoc 0 enx)))
                   (setq ptl (cons (cdr (assoc 10 enx)) ptl))
                   (setq pll (cons (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) enx)) pll))
               )
         )
         (foreach grp pll
               (foreach vtx grp
                   (if (setq vtx (car (vl-member-if '(lambda ( a ) (equal vtx (list (car a) (cadr a)) 1e-4)) ptl)))
                     (setq lst (cons vtx lst))
                   )
               )
               (if (cdr lst)
                   (progn
                     (entmake '((0 . "POLYLINE") (70 . ))
                     (foreach vtx lst
                           (entmake
                               (list
                                  '(00 . "VERTEX")
                                  '(70 . 32)
                                 (cons 10 vtx)
                               )
                           )
                     )
                     (entmake '((0 . "SEQEND")))
                   )
               )
               (setq lst nil)
         )
       )
   )
   (princ)
)

iztok13 发表于 2022-7-5 13:29:45

你好,李,我试过这个Lisp程序,但不适合我。当我选择二维多段线或多段线和点时,它表示未选择任何内容???我也需要那种lisp语言,我也是一名道路工程师,当我有大图的时候,这对我来说是一个很大的问题。
所以我附上了dwg图纸来说明这一点&元素,我希望你能用这张图纸锻炼。
 
thx
多段线到三维点。图纸

BIGAL 发表于 2022-7-5 13:31:35

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

iztok13 发表于 2022-7-5 13:35:41

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

Lee Mac 发表于 2022-7-5 13:40:53

 
这是因为您的“点”不是点对象,而是代理实体(可能由第三方或垂直软件创建),并且您的“二维多段线”不是轻量级多段线,而是旧式的二维多段线(您可以使用CONVERTPOLY命令进行转换)。

BIGAL 发表于 2022-7-5 13:42:41

同样,不支持弧,也不能仅用线段替换,因为每个线段都需要计算高程。
 
回到提供信息的人那里,得到一个曲面或至少一个3dface网格,不是更好吗?

iztok13 发表于 2022-7-5 13:45:09

但我不明白我有几何空间点插入从xyz文件,这不是一个点对象?我理解多段线&我转换它们没有问题,但点和多段线从点到z坐标?
不,我没有这个选择。只有在那种绘画中我才能理解?? 
所以,如果我理解,那不能用lisp完成?
 
为了重播,
 
伊兹托克

Alex_Faur 发表于 2022-7-5 13:48:29

谢谢李!!!lisp对我来说很好,我可以将多段线转换为三维多段线。我必须添加一条注释:多段线应该是简单的多段线,而不是二维多段线(当您在“检查”中打开“属性”选项卡以查看其是否为多段线时)。使用CONVERTPOLY命令可以轻松地将二维多段线转换为多段线。

Lee Mac 发表于 2022-7-5 13:52:45

 
不幸的是,非坐标几何(COGO)点对象是Civil 3D等垂直应用程序固有的对象;而点对象(也称为“节点”)是在普通AutoCAD中通过点命令创建的对象。
 
 
很高兴听到-非常欢迎Alex。
页: [1] 2
查看完整版本: 按点的二维到三维多段线