找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1064|回复: 10

[ARX函数]:各位大哥大姐帮帮我吧,编不出来啊,真是想哭啊!

[复制链接]
发表于 2006-8-29 15:32:33 | 显示全部楼层 |阅读模式

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

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

×
刚参加工作,以前没有接触过arx,学起来好吃力哦
领导又要编一个程序,就是:
有多条多线段,有交点的地方要求断开,自交产生的交点也要求断开.
我连思路都理不清楚,到底应该怎么编啊?
请各位高手指点下思路吧!万分感谢!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-8-30 08:26:17 | 显示全部楼层
我的思路是:
step1: 找到要实现上述功能的所有曲线n条;
step2:从n 条中取出一条,计算出它们的交点;
step3:将这两条曲线在交点位置用BreakLine断开;
step4:重复step2;

关于断开线函数可以参考我的这个函数,可能你需要改动一下:

[iframe h=600 w=600]http://www.xdcad.net/forum/showthread.php?s=&postid=2955392#post2955392[/iframe]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-30 10:49:41 | 显示全部楼层
思路同楼上类似,不过,建议你研究研究
virtual Acad::ErrorStatus getSplitCurves(const AcGeDoubleArray& params,
AcDbVoidPtrArray& curveSegments) const;
函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-30 11:34:42 | 显示全部楼层
我刚使用getSplitCurves写完这个算法。不过没考虑自相交。这个算法关键问题是如何排除遍历的时候找到的重复交点。因为简单的遍历,会把N条线交于一点求成N个交点

我的思路如下:
1、找到所有要求交点的线作为集合A
2、建立一个空集合B。每次从A中pop一条线push到B中,同时求这条线和B中其他线的交点。这样避免了求重复交点
3、维护一个交点的集合C,每次求出的交点到C中验证是否有重复的。避免多条线相交一点。

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

使用道具 举报

 楼主| 发表于 2006-8-31 18:14:53 | 显示全部楼层
真感谢各位!!!
我现在先编了一个简单的,是两条多线段相交的程序
但是,intersectWith求交点的时候,数组是AcGePoint3dArray的
后来遍历的时候onSegAt又要求AcGePoint2dArray
这个getSplitCurves又要求AcGePoint3dArray
该怎么转换数据类型呢?
真的很感谢各位
本来已经对自己很没信心了的(我觉得object arx好难!)
有你们的支持跟帮助,我相信我会学好程序的!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-31 20:01:39 | 显示全部楼层
转移数组内每个点有几种方法:
1.3D点数组中每个点应用AcGePoint2d convert2d(const AcGePlanarEnt& pln) const;但可以从参数看出需要一个平面实体来指定哪个平面上的2d点。
2.每个点者转换成好像是ads_point,然后再转换成2d的点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-1 15:30:35 | 显示全部楼层
好的好的,我来试试,谢谢
还有个问题,就是一段线上如果存在多个交点,该怎么给他们排序呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-9-4 10:31:07 | 显示全部楼层
感谢楼上的!!
请问getDistAtPoint 函数是要求一个已知点,然后返回线段的起点到该点的距离,是吗?
还有,这个函数适用于整条多线段吗?还是只适用于多线段的其中一段?
我不是很看的懂帮助,呵呵
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-9-4 15:51:18 | 显示全部楼层
谢谢谢谢
但是我还有一点想不清楚啊,好郁闷啊
就是得到所有点到起点的距离后,把它们放在数组lens里
对lens进行从小到大排序后,怎么知道到底哪个点到起点的lens最小啊?
就是lens排好序后,怎么样还可以对应以前的那个点啊,555,想不清楚啊

各位高手,怎么交换数组里的两个点newpoints1.at(t1)和newpoints1.at(t1+1)啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-30 02:16 , Processed in 0.320219 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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