The history keeps the following relations between the input shapes (S1, ..., Sm) and output shapes (T1, ..., Tn): 1) an output shape Tj is generated from an input shape Si: Tj <= G(Si); 2) a output shape Tj is modified from an input shape Si: Tj <= M(Si); 3) an input shape (Si) is removed: R(Si) == 1.
More...
|
Empty constructor
|
| enum | TRelationType { TRelationType_Removed
, TRelationType_Generated
, TRelationType_Modified
} |
| | The types of the historical relations. More...
|
| | BRepTools_History ()=default |
| | The types of the historical relations.
|
| template<class TheAlgo> |
| | BRepTools_History (const NCollection_List< TopoDS_Shape > &theArguments, TheAlgo &theAlgo) |
| | Template constructor for History creation from the algorithm having standard history methods such as IsDeleted(), Modified() and Generated().
|
| void | AddGenerated (const TopoDS_Shape &theInitial, const TopoDS_Shape &theGenerated) |
| | Methods to set the history. Set the second shape as generated one from the first shape.
|
| void | AddModified (const TopoDS_Shape &theInitial, const TopoDS_Shape &theModified) |
| | Set the second shape as modified one from the first shape.
|
| void | Remove (const TopoDS_Shape &theRemoved) |
| | Set the shape as removed one.
|
| void | ReplaceGenerated (const TopoDS_Shape &theInitial, const TopoDS_Shape &theGenerated) |
| | Set the second shape as the only generated one from the first one.
|
| void | ReplaceModified (const TopoDS_Shape &theInitial, const TopoDS_Shape &theModified) |
| | Set the second shape as the only modified one from the first one.
|
| void | Clear () |
| | Clears the history.
|
| const NCollection_List< TopoDS_Shape > & | Generated (const TopoDS_Shape &theInitial) const |
| | Methods to read the history. Returns all shapes generated from the shape.
|
| const NCollection_List< TopoDS_Shape > & | Modified (const TopoDS_Shape &theInitial) const |
| | Returns all shapes modified from the shape.
|
| bool | IsRemoved (const TopoDS_Shape &theInitial) const |
| | Returns 'true' if the shape is removed.
|
| bool | HasGenerated () const |
| | Returns 'true' if there any shapes with Generated elements present.
|
| bool | HasModified () const |
| | Returns 'true' if there any Modified shapes present.
|
| bool | HasRemoved () const |
| | Returns 'true' if there any removed shapes present.
|
| void | Merge (const occ::handle< BRepTools_History > &theHistory23) |
| | A method to merge a next history to this history. Merges the next history to this history.
|
| void | Merge (const BRepTools_History &theHistory23) |
| | Merges the next history to this history.
|
| template<class TheAlgo> |
| void | Merge (const NCollection_List< TopoDS_Shape > &theArguments, TheAlgo &theAlgo) |
| | Template method for merging history of the algorithm having standard history methods such as IsDeleted(), Modified() and Generated() into current history object.
|
| void | Dump (Standard_OStream &theS) |
| | A method to dump a history Prints the brief description of the history into a stream.
|
| static bool | IsSupportedType (const TopoDS_Shape &theShape) |
| | Returns 'true' if the type of the shape is supported by the history.
|
|
| typedef void | base_type |
| | Returns a type descriptor about this object.
|
| Public Member Functions inherited from Standard_Transient |
| | Standard_Transient () |
| | Empty constructor.
|
| | Standard_Transient (const Standard_Transient &) |
| | Copy constructor – does nothing.
|
| Standard_Transient & | operator= (const Standard_Transient &) |
| | Assignment operator, needed to avoid copying reference counter.
|
| virtual | ~Standard_Transient ()=default |
| | Destructor must be virtual.
|
| virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
| | Returns a type descriptor about this object.
|
| bool | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
| | Returns a true value if this is an instance of Type.
|
| bool | IsInstance (const char *const theTypeName) const |
| | Returns a true value if this is an instance of TypeName.
|
| bool | IsKind (const opencascade::handle< Standard_Type > &theType) const |
| | Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
|
| bool | IsKind (const char *const theTypeName) const |
| | Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
|
| Standard_Transient * | This () const |
| | Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
|
| int | GetRefCount () const noexcept |
| | Get the reference counter of this object.
|
| void | IncrementRefCounter () noexcept |
| | Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations.
|
| int | DecrementRefCounter () noexcept |
| | Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement.
|
| virtual void | Delete () const |
| | Memory deallocator for transient classes.
|
| static constexpr const char * | get_type_name () |
| | Returns a type descriptor about this object.
|
| static const opencascade::handle< Standard_Type > & | get_type_descriptor () |
| | Returns type descriptor of Standard_Transient class.
|
The history keeps the following relations between the input shapes (S1, ..., Sm) and output shapes (T1, ..., Tn): 1) an output shape Tj is generated from an input shape Si: Tj <= G(Si); 2) a output shape Tj is modified from an input shape Si: Tj <= M(Si); 3) an input shape (Si) is removed: R(Si) == 1.
The relations are kept only for shapes of types vertex, edge, face, and solid.
The last relation means that: 1) shape Si is not an output shape and 2) no any shape is modified (produced) from shape Si: R(Si) == 1 ==> Si != Tj, M(Si) == 0.
It means that the input shape cannot be removed and modified simultaneously. However, the shapes may be generated from the removed shape. For instance, in Fillet operation the edges generate faces and then are removed.
No any shape could be generated and modified from the same shape simultaneously: sets G(Si) and M(Si) are not intersected (G(Si) ^ M(Si) == 0).
Each output shape should be: 1) an input shape or 2) generated or modified from an input shape (even generated from the implicit null shape if necessary): Tj == Si V (exists Si that Tj <= G(Si) U M(Si)).
Recommendations to choose between relations 'generated' and 'modified': 1) a shape is generated from input shapes if it dimension is greater or smaller than the dimensions of the input shapes; 2) a shape is generated from input shapes if these shapes are also output shapes; 3) a shape is generated from input shapes of the same dimension if it is produced by joining shapes generated from these shapes; 4) a shape is modified from an input shape if it replaces the input shape by changes of the location, the tolerance, the bounds of the parametric space (the faces for a solid), the parametrization and/or by applying of an approximation; 5) a shape is modified from input shapes of the same dimension if it is produced by joining shapes modified from these shapes.
Two sequential histories:
- one history (H12) of shapes S1, ..., Sm to shapes T1, ..., Tn and
- another history (H23) of shapes T1, ..., Tn to shapes Q1, ..., Ql could be merged to the single history (H13) of shapes S1, ..., Sm to shapes Q1, ..., Ql.
During the merge: 1) if shape Tj is generated from shape Si then each shape generated or modified from shape Tj is considered as a shape generated from shape Si among shapes Q1, ..., Ql: Tj <= G12(Si), Qk <= G23(Tj) U M23(Tj) ==> Qk <= G13(Si). 2) if shape Tj is modified from shape Si, shape Qk is generated from shape Tj then shape Qk is considered as a shape generated from shape Si among shapes Q1, ..., Ql: Tj <= M12(Si), Qk <= G23(Tj) ==> Qk <= G13(Si); 3) if shape Tj is modified from shape Si, shape Qk is modified from shape Tj then shape Qk is considered as a shape modified from shape Si among shapes Q1, ..., Ql: Tj <= M12(Si), Qk <= M23(Tj) ==> Qk <= M13(Si);