Determining Curve Object Types
Windows only
Problem
Given an ON_Curve
, how can one determine which kind of ON_Curve
-derived object it really is? (e.g. ON_LineCurve
, ON_ArcCurve
, ON_PolylineCurve
, ON_PolyCurve
, ON_NurbsCurve
, etc.)?
Solution
Basically, you try to cast the ON_Curve
object to one of the ON_Curve
-derived classes using its Cast
operator. If the cast operation is success, you are good to go. If it fails, then you know the test object is some other ON_Curve
-derived object.
Sample
const ON_LineCurve* GetLineCurve( const ON_Curve* crv )
{
const ON_LineCurve* p = 0;
if( crv != 0 )
p = ON_LineCurve::Cast( crv );
return p;
}
const ON_ArcCurve* GetArcCurve( const ON_Curve* crv )
{
const ON_ArcCurve* p = 0;
if( crv != 0 )
p = ON_ArcCurve::Cast( crv );
return p;
}
const ON_PolylineCurve* GetPolylineCurve( const ON_Curve* crv )
{
const ON_PolylineCurve* p = 0;
if( crv != 0 )
p = ON_PolylineCurve::Cast( crv );
return p;
}
const ON_PolyCurve* GetPolyCurve( const ON_Curve* crv )
{
const ON_PolyCurve* p = 0;
if( crv != 0 )
p = ON_PolyCurve::Cast( crv );
return p;
}
const ON_NurbsCurve* GetNurbsCurve( const ON_Curve* crv )
{
const ON_NurbsCurve* p = 0;
if( crv != 0 )
p = ON_NurbsCurve::Cast( crv );
return p;
}