A custom class must override the following functions:
virtual Adesk::Boolean isClosed() const; virtual Adesk::Boolean isPeriodic() const; virtual Adesk::Boolean isPlanar() const; virtual Acad::ErrorStatus getPlane(AcGePlane&, AcDb::Planarity&) const; virtual Acad::ErrorStatus getStartParam(double&) const; virtual Acad::ErrorStatus getEndParam(double&) const; virtual Acad::ErrorStatus getStartPoint(AcGePoint3d&) const; virtual Acad::ErrorStatus getEndPoint(AcGePoint3d&) const; virtual Acad::ErrorStatus getPointAtParam(double, AcGePoint3d&) const; virtual Acad::ErrorStatus getParamAtPoint(const AcGePoint3d&, double&)const; virtual Acad::ErrorStatus getDistAtParam(double param, double& dist) const; virtual Acad::ErrorStatus getParamAtDist(double dist, double& param) const; virtual Acad::ErrorStatus getDistAtPoint(const AcGePoint3d&, double&) const; virtual Acad::ErrorStatus getPointAtDist(double, AcGePoint3d&) const; virtual Acad::ErrorStatus getFirstDeriv( double param, AcGeVector3d& firstDeriv) const; virtual Acad::ErrorStatus getFirstDeriv( const AcGePoint3d&, AcGeVector3d& firstDeriv) const; virtual Acad::ErrorStatus getSecondDeriv( double param, AcGeVector3d& secDeriv) const; virtual Acad::ErrorStatus getSecondDeriv( const AcGePoint3d&, AcGeVector3d& secDeriv) const; virtual Acad::ErrorStatus getClosestPointTo( const AcGePoint3d& givenPnt, AcGePoint3d& pointOnCurve, Adesk::Boolean extend = Adesk::kFalse) const; virtual Acad::ErrorStatus getClosestPointTo( const AcGePoint3d& givenPnt, const AcGeVector3d& normal, AcGePoint3d& pointOnCurve, Adesk::Boolean extend = Adesk::kFalse) const; virtual Acad::ErrorStatus getOrthoProjectedCurve( const AcGePlane&, AcDbCurve*& projCrv) const; virtual Acad::ErrorStatus getProjectedCurve( const AcGePlane&, const AcGeVector3d& projDir, AcDbCurve*& projCrv) const; virtual Acad::ErrorStatus getOffsetCurves( double offsetDist, AcDbVoidPtrArray& offsetCurves) const; virtual Acad::ErrorStatus getSpline(AcDbSpline*& spline) const; virtual Acad::ErrorStatus getSplitCurves( const AcGeDoubleArray& params, AcDbVoidPtrArray& curveSegments) const; virtual Acad::ErrorStatus getSplitCurves( const AcGePoint3dArray& points, AcDbVoidPtrArray& curveSegments) const; virtual Acad::ErrorStatus extend(double newParam); virtual Acad::ErrorStatus extend( Adesk::Boolean extendStart, const AcGePoint3d& toPoint); virtual Acad::ErrorStatus getArea(double&) const;