找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2835|回复: 9

[求助] arx 请问一下 getSplitCurves的用法? 谢谢

[复制链接]
发表于 2018-8-19 16:51:33 | 显示全部楼层 |阅读模式

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

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

×
我在程序中得到了交点集 AcGePoint3dArray ptArray;如何利用交点打断所选的曲线curves? 在帮助文档中没有找到相关的例子  希望各位大神 指点一下    最好是给各简单的例子   让小弟理解一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-20 11:36:43 | 显示全部楼层
大愚 发表于 2018-8-20 10:29
这个我有找到,但是不知道怎样调用,能否您写个简单的例子,让我理解一下! 谢谢您

上面就是调用方法啊,你不是得到AcGePoint3dArray数组了吗

AcDbVoidPtrArray mCurves;
if (pCrv->getSplitCurves(pts,mCurves) == Acad::eOk && !mCurves.isEmpty())
{
     ......
}

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2018-8-19 19:02:46 | 显示全部楼层
既然得到了交点集,直接用就好了

virtual Acad::ErrorStatus
getSplitCurves(
const AcGePoint3dArray& points,
AcDbVoidPtrArray& curveSegments) const;
pointsInput array of points (in WCS coordinates) on the curve
curveSegmentsReturns with pointers to newly created entities that are subcurves of the original


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

使用道具 举报

 楼主| 发表于 2018-8-20 10:29:01 | 显示全部楼层
ObjectARX 发表于 2018-8-19 19:02
既然得到了交点集,直接用就好了

virtual Acad::ErrorStatusgetSplitCurves(const AcGePoint3dArray& po ...

这个我有找到,但是不知道怎样调用,能否您写个简单的例子,让我理解一下! 谢谢您

点评

上面就是调用方法啊,你不是得到AcGePoint3dArray数组了吗 AcDbVoidPtrArray mCurves; if (pCrv->getSplitCurves(pts,mCurves) == Acad::eOk && !mCurves.isEmpty()) { ...... } mCurves数组里面是打  详情 回复 发表于 2018-8-20 11:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 12:00:39 | 显示全部楼层
newer 发表于 2018-8-20 11:36
上面就是调用方法啊,你不是得到AcGePoint3dArray数组了吗

AcDbVoidPtrArray mCurves;

您好 请问一下 pCrv 是不是我之前获得的曲线集?

点评

这是对一个对象,你曲线集是AcDbCurve吗? 概念要清楚。 你要是曲线集,你就用循环处理 for (int i=0;i  详情 回复 发表于 2018-8-20 12:05
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-20 12:05:09 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=3674506&ptid=717270][color=#999999]大愚 发表于 2018-8-20 12:00[/color][/url][/size]
您好 请问一下 pCrv 是不是我之前获得的曲线集?[/quote]
这是对一个对象,你曲线集是AcDbCurve吗? 概念要清楚。
你要是曲线集,你就用循环处理
for (int i=0;i<mCurvesArr.length();i++)
{
     AcDbCurve *pCrv = (AcDbCurve *)mCurvesArr[i];
     ........
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 14:37:47 | 显示全部楼层
newer 发表于 2018-8-20 12:05
这是对一个对象,你曲线集是AcDbCurve吗? 概念要清楚。
你要是曲线集,你就用循环处理
for (int i=0;i

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

使用道具 举报

 楼主| 发表于 2018-8-20 16:07:28 | 显示全部楼层
newer 发表于 2018-8-20 12:05
这是对一个对象,你曲线集是AcDbCurve吗? 概念要清楚。
你要是曲线集,你就用循环处理
for (int i=0;i

您好
您帮我再看看我怎么就是得不到结果

                AcDbObjectIdArray entIds;
                AcGePoint3dArray ptArray;

                if (CSelectUtil::PromptSelectEnts(_T("\n 选择实体:"),descs,entIds))

以上是我前边定义的参数,通过函数求了交点集ptArray
…………
…………
以下是我要求的getSplitCurves的函数
                AcDbVoidPtrArray mCurves;
                for (int i = 0;i<entIds.length();i++)
                {
                        AcDbEntity *ent=NULL;
                        acdbOpenObject(ent,entIds,AcDb::kForWrite);
                        AcDbCurve *pCrv = (AcDbCurve *)ent;
                        pCrv->getSplitCurves(ptArray,mCurves);       
                }
                acutPrintf(_T("\n mCurves的数量:%d\n"),mCurves.length());

点评

你得不到结果,你得到了什么? 你就画两条相交直线,执行你代码,看能打断不 你代码不全,没有太多的建议。 注意, 1、最好把点变成参数,用参数打断,因为一个交点至少有两个参数值 2、数组排除起点和终点  详情 回复 发表于 2018-8-20 16:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-20 16:53:21 | 显示全部楼层
大愚 发表于 2018-8-20 16:07
您好
您帮我再看看我怎么就是得不到结果

你得不到结果,你得到了什么?
你就画两条相交直线,执行你代码,看能打断不

你代码不全,没有太多的建议。

注意,
1、最好把点变成参数,用参数打断,因为一个交点至少有两个参数值
2、数组排除起点和终点
3、参数值排下序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2018-8-20 17:26:33 | 显示全部楼层
1、先确定断开点序列AcGePoint3dArray ptArray
2、根据点返回参数(getParamAtPoint)
3、参数由小到大排序
4、使用virtual Acad::ErrorStatus getSplitCurves(const AcGeDoubleArray& params,AcDbVoidPtrArray& curveSegments) const;断开

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 22:30 , Processed in 0.381082 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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