1 // Created on: 1994-12-09
2 // Created by: Jacques GOUSSARD
3 // Copyright (c) 1994-1999 Matra Datavision
4 // Copyright (c) 1999-2012 OPEN CASCADE SAS
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.
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.
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.
23 #include <BRepBuilderAPI_Transform.ixx>
25 #include <BRepTools_TrsfModification.hxx>
29 //=======================================================================
30 //function : BRepBuilderAPI_Transform
32 //=======================================================================
34 BRepBuilderAPI_Transform::BRepBuilderAPI_Transform (const gp_Trsf& T) :
37 myModification = new BRepTools_TrsfModification(T);
41 //=======================================================================
42 //function : BRepBuilderAPI_Transform
44 //=======================================================================
46 BRepBuilderAPI_Transform::BRepBuilderAPI_Transform (const TopoDS_Shape& S,
48 const Standard_Boolean Copy) :
51 myModification = new BRepTools_TrsfModification(T);
57 //=======================================================================
60 //=======================================================================
62 void BRepBuilderAPI_Transform::Perform(const TopoDS_Shape& S,
63 const Standard_Boolean Copy)
65 // myUseModif = Copy || myTrsf.IsNegative(); bug gp_Trsf.
67 myTrsf.ScaleFactor()*myTrsf.HVectorialPart().Determinant() < 0. ||
68 Abs(Abs(myTrsf.ScaleFactor()) - 1) > gp::Resolution();
70 Handle(BRepTools_TrsfModification) theModif =
71 Handle(BRepTools_TrsfModification)::DownCast(myModification);
72 theModif->Trsf() = myTrsf;
73 DoModif(S,myModification);
77 myShape = S.Moved(myLocation);
83 //=======================================================================
84 //function : ModifiedShape
86 //=======================================================================
88 const TopoDS_Shape& BRepBuilderAPI_Transform::ModifiedShape
89 (const TopoDS_Shape& S) const
92 return myModifier.ModifiedShape(S);
94 static TopoDS_Shape SM;
95 SM = S.Moved (myLocation);
100 //=======================================================================
101 //function : Modified
103 //=======================================================================
105 const TopTools_ListOfShape& BRepBuilderAPI_Transform::Modified
106 (const TopoDS_Shape& F)
110 myGenerated.Append(F.Moved(myLocation));
113 return BRepBuilderAPI_ModifyShape::Modified(F);