找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 620|回复: 2

[日积月累]: linevertexes

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-11-28 00:43:44 | 显示全部楼层 |阅读模式

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

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

×

  1. (defun linevertexes (linename / linedata linevrtxlist n vrtxname)
  2.   (cond        ((= (cdr (assoc '0 (entget linename))) "lwpolyline")
  3.          (setq linedata (entget linename))
  4.          (setq n 0)
  5.          (while        (assoc 10 linedata)
  6.            (setq linevrtxlist
  7.                   (append linevrtxlist
  8.                           (list (cdr (assoc 10 linedata)))
  9.                   )
  10.            )
  11.            (setq linedata (vl-remove (assoc 10 linedata) linedata))
  12.          ) ;_ end of while     linevrtxlist     )
  13.          ((= (cdr (assoc '0 (entget linename))) "line")
  14.            (setq linedata (entget linename))
  15.            (list (cdr (assoc 10 linedata)) (cdr (assoc 11 linedata)))
  16.          )
  17.          ((= (cdr (assoc '0 (entget linename))) "polyline")
  18.            (setq vrtxname (entnext linename))
  19.            (while vrtxname
  20.              (if (= (cdr (assoc '0 (entget vrtxname))) "vertex")
  21.                (setq linevrtxlist
  22.                       (append
  23.                         linevrtxlist
  24.                         (list (cdr (assoc '10 (entget vrtxname))))
  25.                       )
  26.                )
  27.              ) ;_ end of if
  28.              (setq vrtxname (entnext vrtxname))
  29.            ) ;_ end of while     linevrtxlist
  30.          )
  31.         ) ;_ end of cond  ) ;_ end of defun
  32.   )
  33. )
  34. ;;;- $getPointsOfPolyline
  35. (defun $getPointsOfPolyline
  36.        (polylineName / polylineInfo vertexName listOfPoints)
  37.   (cond
  38.     ((= (cdr (assoc '0 (entget polylineName))) "LWPOLYLINE")
  39.      (setq polylineInfo (entget polylineName))
  40.      (while (vl-position (assoc '10 polylineInfo) polylineInfo)
  41.        (setq listOfPoints
  42.               (cons (cdr (nth (vl-position
  43.                                 (assoc '10 polylineInfo)
  44.                                 polylineInfo
  45.                               ) ;_ vl-position        polylineInfo
  46.                          ) ;_ nth
  47.                     ) ;_ cdr    listOfPoints
  48.               ) ;_ cons
  49.        ) ;_ setq
  50.        (setq polylineInfo
  51.               (vl-remove (assoc '10 polylineInfo) polylineInfo)
  52.        ) ;_ setq
  53.      ) ;_ while
  54.     )
  55.     ((= (cdr (assoc '0 (entget polylineName))) "POLYLINE")
  56.      (setq vertexName (entnext polylineName))
  57.      (while vertexName
  58.        (if (= (cdr (assoc '0 (entget vertexName))) "VERTEX")
  59.          (setq listOfPoints
  60.                 (cons (cdr (assoc '10 (entget vertexName))) ;_ cdr      listOfPoints
  61.                 ) ;_ cons
  62.          ) ;_ setq
  63.        ) ;_ if
  64.        (setq vertexName (entnext vertexName))
  65.      ) ;_ while
  66.     )
  67.     (T (setq listOfPoints nil))
  68.   ) ;_ cond
  69.   (reverse listOfPoints)
  70. ) ;_ defun
  71. ;;;==========================================
  72. (defun plv ()
  73.   (setq pl (entget (car (entsel))))
  74.   (foreach i pl
  75.     (if        (= (car i) 10)
  76.       (progn (setq coord (cons (cdr i) coord)))
  77.     )
  78.   )
  79. )
  80. ;;===========================================
  81. (apply 'append
  82.        (mapcar '(lambda        (_list)
  83.                   (if (= (car _list) 10)
  84.                     (list (cdr _list))
  85.                   )
  86.                 )
  87.                (entget (car (entsel "\nSelect polyline: ")))
  88.        )
  89. )
  90. ;;============================================
  91. (defun C:pol-d (/ list-vert list-point pl plv list-vert i a)
  92.   (setq        list-vert '()
  93.         list-point
  94.          '()
  95.   )
  96.   (setq pl (car (entsel "\nSelect polyline: ")))
  97.   (while (setq plv (entnext pl))
  98.     (setq list-vert (cons plv list-vert)
  99.           pl            plv
  100.     )
  101.   )
  102.   (foreach i list-vert
  103.     (setq a             (cdr (assoc 10 (entget i)))
  104.           list-point (cons a list-point)
  105.     )
  106.   )
  107.   list-point
  108. )
  109. ;;====================================================
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-12-26 09:04:29 | 显示全部楼层
能否解释一下程序的用途? 如果只是获得直线,多义线的顶点, 是否太复杂了!?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2003-12-26 13:02:42 | 显示全部楼层
最初由 lsjjm 发布
[B]能否解释一下程序的用途? 如果只是获得直线,多义线的顶点, 是否太复杂了!? [/B]

从别的网站看到的,顺手就贴过来了。对初学者可以学习Lisp的结构与方法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 23:34 , Processed in 0.202814 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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