明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3120|回复: 17

[已解答] 二维多段线没有顶点表,怎么提取顶点坐标呢?(注意:不是多段线)还请各位大大解答!

[复制链接]
发表于 2014-1-24 16:45 | 显示全部楼层 |阅读模式
如图:


二维多段线没有顶点表,不知道怎么在不转换成多段线的前提下直接提取坐标,要是转换成多段线,有批量的方法么?
请各位大大解答,谢谢!


本帖子中包含更多资源

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

x
发表于 2018-7-3 20:17 | 显示全部楼层
学习一下。。我一般都是把二维多段线转为多段线再编辑的。
发表于 2014-1-24 18:32 | 显示全部楼层
  1. ;;返回多段线顶点表
  2. ;;From mjtd.com
  3. ;;支持2D/3D多段线
  4. ;;modfiy by edata
  5. (defun vertexs (ename / plist pp n)
  6.   (cond
  7.     ((and ename(= (cdr(assoc 0 (entget ename))) "POLYLINE"))
  8.     (progn
  9.   (setq obj (vlax-ename->vla-object ename))
  10.   (setq plist (vlax-safearray->list
  11.   (vlax-variant-value
  12.     (vla-get-coordinates obj))))
  13.   (setq n 0)
  14.   (repeat (/ (length plist) 3)
  15.     (setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist)(nth (1+ (1+ n)) plist)))))
  16.     (setq n (+ n 3))
  17.   )
  18.   pp
  19.   ))
  20.    ((and ename(= (cdr(assoc 0 (entget ename))) "LWPOLYLINE"))
  21.     (progn
  22.   (setq obj (vlax-ename->vla-object ename))
  23.   (setq plist (vlax-safearray->list
  24.   (vlax-variant-value
  25.     (vla-get-coordinates obj))))
  26.   (setq n 0)
  27.   (repeat (/ (length plist) 2)
  28.     (setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist)))))
  29.     (setq n (+ n 2))
  30.   )
  31.   pp
  32.   ))
  33.     )
  34.   )

 楼主| 发表于 2014-1-24 18:43 | 显示全部楼层
edata 发表于 2014-1-24 18:32

哇,又是你啊,大大
thank you
VLAX函数看不懂,不知道哪里有VLAX函数的帮助,lisp的帮助里面没有VLAX的帮助
发表于 2014-1-24 18:49 | 显示全部楼层
312735894 发表于 2014-1-24 18:43
哇,又是你啊,大大
thank you
VLAX函数看不懂,不知道哪里有VLAX函数的帮助,lisp的帮助里面没有VLAX的 ...

来个修改后的。。
  1. ;返回多段线顶点表2
  2. ;;From mjtd.com
  3. ;;支持2D/3D多段线
  4. ;;modfiy by edata
  5. (defun vertexs2 (ename / plist pp n enty obj pt_n)
  6.   (if(and ename(= (type ename) 'ENAME))
  7.     (progn
  8.       (setq enty(cdr(assoc 0 (entget ename))))
  9.       (if (= enty "LWPOLYLINE")
  10.         (setq pt_n 2)
  11.         (setq pt_n 3)
  12.         )
  13.       (if pt_n
  14.         (progn
  15.           (setq obj (vlax-ename->vla-object ename))
  16.           (setq plist (vlax-safearray->list
  17.                         (vlax-variant-value
  18.                           (vla-get-coordinates obj))))
  19.           (setq n 0)
  20.           (repeat (/ (length plist) pt_n)
  21.             (setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist)(if(= pt_n 3) (nth (1+ (1+ n)) plist) 0.0)))))
  22.             (setq n (+ n pt_n))
  23.             )
  24.           pp
  25.           )
  26.         )
  27.       )
  28.     )
  29.   )
发表于 2014-1-24 18:51 | 显示全部楼层
AutoCAD LISP_VLISP函数库查询辞典(带书签)_应要求附图
http://bbs.mjtd.com/forum.php?mo ... &fromuid=338795
 楼主| 发表于 2014-1-24 19:42 | 显示全部楼层
edata 发表于 2014-1-24 18:49
来个修改后的。。

谢谢大大,这回稍微明白点了,我再研究下!谢谢!
发表于 2014-1-24 20:41 | 显示全部楼层
原来论坛还有更简洁的。。
http://bbs.mjtd.com/forum.php?mo ... &fromuid=338795
发表于 2014-1-24 22:11 | 显示全部楼层
edata 发表于 2014-1-24 20:41
原来论坛还有更简洁的。。
http://bbs.mjtd.com/forum.php?mod=redirect&goto=findpost&ptid=100137&pid=5 ...

太谢谢大大您了,不知道您平时是通过什么学习lisp的
感觉没人讲太难了。。。。
呵呵,这个是我的新号,以后就用这个了!
发表于 2014-1-24 23:53 | 显示全部楼层

回复用以学习
发表于 2014-1-25 08:38 | 显示全部楼层
;;;来一个固版主的:
(setq ent (car(entsel "\n选取多段线: ")))
(mapcar 'cdr (vl-remove-if-not '(lambda(x)(= 10 (car x)))(entget ent)))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 15:28 , Processed in 0.610458 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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