Trang chủ

July 5, 2013

Tính chiều dài đường cong Curve trong ObjectARX


Dưới đây là đoạn mã dùng để tính toán chiều dài một đường cong Curve.

Curve ở đây được hiểu theo nghĩa rộng hơn, bao gồm cả đoạn thẳng LINE, các đa tuyến POLYLINE, các cung tròn ARC, đường tròn CIRCLE.


Acad::ErrorStatus GetLength(AcDbObjectId id, double& length)
{
Acad::ErrorStatus es;

AcDbCurve* pEnt;
es = acdbOpenObject(pEnt, id, AcDb::kForRead);
if( es == Acad::eOk && pEnt)
{
double startParam, endParam, startDist, endDist;

es = pEnt->getStartParam(startParam);
if( es!=Acad::eOk ) { pEnt->close(); return es; }

es = pEnt->getEndParam(endParam);
if( es!=Acad::eOk ) { pEnt->close(); return es; }

es = pEnt->getDistAtParam(startParam, startDist);
if( es!=Acad::eOk ) { pEnt->close(); return es; }

es = pEnt->getDistAtParam(endParam, endDist);
if( es!=Acad::eOk ) { pEnt->close(); return es; }

es = pEnt->close();
length = endDist - startDist;
}

return es;
}

No comments:

Post a Comment