//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::ShapeRefGUID ()
+const Standard_GUID& XCAFDoc::ShapeRefGUID ()
{
- static Standard_GUID ID ("5b896afe-3adf-11d4-b9b7-0060b0ee281b");
+ static const Standard_GUID ID ("5b896afe-3adf-11d4-b9b7-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::AssemblyGUID ()
+const Standard_GUID& XCAFDoc::AssemblyGUID ()
{
- static Standard_GUID ID ("5b896b00-3adf-11d4-b9b7-0060b0ee281b");
+ static const Standard_GUID ID ("5b896b00-3adf-11d4-b9b7-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::ExternRefGUID ()
+const Standard_GUID& XCAFDoc::ExternRefGUID ()
{
- static Standard_GUID ID ("6b896b01-3adf-11d4-b9b7-0060b0ee281b");
+ static const Standard_GUID ID ("6b896b01-3adf-11d4-b9b7-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::ColorRefGUID (const XCAFDoc_ColorType type)
+const Standard_GUID& XCAFDoc::ColorRefGUID (const XCAFDoc_ColorType type)
{
- static Standard_GUID IDcol ("efd212e4-6dfd-11d4-b9c8-0060b0ee281b");
- static Standard_GUID IDcolSurf ("efd212e5-6dfd-11d4-b9c8-0060b0ee281b");
- static Standard_GUID IDcolCurv ("efd212e6-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID IDcol ("efd212e4-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID IDcolSurf ("efd212e5-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID IDcolCurv ("efd212e6-6dfd-11d4-b9c8-0060b0ee281b");
switch ( type ) {
default:
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::DimTolRefGUID()
+const Standard_GUID& XCAFDoc::DimTolRefGUID()
{
- //static Standard_GUID IDDimTol("58ed092d-44de-11d8-8776-001083004c77");
- static Standard_GUID ID("efd212e9-6dfd-11d4-b9c8-0060b0ee281b");
+ //static const Standard_GUID IDDimTol("58ed092d-44de-11d8-8776-001083004c77");
+ static const Standard_GUID ID("efd212e9-6dfd-11d4-b9c8-0060b0ee281b");
//return IDDimTol;
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::DimensionRefFirstGUID()
+const Standard_GUID& XCAFDoc::DimensionRefFirstGUID()
{
- static Standard_GUID ID("efd212e3-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID("efd212e3-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::DimensionRefSecondGUID()
+const Standard_GUID& XCAFDoc::DimensionRefSecondGUID()
{
- static Standard_GUID ID("efd212e0-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID("efd212e0-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::GeomToleranceRefGUID()
+const Standard_GUID& XCAFDoc::GeomToleranceRefGUID()
{
- static Standard_GUID ID("efd213e3-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID("efd213e3-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::DatumRefGUID()
+const Standard_GUID& XCAFDoc::DatumRefGUID()
{
- static Standard_GUID ID("efd212e2-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID("efd212e2-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::DatumTolRefGUID()
+const Standard_GUID& XCAFDoc::DatumTolRefGUID()
{
- //static Standard_GUID IDDimTol("58ed092d-44de-11d8-8776-001083004c77");
- static Standard_GUID ID("efd212e7-6dfd-11d4-b9c8-0060b0ee281b");
+ //static const Standard_GUID IDDimTol("58ed092d-44de-11d8-8776-001083004c77");
+ static const Standard_GUID ID("efd212e7-6dfd-11d4-b9c8-0060b0ee281b");
//return IDDimTol;
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::LayerRefGUID ()
+const Standard_GUID& XCAFDoc::LayerRefGUID ()
{
- static Standard_GUID ID ("efd212e8-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID ("efd212e8-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::MaterialRefGUID ()
+const Standard_GUID& XCAFDoc::MaterialRefGUID ()
{
- static Standard_GUID ID ("efd212f7-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID ("efd212f7-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::NoteRefGUID()
+const Standard_GUID& XCAFDoc::NoteRefGUID()
{
- static Standard_GUID ID ("F3599E50-F84A-493e-8D1B-1284E79322F1");
+ static const Standard_GUID ID ("F3599E50-F84A-493e-8D1B-1284E79322F1");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::InvisibleGUID ()
+const Standard_GUID& XCAFDoc::InvisibleGUID ()
{
- static Standard_GUID ID ("5b896aff-3adf-11d4-b9b7-0060b0ee281b");
+ static const Standard_GUID ID ("5b896aff-3adf-11d4-b9b7-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::ColorByLayerGUID ()
+const Standard_GUID& XCAFDoc::ColorByLayerGUID ()
{
- static Standard_GUID ID ("279e8c1e-70af-4130-b626-9cc52a537db8");
+ static const Standard_GUID ID ("279e8c1e-70af-4130-b626-9cc52a537db8");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::SHUORefGUID ()
+const Standard_GUID& XCAFDoc::SHUORefGUID ()
{
- static Standard_GUID ID ("efd212ea-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID ("efd212ea-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::ViewRefGUID()
+const Standard_GUID& XCAFDoc::ViewRefGUID()
{
- static Standard_GUID ID("efd213e5-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID("efd213e5-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::ViewRefShapeGUID()
+const Standard_GUID& XCAFDoc::ViewRefShapeGUID()
{
- static Standard_GUID ID("efd213e6-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID("efd213e6-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::ViewRefGDTGUID()
+const Standard_GUID& XCAFDoc::ViewRefGDTGUID()
{
- static Standard_GUID ID("efd213e7-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID("efd213e7-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::ViewRefPlaneGUID()
+const Standard_GUID& XCAFDoc::ViewRefPlaneGUID()
{
- static Standard_GUID ID("efd213e9-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID("efd213e9-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::ViewRefNoteGUID()
+const Standard_GUID& XCAFDoc::ViewRefNoteGUID()
{
- static Standard_GUID ID("C814ACC6-43AC-4812-9B2A-4E9A2A549354");
+ static const Standard_GUID ID("C814ACC6-43AC-4812-9B2A-4E9A2A549354");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::ViewRefAnnotationGUID()
+const Standard_GUID& XCAFDoc::ViewRefAnnotationGUID()
{
- static Standard_GUID ID("A2B5BA42-DD00-43f5-8882-4B5F8E76B9D2");
+ static const Standard_GUID ID("A2B5BA42-DD00-43f5-8882-4B5F8E76B9D2");
return ID;
}
//purpose :
//=======================================================================
-Standard_GUID XCAFDoc::LockGUID()
+const Standard_GUID& XCAFDoc::LockGUID()
{
- static Standard_GUID ID("efd213eb-6dfd-11d4-b9c8-0060b0ee281b");
+ static const Standard_GUID ID("efd213eb-6dfd-11d4-b9c8-0060b0ee281b");
return ID;
}
//! class for containing GraphNodes.
//! Returns GUID for UAttribute identifying assembly
- Standard_EXPORT static Standard_GUID AssemblyGUID();
+ Standard_EXPORT static const Standard_GUID& AssemblyGUID();
//! Returns GUID for TreeNode representing assembly link
- Standard_EXPORT static Standard_GUID ShapeRefGUID();
+ Standard_EXPORT static const Standard_GUID& ShapeRefGUID();
//! Return GUIDs for TreeNode representing specified types of colors
- Standard_EXPORT static Standard_GUID ColorRefGUID (const XCAFDoc_ColorType type);
+ Standard_EXPORT static const Standard_GUID& ColorRefGUID (const XCAFDoc_ColorType type);
//! Return GUIDs for TreeNode representing specified types of DGT
- Standard_EXPORT static Standard_GUID DimTolRefGUID();
+ Standard_EXPORT static const Standard_GUID& DimTolRefGUID();
//! Return GUIDs for TreeNode representing specified types of Dimension
- Standard_EXPORT static Standard_GUID DimensionRefFirstGUID() ;
+ Standard_EXPORT static const Standard_GUID& DimensionRefFirstGUID() ;
//! Return GUIDs for TreeNode representing specified types of Dimension
- Standard_EXPORT static Standard_GUID DimensionRefSecondGUID() ;
+ Standard_EXPORT static const Standard_GUID& DimensionRefSecondGUID() ;
//! Return GUIDs for TreeNode representing specified types of GeomTolerance
- Standard_EXPORT static Standard_GUID GeomToleranceRefGUID() ;
+ Standard_EXPORT static const Standard_GUID& GeomToleranceRefGUID() ;
//! Return GUIDs for TreeNode representing specified types of datum
- Standard_EXPORT static Standard_GUID DatumRefGUID();
+ Standard_EXPORT static const Standard_GUID& DatumRefGUID();
//! Return GUIDs for TreeNode representing connections Datum-Toler
- Standard_EXPORT static Standard_GUID DatumTolRefGUID();
+ Standard_EXPORT static const Standard_GUID& DatumTolRefGUID();
- Standard_EXPORT static Standard_GUID LayerRefGUID();
+ Standard_EXPORT static const Standard_GUID& LayerRefGUID();
- Standard_EXPORT static Standard_GUID MaterialRefGUID();
+ Standard_EXPORT static const Standard_GUID& MaterialRefGUID();
//! Return GUIDs for representing notes
- Standard_EXPORT static Standard_GUID NoteRefGUID();
+ Standard_EXPORT static const Standard_GUID& NoteRefGUID();
- Standard_EXPORT static Standard_GUID InvisibleGUID();
+ Standard_EXPORT static const Standard_GUID& InvisibleGUID();
- Standard_EXPORT static Standard_GUID ColorByLayerGUID();
+ Standard_EXPORT static const Standard_GUID& ColorByLayerGUID();
//! Returns GUID for UAttribute identifying external reference on no-step file
- Standard_EXPORT static Standard_GUID ExternRefGUID();
+ Standard_EXPORT static const Standard_GUID& ExternRefGUID();
//! Returns GUID for UAttribute identifying specified higher usage occurrence
- Standard_EXPORT static Standard_GUID SHUORefGUID();
+ Standard_EXPORT static const Standard_GUID& SHUORefGUID();
//! Return GUIDs for TreeNode representing specified types of View
- Standard_EXPORT static Standard_GUID ViewRefGUID();
+ Standard_EXPORT static const Standard_GUID& ViewRefGUID();
//! Return GUIDs for TreeNode representing specified types of View
- Standard_EXPORT static Standard_GUID ViewRefShapeGUID();
+ Standard_EXPORT static const Standard_GUID& ViewRefShapeGUID();
//! Return GUIDs for TreeNode representing specified types of View
- Standard_EXPORT static Standard_GUID ViewRefGDTGUID();
+ Standard_EXPORT static const Standard_GUID& ViewRefGDTGUID();
//! Return GUIDs for TreeNode representing specified types of View
- Standard_EXPORT static Standard_GUID ViewRefPlaneGUID();
+ Standard_EXPORT static const Standard_GUID& ViewRefPlaneGUID();
//! Return GUIDs for GraphNode representing specified types of View
- Standard_EXPORT static Standard_GUID ViewRefNoteGUID();
- Standard_EXPORT static Standard_GUID ViewRefAnnotationGUID();
+ Standard_EXPORT static const Standard_GUID& ViewRefNoteGUID();
+ Standard_EXPORT static const Standard_GUID& ViewRefAnnotationGUID();
//! Returns GUID for UAttribute identifying lock flag
- Standard_EXPORT static Standard_GUID LockGUID();
-
-protected:
-
-
-
-
-
-private:
-
-
-
-
-friend class XCAFDoc_DocumentTool;
-friend class XCAFDoc_Location;
-friend class XCAFDoc_Color;
-friend class XCAFDoc_DimTol;
-friend class XCAFDoc_Datum;
-friend class XCAFDoc_Material;
-friend class XCAFDoc_Volume;
-friend class XCAFDoc_Area;
-friend class XCAFDoc_Centroid;
-friend class XCAFDoc_ClippingPlaneTool;
-friend class XCAFDoc_ShapeTool;
-friend class XCAFDoc_ShapeMapTool;
-friend class XCAFDoc_ColorTool;
-friend class XCAFDoc_DimTolTool;
-friend class XCAFDoc_LayerTool;
-friend class XCAFDoc_MaterialTool;
-friend class XCAFDoc_GraphNode;
-friend class XCAFDoc_Editor;
-friend class XCAFDoc_ViewTool;
+ Standard_EXPORT static const Standard_GUID& LockGUID();
};
-
-
-
-
-
-
#endif // _XCAFDoc_HeaderFile
#include <TopoDS_Iterator.hxx>
#include <TopoDS_Shape.hxx>
#include <TopTools_ListOfShape.hxx>
+#include <TopTools_MapOfOrientedShape.hxx>
#include <XCAFDoc.hxx>
#include <XCAFDoc_GraphNode.hxx>
#include <XCAFDoc_Location.hxx>
// Get the currently stored compound for the assembly
TopoDS_Shape aCurrentRootShape;
GetShape(theItemLabel, aCurrentRootShape);
+ TopTools_MapOfOrientedShape aCurrentRootShapeMap (aCurrentRootShape.NbChildren());
// Get components of the assembly
TDF_LabelSequence aComponentLabs;
// Compare the number of components in XDE structure with the number of
// components in topological structure. A component may happen to be removed,
// so we have to update the assembly compound
- Standard_Integer aNumTopoComponents = aCurrentRootShape.NbChildren();
+ const Standard_Integer aNumTopoComponents = aCurrentRootShape.NbChildren();
//
if ( aNumTopoComponents != aComponentLabs.Length() )
isModified = Standard_True;
else
{
// Search for a part in the actual compound of the ultimate assembly.
- // If the part is there, then the compound is up-to-date, so it does
- // not require rebuilding
- Standard_Boolean isPartFound = Standard_False;
- for ( TopoDS_Iterator aTopoIt(aCurrentRootShape); aTopoIt.More(); aTopoIt.Next() )
+ // If the part is there, then the compound is up-to-date, so it does not require rebuilding
+ if (!isModified)
{
- if ( aTopoIt.Value() == aComponentShape )
+ if (aCurrentRootShapeMap.IsEmpty())
{
- isPartFound = Standard_True;
- break;
+ // optimize search for next labels in aComponentLabs
+ for (TopoDS_Iterator aTopoIt(aCurrentRootShape); aTopoIt.More(); aTopoIt.Next())
+ {
+ aCurrentRootShapeMap.Add (aTopoIt.Value());
+ }
+ }
+ if (!aCurrentRootShapeMap.Contains (aComponentShape))
+ {
+ // Part has been modified somewhere, so the compound has to be rebuilt
+ isModified = Standard_True;
}
}
-
- if ( !isPartFound && !isModified )
- isModified = Standard_True; // Part has been modified somewhere, so the compound
- // has to be rebuilt
}
// Fill the list of shapes composing a new compound for the assembly