-Model_ResultBody::Model_ResultBody()
-{
- setIsConcealed(false);
-}
-
-void Model_ResultBody::store(const boost::shared_ptr<GeomAPI_Shape>& theShape)
-{
- boost::shared_ptr<Model_Data> aData = boost::dynamic_pointer_cast<Model_Data>(data());
- if (aData) {
- TDF_Label& aShapeLab = aData->shapeLab();
- // clean builders
- clean();
- // store the new shape as primitive
- TNaming_Builder aBuilder(aShapeLab);
- if (!theShape)
- return; // bad shape
- TopoDS_Shape aShape = theShape->impl<TopoDS_Shape>();
- if (aShape.IsNull())
- return; // null shape inside
-
- aBuilder.Generated(aShape);
- }
-}
-
-void Model_ResultBody::storeGenerated(const boost::shared_ptr<GeomAPI_Shape>& theFromShape,
- const boost::shared_ptr<GeomAPI_Shape>& theToShape)
-{
- boost::shared_ptr<Model_Data> aData = boost::dynamic_pointer_cast<Model_Data>(data());
- if (aData) {
- TDF_Label& aShapeLab = aData->shapeLab();
- // clean builders
- clean();
- // store the new shape as primitive
- TNaming_Builder aBuilder(aShapeLab);
- if (!theFromShape || !theToShape)
- return; // bad shape
- TopoDS_Shape aShapeBasis = theFromShape->impl<TopoDS_Shape>();
- if (aShapeBasis.IsNull())
- return; // null shape inside
- TopoDS_Shape aShapeNew = theToShape->impl<TopoDS_Shape>();
- if (aShapeNew.IsNull())
- return; // null shape inside
- aBuilder.Generated(aShapeBasis, aShapeNew);
- }
-}
-
-void Model_ResultBody::storeModified(const boost::shared_ptr<GeomAPI_Shape>& theOldShape,
- const boost::shared_ptr<GeomAPI_Shape>& theNewShape)
-{
- boost::shared_ptr<Model_Data> aData = boost::dynamic_pointer_cast<Model_Data>(data());
- if (aData) {
- TDF_Label& aShapeLab = aData->shapeLab();
- // clean builders
- clean();
- // store the new shape as primitive
- TNaming_Builder aBuilder(aShapeLab);
- if (!theOldShape || !theNewShape)
- return; // bad shape
- TopoDS_Shape aShapeOld = theOldShape->impl<TopoDS_Shape>();
- if (aShapeOld.IsNull())
- return; // null shape inside
- TopoDS_Shape aShapeNew = theNewShape->impl<TopoDS_Shape>();
- if (aShapeNew.IsNull())
- return; // null shape inside
- aBuilder.Generated(aShapeOld, aShapeNew);
- }
-}
-
-boost::shared_ptr<GeomAPI_Shape> Model_ResultBody::shape()
-{
- boost::shared_ptr<Model_Data> aData = boost::dynamic_pointer_cast<Model_Data>(data());
- if (aData) {
- TDF_Label& aShapeLab = aData->shapeLab();
- Handle(TNaming_NamedShape) aName;
- if (aShapeLab.FindAttribute(TNaming_NamedShape::GetID(), aName)) {
- TopoDS_Shape aShape = aName->Get();
- if (!aShape.IsNull()) {
- boost::shared_ptr<GeomAPI_Shape> aRes(new GeomAPI_Shape);
- aRes->setImpl(new TopoDS_Shape(aShape));
- return aRes;
- }
- }
- }
- return boost::shared_ptr<GeomAPI_Shape>();
-}
-
-boost::shared_ptr<ModelAPI_Feature> Model_ResultBody::owner()
-{
- return myOwner;
-}