明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6456|回复: 16

如何获得 POLYLINE 顶点坐标?

  [复制链接]
发表于 2013-1-18 12:59:19 | 显示全部楼层 |阅读模式
多段线分获得 POLYLINE 和获得 LWPOLYLINE 两种,后都的坐标好获取,如何获得 POLYLINE 顶点坐标呢?
以下是某提取的一个POLYLINE图元表
((-1 . <图元名: 7e148630>) (0 . "POLYLINE") (330 . <图元名: 7e3a7d18>) (5 .
"121336") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "钢束") (62 . 3)
(100 . "AcDb2dPolyline") (66 . 1)
(10 0.0 0.0 0.0) (70 . 0) (40 . 60.0) (41 . 60.0) (210 0.0 0.0 1.0) (71 . 0) (72 . 0) (73 . 0) (74 . 0) (75 . 0))

没有发现你坐标信息呢。求高手指点
发表于 2013-1-20 18:17:09 | 显示全部楼层
二楼的代码过于冗长,还是vlax-curve函数简洁
(defun get_pline-vertexs (e / i v lst)
  (setq i -1)
  (while (setq v (vlax-curve-getpointatparam e (setq i (1+ i))))
    (setq lst (cons v lst))
  )
  (reverse lst)
)

点评

曹版过分了,这么牛的码现在才秀出来!  发表于 2013-1-21 11:01

评分

参与人数 2明经币 +2 收起 理由
表骑马实开车 + 1 版主 不好意思,点错了
yjr111 + 1 很给力!

查看全部评分

回复 支持 4 反对 1

使用道具 举报

发表于 2022-4-12 04:26:26 | 显示全部楼层
表骑马实开车 发表于 2022-4-8 12:25
版主好,  (setq i -1) i等于-1的时候会多一个重复的坐标出来,设置成0就好了。这个是什么情况?

根据需要,对于闭合多段线加个判断 vlax-curve-isClosed
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-8 12:25:57 | 显示全部楼层
caoyin 发表于 2013-1-20 18:17
二楼的代码过于冗长,还是vlax-curve函数简洁
(defun get_pline-vertexs (e / i v lst)
  (setq i - ...

版主好,  (setq i -1) i等于-1的时候会多一个重复的坐标出来,设置成0就好了。这个是什么情况?
发表于 2013-1-18 13:08:11 | 显示全部楼层
本帖最后由 snddd2000 于 2013-1-18 13:08 编辑

  1. (defun get-pline-point (ent / ptlist ptlist1)
  2. (setq ptlist '() ptlist1 '() n 0)
  3. (setq ptlist (vlax-safearray->list
  4.                 (vlax-variant-value
  5.                   (vlax-get-property
  6.                     (vlax-ename->vla-object ent)
  7.                     'Coordinates
  8.                     )
  9.                   )
  10.                 )
  11.        )
  12.   (cond
  13.     (
  14.      (= "LWPOLYLINE" (cdr (assoc 0 (entget ent)
  15.                                  )
  16.                           )
  17.         )
  18.     (progn
  19.       (repeat (/ (length ptlist) 2)
  20.         (setq ptlist1 (cons (list (nth n ptlist)
  21.                                   (nth (setq n (1+ n)) ptlist)
  22.                                   )
  23.                             ptlist1)                           
  24.               )
  25.         (setq n (1+ n))
  26.         )
  27.       )
  28.      )
  29.     (
  30.      (= "POLYLINE" (cdr (assoc 0 (entget ent)
  31.                               )
  32.                        )
  33.      )
  34.     (progn
  35.       (repeat (/ (length ptlist) 3)
  36.         (setq ptlist1 (cons (list (nth n ptlist)
  37.                                   (nth (setq n (1+ n)) ptlist)
  38.                                   (nth (setq n (1+ n)) ptlist)
  39.                                   )
  40.                             ptlist1)
  41.               )
  42.         (setq n (1+ n))
  43.         )
  44.       )
  45.      )
  46.     )
  47.    
  48. (princ (reverse ptlist1))
  49. (princ)
  50. )

  51. (defun C:tt1()
  52. (setq ent nil)
  53. (while
  54.    (= ent nil)
  55.     (setq ent (ssget "_:S:E"  (list
  56.                                   (cons 0 "LWPOLYLINE,POLYLINE")
  57.                                    )
  58.                      )
  59.          )
  60.    )
  61.   (setq ent (ssname ent 0))
  62.   (get-pline-point ent)
  63.   )
发表于 2013-1-20 17:39:16 | 显示全部楼层
感谢 snddd2000 分享程序!
发表于 2013-1-20 21:35:26 | 显示全部楼层
楼上你还更牛,,,
 楼主| 发表于 2013-1-21 09:35:51 | 显示全部楼层
snddd2000 发表于 2013-1-18 13:08

谢谢,指点。
 楼主| 发表于 2013-1-21 09:37:18 | 显示全部楼层
caoyin 发表于 2013-1-20 18:17
二楼的代码过于冗长,还是vlax-curve函数简洁
(defun get_pline-vertexs (e / i v lst)
  (setq i - ...

这个太牛了,我的LWPOLYLNE顶点获取还是通过图元表得到的,写了好长。
发表于 2014-1-25 05:51:01 | 显示全部楼层
感谢 caoyin 版主分享函数!
发表于 2014-3-29 20:19:14 | 显示全部楼层
这个函数怎么用啊,请教各位高手?
发表于 2015-11-11 15:04:29 | 显示全部楼层
4楼的代码让我膜拜啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-14 14:41 , Processed in 0.459892 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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