找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1681|回复: 4

[每日一码] XDRX API 对象迭代器使用--迭代2D POLYLINE顶点

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-10-11 22:34:59 | 显示全部楼层 |阅读模式

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

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

×
下面代码演示 xdrx api 1010版本新加入的POLYLINE的顶点 AcDb2dVertex 迭代器的使用

  1. ;|
  2. 遍历顶点,获得顶点列表
  3. |;
  4. (defun c:tt()
  5.    (if (setq e (car (xdrx_entsel "\n选取2D POLYLINE实体<退出>:" '((0 . "POLYLINE")))))
  6.       (progn
  7.          (xdrx_object_get e)  ;;建立POLYLINE顶点迭代器
  8.          (while (setq e (xdrx_object_next))  ;;遍历
  9.             (setq pnt (xdrx_getpropertyvalue e "position")
  10.                   pntl (cons pnt pntl)
  11.             )
  12.          )
  13.          (reverse pntl)
  14.       )
  15.    )
  16. )




  1. 命令: tt

  2. 选取2D POLYLINE实体<退出>:((1042.54 740.108 0.0) (1804.94 1358.78 0.0) (2421.51
  3. 320.841 0.0) (2521.29 878.159 0.0) (2193.82 1371.56 0.0) (3109.72 1251.41 0.0)
  4. (3342.53 819.36 0.0))

复制代码


上面代码结果等同于

  1. (defun c:tt()
  2.    (if (setq e (car (xdrx_entsel "\n选取2D POLYLINE实体<退出>:" '((0 . "POLYLINE")))))
  3.       (progn
  4.          (xdrx_getpropertyvalue e "Vertexs")
  5.       )
  6.    )
  7. )




  1. 命令: tt
  2. 选取2D POLYLINE实体<退出>:((1042.54 740.108 0.0) (1804.94 1358.78 0.0) (2421.51
  3. 320.841 0.0) (2521.29 878.159 0.0) (2193.82 1371.56 0.0) (3109.72 1251.41 0.0)
  4. (3342.53 819.36 0.0))

复制代码

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-11 23:43:58 | 显示全部楼层
同样等同于 (xdrx_entity_getstretchpoint e)

点评

要这么说,还等同于 (xdrx_getpropertyValue e "StretchPoint") 有这个顶点迭代器,我理解是可以对单独的每个顶点进行操作了。 命令: (xdrx_object_get (car (entsel))) 选择对象: 命令: (setq e (xdrx  详情 回复 发表于 2013-10-11 23:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-10-11 23:51:54 | 显示全部楼层
本帖最后由 newer 于 2013-10-11 23:55 编辑
st788796 发表于 2013-10-11 23:43
同样等同于 (xdrx_entity_getstretchpoint e)

要这么说,还等同于 (xdrx_getpropertyValue e "StretchPoint")

有这个顶点迭代器,我理解是可以对单独的每个顶点进行操作了。

========================================
命令: (xdrx_object_get (car (entsel)))

选择对象: <图元名: 7ef95388>

命令: (setq e (xdrx_object_next))
<图元名: 7ef95390>

命令: (xdrx_getpropertyvalue e)

Class AcDb2dVertex:
    ├─Bulge
    ├─EndWidth
    ├─IsTangentUsed
    ├─Position
    ├─StartWidth
    ├─Tangent
    ├─VertexType

命令: (xdrx_setpropertyvalue e)

Class AcDb2dVertex:
  ├─Bulge (INT or REAL)
  ├─EndWidth (INT or REAL)
  ├─Position (3D or 2D Point)
  ├─StartWidth (INT or REAL)
  ├─Tangent (INT or REAL)
  ├─IgnoreTangent (T)


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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-12 00:03:26 | 显示全部楼层
可以参考这个用法

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2017-11-20 16:08:27 | 显示全部楼层
虽然还不知道迭代器是用来做什么的,但是还是感觉很高科技

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 00:09 , Processed in 0.176922 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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