找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2273|回复: 10

[求助] xdrx_GetPolyVtx 和xdrx_polyline_getCurVertex

[复制链接]
发表于 2014-10-14 16:21:10 | 显示全部楼层 |阅读模式

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

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

×
以前版本我用到过返回LWPOLYLINE定点,现在CAD12 13都用不了,也不知道是第几版开始的。自画多义线,分别用三个命令返回的结果命令: (setq a (entsel))
选择对象: (<图元名: 7ffffb79820> (91067.8 -44541.5 0.0))

命令: (entget (car a))

((-1 . <图元名: 7ffffb7fca0>) (0 . "LWPOLYLINE") (330 . <图元名: 7ffffb06980>) (5 .
"4F22A") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "GXZH") (62 . 3) (6
. "Continuous") (100 . "AcDbPolyline") (90 . 4) (70 . 128) (43 . 0.0) (38 .
0.0) (39 . 0.0) (10 97321.5 26110.2) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0)
(10 97636.2 26384.3) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 97870.9
26588.8) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 97924.5 26635.5) (40 .
0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210 0.0 0.0 1.0))

命令: (xdrx_GetPolyVtx (car a))
; 错误: no function definition: XDRX_GETPOLYVTX

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-10-14 16:30:45 | 显示全部楼层
1 (xdrx_getpropertyvalue e "PointAt" 1) 二维点 ,索引 INT

2 (xdrx_curve_getpointatparam e 1.0) 三维点, param real or int

3 (xdrx_polyline_getpointat e 1) 索引 INT,二维点

以上是对 LWPOLYLINE

功  能:
获得当前顶点
调用格式:
(xdrx_polyline_getCurVertex <LWPOLYLINE实体名>)

(xdrx_polyline_getCurVertex) ;;对象栈顶
返 回 值:
若存在下一个顶点,返回点,否则N个L
说    明:
这是个遍历函数,执行一次取一个顶点,直到结束

1.没有参数

2.考虑了旧版本的AcDb2DPOLYLINE和新的AcDbPolyLine (LwPolyLine)


点评

多谢,试了一下,都没原来好使。如4个定点的多一线线命令xdrx_polyline_getPointAt (car a) 0.0)好像不对, 命令: (xdrx_curve_getPointAtParam (car a) 3.0)当最后参数0.0-3.0(4个顶点)好用,3.0以后时返回都  详情 回复 发表于 2014-10-14 17:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-14 17:03:30 | 显示全部楼层
获得所有顶点

命令: (xdrx_getpropertyvalue ent "vertices")
((1273.65 787.549 0.0) (2271.4 1644.52 0.0) (2490.54 666.456 0.0) (3147.94
1202.06 0.0) (1893.75 885.356 0.0) (1842.46 410.296 0.0))

点评

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

使用道具 举报

 楼主| 发表于 2014-10-14 17:28:19 | 显示全部楼层
st788796 发表于 2014-10-14 16:30
1 (xdrx_getpropertyvalue e "PointAt" 1) 二维点 ,索引 INT

2 (xdrx_curve_getpointatparam e 1.0) 三 ...

多谢,试了一下,都没原来好使。如4个定点的多一线线命令:(xdrx_polyline_getPointAt (car a) 0.0)好像不对,
命令: (xdrx_curve_getPointAtParam (car a) 3.0)当最后参数0.0-3.0(4个顶点)好用,3.0以后时返回都是最后一个顶点而不是nil,使用还得判断终点,
命令: (xdrx_getpropertyvalue (car a) "PointAt" 3)当最后参数0.0-3.0(4个顶点)好用
命令: (xdrx_getpropertyvalue (car a) "PointAt" 4)参数3以后返回以下内容,也要判断终点。
Class AcDbPolyline:

    ├─BulgeAt
    ├─Elevation
    ├─ConstantWidth
    ├─HasBulges
    ├─HasPlinegen

不过总算能用,多谢了



点评

你应该在给函数 param 参数前,就判断你给函数的参数是否超过了 endParam. xdrx_curve_getEndParam 命令: (xdrx_curve_getEndParam (entlast)) 4.0  详情 回复 发表于 2014-10-14 20:08
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-14 17:30:07 | 显示全部楼层
XDSoft 发表于 2014-10-14 17:03
获得所有顶点

命令: (xdrx_getpropertyvalue ent "vertices")

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-10-14 17:56:57 | 显示全部楼层

函数 Bug 是一方面,你的使用方法也有问题

xdrx_polyline_numVerts 顶点数, PointAt 要整数索引,不要超过 (1- numVerts) ,同样 param 也不能超过

终点一般用 xdrx_curve_getendpoint ,起点 xdrx_curve_getstartpoint

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-10-14 20:04:32 | 显示全部楼层
本帖最后由 newer 于 2014-10-14 20:05 编辑

是你对函数的用法还没清楚

命令: (setq e (xdrx_setenttodb (entlast)))
T

命令: (while (setq p (xdrx_polyline_getCurVertex)) (setq pl(cons p pl)))
((967.254 683.951 0.0) (1268.03 749.637 0.0) (1595.11 591.991 0.0) (1478.41
329.249 0.0) (1169.42 248.784 0.0))

xdrx_polyline_getCurVertex 是个顶点迭代器,因为你没给多段线实体,所以这个函数用前,必须使用 xdrx_setenttodb
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-10-14 20:08:59 | 显示全部楼层
hzwwrrbb 发表于 2014-10-14 17:28
多谢,试了一下,都没原来好使。如4个定点的多一线线命令xdrx_polyline_getPointAt (car a) 0.0)好像不 ...

你应该在给函数 param 参数前,就判断你给函数的参数是否超过了 endParam.

xdrx_curve_getEndParam

命令: (xdrx_curve_getEndParam (entlast))
4.0

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

使用道具 举报

 楼主| 发表于 2014-10-15 08:41:22 | 显示全部楼层
多谢大侠们,虽然很早就在用晓东的东西,但是有比较浅,后来更新后发觉有些函数的名称变了,然后替换一下,但现在的用户手册比较简单,不容易找,也确实不容易准确掌握。

点评

手册只能写些函数的用法,参数,返回值,更多的还需要自己多写程序掌握,如果遇到什么问题,多到论坛上发帖大家探讨。  详情 回复 发表于 2014-10-15 09:29
XDAPI 可能看 ARX 手册更好理解  详情 回复 发表于 2014-10-15 08:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-15 08:55:56 | 显示全部楼层
hzwwrrbb 发表于 2014-10-15 08:41
多谢大侠们,虽然很早就在用晓东的东西,但是有比较浅,后来更新后发觉有些函数的名称变了,然后替换一下, ...

XDAPI 可能看 ARX  手册更好理解

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-15 09:29:00 | 显示全部楼层
hzwwrrbb 发表于 2014-10-15 08:41
多谢大侠们,虽然很早就在用晓东的东西,但是有比较浅,后来更新后发觉有些函数的名称变了,然后替换一下, ...

手册只能写些函数的用法,参数,返回值,更多的还需要自己多写程序掌握,如果遇到什么问题,多到论坛上发帖大家探讨。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 06:52 , Processed in 0.491471 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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