明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1687|回复: 4

如何获取多边形的各顶点坐标

[复制链接]
发表于 2008-2-28 20:11 | 显示全部楼层 |阅读模式
请问:如何获取多边形的各顶点坐标?谢谢
发表于 2008-2-29 08:02 | 显示全部楼层

是多义线的坐标吗?

下面的函数通过传递实体名返回坐标点表:

(defun GetVertexList (Ename / obj tmp coords oname start end)
  (setq obj (vlax-ename->vla-object Ename)
 coords '()
 oname (vlax-get-property obj 'ObjectName))
 
  (if (member oname '("AcDbPolyline" "AcDb2dPolyline"))
    (progn
      (setq tmp (vlax-safearray->list (vlax-variant-value (vlax-get-property obj 'Coordinates))))
      (cond
 ((= oname "AcDb2dPolyline") olyline
  (while tmp
    (setq coords (append coords (list (list (car tmp)(cadr tmp)(caddr tmp))))
   tmp  (cdddr tmp))
  );while
 );
 ((= oname "AcDbPolyline") ;LWPolyline
  (while tmp
    (setq coords (append coords (list (list (car tmp)(cadr tmp))))
   tmp  (cddr tmp))
  );while
 );
      );cond
    );
  );if

  (if (= oname "AcDbLine")
    (progn
      (setq start (vlax-safearray->list (vlax-variant-value (vlax-get-property obj 'StartPoint)))
     end (vlax-safearray->list (vlax-variant-value (vlax-get-property obj 'EndPoint)))
     coords (list start end))
    )
  );if
  coords
)

发表于 2008-2-29 13:45 | 显示全部楼层

(setq coords '())
(mapcar 'labmda(x) (if (= (car x) 10)(setq coords (append coords (list (cdr x))))) (entget ent))

发表于 2008-2-29 14:52 | 显示全部楼层

对于LWPOLYLINE可以通过(entget pl)的组码10来得到结点坐标 ,

但对于POLYLINE就不能简单地通过(entget pl)的组码10来取得了.

如LWPOLYLINE:

Select object: ((-1 . <Entity name: 7ef3be88>) (0 . "LWPOLYLINE") (330 .
<Entity name: 7ef3bcf8>) (5 . "81") (100 . "AcDbEntity") (67 . 0) (410 .
"Model") (8 . "0") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 .
0.0) (39 . 0.0) (10 841.233 680.569) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10
753.521 372.787) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 1237.26 298.495) (40 .
0.0) (41 . 0.0) (42 . 0.0) (10 1335.61 529.332) (40 . 0.0) (41 . 0.0) (42 .
0.0) (210 0.0 0.0 1.0))

而POLYLINE:

Select object: ((-1 . <Entity name: 7ef3bec0>) (0 . "POLYLINE") (330 . <Entity
name: 7ef3bcf8>) (5 . "88") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"0") (100 . "AcDb2dPolyline") (66 . 1) (10 0.0 0.0 0.0) (70 . 0) (40 . 0.0) (41
. 0.0) (210 0.0 0.0 1.0) (71 . 0) (72 . 0) (73 . 0) (74 . 0) (75 . 0))

发表于 2008-2-29 18:53 | 显示全部楼层

不用分

(vlax-curve-getpointatparam plineobj i)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 13:47 , Processed in 0.161391 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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