马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
我写了一个测试程序,获得一条曲线的interval,再设置区间上段为原始区间的一半,对于圆 直线 椭圆 样条曲线都能得到我要的效果,最终生成了比如说半圆 半椭圆 原始直线的一半直线。可是对于多段线,始终生成的是一整条和初始多段线完全一样的多段线,这是为什么。我查看setInterval后区间上段是成功设置的,返回的bool值也为真。我觉得是将acgeCurve转为acdbCurve出现了问题,用acdbConvertGelibCurveToAcDbCurve和setFromAcGeCurve是一样的效果。
 - static void fjfMyGrouptest()
- {
- AcDbObjectId entId = CSSUtil::selectOne(L"请选择"),entResult;
- if (entId==AcDbObjectId::kNull)
- {
- return;
- }
- AcDbCurve* pCurve = NULL;
- AcGeCurve3d *pGecurve = NULL;
- double lower, higher;
- AcGeInterval val;
- if (acdbOpenObject(pCurve,entId,AcDb::kForWrite)==Acad::eOk)
- {
- pCurve->getAcGeCurve(pGecurve);
- pGecurve->getInterval(val);
- val.getBounds(lower, higher);
- higher = (lower + higher) / 2;
- acutPrintf(L"\n lower is %g,higher is %g", lower, higher);
- val.setUpper(higher);
- Adesk::Boolean ifSet=pGecurve->setInterval(val);
- pGecurve->getInterval(val);
- val.getBounds(lower, higher);
- acutPrintf(L"\n Now lower is %g,higher is %g", lower, higher);
- AcDbCurve* pNew =NULL;
- acdbConvertGelibCurveToAcDbCurve(*pGecurve, pNew);
- pNew->setColorIndex(1);
- CDwgDatabaseUtil::postToMOdelSpace(pNew);
- pCurve->close();
- delete pGecurve;
- }
- }
|