#include "CurveCreator_Utils.h"
#include <AIS_Shape.hxx>
+#include <AIS_InteractiveObject.hxx>
#include <Geom_CartesianPoint.hxx>
#include <gp_Pnt.hxx>
#include <gp_Lin.hxx>
: myIsLocked (false),
myDimension (theDimension),
myDisplayer (NULL),
+ myAISShape (NULL),
myNbUndos (0),
myNbRedos (0),
myUndoDepth (-1),
void CurveCreator_Curve::redisplayCurve()
{
if( myDisplayer ) {
- myDisplayer->erase( false );
- myDisplayer->display( constructWire(), true );
+ myDisplayer->eraseAll( false );
+ myAISShape = NULL;
+
+ myDisplayer->display( getAISObject( true ), true );
}
}
bool CurveCreator_Curve::clearInternal()
{
// erase curve from the viewer
- if( myDisplayer )
- myDisplayer->erase( true );
+ if( myDisplayer ) {
+ myDisplayer->eraseAll( true );
+ myAISShape = NULL;
+ }
// Delete all allocated data.
int i = 0;
const int aNbSections = getNbSections();
return aCoords;
}
-
-/***********************************************/
-/*** Presentation methods ***/
-/***********************************************/
-std::vector<Handle_AIS_InteractiveObject> CurveCreator_Curve::constructWire() const
+void CurveCreator_Curve::constructAISObject()
{
- std::vector<Handle_AIS_InteractiveObject> aCurveRepresentation;
-
TopoDS_Shape aShape;
CurveCreator_Utils::constructShape( this, aShape );
- AIS_Shape* anAISShape = new AIS_Shape( aShape );
- aCurveRepresentation.push_back( anAISShape );
- return aCurveRepresentation;
+ myAISShape = new AIS_Shape( aShape );
}
+
+Handle(AIS_InteractiveObject) CurveCreator_Curve::getAISObject( const bool theNeedToBuild ) const
+{
+ if ( !myAISShape && theNeedToBuild ) {
+ CurveCreator_Curve* aCurve = (CurveCreator_Curve*)this;
+ aCurve->constructAISObject();
+ }
+ return myAISShape;
+}
\ No newline at end of file