0023024: Update headers of OCCT files
[occt.git] / src / BRepBuilderAPI / BRepBuilderAPI_GTransform.cxx
1 // Created on: 1996-12-30
2 // Created by: Stagiaire Mary FABIEN
3 // Copyright (c) 1996-1999 Matra Datavision
4 // Copyright (c) 1999-2012 OPEN CASCADE SAS
5 //
6 // The content of this file is subject to the Open CASCADE Technology Public
7 // License Version 6.5 (the "License"). You may not use the content of this file
8 // except in compliance with the License. Please obtain a copy of the License
9 // at http://www.opencascade.org and read it completely before using this file.
10 //
11 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 //
14 // The Original Code and all software distributed under the License is
15 // distributed on an "AS IS" basis, without warranty of any kind, and the
16 // Initial Developer hereby disclaims all such warranties, including without
17 // limitation, any warranties of merchantability, fitness for a particular
18 // purpose or non-infringement. Please see the License for the specific terms
19 // and conditions governing the rights and limitations under the License.
20
21
22
23 #include <BRepBuilderAPI_GTransform.ixx>
24
25 #include <TopTools_ListIteratorOfListOfShape.hxx>
26 #include <BRepTools_GTrsfModification.hxx>
27 #include <BRepTools_NurbsConvertModification.hxx>
28 #include <BRepBuilderAPI_NurbsConvert.hxx>
29 #include <gp.hxx>
30
31 #include <TopTools_ListOfShape.hxx>
32 #include <BRep_Builder.hxx>
33 #include <TopoDS.hxx>
34 //=======================================================================
35 //function : BRepBuilderAPI_GTransform
36 //purpose  : 
37 //=======================================================================
38
39 BRepBuilderAPI_GTransform::BRepBuilderAPI_GTransform (const gp_GTrsf& T) :
40   myGTrsf(T)
41 {
42   myModification = new BRepTools_GTrsfModification(T);
43 }
44
45
46 //=======================================================================
47 //function : BRepBuilderAPI_GTransform
48 //purpose  : 
49 //=======================================================================
50
51 BRepBuilderAPI_GTransform::BRepBuilderAPI_GTransform (const TopoDS_Shape& S,
52                                         const gp_GTrsf& T,
53                                         const Standard_Boolean Copy) :
54   myGTrsf(T)
55 {
56   myModification = new BRepTools_GTrsfModification(T);
57   Perform(S,Copy);
58 }
59
60
61
62 //=======================================================================
63 //function : Perform
64 //purpose  : 
65 //=======================================================================
66
67 void BRepBuilderAPI_GTransform::Perform(const TopoDS_Shape& S,
68                                  const Standard_Boolean Copy)
69 {
70   BRepBuilderAPI_NurbsConvert nc;
71   nc.Perform(S, Copy);
72   myHist.Add(S,nc);
73   TopoDS_Shape Slocal = nc.Shape();
74   Handle(BRepTools_GTrsfModification) theModif =
75     Handle(BRepTools_GTrsfModification)::DownCast(myModification);
76   theModif->GTrsf() = myGTrsf;
77   DoModif(Slocal,myModification);
78 //  myHist.Filter (Shape());
79 }
80
81
82 //=======================================================================
83 //function : Modified
84 //purpose  : 
85 //=======================================================================
86
87 const TopTools_ListOfShape& BRepBuilderAPI_GTransform::Modified
88   (const TopoDS_Shape& F)
89 {
90   myGenerated.Clear();
91   const TopTools_DataMapOfShapeListOfShape& M = myHist.Modification();
92   if (M.IsBound(F)) { 
93     TopTools_ListOfShape Li;
94     TopTools_ListIteratorOfListOfShape itL(M(F));
95     for (;itL.More();itL.Next())
96       Li.Assign(BRepBuilderAPI_ModifyShape::Modified(itL.Value()));
97   }
98   return myGenerated;
99 }
100
101
102 //=======================================================================
103 //function : ModifiedShape
104 //purpose  : 
105 //=======================================================================
106
107 const TopoDS_Shape& BRepBuilderAPI_GTransform::ModifiedShape
108   (const TopoDS_Shape& S) const
109 {
110   const TopTools_DataMapOfShapeListOfShape &aMapModif = myHist.Modification();
111   TopoDS_Shape                              aShape    = S;
112
113   if (aMapModif.IsBound(S)) {
114     const TopTools_ListOfShape &aListModShape = aMapModif(S);
115     Standard_Integer            aNbShapes     = aListModShape.Extent();
116
117     if (aNbShapes > 0)
118       aShape = aListModShape.First();
119   }
120
121   return BRepBuilderAPI_ModifyShape::ModifiedShape(aShape);
122 }
123