Open CASCADE Technology  6.5.4
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Static Public Member Functions
XCAFDoc_ShapeTool Class Reference

A tool to store shapes in an XDE
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 ... }

#include <XCAFDoc_ShapeTool.hxx>

Inheritance diagram for XCAFDoc_ShapeTool:
Inheritance graph
[legend]

Public Member Functions

 XCAFDoc_ShapeTool ()
 Creates an empty tool
//! Creates a tool to work with a document <Doc>
Attaches to label XCAFDoc::LabelShapes()

Standard_Boolean IsTopLevel (const TDF_Label &L) const
 Returns True if the label is a label of top-level shape,
as opposed to component of assembly or subshape

Standard_Boolean IsSubShape (const TDF_Label &shapeL, const TopoDS_Shape &sub) const
 Checks whether shape is subshape of shape stored on
label shapeL

Standard_Boolean SearchUsingMap (const TopoDS_Shape &S, TDF_Label &L, const Standard_Boolean findWithoutLoc, const Standard_Boolean findSubshape) const
Standard_Boolean Search (const TopoDS_Shape &S, TDF_Label &L, const Standard_Boolean findInstance=Standard_True, const Standard_Boolean findComponent=Standard_True, const Standard_Boolean findSubshape=Standard_True) const
 General tool to find a (sub) shape in the document

Standard_Boolean FindShape (const TopoDS_Shape &S, TDF_Label &L, const Standard_Boolean findInstance=Standard_False) const
 Returns the label corresponding to shape S
(searches among top-level shapes, not including subcomponents
of assemblies)
If findInstance is False (default), searches for the
non-located shape (i.e. among original shapes)
If findInstance is True, searches for the shape with the same
location, including shape instances
Return True if <S> is found.

TDF_Label FindShape (const TopoDS_Shape &S, const Standard_Boolean findInstance=Standard_False) const
 Does the same as previous method
Returns Null label if not found

TDF_Label NewShape () const
 Creates new (empty) top-level shape.
Initially it holds empty TopoDS_Compound

void SetShape (const TDF_Label &L, const TopoDS_Shape &S)
 Sets representation (TopoDS_Shape) for top-level shape

TDF_Label AddShape (const TopoDS_Shape &S, const Standard_Boolean makeAssembly=Standard_True, const Standard_Boolean makePrepare=Standard_True)
 Adds a new top-level (creates and returns a new label)
If makeAssembly is True, treats TopAbs_COMPOUND shapes
as assemblies (creates assembly structure).
NOTE: <makePrepare> replace components without location
in assmebly by located components to avoid some problems.

Standard_Boolean RemoveShape (const TDF_Label &L, const Standard_Boolean removeCompletely=Standard_True) const
 Removes shape (whole label and all its sublabels)
If removeCompletely is true, removes complete shape
If removeCompletely is false, removes instance(location) only
Returns False (and does nothing) if shape is not free
or is not top-level shape

void Init ()
 set hasComponents into false

void ComputeShapes (const TDF_Label &L)
 recursive

void ComputeSimpleShapes ()
 Compute a sequence of simple shapes

void GetShapes (TDF_LabelSequence &Labels) const
 Returns a sequence of all top-level shapes

void GetFreeShapes (TDF_LabelSequence &FreeLabels) const
 Returns a sequence of all top-level shapes
which are free (i.e. not referred by any other)

TDF_Label AddComponent (const TDF_Label &assembly, const TDF_Label &comp, const TopLoc_Location &Loc) const
 Adds a component given by its label and location to the assembly
Note: assembly must be IsAssembly() or IsSimpleShape()

TDF_Label AddComponent (const TDF_Label &assembly, const TopoDS_Shape &comp, const Standard_Boolean expand=Standard_False)
 Adds a shape (located) as a component to the assembly
If necessary, creates an additional top-level shape for
component and return the Label of component.
If expand is True and component is Compound, it will
be created as assembly also
Note: assembly must be IsAssembly() or IsSimpleShape()

void RemoveComponent (const TDF_Label &comp) const
 Removes a component from its assembly

void UpdateAssembly (const TDF_Label &L) const
 Update an assembly at label <L>

Standard_Boolean FindSubShape (const TDF_Label &shapeL, const TopoDS_Shape &sub, TDF_Label &L) const
 Finds a label for subshape of shape stored on
label shapeL
Returns Null label if it is not found

TDF_Label AddSubShape (const TDF_Label &shapeL, const TopoDS_Shape &sub) const
 Adds a label for subshape of shape stored on
label shapeL
Returns Null label if it is not subshape

TDF_Label FindMainShapeUsingMap (const TopoDS_Shape &sub) const
TDF_Label FindMainShape (const TopoDS_Shape &sub) const
 Performs a search among top-level shapes to find
the shape containing as subshape
Checks only simple shapes, and returns the first found
label (which should be the only one for valid model)

TDF_Label BaseLabel () const
 returns the label under which shapes are stored

void Dump (const Standard_Boolean deep=Standard_False) const
const Standard_GUIDID () const
 Returns the ID of the attribute.


void Restore (const Handle< TDF_Attribute > &with)
 Restores the backuped contents from <anAttribute>
into this one. It is used when aborting a
transaction.

Handle_TDF_Attribute NewEmpty () const
 Returns an new empty attribute from the good end
type. It is used by the copy algorithm.

void Paste (const Handle< TDF_Attribute > &into, const Handle< TDF_RelocationTable > &RT) const
 This method is different from the "Copy" one,
because it is used when copying an attribute from
a source structure into a target structure. This
method may paste the contents of <me> into
<intoAttribute>.

The given pasted attribute can be full or empty of
its contents. But don't make a NEW! Just set the
contents!

It is possible to use <aRelocationTable> to
get/set the relocation value of a source
attribute.

TDF_Label SetExternRefs (const TColStd_SequenceOfHAsciiString &SHAS) const
 Sets the names of references on the no-step files

void SetExternRefs (const TDF_Label &L, const TColStd_SequenceOfHAsciiString &SHAS) const
 Sets the names of references on the no-step files

Standard_Boolean SetSHUO (const TDF_LabelSequence &Labels, Handle< XCAFDoc_GraphNode > &MainSHUOAttr) const
 Sets the SHUO structure between upper_usage and next_usage
create multy-level (if number of labels > 2) SHUO from first to last
Initialise out <MainSHUOAttr> by main upper_usage SHUO attribute.
Returns FALSE if some of labels in not component label

Standard_Boolean RemoveSHUO (const TDF_Label &SHUOLabel) const
 Remove SHUO from component sublabel,
remove all dependencies on other SHUO.
Returns FALSE if cannot remove SHUO dependencies.
NOTE: remove any styles that associated with this SHUO.

Standard_Boolean FindComponent (const TopoDS_Shape &theShape, TDF_LabelSequence &Labels) const
 Serach the path of labels in the document,
that corresponds the component from any assembly
Try to search the sequence of labels with location that
produce this shape as component of any assembly
NOTE: Clear sequence of labels before filling

TopoDS_Shape GetSHUOInstance (const Handle< XCAFDoc_GraphNode > &theSHUO) const
 Search for the component shape that styled by shuo
Returns null shape if no any shape is found.

Handle_XCAFDoc_GraphNode SetInstanceSHUO (const TopoDS_Shape &theShape) const
 Search for the component shape by labelks path
and set SHUO structure for founded label structure
Returns null attribute if no component in any assembly found.

Standard_Boolean GetAllSHUOInstances (const Handle< XCAFDoc_GraphNode > &theSHUO, TopTools_SequenceOfShape &theSHUOShapeSeq) const
 Seaching for component shapes that styled by shuo
Returns empty sequence of shape if no any shape is found.

Static Public Member Functions

static const Standard_GUIDGetID ()
static Handle_XCAFDoc_ShapeTool Set (const TDF_Label &L)
 Create (if not exist) ShapeTool from XCAFDoc on <L>.

static Standard_Boolean IsFree (const TDF_Label &L)
 Returns True if the label is not used by any assembly, i.e.
contains sublabels which are assembly components
This is relevant only if IsShape() is True
(There is no Father TreeNode on this <L>)

static Standard_Boolean IsShape (const TDF_Label &L)
 Returns True if the label represents a shape (simple shape,
assembly or reference)

static Standard_Boolean IsSimpleShape (const TDF_Label &L)
 Returns True if the label is a label of simple shape

static Standard_Boolean IsReference (const TDF_Label &L)
 Return true if <L> is a located instance of other shape
i.e. reference

static Standard_Boolean IsAssembly (const TDF_Label &L)
 Returns True if the label is a label of assembly, i.e.
contains sublabels which are assembly components
This is relevant only if IsShape() is True

static Standard_Boolean IsComponent (const TDF_Label &L)
 Return true if <L> is reference serving as component
of assembly

static Standard_Boolean IsCompound (const TDF_Label &L)
 Returns True if the label is a label of compound, i.e.
contains some sublabels
This is relevant only if IsShape() is True

static Standard_Boolean IsSubShape (const TDF_Label &L)
 Return true if <L> is subshape of the top-level shape

static Standard_Boolean GetShape (const TDF_Label &L, TopoDS_Shape &S)
 To get TopoDS_Shape from shape's label
For component, returns new shape with correct location
Returns False if label does not contain shape

static TopoDS_Shape GetShape (const TDF_Label &L)
 To get TopoDS_Shape from shape's label
For component, returns new shape with correct location
Returns Null shape if label does not contain shape

static Standard_Integer GetUsers (const TDF_Label &L, TDF_LabelSequence &Labels, const Standard_Boolean getsubchilds=Standard_False)
 Returns list of labels which refer shape L as component
Returns number of users (0 if shape is free)

static TopLoc_Location GetLocation (const TDF_Label &L)
 Returns location of instance

static Standard_Boolean GetReferredShape (const TDF_Label &L, TDF_Label &Label)
 Returns label which corresponds to a shape referred by L
Returns False if label is not reference

static Standard_Integer NbComponents (const TDF_Label &L, const Standard_Boolean getsubchilds=Standard_False)
 Returns number of Assembles components

static Standard_Boolean GetComponents (const TDF_Label &L, TDF_LabelSequence &Labels, const Standard_Boolean getsubchilds=Standard_False)
 Returns list of components of assembly
Returns False if label is not assembly

static Standard_Boolean GetSubShapes (const TDF_Label &L, TDF_LabelSequence &Labels)
 Returns list of labels identifying subshapes of the given shape
Returns False if no subshapes are placed on that label

static void DumpShape (const TDF_Label &L, const Standard_Integer level=0, const Standard_Boolean deep=Standard_False)
 Print in cout type of shape found on <L> label
and the entry of <L>, with <level> tabs before.
If <deep>, print also TShape and Location addresses

static Standard_Boolean IsExternRef (const TDF_Label &L)
 Returns True if the label is a label of external references, i.e.
there are some reference on the no-step files, which are
described in document only their names

static void GetExternRefs (const TDF_Label &L, TColStd_SequenceOfHAsciiString &SHAS)
 Gets the names of references on the no-step files

static Standard_Boolean GetSHUO (const TDF_Label &SHUOLabel, Handle< XCAFDoc_GraphNode > &aSHUOAttr)
 Returns founded SHUO GraphNode attribute <aSHUOAttr>
Returns false in other case

static Standard_Boolean GetAllComponentSHUO (const TDF_Label &CompLabel, TDF_AttributeSequence &SHUOAttrs)
 Returns founded SHUO GraphNodes of indicated component
Returns false in other case

static Standard_Boolean GetSHUOUpperUsage (const TDF_Label &NextUsageL, TDF_LabelSequence &Labels)
 Returns the sequence of labels of SHUO attributes,
which is upper_usage for this next_usage SHUO attribute
(that indicated by label)
NOTE: returns upper_usages only on one level (not recurse)
NOTE: do not clear the sequence before filling

static Standard_Boolean GetSHUONextUsage (const TDF_Label &UpperUsageL, TDF_LabelSequence &Labels)
 Returns the sequence of labels of SHUO attributes,
which is next_usage for this upper_usage SHUO attribute
(that indicated by label)
NOTE: returns next_usages only on one level (not recurse)
NOTE: do not clear the sequence before filling

static Standard_Boolean FindSHUO (const TDF_LabelSequence &Labels, Handle< XCAFDoc_GraphNode > &theSHUOAttr)
 Searchs the SHUO by labels of components
from upper_usage componet to next_usage
Returns null attribute if no SHUO found


Constructor & Destructor Documentation


Member Function Documentation

static Standard_Boolean XCAFDoc_ShapeTool::FindSHUO ( const TDF_LabelSequence Labels,
Handle< XCAFDoc_GraphNode > &  theSHUOAttr 
) [static]
static Standard_Boolean XCAFDoc_ShapeTool::GetSHUO ( const TDF_Label SHUOLabel,
Handle< XCAFDoc_GraphNode > &  aSHUOAttr 
) [static]
static Standard_Boolean XCAFDoc_ShapeTool::GetSHUONextUsage ( const TDF_Label UpperUsageL,
TDF_LabelSequence Labels 
) [static]

Implements TDF_Attribute.

Handle_TDF_Attribute XCAFDoc_ShapeTool::NewEmpty ( ) const [virtual]

Implements TDF_Attribute.

void XCAFDoc_ShapeTool::Paste ( const Handle< TDF_Attribute > &  intoAttribute,
const Handle< TDF_RelocationTable > &  aRelocationTable 
) const [virtual]

Implements TDF_Attribute.

void XCAFDoc_ShapeTool::Restore ( const Handle< TDF_Attribute > &  anAttribute) [virtual]

Implements TDF_Attribute.

  • If findInstance is True, and S has a non-null location,
    first tries to find the shape among the top-level shapes
    with this location
  • If not found, and findComponent is True, tries to find the shape
    among the components of assemblies
  • If not found, tries to find the shape without location
    among top-level shapes
  • If not found and findSubshape is True, tries to find a
    shape as a subshape of top-level simple shapes
    Returns False if nothing is found
static Handle_XCAFDoc_ShapeTool XCAFDoc_ShapeTool::Set ( const TDF_Label L) [static]
Handle_XCAFDoc_GraphNode XCAFDoc_ShapeTool::SetInstanceSHUO ( const TopoDS_Shape theShape) const

The documentation for this class was generated from the following file: