Open CASCADE Technology  6.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Data Structures
XCAFDoc_ShapeTool.hxx File Reference
#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Handle_XCAFDoc_ShapeTool.hxx>
#include <XCAFDoc_DataMapOfShapeLabel.hxx>
#include <Standard_Boolean.hxx>
#include <TDF_Attribute.hxx>
#include <Standard_Integer.hxx>
#include <Handle_TDF_Attribute.hxx>
#include <Handle_TDF_RelocationTable.hxx>
#include <Handle_XCAFDoc_GraphNode.hxx>

Data Structures

class  XCAFDoc_ShapeTool
 
A tool to store shapes in an XDE <br>

document in the form of assembly structure, and to maintain this structure.
The API provided by this class allows to work with this
structure regardless of its low-level implementation.
All the shapes are stored on child labels of a main label which is
XCAFDoc_DocumentTool::LabelShapes(). The label for assembly also has
sub-labels, each of which represents the instance of
another shape in that assembly (component). Such sub-label
stores reference to the label of the original shape in the form
of TDataStd_TreeNode with GUID XCAFDoc::ShapeRefGUID(), and its
location encapsulated into the NamedShape.
For correct work with an XDE document, it is necessary to use
methods for analysis and methods for working with shapes.
For example:
if ( STool->IsAssembly(aLabel) )
{ Standard_Boolean subchilds = Standard_False; (default)
Standard_Integer nbc = STool->NbComponents
(aLabel[,subchilds]);
}
If subchilds is True, commands also consider sub-levels. By
default, only level one is checked.
In this example, number of children from the first level of
assembly will be returned. Methods for creation and initialization:
Constructor:
XCAFDoc_ShapeTool::XCAFDoc_ShapeTool()
Getting a guid:
Standard_GUID GetID ();
Creation (if does not exist) of ShapeTool on label L:
Handle(XCAFDoc_ShapeTool) XCAFDoc_ShapeTool::Set(const TDF_Label& L)
Analyze whether shape is a simple shape or an instance or a
component of an assembly or it is an assembly ( methods of analysis).
For example:
STool->IsShape(aLabel) ;
Analyze that the label represents a shape (simple
shape, assembly or reference) or
STool->IsTopLevel(aLabel);
Analyze that the label is a label of a top-level shape.
Work with simple shapes, assemblies and instances (
methods for work with shapes).
For example:
Add shape:
Standard_Boolean makeAssembly;
// True to interpret a Compound as an Assembly, False to take it
as a whole
aLabel = STool->AddShape(aShape, makeAssembly);
Get shape:
TDF_Label aLabel...
// A label must be present if
(aLabel.IsNull()) { ... no such label : abandon .. }
TopoDS_Shape aShape;
aShape = STool->GetShape(aLabel);
if (aShape.IsNull())
{ ... this label is not for a Shape ... }
To get a label from shape.
Standard_Boolean findInstance = Standard_False;
(this is default value)
aLabel = STool->FindShape(aShape [,findInstance]);
if (aLabel.IsNull())
{ ... no label found for this shape ... }
More...