// Created on: 1996-02-13
// Created by: Jacques GOUSSARD
// Copyright (c) 1996-1999 Matra Datavision
-// Copyright (c) 1999-2012 OPEN CASCADE SAS
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
//
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
//
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
-
-#include <BRepFeat_MakePrism.ixx>
-
+#include <Bnd_Box.hxx>
+#include <BRep_Tool.hxx>
+#include <BRepAlgoAPI_Cut.hxx>
+#include <BRepAlgoAPI_Fuse.hxx>
+#include <BRepBndLib.hxx>
+#include <BRepBuilderAPI.hxx>
#include <BRepFeat.hxx>
-#include <LocOpe.hxx>
-#include <LocOpe_Prism.hxx>
-#include <LocOpe_CSIntersector.hxx>
-#include <LocOpe_PntFace.hxx>
-
-#include <gp_Vec.hxx>
-#include <gp_Pnt.hxx>
-#include <gp_Ax1.hxx>
-#include <gp_Pnt2d.hxx>
+#include <BRepFeat_MakePrism.hxx>
+#include <BRepLib_MakeFace.hxx>
+#include <BRepPrimAPI_MakeBox.hxx>
+#include <BRepTools.hxx>
#include <Geom_Curve.hxx>
#include <Geom_Line.hxx>
+#include <Geom_Plane.hxx>
#include <Geom_RectangularTrimmedSurface.hxx>
#include <Geom_Surface.hxx>
-
-#include <BRepLib_MakeFace.hxx>
-
-#include <TColgp_SequenceOfPnt.hxx>
+#include <gp_Ax1.hxx>
+#include <gp_Dir.hxx>
+#include <gp_Pln.hxx>
+#include <gp_Pnt.hxx>
+#include <gp_Pnt2d.hxx>
+#include <gp_Vec.hxx>
+#include <LocOpe.hxx>
+#include <LocOpe_CSIntersector.hxx>
+#include <LocOpe_PntFace.hxx>
+#include <LocOpe_Prism.hxx>
+#include <Precision.hxx>
+#include <Standard_ConstructionError.hxx>
#include <TColGeom_SequenceOfCurve.hxx>
-#include <Bnd_Box.hxx>
-
-#include <BRep_Tool.hxx>
-
-#include <BRepTools.hxx>
-
-
+#include <TColgp_SequenceOfPnt.hxx>
+#include <TopExp.hxx>
#include <TopExp_Explorer.hxx>
-#include <TopTools_MapOfShape.hxx>
-#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
-#include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopTools_ListOfShape.hxx>
-
-#include <BRepBuilderAPI.hxx>
-#include <BRepPrimAPI_MakeBox.hxx>
-
-//modified by NIZNHY-PKV Thu Mar 21 18:14:23 2002 f
-//#include <BRepAlgo_Cut.hxx>
-//#include <BRepAlgo_Fuse.hxx>
-#include <BRepAlgoAPI_Cut.hxx>
-#include <BRepAlgoAPI_Fuse.hxx>
-//modified by NIZNHY-PKV Thu Mar 21 18:14:26 2002 t
-
-#include <Standard_ConstructionError.hxx>
#include <TopoDS.hxx>
-
-
+#include <TopoDS_Compound.hxx>
+#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
+#include <TopoDS_Shape.hxx>
#include <TopoDS_Solid.hxx>
-#include <TopoDS_Compound.hxx>
-
-#include <TopExp.hxx>
-#include <BRepBndLib.hxx>
-
-#include <Precision.hxx>
-#include <gp_Pln.hxx>
-#include <Geom_Plane.hxx>
+#include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
+#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
+#include <TopTools_MapOfShape.hxx>
-#ifdef DEB
+#ifdef OCCT_DEBUG
extern Standard_Boolean BRepFeat_GettraceFEAT();
#endif
const Standard_Integer Mode,
const Standard_Boolean Modify)
{
-#ifdef DEB
+#ifdef OCCT_DEBUG
Standard_Boolean trc = BRepFeat_GettraceFEAT();
- if (trc) cout << "BRepFeat_MakePrism::Init" << endl;
+ if (trc) std::cout << "BRepFeat_MakePrism::Init" << std::endl;
#endif
mySkface = Skface;
SketchFaceValid();
myMap.Bind(exp.Current(), thelist);
myMap(exp.Current()).Append(exp.Current());
}
-#ifdef DEB
+#ifdef OCCT_DEBUG
if (trc) {
- if (myJustFeat) cout << " Just Feature" << endl;
- if (myFuse) cout << " Fuse" << endl;
- if (!myFuse) cout << " Cut" << endl;
- if (!myModify) cout << " Modify = 0" << endl;
+ if (myJustFeat) std::cout << " Just Feature" << std::endl;
+ if (myFuse) std::cout << " Fuse" << std::endl;
+ if (!myFuse) std::cout << " Cut" << std::endl;
+ if (!myModify) std::cout << " Modify = 0" << std::endl;
}
#endif
}
void BRepFeat_MakePrism::Add(const TopoDS_Edge& E,
const TopoDS_Face& F)
{
-#ifdef DEB
+#ifdef OCCT_DEBUG
Standard_Boolean trc = BRepFeat_GettraceFEAT();
- if (trc) cout << "BRepFeat_MakePrism::Add(Edge,face)" << endl;
+ if (trc) std::cout << "BRepFeat_MakePrism::Add(Edge,face)" << std::endl;
#endif
TopExp_Explorer exp;
for (exp.Init(mySbase,TopAbs_FACE);exp.More();exp.Next()) {
}
}
if (!exp.More()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
for (exp.Init(myPbase,TopAbs_EDGE);exp.More();exp.Next()) {
}
}
if (!exp.More()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
if (!mySlface.IsBound(F)) {
void BRepFeat_MakePrism::Perform(const Standard_Real Length)
{
-#ifdef DEB
+#ifdef OCCT_DEBUG
Standard_Boolean trc = BRepFeat_GettraceFEAT();
- if (trc) cout << "BRepFeat_MakePrism::Perform(Length)" << endl;
+ if (trc) std::cout << "BRepFeat_MakePrism::Perform(Length)" << std::endl;
#endif
mySFrom.Nullify();
ShapeFromValid();
if(myLShape.ShapeType() == TopAbs_WIRE) {
TopExp_Explorer ex1(VraiPrism, TopAbs_FACE);
for(; ex1.More(); ex1.Next()) {
- TopExp_Explorer ex2(ex1.Current(), TopAbs_WIRE);
- for(; ex2.More(); ex2.Next()) {
- if(ex2.Current().IsSame(myLShape)) {
- FFace = TopoDS::Face(ex1.Current());
- found = Standard_True;
- break;
- }
- }
- if(found) break;
+ TopExp_Explorer ex2(ex1.Current(), TopAbs_WIRE);
+ for(; ex2.More(); ex2.Next()) {
+ if(ex2.Current().IsSame(myLShape)) {
+ FFace = TopoDS::Face(ex1.Current());
+ found = Standard_True;
+ break;
+ }
+ }
+ if(found) break;
}
}
for(; exp.More(); exp.Next()) {
const TopoDS_Face& ff = TopoDS::Face(exp.Current());
if(ToFuse(ff, FFace)) {
- TopTools_DataMapOfShapeListOfShape sl;
- if(!FFace.IsSame(myPbase) && BRepFeat::IsInside(ff, FFace))
- break;
+ TopTools_DataMapOfShapeListOfShape sl;
+ if(!FFace.IsSame(myPbase) && BRepFeat::IsInside(ff, FFace))
+ break;
}
}
}
// if there is no gluing -> call of ope topo
if(!myJustGluer) {
if(myFuse == 1 && !myJustFeat) {
- //modified by NIZNHY-PKV Thu Mar 21 17:55:30 2002 f
- //BRepAlgo_Fuse f(mySbase, myGShape);
- //myShape = f.Shape();
- //UpdateDescendants(f.Builder(), myShape, Standard_False);
BRepAlgoAPI_Fuse f(mySbase, myGShape);
myShape = f.Shape();
UpdateDescendants(f, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 17:55:34 2002 t
Done();
}
else if(myFuse == 0) {
- //modified by NIZNHY-PKV Thu Mar 21 17:55:59 2002 f
- //BRepAlgo_Cut c(mySbase, myGShape);
- //myShape = c.Shape();
- //UpdateDescendants(c.Builder(), myShape, Standard_False);
BRepAlgoAPI_Cut c(mySbase, myGShape);
myShape = c.Shape();
UpdateDescendants(c, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 17:56:02 2002 t
Done();
}
else {
void BRepFeat_MakePrism::Perform(const TopoDS_Shape& Until)
{
-#ifdef DEB
+#ifdef OCCT_DEBUG
Standard_Boolean trc = BRepFeat_GettraceFEAT();
- if (trc) cout << "BRepFeat_MakePrism::Perform(Until)" << endl;
+ if (trc) std::cout << "BRepFeat_MakePrism::Perform(Until)" << std::endl;
#endif
if (Until.IsNull()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
TopExp_Explorer exp(Until, TopAbs_FACE);
if (!exp.More()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
myGluedF.Clear();
myPerfSelection = BRepFeat_SelectionU;
TopAbs_Orientation Or;
if (ASI.IsDone() && ASI.NbPoints(1) >=1) {
if (myFuse == 1) {
- Or = ASI.Point(1,1).Orientation();
+ Or = ASI.Point(1, 1).Orientation();
}
else {
- Or = ASI.Point(1,ASI.NbPoints(1)).Orientation();
+ Or = ASI.Point(1, ASI.NbPoints(1)).Orientation();
}
if(sens==-1) Or=TopAbs::Reverse(Or);
TopoDS_Face FUntil = ASI.Point(1,1).Face();
B.MakeCompound(TopoDS::Compound(Comp));
TopoDS_Solid S = BRepFeat::Tool(mySUntil, FUntil, Or);
if (!S.IsNull()) B.Add(Comp,S);
- //modified by NIZNHY-PKV Thu Mar 21 17:56:31 2002 f
- //BRepAlgo_Cut trP(VraiPrism,Comp);
- //UpdateDescendants(trP.Builder(),trP.Shape(), Standard_False);
BRepAlgoAPI_Cut trP(VraiPrism,Comp);
UpdateDescendants(trP, trP.Shape(), Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 17:56:38 2002 t
+ //
TopExp_Explorer ex(trP.Shape(), TopAbs_SOLID);
TopoDS_Shape Cutsh = ex.Current();
- if(myFuse == 1 && !myJustFeat) {
- //modified by NIZNHY-PKV Thu Mar 21 17:57:49 2002 f
- //BRepAlgo_Fuse f(mySbase, Cutsh);
- //myShape = f.Shape();
- //UpdateDescendants(f.Builder(), myShape, Standard_False);
- BRepAlgoAPI_Fuse f(mySbase, Cutsh);
- myShape = f.Shape();
- UpdateDescendants(f, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 17:57:53 2002 t
- Done();
+ if (myFuse == 1 && !myJustFeat) {
+ BRepAlgoAPI_Fuse f(mySbase, Cutsh);
+ myShape = f.Shape();
+ UpdateDescendants(f, myShape, Standard_False);
+ Done();
}
else if(myFuse == 0) {
- //modified by NIZNHY-PKV Thu Mar 21 17:59:33 2002 f
- //BRepAlgo_Cut c(mySbase, Cutsh);
- //myShape = c.Shape();
- //UpdateDescendants(c.Builder(), myShape, Standard_False);
- BRepAlgoAPI_Cut c(mySbase, Cutsh);
- myShape = c.Shape();
- UpdateDescendants(c, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 17:59:43 2002 t
- Done();
+ BRepAlgoAPI_Cut c(mySbase, Cutsh);
+ myShape = c.Shape();
+ UpdateDescendants(c, myShape, Standard_False);
+ Done();
}
else {
- myShape = Cutsh;
- Done();
+ myShape = Cutsh;
+ Done();
}
- }
- }
-/* // loop of control of descendance
-
- TopExp_Explorer expr(mySbase, TopAbs_FACE);
- char nom1[20], nom2[20];
- Standard_Integer ii = 0;
- for(; expr.More(); expr.Next()) {
- ii++;
- sprintf(nom1, "faceinitial_%d", ii);
- DBRep::Set(nom1, expr.Current());
- Standard_Integer jj = 0;
- const TopTools_ListOfShape& list = Modified(expr.Current());
- TopTools_ListIteratorOfListOfShape ite(list);
- for(; ite.More(); ite.Next()) {
- jj++;
- sprintf(nom2, "facemodifie_%d_%d", ii, jj);
- DBRep::Set(nom2, ite.Value());
- }
- }
-
- expr.Init(myPbase, TopAbs_EDGE);
- ii=0;
- for(; expr.More(); expr.Next()) {
- ii++;
- sprintf(nom1, "edgeinitial_%d", ii);
- DBRep::Set(nom1, expr.Current());
- Standard_Integer jj = 0;
- const TopTools_ListOfShape& list = Generated(expr.Current());
- TopTools_ListIteratorOfListOfShape ite(list);
- for(; ite.More(); ite.Next()) {
- jj++;
- sprintf(nom2, "facegeneree_%d_%d", ii, jj);
- DBRep::Set(nom2, ite.Value());
}
}
-*/
}
-
//=======================================================================
//function : Perform
//purpose : construction of a sufficiently long and properly oriented prism
void BRepFeat_MakePrism::Perform(const TopoDS_Shape& From,
const TopoDS_Shape& Until)
{
-#ifdef DEB
+#ifdef OCCT_DEBUG
Standard_Boolean trc = BRepFeat_GettraceFEAT();
- if (trc) cout << "BRepFeat_MakePrism::Perform(From,Until)" << endl;
+ if (trc) std::cout << "BRepFeat_MakePrism::Perform(From,Until)" << std::endl;
#endif
if (From.IsNull() || Until.IsNull()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
if (!mySkface.IsNull()) {
TopExp_Explorer exp(From, TopAbs_FACE);
if (!exp.More()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
exp.Init(Until, TopAbs_FACE);
if (!exp.More()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
mySFrom = From;
Standard_Boolean Trff = TransformShapeFU(0);
ASI2.Perform(scur);
TopAbs_Orientation OrU, OrF;
TopoDS_Face FFrom, FUntil;
+ Standard_Real ParF, ParU;
if (ASI1.IsDone() && ASI1.NbPoints(1) >=1) {
if (myFuse == 1) {
- OrU = ASI1.Point(1,1).Orientation();
+ OrU = ASI1.Point(1,1).Orientation();
}
else {
- OrU = ASI1.Point(1,ASI1.NbPoints(1)).Orientation();
+ OrU = ASI1.Point(1,ASI1.NbPoints(1)).Orientation();
}
if(sens==-1) OrU = TopAbs::Reverse(OrU);
FUntil = ASI1.Point(1,1).Face();
+ ParU = ASI1.Point(1,1).Parameter();
}
else {
NotDone();
OrF = ASI2.Point(1,1).Orientation();
if(sens==1) OrF = TopAbs::Reverse(OrF);
FFrom = ASI2.Point(1,1).Face();
+ ParF = ASI2.Point(1,1).Parameter();
}
else {
NotDone();
myStatusError = BRepFeat_NoIntersectF;
return;
}
- TopoDS_Shape Comp;
- BRep_Builder B;
- B.MakeCompound(TopoDS::Compound(Comp));
+ if(tran > 0 && (Abs(ParU) < Abs(ParF)))
+ {
+ TopAbs_Orientation Or;
+ Or = OrU;
+ OrU = OrF;
+ OrF = Or;
+ }
+ //
+ TopTools_ListOfShape aLTools;
TopoDS_Solid S = BRepFeat::Tool(mySUntil, FUntil, OrU);
if (!S.IsNull()) {
- B.Add(Comp,S);
+ aLTools.Append(S);
}
else {
NotDone();
}
TopoDS_Solid SS = BRepFeat::Tool(mySFrom, FFrom, OrF);
if (!SS.IsNull()) {
- B.Add(Comp,SS);
+ aLTools.Append(SS);
}
else {
NotDone();
myStatusError = BRepFeat_NullToolF;
return;
}
- //modified by NIZNHY-PKV Thu Mar 21 18:00:10 2002 f
- //BRepAlgo_Cut trP(VraiPrism,Comp);
- //UpdateDescendants(trP.Builder(), trP.Shape(), Standard_False);
- BRepAlgoAPI_Cut trP(VraiPrism,Comp);
+ //
+ TopTools_ListOfShape aLObj;
+ aLObj.Append(VraiPrism);
+ //
+ BRepAlgoAPI_Cut trP;
+ trP.SetArguments(aLObj);
+ trP.SetTools(aLTools);
+ trP.Build();
UpdateDescendants(trP, trP.Shape(), Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:00:16 2002 t
if(myFuse == 1 && !myJustFeat) {
- //modified by NIZNHY-PKV Thu Mar 21 18:00:35 2002 f
- //BRepAlgo_Fuse f(mySbase, trP.Shape());
- //myShape = f.Shape();
- //UpdateDescendants(f.Builder(), myShape, Standard_False);
BRepAlgoAPI_Fuse f(mySbase, trP.Shape());
myShape = f.Shape();
UpdateDescendants(f, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:00:40 2002 t
Done();
}
else if(myFuse == 0) {
- //modified by NIZNHY-PKV Thu Mar 21 18:01:01 2002 f
- //BRepAlgo_Cut c(mySbase, trP.Shape());
- //myShape = c.Shape();
- //UpdateDescendants(c.Builder(), myShape, Standard_False);
BRepAlgoAPI_Cut c(mySbase, trP.Shape());
myShape = c.Shape();
UpdateDescendants(c, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:01:13 2002 t
Done();
}
else {
myShape = trP.Shape();
- Done();
- }
- }
-// control history
-/*
- TopExp_Explorer expr(mySbase, TopAbs_FACE);
- char nom1[20], nom2[20];
- Standard_Integer ii = 0;
- for(; expr.More(); expr.Next()) {
- ii++;
- sprintf(nom1, "faceinitial_%d", ii);
- DBRep::Set(nom1, expr.Current());
- Standard_Integer jj = 0;
- const TopTools_ListOfShape& list = Modified(expr.Current());
- TopTools_ListIteratorOfListOfShape ite(list);
- for(; ite.More(); ite.Next()) {
- jj++;
- sprintf(nom2, "facemodifie_%d_%d", ii, jj);
- DBRep::Set(nom2, ite.Value());
- }
- }
-
- expr.Init(myPbase, TopAbs_EDGE);
- ii=0;
- for(; expr.More(); expr.Next()) {
- ii++;
- sprintf(nom1, "edgeinitial_%d", ii);
- DBRep::Set(nom1, expr.Current());
- Standard_Integer jj = 0;
- const TopTools_ListOfShape& list = Generated(expr.Current());
- TopTools_ListIteratorOfListOfShape ite(list);
- for(; ite.More(); ite.Next()) {
- jj++;
- sprintf(nom2, "egdegeneree_%d_%d", ii, jj);
- DBRep::Set(nom2, ite.Value());
+ Done();
}
}
-*/
}
-
-
//=======================================================================
//function : PerformUntilEnd
//purpose : construction of a prism and reconstruction
void BRepFeat_MakePrism::PerformUntilEnd()
{
-#ifdef DEB
+#ifdef OCCT_DEBUG
Standard_Boolean trc = BRepFeat_GettraceFEAT();
- if (trc) cout << "BRepFeat_MakePrism::PerformUntilEnd()" << endl;
+ if (trc) std::cout << "BRepFeat_MakePrism::PerformUntilEnd()" << std::endl;
#endif
myPerfSelection = BRepFeat_SelectionSh;
PerfSelectionValid();
GluedFacesValid();
if(myFuse == 0) {
- //modified by NIZNHY-PKV Thu Mar 21 18:02:46 2002 f
- //BRepAlgo_Cut c(mySbase, myGShape);
BRepAlgoAPI_Cut c(mySbase, myGShape);
- //modified by NIZNHY-PKV Thu Mar 21 18:03:15 2002 t
if (c.IsDone()) {
myShape = c.Shape();
- //modified by NIZNHY-PKV Thu Mar 21 18:03:38 2002 f
- //UpdateDescendants(c.Builder(), myShape, Standard_False);
UpdateDescendants(c, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:03:42 2002 t
Done();
}
}
void BRepFeat_MakePrism::PerformFromEnd(const TopoDS_Shape& Until)
{
-#ifdef DEB
+#ifdef OCCT_DEBUG
Standard_Boolean trc = BRepFeat_GettraceFEAT();
- if (trc) cout << "BRepFeat_MakePrism::PerformFromEnd(From,Until)" << endl;
+ if (trc) std::cout << "BRepFeat_MakePrism::PerformFromEnd(From,Until)" << std::endl;
#endif
if (Until.IsNull()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
if (!mySkface.IsNull() && Until.IsSame(mySkface)) {
myDir.Reverse();
TopExp_Explorer exp;
exp.Init(Until, TopAbs_FACE);
if (!exp.More()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
myPerfSelection = BRepFeat_SelectionShU;
PerfSelectionValid();
Trf = TransformShapeFU(0);
FFrom = TopoDS::Face(mySFrom);
}
-// else {
-// NotDone();
-// return;
-// }
- TopoDS_Shape Comp;
- BRep_Builder B;
- B.MakeCompound(TopoDS::Compound(Comp));
+
+ TopTools_ListOfShape aLTools;
TopoDS_Solid Sol = BRepFeat::Tool(mySUntil, FUntil, OrU);
if (!Sol.IsNull()) {
- B.Add(Comp,Sol);
+ aLTools.Append(Sol);
}
else {
NotDone();
TopoDS_Solid Sol1 = BRepFeat::Tool(mySFrom, FFrom, OrF);
if (!Sol1.IsNull()) {
- B.Add(Comp,Sol1);
+ aLTools.Append(Sol1);
}
else {
NotDone();
myStatusError = BRepFeat_NullToolF;
return;
}
- //modified by NIZNHY-PKV Thu Mar 21 18:03:57 2002 f
- //BRepAlgo_Cut trP(VraiPrism,Comp);
- //UpdateDescendants(trP.Builder(), trP.Shape(), Standard_False);
- BRepAlgoAPI_Cut trP(VraiPrism,Comp);
+ //
+ TopTools_ListOfShape aLObj;
+ aLObj.Append(VraiPrism);
+ //
+ BRepAlgoAPI_Cut trP;
+ trP.SetArguments(aLObj);
+ trP.SetTools(aLTools);
+ trP.Build();
+ //
UpdateDescendants(trP, trP.Shape(), Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:04:08 2002 t
if(myFuse == 1 && !myJustFeat) {
- //modified by NIZNHY-PKV Thu Mar 21 18:04:33 2002 f
- //BRepAlgo_Fuse f(mySbase, trP.Shape());
- //myShape = f.Shape();
- //UpdateDescendants(f.Builder(), myShape, Standard_False);
BRepAlgoAPI_Fuse f(mySbase, trP.Shape());
myShape = f.Shape();
UpdateDescendants(f, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:04:41 2002 t
Done();
}
else if(myFuse == 0) {
- //modified by NIZNHY-PKV Thu Mar 21 18:04:54 2002 f
- //BRepAlgo_Cut c(mySbase, trP.Shape());
- //myShape = c.Shape();
- //UpdateDescendants(c.Builder(), myShape, Standard_False);
BRepAlgoAPI_Cut c(mySbase, trP.Shape());
myShape = c.Shape();
UpdateDescendants(c, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:05:00 2002 t
Done();
}
else {
myShape = trP.Shape();
- Done();
+ Done();
}
- }
+ }
}
-
-
//=======================================================================
//function : PerformThruAll
//purpose :
void BRepFeat_MakePrism::PerformThruAll()
{
-#ifdef DEB
+#ifdef OCCT_DEBUG
Standard_Boolean trc = BRepFeat_GettraceFEAT();
- if (trc) cout << "BRepFeat_MakePrism::PerformThruAll()" << endl;
+ if (trc) std::cout << "BRepFeat_MakePrism::PerformThruAll()" << std::endl;
#endif
mySUntil.Nullify();
ShapeUntilValid();
GeneratedShapeValid();
if(myFuse == 0) {
- //modified by NIZNHY-PKV Thu Mar 21 18:05:31 2002 f
- //BRepAlgo_Cut c(mySbase, myGShape);
BRepAlgoAPI_Cut c(mySbase, myGShape);
- //modified by NIZNHY-PKV Thu Mar 21 18:05:33 2002 t
if (c.IsDone()) {
myShape = c.Shape();
- //modified by NIZNHY-PKV Thu Mar 21 18:05:46 2002 f
- //UpdateDescendants(c.Builder(), myShape, Standard_False);
UpdateDescendants(c, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:05:50 2002 t
Done();
}
}
}
}
-
//=======================================================================
//function : PerformUntilHauteur
//purpose :
//=======================================================================
void BRepFeat_MakePrism::PerformUntilHeight(const TopoDS_Shape& Until,
- const Standard_Real Length)
+ const Standard_Real Length)
{
-#ifdef DEB
+#ifdef OCCT_DEBUG
Standard_Boolean trc = BRepFeat_GettraceFEAT();
- if (trc) cout << "BRepFeat_MakePrism::PerformUntilHeight(Until,Length)" << endl;
+ if (trc) std::cout << "BRepFeat_MakePrism::PerformUntilHeight(Until,Length)" << std::endl;
#endif
if (Until.IsNull()) {
Perform(Length);
}
TopExp_Explorer exp(Until, TopAbs_FACE);
if (!exp.More()) {
- Standard_ConstructionError::Raise();
+ throw Standard_ConstructionError();
}
myGluedF.Clear();
myPerfSelection = BRepFeat_NoSelection;
TopoDS_Solid S = BRepFeat::Tool(mySUntil, FUntil, Or);
if (!S.IsNull()) B.Add(Comp,S);
- //modified by NIZNHY-PKV Thu Mar 21 18:06:09 2002 f
- //BRepAlgo_Cut trP(VraiPrism,Comp);
- //UpdateDescendants(trP.Builder(), trP.Shape(), Standard_False);
BRepAlgoAPI_Cut trP(VraiPrism,Comp);
UpdateDescendants(trP, trP.Shape(), Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:06:15 2002 t
if(myFuse == 1 && !myJustFeat) {
- //modified by NIZNHY-PKV Thu Mar 21 18:06:36 2002 f
- //BRepAlgo_Fuse f(mySbase, trP.Shape());
- //myShape = f.Shape();
- //UpdateDescendants(f.Builder(), myShape, Standard_False);
- BRepAlgoAPI_Fuse f(mySbase, trP.Shape());
- myShape = f.Shape();
- UpdateDescendants(f, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:06:41 2002 t
- Done();
+ BRepAlgoAPI_Fuse f(mySbase, trP.Shape());
+ myShape = f.Shape();
+ UpdateDescendants(f, myShape, Standard_False);
+ Done();
}
else if(myFuse == 0) {
- //modified by NIZNHY-PKV Thu Mar 21 18:07:06 2002 f
- //BRepAlgo_Cut c(mySbase, trP.Shape());
- //myShape = c.Shape();
- //UpdateDescendants(c.Builder(), myShape, Standard_False);
- BRepAlgoAPI_Cut c(mySbase, trP.Shape());
- myShape = c.Shape();
- UpdateDescendants(c, myShape, Standard_False);
- //modified by NIZNHY-PKV Thu Mar 21 18:07:12 2002 t
- Done();
+ BRepAlgoAPI_Cut c(mySbase, trP.Shape());
+ myShape = c.Shape();
+ UpdateDescendants(c, myShape, Standard_False);
+ Done();
}
else {
- myShape = trP.Shape();
- Done();
+ myShape = trP.Shape();
+ Done();
}
- }
+ }
}
}
exp1.Init(exp.Current(), TopAbs_VERTEX);
if(!exp1.More())
{
- FacRevolInfini = Standard_True;
- break;
+ FacRevolInfini = Standard_True;
+ break;
}
}
-
if(!FacRevolInfini)
BRepBndLib::Add(theSUntil,Box);
}
if(c[i] > parmax) parmax = c[i];
if(c[i] < parmin ) parmin = c[i];
}
-//#ifndef DEB
+//#ifndef OCCT_DEBUG
Standard_Real Height = fabs(2.*(parmax - parmin));
//#else
// Standard_Real Height = abs(2.*(parmax - parmin));
//purpose : face SameDomaine or not
//=======================================================================
-Standard_Boolean ToFuse(const TopoDS_Face& F1,
- const TopoDS_Face& F2)
+static Standard_Boolean ToFuse (const TopoDS_Face& F1, const TopoDS_Face& F2)
{
if (F1.IsNull() || F2.IsNull()) {
return Standard_False;
typS2 = S2->DynamicType();
if (typS1 == STANDARD_TYPE(Geom_RectangularTrimmedSurface)) {
- S1 = (*((Handle(Geom_RectangularTrimmedSurface)*)&S1))->BasisSurface();
+ S1 = Handle(Geom_RectangularTrimmedSurface)::DownCast (S1)->BasisSurface();
typS1 = S1->DynamicType();
}
if (typS2 == STANDARD_TYPE(Geom_RectangularTrimmedSurface)) {
- S2 = (*((Handle(Geom_RectangularTrimmedSurface)*)&S2))->BasisSurface();
+ S2 = Handle(Geom_RectangularTrimmedSurface)::DownCast (S2)->BasisSurface();
typS2 = S2->DynamicType();
}
Standard_Boolean ValRet = Standard_False;
if (typS1 == STANDARD_TYPE(Geom_Plane)) {
- S1 = BRep_Tool::Surface(F1); // to apply the location.
- S2 = BRep_Tool::Surface(F2);
- gp_Pln pl1( (*((Handle(Geom_Plane)*)&S1))->Pln());
- gp_Pln pl2( (*((Handle(Geom_Plane)*)&S2))->Pln());
+ gp_Pln pl1( Handle(Geom_Plane)::DownCast (S1)->Pln());
+ gp_Pln pl2( Handle(Geom_Plane)::DownCast (S2)->Pln());
+
+ // apply locations
+ if (! loc1.IsIdentity())
+ pl1.Transform (loc1.Transformation());
+ if (! loc2.IsIdentity())
+ pl2.Transform (loc2.Transformation());
if (pl1.Position().IsCoplanar(pl2.Position(),tollin,tolang)) {
ValRet = Standard_True;