// Created on: 1998-12-21 // Created by: Michael KAZAKOV // Copyright (c) 1998-1999 Matra Datavision // Copyright (c) 1999-2012 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. // // 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. // // 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. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // static Standard_Boolean issame(TopoDS_Face& face, TopoDS_Face& newface); static TopoDS_Face findface(TopoDS_Shape& shape, TopoDS_Face& face); // static Standard_Integer shell(Draw_Interpretor&, Standard_Integer, const char** ); static Standard_Integer outershell(Draw_Interpretor&, Standard_Integer, const char** ); //======================================================================= //function : ShellCommands //purpose : //======================================================================= void BRepTest::ShellCommands(Draw_Interpretor& theCommands) { static Standard_Boolean loaded = Standard_False; if (loaded) return; loaded = Standard_True; const char* g = "Projection of wire commands"; theCommands.Add("shell","Make shell on bugged object", __FILE__, shell,g); theCommands.Add("outershell","use outershell r s", __FILE__, outershell,g); } //modified by NIZNHY-PKV Thu Sep 20 10:44:11 2012f //======================================================================= //function : outershell //purpose : //======================================================================= Standard_Integer outershell(Draw_Interpretor& di, Standard_Integer n, const char** a) { TopoDS_Shape aS; TopoDS_Solid aSd; TopoDS_Shell aSh; // if (n!=3) { di << " use outershell r s\n"; return 1; } // aS=DBRep::Get(a[2]); if (aS.IsNull()) { di << " Null shape is not allowed\n"; return 1; } if (aS.ShapeType()!=TopAbs_SOLID) { di << " The shape must be a solid\n"; return 1; } // aSd=*((TopoDS_Solid*)&aS); // aSh=BRepClass3d::OuterShell(aSd); if (aSh.IsNull()) { di << " not found\n"; } else { DBRep::Set(a[1],aSh); } return 0; } //modified by NIZNHY-PKV Thu Sep 20 10:44:17 2012t //======================================================================= //function : shell //purpose : //======================================================================= Standard_Integer shell(Draw_Interpretor& di, Standard_Integer n, const char** a) { TopoDS_Shape Shape = DBRep::Get(a[1]); TopTools_ListOfShape ListOfCorks; //cout <<"You have "< 0 = Interior. BRepOffsetAPI_MakeThickSolid MKTS (Shape, ListOfCorks, OffsetValue, Tol, BRepOffset_Skin, 1, Standard_False); DBRep::Set("Result.brep",MKTS.Shape()); TopTools_ListOfShape Larg; Larg.Append(Shape); //Check if the shape has at least one face TopExp_Explorer FExp (MKTS.Shape (), TopAbs_FACE); if (FExp.More ()) { //cout << "Standard_True"<