1 -- Created on: 1995-12-12
2 -- Created by: Jacques GOUSSARD
3 -- Copyright (c) 1995-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
6 -- This file is part of Open CASCADE Technology software library.
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.
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
17 -- modified by eap Fri Dec 21 12:17:40 2001 (bug OCC35)
21 class Wire from BRepCheck inherits Result from BRepCheck
25 uses Shape from TopoDS,
29 IndexedDataMapOfShapeListOfShape from TopTools,
34 Create(W: Wire from TopoDS)
36 returns mutable Wire from BRepCheck;
39 InContext(me: mutable; ContextShape: Shape from TopoDS);
40 ---Purpose: if <ContextShape> is a face, consequently checks
41 -- SelfIntersect(), Closed(), Orientation() and
42 -- Closed2d until faulty is found
45 ---Purpose: checks that the wire is not empty and "connex".
46 -- Called by constructor
49 ---Purpose: Does nothing
53 Closed(me: mutable; Update: Boolean from Standard = Standard_False)
54 ---Purpose: Checks if the oriented edges of the wire give a
55 -- closed wire. If the wire is closed, returns
56 -- BRepCheck_NoError. Warning : if the first and
57 -- last edge are infinite, the wire will be
58 -- considered as a closed one. If <Update> is set to
59 -- Standard_True, registers the status in the list.
60 -- May return (and registers):
61 -- **BRepCheck_NotConnected, if wire is not
62 -- topologically closed
63 -- **BRepCheck_RedundantEdge, if an edge is in wire
64 -- more than 3 times or in case of 2 occurences if
65 -- not with FORWARD and REVERSED orientation.
66 -- **BRepCheck_NoError
67 returns Status from BRepCheck
70 Closed2d(me: mutable; F : Face from TopoDS;
71 Update: Boolean from Standard = Standard_False)
72 ---Purpose: Checks if edges of the wire give a wire closed in
74 -- Returns BRepCheck_NoError, or BRepCheck_NotClosed
75 -- If <Update> is set to Standard_True, registers the
76 -- status in the list.
77 returns Status from BRepCheck
80 Orientation(me: mutable; F : Face from TopoDS;
81 Update: Boolean from Standard = Standard_False)
82 ---Purpose: Checks if the oriented edges of the wire are
83 -- correctly oriented. An internal call is made to
84 -- the method Closed. If no face exists, call the
85 -- method with a null face (TopoDS_face()). If
86 -- <Update> is set to Standard_True, registers the
87 -- status in the list.
88 -- May return (and registers):
89 -- BRepCheck_InvalidDegeneratedFlag,
90 -- BRepCheck_BadOrientationOfSubshape,
91 -- BRepCheck_NotClosed,
93 returns Status from BRepCheck
96 SelfIntersect(me: mutable; F : Face from TopoDS;
97 E1,E2 : out Edge from TopoDS;
98 Update: Boolean from Standard = Standard_False)
100 ---Purpose: Checks if the wire intersect itself on the face
101 -- <F>. <E1> and <E2> are the first intersecting
102 -- edges found. <E2> may be a null edge when a
103 -- self-intersecting edge is found.If <Update> is set
104 -- to Standard_True, registers the status in the
106 -- May return (and register):
107 -- BRepCheck_EmptyWire,
108 -- BRepCheck_SelfIntersectingWire,
109 -- BRepCheck_NoCurveOnSurface,
111 returns Status from BRepCheck
116 GeometricControls(me)
117 ---Purpose: report SelfIntersect() check would be (is) done
118 returns Boolean from Standard
121 GeometricControls(me: mutable; B: Boolean from Standard)
122 ---Purpose: set SelfIntersect() to be checked
129 -- myNbori : Integer from Standard; -- not used (eap)
130 myCdone : Boolean from Standard; -- Closed() or Oriented() is done
131 myCstat : Status from BRepCheck; -- result of Closed() or Oriented()
132 myMapVE : IndexedDataMapOfShapeListOfShape from TopTools;
133 myGctrl : Boolean from Standard; -- do check SelfIntersect() or not