sync 发表于 2016-9-29 10:15:28

请问如何用lisp程序将多二维多段线转为多段线?

二维多段线转多段线过程可以是这样:先将二维多线线分解(explode命令)为直线和圆弧--->将圆弧直线用pe命令合并成多段线
请求大神帮忙,跪谢!!!

自贡黄明儒 发表于 2016-9-29 12:52:25

像这种事情,你既然知道了过程,就这么写就是,还求助什么呢?另外,应该附样图

dragoon33333 发表于 2016-10-2 00:50:31

试试convert命令,我写了一个三维转多段线的,思路是先三转二再转多段线,早上起来看看回给你。

dragoon33333 发表于 2016-10-2 10:21:00

dragoon33333 发表于 2016-10-2 00:50
试试convert命令,我写了一个三维转多段线的,思路是先三转二再转多段线,早上起来看看回给你。

(defun C:t2( / AcadObject AcadDocument mSpace ss1 n m ename ent_data str_0 obj pts);此乃明经论坛网友的代码,版权归原作者。
        (VL-LOAD-COM)
        (setq AcadObject (vlax-get-acad-object))
        (setq AcadDocument (vla-get-ActiveDocument Acadobject))
        (setq mSpace (vla-get-ModelSpace Acaddocument))
        (setq ss1 (ssget '((0 . "POLYLINE"))))
        (setq n (sslength ss1))
        (setq m 0)
        (while (< m n)
                (setq ename (ssname ss1 m))               
                (setq ent_data (entget ename))
                (setq str_0 (cdr (assoc 0 ent_data)))
                (while (/= str_0 "POLYLINE")
                        (setq ename (car (entsel "选择的实体非三维多段线,请重新选择!:")))
                        (setq ent_data (entget ename))
                        (setq str_0 (cdr (assoc 0 ent_data)))
                )
                (setq obj (vlax-ename->vla-object ename))
                (setq pts (vlax-variant-value (vla-get-coordinates obj)))
                (vla-AddPolyline mSpace pts)               
                (setq m (+ 1 m))
        );while
        (command "_erase" ss1 "")
        (command "_convert" "P" "A");这行就是二维多段线转多段线。
        (princ)   
);转完后还是显示二维多段线,保存后再打开就成了多段线了,我也不知道为什么。

season_88 发表于 2025-2-25 02:27:33

谢谢大师分享
页: [1]
查看完整版本: 请问如何用lisp程序将多二维多段线转为多段线?