明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3695|回复: 12

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

  [复制链接]
发表于 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)     

 楼主| 发表于 2012-7-5 17:04:43 | 显示全部楼层
楼上VBALISPER兄弟的函数。。在此感谢。。
目前可以实现三维多段线转二维多段线。。。。希望可以实现三维包括二维多段线转普通多段线。。。谢谢了。。。
发表于 2012-7-5 18:46:47 | 显示全部楼层
分段的话 接下来就交给 CONVERTPOLY 指令接手  ===> LwPolyLine
发表于 2012-7-5 19:44:50 | 显示全部楼层

  1. ;; 伪源码,需要e派工具箱(XCAD)的支持:http://xyp1964.ys168.com
  2. (defun c:t2 ()
  3.   (if (setq ss (ssget '((0 . "*POLYLINE"))))
  4.     (progn
  5.       (setq i -1)
  6.       (while (setq s1 (ssname ss (setq i (1+ i))))
  7.         (setq ptn (xyp-get-Vertexs s1 0)
  8.               ptn (mapcar 'xyp-3d2d ptn)
  9.         )
  10.         (if (xyp-Curve-Close s1)
  11.           (xyp-Entmake-lwPolyline ptn t)
  12.           (xyp-Entmake-lwPolyline ptn nil)
  13.         )
  14.       )
  15.       (xyp-erase ss)
  16.     )
  17.   )
  18.   (princ)
  19. )
发表于 2012-7-5 22:12:02 | 显示全部楼层
本帖最后由 chpmould 于 2012-7-5 22:17 编辑

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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2012-7-5 22:26:55 | 显示全部楼层
chpmould 发表于 2012-7-5 22:12
刚好以前写了一个这样的函数,看你用的上不

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

点评

用我上面贴出来这样写,就可以直接转为多段线  发表于 2012-7-5 22:32
 楼主| 发表于 2012-7-5 22:41:09 | 显示全部楼层
麻烦你帮测下。。。我的场景

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2012-7-5 22:41:42 | 显示全部楼层
chpmould 发表于 2012-7-5 22:12
刚好以前写了一个这样的函数,看你用的上不

麻烦你帮测下。。。我的场景
 楼主| 发表于 2012-7-5 22:50:08 | 显示全部楼层
egoroom 发表于 2012-7-5 22:26
你好。。又能在2007上用的吗?可以直接转为多段线吗。。。麻烦了。。谢谢

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

点评

你没有加载附件中的那个子函数,CAD需要使用在2010~2012版本  发表于 2012-7-5 23:59
发表于 2012-7-6 10:36:50 | 显示全部楼层
我在在他原来提供的一段代码上改的.虽然由3D多段变成了2维多段.但是属性看不到.不能再用CONVERTPOLY 指令接手  ===> LwPolyLine
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-22 06:35 , Processed in 0.204628 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表