找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 625|回复: 7

[求助]:如何用精确的点选方式选中实体并返回实体和点选的点。。

[复制链接]
发表于 2003-7-17 09:46:14 | 显示全部楼层 |阅读模式

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

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

×
如何用精确的点选方式选中实体并返回实体和点选的点。。
ads_entsel()可以返回实体和点选点,但他不能精确的点选(没有捕捉方式)。。

我尝试着用ads_getpoint()和ads_nentselp()的组合方式,但返回的实体名中总是空的。。。。

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

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-17 10:02:49 | 显示全部楼层

Re: [求助]:如何用精确的点选方式选中实体并返回实体和点选的点。。

最初由 Echoyin 发布
[B]如何用精确的点选方式选中实体并返回实体和点选的点。。
ads_entsel()可以返回实体和点选点,但他不能精确的点选(没有捕捉方式)。。

我尝试着用ads_getpoint()和ads_nentselp()的组合方式,但返回的实体名中总... [/B]


这个你不用担心,ACAD在选择实体的时候,只要点在PICKBOX系统变量设置的范围内,也就是entsel 时候的拾取框大小,都能选择到实体的,必须一些命令,如 BREAK, 提示选择实体的时候,用(实体名 点)的格式给参数,只要点到实体的距离在PICKBOX内,就能选择到实体.

上面说的是"选择实体",如果你的程序对点精度有要求,那么你可以用ADS_OSNAP函数,给捕捉方式,返回实体上的捕捉点.

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

使用道具 举报

 楼主| 发表于 2003-7-17 10:14:02 | 显示全部楼层
楼长~
ads_entsel()的选择光标是“口”型的,这种光标就算打开了捕捉方式也没有办法选中2个距离很近的点(比如说都是直线的交点)中一个的。。。。

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-17 10:22:10 | 显示全部楼层
最初由 Echoyin 发布
[B]楼长~
ads_entsel()的选择光标是“口”型的,这种光标就算打开了捕捉方式也没有办法选中2个距离很近的点(比如说都是直线的交点)中一个的。。。。

我是想能不能有“十”型的,他可以准确捕捉上面所说的2个点。 [/B]



ACAD是可以无级缩放的, 如果你的程序让用户交互, 能不能看到让用户自己去缩放屏幕放大,如果你程序考虑,只能适合一些情况下,如果用把屏幕缩放的很小,那还是选择不到,ACAD选择实体基于的是象素,PICKBOX,APERTURE系统变量的值也是象素大小.

所以你即使想变成十字的, 如果用户把屏幕缩放的很小, 还是选择不到的.

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

使用道具 举报

 楼主| 发表于 2003-7-17 10:39:00 | 显示全部楼层
谢谢楼长~
我是看见了有个软件有这个功能(探索者-〉圆钩断点),所以想自己编程实现类似的功能。

比如在下面的图中,如果我要在钢筋和矩形顶点处选中点和钢筋实体。。如果是“口”型的光标不能准确的捕捉矩形顶点会让人非常难受。。。
(我是个菜鸟,如果提出一些很可笑的问题请不要介意, :))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-17 10:50:42 | 显示全部楼层
最初由 Echoyin 发布
[B]谢谢楼长~
我是看见了有个软件有这个功能(探索者-〉圆钩断点),所以想自己编程实现类似的功能。

比如在下面的图中,如果我要在钢筋和矩形顶点处选中点和钢筋实体。。如果是“口”型的光标不能准确的捕捉矩形顶... [/B]


他这个是这样实现的:

写自己的ENTSEL,加入过滤功能,首先根据过滤表,过滤出需要的实体,比如上面的钢筋和矩形肯定不同,可以用层,可以用实体类型,这个你自己的代码根据需要自己定.

核心是用ssget , 这里有几个技巧, 一个是弄清楚ACAD选择实体PICKBOX的原理, 他是根据象素, 因此 可以无限缩放的情况下,也能选择到实体.

首先你用系统变量 screensize, viewsize,  pickbox 得到拾取矩形框相对于屏幕窗口坐标系的相对高度和宽度值, 然后根据entsel 拾取的用户坐标系的点变成WCS坐标系点后,根据上面的拾取框的相对高度和宽度,算出拾取矩形框的四个WCS下的顶点.

然后利用SSGET CP 方式,加上 FILTER 参数 过滤出需要的实体,如上面的钢筋.

现在拾取点有了, 钢筋实体也有了, 你可以用AcDbCurve::getClosedPoint(...) 获得点到曲线实体的最近点, 那么这个最近点就是你要的了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-7-17 11:03:43 | 显示全部楼层
非常感谢~~
我原来还以为有简便点的函数可以直接实现上面的功能呢。没想到很复杂的。。。

我正想模仿探索者做个小工具软件。。。。
不过觉得探索者有不少地方不尽人意,想改进下

   比如这个探索者-〉圆钩断点(2.0版本) 这个小功能在点选钢筋的时候就有几点问题:
1。他的过滤条件好象没做好,不是钢筋的时候也可以加钩的,:),(或者他更本没做过滤条件?)
2。当放缩到一定程度的时候,就算选在钢筋上面他也认不出来。。

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-7-17 13:18:56 | 显示全部楼层
最初由 Echoyin 发布
[B]非常感谢~~
我原来还以为有简便点的函数可以直接实现上面的功能呢。没想到很复杂的。。。

我正想模仿探索者做个小工具软件。。。。
不过觉得探索者有不少地方不尽人意,想改进下

   比如这个探索者-〉圆钩断... [/B]



缩放到很小不能选择,那你就不能用当前的PICKBOX的大小去过滤实体,因为这个框可能要选择到很多同类过滤的实体了.

一般情况下,只要让用户去交互选择,那么用户是不会把图形变的很小去拾取的:) ,

保证拾取框在合适的范围,这个应该是已经存在的条件. 程序不要考虑.

如果你硬用具体的值(不用PICKBOX), 比如1,或者0.1, 那么在图形很大的时候反而选不着了.

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-13 12:39 , Processed in 0.188815 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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