找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6996|回复: 56

[ARX函数]:ARX SDK的陷阱

[复制链接]
发表于 2003-8-28 10:44:06 | 显示全部楼层 |阅读模式

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

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

×
下面所提到的函数是我在使用过程中发现的问题,不知道
大家有没有遇到过类似的情况(VC6.0,SP5,ARXSDK2002)。
1,AcDbCurve::getFirstDeriv( const AcGePoint3d& point, AcGeVector3d& firstDeriv) const;
如果后台进行ODBC操作,那么这个函数对在起、终点的firstDeriv结果与不进行ODBC操作得到的结果刚好相反。
我的解决方法:自己计算起点终点的firstDeriv。

2,AcDbCurve::getDistAtPoint( const AcGePoint3d& point, double& distance) const;
一段使用了该函数的相同代码,在Acad2000与Acad2002下
运行得到完全不同的两种结果。跟踪发现是因为在Acad2000下
该函数得到的distance始终为0。
我的解决方法:先用getParamAtPoint求得param,再用getDistAtParam
得到distance。

3,AcDbCurve::getSplitCurves(const AcGePoint3dArray& points,AcDbVoidPtrArray& curveSegments) const;
在一定情况下(还没有找到规律:)),该函数会返回失败。
我的解决方法:自己做了一个getSplitCurve。

4,AcDbEntity::intersectWith( const AcDbEntity* pEnt,  AcDb::Intersect intType, AcGePoint3dArray& points, int thisGsMarker = 0, int otherGsMarker= 0) const;
对AcDbPolyline,intType=AcDb::kOnBothOperands, 当交点离polyline的某个vertex很近时,该函数返回成功,但结果却不是期望的点。
我的解决方法:判断该函数成功后,用AcDbCurve::getClosestPointTo再得到最近点。



<font color=blue><b>[斑竹提示]:</b></font><font color=red><b>
谢谢您为大家提供这么好的参考,希望以后能够更多的把您的开发技巧来与大家分享!谢谢!!
欢迎常来晓东CAD空间!
</b>&nbsp;&nbsp;&nbsp;&nbsp;<i>by  HillMan</i></font>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-8-29 19:19:58 | 显示全部楼层
这位仁兄的经验很有参考价值。建议斑竹建立以此为主题的“精华贴“。大家在此交流自己总结的经验。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-10-16 21:27:41 | 显示全部楼层
关于的二个问题,是不是,由于你算出来的点已经偏移了曲线了,可以通过getClosestPointTo得到曲线上的点在使用getDistAtPoint函数试一试呐?
关于第3个问题,你可以仔细看看ACAD提供的文档,在文档中特别提到的就是不保证一定成功,这个是和它的ACIS几何核心相关的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2003-12-6 13:52:50 | 显示全部楼层

Re: [ARX函数]:ARX SDK的陷阱

最初由 reader 发布
[B]下面所提到的函数是我在使用过程中发现的问题,不知道
大家有没有遇到过类似的情况(VC6.0,SP5,ARXSDK2002)。
1,AcDbCurve::getFirstDeriv( const AcGePoint3d& point, AcGeVector3d& firstDeriv) const;
如果后... [/B]


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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-9-14 09:05:28 | 显示全部楼层
早期用getDistAtParam写代码时,发现有时计算出的结果不准确.
AcDbCurve类还提供了两个函数:getParamAtPoint和getDistAtParam。getParamAtPoint返回曲线在某点处的参量值,而getDistAtParam则返回给定参量值距离起点的距离。这两个函数结合后?测试,不论给定点是不是顶点,计算结果均正确.
即:pline->getParamAtPoint(point, dParam)
     (pline->getDistAtParam(dParam, dDist)
这里的Param是这样定义的:在每个顶点处的参量值为顶点的序号,曲线上任意一点的参量值根据相邻两个顶点的参量值和他们之间的距离内插得到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 10:27 , Processed in 0.404355 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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