找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1163|回复: 11

[ARX程序]:晓东斑竹请帮忙给个思路~~~

[复制链接]
发表于 2002-11-20 17:51:45 | 显示全部楼层 |阅读模式

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

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

×
我在各个主要的AutoCAD 二次开发的网站上都查过这个问题,但是没有找到答案,请您给予帮助!问题是:

能不能实现象bhatch/pick 这样的功能,在 AutoCAD图形中点选,然后可以得到点选的边界,此时的边界可以是任意的曲线类组合而成的。

如果可以,请给出思路或者是例程都可以!谢谢~~~

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

已领礼包: 181个

财富等级: 日进斗金

发表于 2002-11-20 18:43:28 | 显示全部楼层
在内部点选时,向这个点的四周做搜索,如可以作一条射线。当找到一条时,再对其首部或者尾部或者交点作查找,依次找出边界。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-21 08:48:39 | 显示全部楼层
当一幅图形中有n个实体的时候,那查找的速度太慢了,有没有别的方法?在AutoCAD中默认的情况是由当前视图中可以看到的实体来查找边界。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-22 11:59:43 | 显示全部楼层
呵呵,请你使用一下AutoCAD中的boundary命令,在arx程序中实现这个想法只能调用这个命令,因为arx中没有对应的类:(
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-22 23:49:09 | 显示全部楼层
1)如果要求边界是任意曲线类型,为简单起见,可以将其转化为AcGe类,然后按一定的精度获取坐标,具体细节这个坛子又讲到。
2)为了加快相关边界的搜索速度,有几种方法可以考虑,一、让用户手工选取边界,二、默认与边界相关的曲线段全部位于视窗范围内,然后利用一些快速的检索算法进行检索,或者直接利用CAD的选择功能。
3)对选择到的弧段进行处理,包括求交,弧段的重新构建、重迭处理等。
4)对处理后弧段的进行边界搜索,具体方法有很多,我这里提示一种,从某一弧段出发,顺时针方向,寻找与其相领接的弧段逆时针角度最小的弧段作为下一弧段,一直回到起点。
另外一个想法,不知道你这是干什么用的,你何不将自动化程度再提高一点,比如说将整幅图要要求取边界的地方Point一个标志,然后用程序对整幅图进行处理,如果是交互式的倒不如CAD的Boundary。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-27 03:21:22 | 显示全部楼层
只要是ACAD的命令做的东西,使用ARX就可以做出来,这一点我从来不怀疑。

BOUNDARY是个命令,用ARX完全可以做出来。

思路:
拿获得曲线为例,其他实体比如块通过这个算法都可以实现。

1、为了提高效率,先获得屏幕内的所有曲线的选择集,ACAD也应该是这样,超出屏幕的,ACAD的BOUNDARY也不给选。

2、把曲线都转换成AcGe模型

3、使用AcGeCurve3d::getInterval(....),获得参数化的一个有界的AcGeInterva类对象

4、然后利用AcGeInterval::intersectWith (....) 获得两条几何曲线的交,获得轮廓。

  1. [font=courier new]
  2. Adesk::Boolean

  3. intersectWith(

  4. const AcGeInterval& otherInterval,

  5. AcGeInterval& result) const;

  6. otherInterval Input interval with which to merge
  7. result Output merged interval

  8. Returns Adesk::kTrue and the intersection of this interval and the interval otherInterval i
  9. n the output argument result, if they are not disjoint up to the
  10. boundary tolerance. Returns Adesk::kFalse otherwise.

  11. [/font]
复制代码

5. 循环做上面的,得到屏幕内所有可能的轮廓。

6. 最后,判断包括这个点的最小轮廓。

AcGe 几何库给我们提供了所有ACAD数据库实体对应的几何数学模型的算法,几何实体往往比对应的数据库实体提供了更多的几何算法,通过几何库,可以做出任何东西来

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-4-1 16:30:34 | 显示全部楼层
想问一下第二步“把曲线都转换成AcGe模型”有没有什么方便的方法?有没有什么函数可以直接转换的?thx
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-1 23:47:56 | 显示全部楼层
总斑竹的功力果然深厚!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 05:42 , Processed in 0.491942 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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