找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 966|回复: 4

[LISP程序]:热 获取多义线上的所有顶点

[复制链接]
发表于 2006-7-24 21:23:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
(defun C:getp (/ ent PLTYPE obj vtx vtxlst n ptlst)
    (vl-load-com)
    (setq ent (entsel "\n选取多线:\n"))
    (if ent
        (progn
          (setq PLTYPE (cdr (assoc 0 (entget (car ent)))))
          (if (or (= "POLYLINE" PLTYPE) (= "LWPOLYLINE" PLTYPE))
              (progn
                 (setq obj (vlax-ename->vla-object (car ent)))
                 (setq vtx (vla-get-Coordinates obj))
                 (setq vtxlst (vlax-safearray->list (vlax-variant-value vtx)))
                 (setq n 0)
                 (setq ptlst nil)
                 (repeat (/ (length vtxlst) 2)
                         (setq ptlst (append ptlst (list (list (nth n vtxlst) (nth (1+ n) vtxlst)))))
                         (setq n (+ n 2))
                 )
                 (if ptlst ptlst nil)
             )
             (prompt "\n选取实体不是多义线!")
          );if
       )      
     );if
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2006-7-25 15:50:04 | 显示全部楼层
[QUOTE]最初由 hhc_1 发布
[B]"LWPOLYLINE"的顶点坐标是2维的,而"POLYLINE"的顶点坐标是3维的

  1.   [FONT=courier new]
  2. ;;; ==================================================================
  3. ;;; 求多義線所有頂點.返回所有頂點表.
  4. ;;; ==================================================================
  5. (defun th1-get-allvertexs (ename / plist pp n)
  6.   (setq obj (vlax-ename->vla-object ename))
  7.   (setq plist (vlax-safearray->list (vlax-variant-value
  8.                                                         (vla-get-coordinates obj)
  9.                                     )
  10.               )
  11.   )
  12.   (setq n 0)
  13.   (repeat (/ (length plist) 2)
  14.     (setq pp (append
  15.                pp
  16.                (list (list (nth n plist) (nth (1+ n) plist)))
  17.              )
  18.     )
  19.     (setq n (+ n 2))
  20.   )
  21.   pp
  22. )
  23. ;;; 二维点表
  24. (defun th2-get-allvertexs (e / n lst)
  25.   (repeat (setq n (fix (1+ (vlax-curve-getendparam e))))
  26.     (setq lst (cons (vlax-curve-getpointatparam e (setq n (1- n))) lst))
  27.   )
  28. )
  29. ;;; 三维点表
  30. (defun th3-get-allvertexs (ename / n ptlist)
  31.   (foreach n (entget ename)
  32.     (if (= 10 (car n))
  33.       (setq ptlist (cons (cdr n) ptlist))
  34.     )
  35.   )
  36.   (reverse ptlist)
  37. )
  38. ;;; 二维点表

  39.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 7235个

财富等级: 富甲天下

发表于 2006-7-24 21:30:52 | 显示全部楼层
(or (= "POLYLINE" PLTYPE) (= "LWPOLYLINE" PLTYPE))

"POLYLINE" ===> (x y z) != "LWPOLYLINE" ==> (x y)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-7-25 01:07:56 | 显示全部楼层
哈,看来还不完善,两种实体要区别对待
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-7-25 08:44:21 | 显示全部楼层
"LWPOLYLINE"的顶点坐标是2维的,而"POLYLINE"的顶点坐标是3维的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-18 15:50 , Processed in 0.223905 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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