prodromosm 发表于 2022-7-5 23:07:45

将二维多段线转换为三维fr

嗨,我正在寻找一个lisp来做两件事
 
a) 选择所有块属性,然后选择二维多段线-->使用属性的元素将多段线转换为三维
b) 选择三维多段线-->并为属性赋予标高
 
并用于开放和闭合多段线。
 
查看附着图形。
图纸1.dwg

prodromosm 发表于 2022-7-5 23:12:18

这可能做到吗

ReMark 发表于 2022-7-5 23:16:21

因此,如果我正确理解您的意思,您希望,例如,您的图形中的文本,读取115.32,具有一个等于文本标题的Z,而不是当前存在的0.00的Z。然后,您希望将二维多段线转换为三维多段线,该多段线具有与每个高程匹配的顶点。对
 
既然“点”块已经包含一个点,为什么不查找/创建一个自定义lisp例程,该例程将根据文本为每个点提供正确的高程,然后使用三维多段线连接所有点?

prodromosm 发表于 2022-7-5 23:20:30

您好,我搜索了这个,但没有找到相同的内容。你有任何链接吗?
 
谢谢

ReMark 发表于 2022-7-5 23:22:59

我可能有。这是如何描述的。。。
 

 
免责声明:必须注册才能下载任何免费的lisp例程。我还没有这样做,这意味着我不知道列出的可用例程中是否有任何例程实际按规定工作。

prodromosm 发表于 2022-7-5 23:26:14

我看过这个lisp,但我不想注册到那个网站,我认为这个lisp不适用于属性块?

ReMark 发表于 2022-7-5 23:28:21

我无法证实或否认这一点,因为我从未测试过lisp例程。
 
对不起,我帮不了你。

prodromosm 发表于 2022-7-5 23:31:50

谢谢你的时间评论
 

ymg3 发表于 2022-7-5 23:34:32

以下是部分答案。
 
下面将移动点块的插入点
在高程属性给定的高程处。
 

(defun c:movpt (/ blk en enb enl i ipt ss )
(setq ss (ssget "_X" (list (cons 0 "INSERT") (cons 2 "Point"))))
(repeat (setq i (sslength ss))   
    (setq blk (ssname ss (setq i (1- i)))
          enb (entget blk)
   ipt (assoc 10 enb)
    en (entnext blk)
   enl (entget en)
   
    )
    (while (= (cdr (assoc 0 enl)) "ATTRIB")
       (if (= (cdr (assoc 2 enl)) "ELEV")
          (entmod (subst (cons 10 (list (car ipt) (cadr ipt) (atof (cdr (assoc 1 enl))))) (assoc 10 enb) enb))
)       
       (setq en (entnext en) enl (entget en))                                                
    )
)   
)          

prodromosm 发表于 2022-7-5 23:38:51

您好,ymg3,
 
a) 我想选择一条三维多段线,并在属性-->属性-->高程中写入高程
b) 选择所有属性点(与二维多段线连接),然后选择多段线,并使用属性的elevetio文本将二维多段线转换为三维
页: [1] 2
查看完整版本: 将二维多段线转换为三维fr