Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-11-15 09:46:01

0001 // Created on: 1997-01-17
0002 // Created by: Didier PIFFAULT
0003 // Copyright (c) 1997-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
0016 
0017 #ifndef _BRepAlgo_HeaderFile
0018 #define _BRepAlgo_HeaderFile
0019 
0020 #include <GeomAbs_Shape.hxx>
0021 #include <TopTools_ListOfShape.hxx>
0022 class TopoDS_Wire;
0023 class TopoDS_Edge;
0024 class TopoDS_Face;
0025 class TopoDS_Shape;
0026 
0027 
0028 //! The BRepAlgo class provides the following tools for:
0029 //! - Checking validity of the shape;
0030 //! - Concatenation of the edges of the wire.
0031 class BRepAlgo 
0032 {
0033 public:
0034 
0035   //! this method makes a wire whose edges are C1 from
0036   //! a Wire whose edges could be G1. It removes a vertex
0037   //! between G1 edges.
0038   //! Option can be G1 or C1.
0039   Standard_EXPORT static TopoDS_Wire ConcatenateWire (const TopoDS_Wire& Wire,
0040                                                       const GeomAbs_Shape Option,
0041                                                       const Standard_Real AngularTolerance = 1.0e-4);
0042   
0043   //! this method makes an edge from a wire.
0044   //! Junction points between edges of wire may be sharp,
0045   //! resulting curve of the resulting edge may be C0.
0046   Standard_EXPORT static TopoDS_Edge ConcatenateWireC0 (const TopoDS_Wire& Wire);
0047 
0048   //! Method of wire conversion, calls BRepAlgo_Approx internally.
0049   //! @param theWire
0050   //!   Input Wire object.
0051   //! @param theAngleTolerance
0052   //!   Angle (in radians) defining the continuity of the wire: if two vectors
0053   //!   differ by less than this angle, the result will be smooth (zero angle of
0054   //!   tangent lines between curve elements).
0055   //! @return
0056   //!   The new TopoDS_Wire object consisting of edges each representing an arc
0057   //!   of circle or a linear segment. The accuracy of conversion is defined
0058   //!   as the maximal tolerance of edges in theWire.
0059   static Standard_EXPORT TopoDS_Wire ConvertWire
0060                                 (const TopoDS_Wire&  theWire,
0061                                  const Standard_Real theAngleTolerance,
0062                                  const TopoDS_Face&  theFace);
0063 
0064   //! Method of face conversion. The API corresponds to the method ConvertWire.
0065   //! This is a shortcut for calling ConvertWire() for each wire in theFace.
0066   static Standard_EXPORT TopoDS_Face ConvertFace
0067                                 (const TopoDS_Face&  theFace,
0068                                  const Standard_Real theAngleTolerance);
0069   
0070   //! Checks if the  shape is "correct". If not, returns
0071   //! <Standard_False>, else returns <Standard_True>.
0072   Standard_EXPORT static Standard_Boolean IsValid (const TopoDS_Shape& S);
0073   
0074   //! Checks if  the  Generated and Modified Faces  from
0075   //! the shapes <arguments> in  the shape <result>  are
0076   //! "correct". The args   may be empty, then all faces
0077   //! will be checked.
0078   //! If <Closed> is True,  only  closed shape are valid.
0079   //! If <GeomCtrl>  is    False the geometry  of   new
0080   //! vertices and edges   are   not verified and  the
0081   //! auto-intersection of new wires are not searched.
0082   Standard_EXPORT static Standard_Boolean IsValid (const TopTools_ListOfShape& theArgs,
0083                                                    const TopoDS_Shape& theResult,
0084                                                    const Standard_Boolean closedSolid = Standard_False,
0085                                                    const Standard_Boolean GeomCtrl = Standard_True);
0086   
0087   //! Checks if the shape is "correct".
0088   //! If not, returns FALSE, else returns TRUE.
0089   //! This method differs from the previous one in the fact that no geometric controls
0090   //! (intersection of wires, pcurve validity) are performed.
0091   Standard_EXPORT static Standard_Boolean IsTopologicallyValid (const TopoDS_Shape& S);
0092 
0093 };
0094 
0095 #endif // _BRepAlgo_HeaderFile