08/08/2013
Как вычислить длину примитива в ObjectARX/.NET
Вы можете использовать методы getStartParam() и getEndParam() для получения начального и конечного параметров кривой - унаследованного от AcDbCurve примитива. Затем используя метод getDistAtParam() можно получить длину кривой. Смотрите ниже код для получения длины:
Код - C++: [Выделить]
- Acad::ErrorStatus es;
- ads_name ename;
- ads_point pt;
- if (RTNORM != acedEntSel(NULL, ename, pt))
- {
- return;
- }
- AcDbObjectId objid;
- acdbGetObjectId(objid, ename);
- AcDbCurve* pEnt;
- acdbOpenObject(pEnt, objid, AcDb::kForRead);
- double startParam, endParam, startDist, endDist;
- es = pEnt->getStartParam(startParam);
- es = pEnt->getEndParam(endParam);
- es = pEnt->getDistAtParam(startParam, startDist);
- es = pEnt->getDistAtParam(endParam, endDist);
- acutPrintf(L"\nLength = %f", endDist - startDist);
В .NET можно это сделать аналогично.
Код - C#: [Выделить]
- Double a = curve.StartParam;
- Double b = curve.EndParam;
- Double length = curve.GetDistanceAtParameter(b) -
- curve.GetDistanceAtParameter(a);
Источник: http://adndevblog.typepad.com/autocad/2012/05/how-to-calculate-the-length-of-an-entity-in-objectarxnet.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=177
Опубликовано 08.08.2013Отредактировано 19.08.2013 в 14:51:04