View Issue Details

IDProjectCategoryView StatusLast Update
0021004Open CASCADEOCCT:Application Frameworkpublic2012-01-11 14:24
ReporterszyAssigned Toszy 
PrioritynormalSeverityfeature 
Status closedResolutionfixed 
OSAll 
Fixed in Version6.3.1 
Summary0021004: Naming mechanism improvement
DescriptionThe attached patch is result of the development process inside Samcef
Maintenance project. It sufficiently improves quality and safety of the
Topological naming of the specified shape performed by TNaming package.
Now Naming alows:
- to keep (in case of need) the selected shape orientation
- guarantee that the selected shape is belong to the Context
- treats all aggregation shapes (Compounds, Shells and etc.)
- correctly recomputes results of multipple selection
- extends data definition if the selected shape is Wire
- fixes set of pure bugs.
Additional information
and documentation updates
Documentation remark, added by SZY 2009-05-15 12:33:55:

New features:
Now Naming allows:
- to keep (in case of need) the selected shape orientation
- guarantee that the selected shape belongs to the Context
- treats all aggregation shapes (Compounds, Shells and etc.)
- extends data definition if the selected shape is Wire
- correct recomputation of results after multipple selection
Improvements:


Changes:
The content of the next packages is modified:
BinLDrivers
BinMNaming
MNaming
PNaming
TNaming
TopTools
XmlLDrivers
XmlMNaming
Modified entities:
TNaming:
--------
TNaming.cdl
TNaming.cxx
TNaming_Identifier.cxx
TNaming_Name.cdl
TNaming_Name.cxx
TNaming_NamedShape.cxx
TNaming_Naming.cdl
TNaming_Naming.cxx
TNaming_NamingTool.cxx
TNaming_Selector.cdl
TNaming_Selector.cxx
TNaming_Tool.cxx

PNaming:
-------
PNaming.cdl
PNaming_Name_1.cdl
PNaming_Name_1.cxx
PNaming_Name_1.lxx
PNaming_Naming_1.cdl
PNaming_Naming_1.cxx

MNaming:
-------
MNaming.cdl
MNaming.cxx
MNaming_NamingRetrievalDriver_1.cdl
MNaming_NamingRetrievalDriver_1.cxx
MNaming_NamingStorageDriver.cxx

TopTools:
--------
TopTools.cdl

BinMNaming:
----------
BinMNaming.cdl
BinMNaming.cxx
BinMNaming_NamingDriver.cxx

BinLDrivers:
-----------
BinLDrivers.cdl
BinLDrivers.cxx
BinLDrivers_DocumentRetrievalDriver.cxx

XmlMNaming:
----------
XmlMNaming.cdl
XmlMNaming.cxx
XmlMNaming_NamingDriver.cxx

XmlLDrivers:
-----------
XmlLDrivers.cxx
XmlLDrivers_DocumentRetrievalDriver.cxx

Basic modifications are done in TNaming package. Modifications made in all other
packages serves only for persistance maintenance.

TNaming package main modifications in API.
-----------------------------------------
1)Enumeration TNaming_NameType is extended for several members:
...
ORIENTATION,
WIREIN

2)New package methods:
    FindUniqueContext(S : Shape from TopoDS; Context : Shape from TopoDS)
    returns Shape from TopoDS;
     ---Purpose: Find unique context of shape <S>

    FindUniqueContextSet(S : Shape from TopoDS; Context : Shape from TopoDS;
                         Arr : in out HArray1OfShape from TopTools)
    returns Shape from TopoDS;
     ---Purpose: Find unique context of shape <S>,which is pure concatenation
     -- of atomic shapes (Compound). The result is concatenation of
     -- single contexts

3)TNaming_Selector class.
API of Select method is changed:

Select (me; Selection : Shape from TopoDS;
            Context : Shape from TopoDS;
            Geometry : Boolean = Standard_False;
            KeepOrientatation : Boolean = Standard_False)
    returns Boolean from Standard;
New boolean variable <KeepOrientatation> is added. By default KeepOrientatation
= False. If KeepOrientatation = True than, than Orientation of selected shape
will be taken into account during recomputation.

4)TNaming_Identifier.cxx - fixed small bug.

5)TNaming_Name class.
--------------------
- added new field <myContextLabel> : Label from TDF;
- added new method for ORIENTATION name solving
static Standard_Boolean ORientation (const TDF_Label& L,
                                     const TDF_LabelMap& Valid,
                                     const TNaming_ListOfNamedShape& Args,
                                     const Handle(TNaming_NamedShape)& Stop);
- added new method for WIREIN name solving
  static Standard_Boolean WireIN(const TDF_Label& L,
                               const TDF_LabelMap& Valid,
                               const TNaming_ListOfNamedShape& Args);
- redisigned method for UNION name soving
  static Standard_Boolean Union (const TDF_Label& L,
                               const TDF_LabelMap& Valid,
                               const TNaming_ListOfNamedShape& Args,
                               const Handle(TNaming_NamedShape)& Stop,
                               const TopAbs_ShapeEnum ShapeType,
                               const TDF_Label& ContextLabel);

6)TNaming_Naming class.
----------------------
a)Modified API of constructor.
Name (myclass; where : Label from TDF;
                 Selection : Shape from TopoDS;
                 Context : Shape from TopoDS;
                 Geometry : Boolean from Standard = Standard_False;
                 KeepOrientation : Boolean from Standard = Standard_False;
                 BNproblem : Boolean from Standard = Standard_False)
returns NamedShape from TNaming;
---Purpose: Creates a Namimg attribute at label <where> to
-- identify the shape <Selection>. Geometry is
-- Standard_True if we are only interested by the
-- underlying geometry (e.g. setting a
-- constraint). <Context> is used to find neighbours of
-- <S> when required by the naming.
-- If KeepOrientation is True the Selection orientation is taken
-- into account. BNproblem == True points out that Context sub-shapes
-- in DF have orientation differences with Context shape itself.

KeepOrientation & BNproblem boolean flags are new one.

b)Modified general Naming data structure building mechanism. Last modifications
makes procedure of Name data structures building:
- recursive
- takes into account selected shape orientation
- treats aggregation shapes (Compounds, Shells ...)
- introduce new names: ORIENTATION, WIREIN

7)TNaming_NamedShape class.
Modified method
void TNaming_Builder::Select (const TopoDS_Shape& S,
                  const TopoDS_Shape& InS);
Now node of old shape (not used before) is used to keep shape orientation in DF.

8)TNaming_Tool class.
--------------------
Modified implementation of the next methods:
- TNaming_Tool::GetShape(const Handle(TNaming_NamedShape)& NS);
- TNaming_Tool::CurrentShape(const Handle(TNaming_NamedShape)& Att);
- TNaming_Tool::CurrentShape(const Handle(TNaming_NamedShape)& Att,
                    const TDF_LabelMap& Updated);
9)TNaming_NamingTool class.
--------------------------
Modified implementation of the next methods
- TNaming_NamingTool::CurrentShape(const TDF_LabelMap& Valid,
                      const TDF_LabelMap& Forbiden,
                      const Handle(TNaming_NamedShape)& Att,
                      TopTools_MapOfShape& MS);
- TNaming_NamingTool::CurrentShapeFromShape(const TDF_LabelMap& Valid,
                           const TDF_LabelMap& Forbiden,
                           const TDF_Label& Acces,
                           const TopoDS_Shape& S,
                           TopTools_MapOfShape& MS);
TagsNo tags attached.
Test case number

Attached Files

  • TNaming_patch.zip (84,167 bytes)
  • TNaming.cxx (26,490 bytes)

Activities

2009-04-01 14:09

 

TNaming_patch.zip (84,167 bytes)

2009-04-06 13:13

 

TNaming.cxx (26,490 bytes)

Issue History

Date Modified Username Field Change
2009-05-13 11:58 bugmaster Assigned To bugmaster => szy
2009-05-13 11:58 bugmaster Status new => assigned
2009-05-13 11:59 bugmaster Status assigned => verified
2009-06-25 13:21 bugmaster Status verified => closed
2009-06-25 13:21 bugmaster Resolution @0@ => fixed
2011-08-02 10:32 bugmaster Category OCCT:OCAF => OCCT:Application Framework
2012-01-11 14:24 atp Description Updated
2012-01-11 14:24 atp Additional Information Updated