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