egoroom 发表于 2012-7-5 17:02:11

求助。三维或者二维多段线。。。转多段线。。。

(defun C:t2()
      (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 "")
      (princ)   

egoroom 发表于 2012-7-5 17:04:43

楼上VBALISPER兄弟的函数。。在此感谢。。
目前可以实现三维多段线转二维多段线。。。。希望可以实现三维包括二维多段线转普通多段线。。。谢谢了。。。

Andyhon 发表于 2012-7-5 18:46:47

分段的话 接下来就交给 CONVERTPOLY 指令接手===> LwPolyLine

xyp1964 发表于 2012-7-5 19:44:50


;; 伪源码,需要e派工具箱(XCAD)的支持:http://xyp1964.ys168.com
(defun c:t2 ()
(if (setq ss (ssget '((0 . "*POLYLINE"))))
    (progn
      (setq i -1)
      (while (setq s1 (ssname ss (setq i (1+ i))))
        (setq ptn (xyp-get-Vertexs s1 0)
              ptn (mapcar 'xyp-3d2d ptn)
        )
        (if (xyp-Curve-Close s1)
          (xyp-Entmake-lwPolyline ptn t)
          (xyp-Entmake-lwPolyline ptn nil)
        )
      )
      (xyp-erase ss)
    )
)
(princ)
)

chpmould 发表于 2012-7-5 22:12:02

本帖最后由 chpmould 于 2012-7-5 22:17 编辑

刚好以前写了一个这样的函数,看你用的上不
;;测试例子:
(defun c:t2 ()
(if (setq ss (ssget '((0 . "*POLYLINE"))))
    (progn
      (setq i -1)
      (while (setq s1 (ssname ss (setq i (1+ i))))
      (setq lst (Get_PointList s1))
      (entmake (append (list '(0 . "LWPOLYLINE")
             '(62 . 6)
             '(100 . "AcDbEntity")
             '(100 . "AcDbPolyline")
             (cons 90 (length lst)))
      (mapcar '(lambda (pt) (cons 10 pt)) lst))))
    (vl-cmdf "_erase" ss "")))
(princ)
)

egoroom 发表于 2012-7-5 22:26:55

chpmould 发表于 2012-7-5 22:12 static/image/common/back.gif
刚好以前写了一个这样的函数,看你用的上不

你好。。又能在2007上用的吗?可以直接转为多段线吗。。。麻烦了。。谢谢

egoroom 发表于 2012-7-5 22:41:09

麻烦你帮测下。。。我的场景

egoroom 发表于 2012-7-5 22:41:42

chpmould 发表于 2012-7-5 22:12 static/image/common/back.gif
刚好以前写了一个这样的函数,看你用的上不

麻烦你帮测下。。。我的场景

egoroom 发表于 2012-7-5 22:50:08

egoroom 发表于 2012-7-5 22:26 static/image/common/back.gif
你好。。又能在2007上用的吗?可以直接转为多段线吗。。。麻烦了。。谢谢

执行后反馈no function definition: GET_POINTLIST。。不知道什么意思。我的cad版本2007

VBALISPER 发表于 2012-7-6 10:36:50

我在在他原来提供的一段代码上改的.虽然由3D多段变成了2维多段.但是属性看不到.不能再用CONVERTPOLY 指令接手===> LwPolyLine
页: [1] 2
查看完整版本: 求助。三维或者二维多段线。。。转多段线。。。