0022904: Clean up sccsid variables
[occt.git] / src / QANewBRepNaming / QANewBRepNaming.cxx
1 // File:        QANewBRepNaming.cxx
2 // Created:     Fri Jun 20 15:21:49 2003
3 // Author:      Sergey ZARITCHNY <s-zaritchny@opencascade.com>
4 // Copyright:   Open CASCADE 2003
5
6 // Lastly modified by :
7 // +---------------------------------------------------------------------------+
8 // !       szy ! Creation                                !20-06-2003! 3.0-00-9!
9 // +---------------------------------------------------------------------------+
10
11 #include <QANewBRepNaming.ixx>
12
13 #include <TopTools_ListOfShape.hxx>
14 #include <TopTools_ListIteratorOfListOfShape.hxx>
15 #include <TDF_Label.hxx>
16 #include <TDF_ChildIterator.hxx>
17 #include <TNaming.hxx>
18 #include <TNaming_Iterator.hxx>
19 #include <TNaming_Builder.hxx>
20 #include <TNaming_NamedShape.hxx>
21
22 //=======================================================================
23 //function : CleanStructure
24 //purpose  : 
25 //=======================================================================
26
27 void QANewBRepNaming::CleanStructure(const TDF_Label& theLabel) {
28   
29   TopTools_ListOfShape Olds;
30   TopTools_ListOfShape News;
31   TNaming_Evolution    anEvol;
32   TNaming_Iterator     anIt(theLabel);
33   if (anIt.More()) {
34     anEvol = anIt.Evolution();
35     for ( ; anIt.More(); anIt.Next()) {
36       Olds.Append(anIt.OldShape());
37       News.Append(anIt.NewShape());
38     }
39
40     TopTools_ListIteratorOfListOfShape itOlds(Olds);
41     TopTools_ListIteratorOfListOfShape itNews(News);
42     TNaming_Builder aBuilder(theLabel);
43     anEvol = TNaming_DELETE;
44
45     for ( ;itOlds.More() ; itOlds.Next(),itNews.Next()) {
46       const TopoDS_Shape& OS = itOlds.Value();
47       const TopoDS_Shape& NS = itNews.Value();
48       LoadNamedShape ( aBuilder, anEvol, OS, NS);
49     }
50   }
51   for (TDF_ChildIterator chlIt(theLabel, Standard_True); chlIt.More(); chlIt.Next()) {
52     CleanStructure (chlIt.Value());
53   }
54 }
55
56 //=======================================================================
57 //function : LoadNamedShape
58 //purpose  : 
59 //=======================================================================
60
61 void QANewBRepNaming::LoadNamedShape (TNaming_Builder& theBuilder,
62                                         const TNaming_Evolution theEvol,
63                                         const TopoDS_Shape& theOS,
64                                         const TopoDS_Shape& theNS)
65 {
66   switch (theEvol) {
67   case TNaming_PRIMITIVE :
68     {
69       theBuilder.Generated(theNS);
70       break;
71     }
72   case TNaming_GENERATED :
73     {
74       theBuilder.Generated(theOS, theNS);
75       break;
76     }
77   case TNaming_MODIFY :
78     {
79       theBuilder.Modify(theOS, theNS);
80       break;
81     }
82   case TNaming_REPLACE :
83     {
84       theBuilder.Replace(theOS, theNS);
85       break;
86     }
87   case TNaming_DELETE :
88     {
89       theBuilder.Delete (theOS);
90       break;
91     }
92   case TNaming_SELECTED :
93     {
94       theBuilder.Select(theNS, theOS);
95     }
96 #ifndef DEB
97   default:
98     break;
99 #endif
100   }
101 }
102
103 //=======================================================================
104 //function : Displace
105 //purpose  : if WithOld == True, dsplace with old subshapes
106 //=======================================================================
107
108 void QANewBRepNaming::Displace (const TDF_Label& theLabel,
109                         const TopLoc_Location& theLoc,
110                         const Standard_Boolean theWithOld)
111 {
112   TopTools_ListOfShape Olds;
113   TopTools_ListOfShape News;
114   TNaming_Evolution    Evol;
115   TNaming_Iterator     it(theLabel);
116
117   if (it.More()) {
118     Evol = it.Evolution();
119     for ( ; it.More(); it.Next()) {
120       Olds.Append(it.OldShape());
121       News.Append(it.NewShape());
122     }
123
124     TopTools_ListIteratorOfListOfShape itOlds(Olds);
125     TopTools_ListIteratorOfListOfShape itNews(News);
126     TNaming_Builder B(theLabel);
127
128     for ( ;itOlds.More() ; itOlds.Next(),itNews.Next()) {
129       TopoDS_Shape OS,NS;
130       const TopoDS_Shape& SO     = itOlds.Value();
131       const TopoDS_Shape& SN     = itNews.Value();
132       OS = SO;
133       if (theWithOld && !SO.IsNull()) OS = SO.Moved(theLoc);
134       if (!SN.IsNull()) NS = SN.Moved(theLoc);
135
136       LoadNamedShape ( B, Evol, OS, NS);
137     }
138   }
139   for (TDF_ChildIterator ciL(theLabel); ciL.More(); ciL.Next()) {
140     Displace (ciL.Value(),theLoc,theWithOld);
141   }
142 }
143
144 // @@SDM: begin
145
146 // Copyright Open CASCADE......................................Version    3.0-00
147 // Lastly modified by : szy                                    Date : 20-06-2003
148
149 // File history synopsis (creation,modification,correction)
150 // +---------------------------------------------------------------------------+
151 // ! Developer !              Comments                   !   Date   ! Version  !
152 // +-----------!-----------------------------------------!----------!----------+
153 // !       szy ! Creation                                !20-06-2003! 3.0-00-9!
154 // +---------------------------------------------------------------------------+
155
156 // @@SDM: end