1 // Created on: 1999-05-06 2 // Created by: Pavel DURANDIN 3 // Copyright (c) 1999-1999 Matra Datavision 4 // Copyright (c) 1999-2014 OPEN CASCADE SAS 5 // 6 // This file is part of Open CASCADE Technology software library. 7 // 8 // This library is free software; you can redistribute it and/or modify it under 9 // the terms of the GNU Lesser General Public License version 2.1 as published 10 // by the Free Software Foundation, with special exception defined in the file 11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT 12 // distribution for complete text of the license and disclaimer of any warranty. 13 // 14 // Alternatively, this file may be used under the terms of Open CASCADE 15 // commercial license or contractual agreement. 16 17 18 #include <ShapeUpgrade_FaceDivide.hxx> 19 #include <ShapeUpgrade_ShapeDivideAngle.hxx> 20 #include <ShapeUpgrade_SplitSurfaceAngle.hxx> 21 #include <ShapeUpgrade_WireDivide.hxx> 22 #include <TopoDS_Shape.hxx> 23 24 //======================================================================= 25 //function : ShapeUpgrade_ShapeDivideAngle 26 //purpose : 27 //======================================================================= ShapeUpgrade_ShapeDivideAngle(const Standard_Real MaxAngle)28ShapeUpgrade_ShapeDivideAngle::ShapeUpgrade_ShapeDivideAngle (const Standard_Real MaxAngle) 29 { 30 InitTool ( MaxAngle ); 31 } 32 33 //======================================================================= 34 //function : ShapeUpgrade_ShapeDivideAngle 35 //purpose : 36 //======================================================================= 37 ShapeUpgrade_ShapeDivideAngle(const Standard_Real MaxAngle,const TopoDS_Shape & S)38ShapeUpgrade_ShapeDivideAngle::ShapeUpgrade_ShapeDivideAngle(const Standard_Real MaxAngle, 39 const TopoDS_Shape& S): 40 ShapeUpgrade_ShapeDivide(S) 41 { 42 InitTool ( MaxAngle ); 43 } 44 45 //======================================================================= 46 //function : InitTool 47 //purpose : 48 //======================================================================= 49 InitTool(const Standard_Real MaxAngle)50void ShapeUpgrade_ShapeDivideAngle::InitTool (const Standard_Real MaxAngle) 51 { 52 Handle(ShapeUpgrade_FaceDivide) tool = GetSplitFaceTool(); 53 tool->SetSplitSurfaceTool ( new ShapeUpgrade_SplitSurfaceAngle (MaxAngle) ); 54 tool->SetWireDivideTool ( 0 ); // no splitting of wire 55 SetSplitFaceTool(tool); 56 } 57 58 //======================================================================= 59 //function : SetMaxAngle 60 //purpose : 61 //======================================================================= 62 SetMaxAngle(const Standard_Real MaxAngle)63void ShapeUpgrade_ShapeDivideAngle::SetMaxAngle (const Standard_Real MaxAngle) 64 { 65 InitTool ( MaxAngle ); 66 } 67 68 //======================================================================= 69 //function : MaxAngle 70 //purpose : 71 //======================================================================= 72 MaxAngle() const73double ShapeUpgrade_ShapeDivideAngle::MaxAngle () const 74 { 75 Handle(ShapeUpgrade_FaceDivide) faceTool = GetSplitFaceTool(); 76 if ( faceTool.IsNull() ) return 0.; 77 Handle(ShapeUpgrade_SplitSurfaceAngle) tool = 78 Handle(ShapeUpgrade_SplitSurfaceAngle)::DownCast (faceTool->GetSplitSurfaceTool()); 79 return ( tool.IsNull() ? 0. : tool->MaxAngle() ); 80 } 81 82