1 -- Created on: 1999-04-15
2 -- Created by: Roman LYGIN
3 -- Copyright (c) 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
9 -- under the terms of the GNU Lesser General Public 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 class WireDivide from ShapeUpgrade inherits Tool from ShapeUpgrade
19 ---Purpose: Divides edges in the wire lying on the face or free wires or
20 -- free edges with a criterion.
21 -- Splits 3D curve and pcurve(s) of the edge on the face.
22 -- Other pcurves which may be associated with the edge are simply
24 -- If 3D curve is splitted then pcurve on the face is splitted as
25 -- well, and wice-versa.
26 -- Input shape is not modified.
27 -- The modifications made are recorded in external context
28 -- (ShapeBuild_ReShape). This tool is applied to all edges
29 -- before splitting them in order to keep sharing.
38 SplitCurve3d from ShapeUpgrade,
39 SplitCurve2d from ShapeUpgrade,
40 TransferParameters from ShapeAnalysis,
41 Status from ShapeExtend,
42 HSequenceOfReal from TColStd,
43 EdgeDivide from ShapeUpgrade,
44 FixSmallCurves from ShapeUpgrade
47 Create returns mutable WireDivide from ShapeUpgrade;
48 ---Purpose: Empty constructor
50 Init (me: mutable; W: Wire from TopoDS; F: Face from TopoDS);
51 ---Purpose: Initializes by wire and face
53 Init (me: mutable; W: Wire from TopoDS;
54 S: Surface from Geom);
55 ---Purpose: Initializes by wire and surface
57 Load (me: mutable; W: Wire from TopoDS);
58 ---Purpose: Loads working wire
60 Load (me: mutable; E: Edge from TopoDS);
61 ---Purpose: Creates wire of one edge and calls Load for wire
63 SetFace (me: mutable; F: Face from TopoDS);
64 ---Purpose: Sets supporting surface by face
66 SetSurface (me: mutable; S: Surface from Geom);
67 ---Purpose: Sets supporting surface
69 SetSurface (me: mutable; S: Surface from Geom; L: Location from TopLoc);
70 ---Purpose: Sets supporting surface with location
73 Perform (me: mutable) is virtual;
74 ---Purpose: Computes the resulting wire by splitting all the edges
75 -- according to splitting criteria.
76 -- All the modifications made are recorded in context
77 -- (ShapeBuild_ReShape). This tool is applied to all edges
78 -- before splitting them in order to keep sharings.
79 -- If no supporting face or surface is defined, only 3d
80 -- splitting criteria are used.
82 Wire (me) returns Wire from TopoDS;
83 ---C++: return const &
84 ---Purpose: Gives the resulting Wire (equal to initial one if not done
85 -- or Null if not loaded)
87 Status (me; status: Status from ShapeExtend) returns Boolean;
88 ---Purpose: Queries status of last call to Perform()
89 -- OK - no edges were splitted, wire left untouched
90 -- DONE1 - some edges were splitted
91 -- FAIL1 - some edges have no 3d curve (skipped)
92 -- FAIL2 - some edges have no pcurve (skipped)
96 SetSplitCurve3dTool(me: mutable; splitCurve3dTool: SplitCurve3d from ShapeUpgrade);
97 ---Purpose: Sets the tool for splitting 3D curves.
99 SetSplitCurve2dTool(me: mutable; splitCurve2dTool: SplitCurve2d from ShapeUpgrade);
100 ---Purpose: Sets the tool for splitting pcurves.
102 SetTransferParamTool(me: mutable; TransferParam: TransferParameters from ShapeAnalysis);
103 ---Purpose: Sets the tool for Transfer parameters between curves and pcurves.
105 GetSplitCurve3dTool(me) returns SplitCurve3d from ShapeUpgrade
106 is virtual protected;
107 ---Purpose: Returns the tool for splitting 3D curves.
108 ---Remark: here TopoDS_Edge can be used to transfer some specific information (tolerance, etc)
110 GetSplitCurve2dTool(me) returns SplitCurve2d from ShapeUpgrade
111 is virtual protected;
112 ---Purpose: Returns the tool for splitting pcurves.
114 SetEdgeDivideTool (me: mutable; edgeDivideTool: EdgeDivide from ShapeUpgrade);
115 ---Purpose: Sets tool for splitting edge
117 GetEdgeDivideTool (me) returns EdgeDivide from ShapeUpgrade
119 ---Purpose: returns tool for splitting edges
121 GetTransferParamTool(me:mutable) returns TransferParameters from ShapeAnalysis
123 ---Purpose: Returns the tool for Transfer of parameters.
125 SetEdgeMode(me : mutable;EdgeMode : Integer);
126 ---Purpose:Sets mode for splitting 3d curves from edges.
127 -- 0 - only curve 3d from free edges.
128 -- 1 - only curve 3d from shared edges.
131 SetFixSmallCurveTool(me : mutable; FixSmallCurvesTool : FixSmallCurves from ShapeUpgrade);
132 ---Purpose:Sets tool for fixing small curves with specified min tolerance;
134 GetFixSmallCurveTool(me) returns FixSmallCurves from ShapeUpgrade;
135 ---Purpose:Returns tool for fixing small curves
139 mySplitCurve3dTool: SplitCurve3d from ShapeUpgrade;
140 mySplitCurve2dTool: SplitCurve2d from ShapeUpgrade;
141 myEdgeDivide : EdgeDivide from ShapeUpgrade;
142 myTransferParamTool : TransferParameters from ShapeAnalysis;
143 myFace : Face from TopoDS is protected; -- supporting face
144 myWire : Wire from TopoDS is protected; -- wire being splitted
145 myStatus: Integer is protected;
146 myEdgeMode : Integer is protected;
147 myFixSmallCurveTool : FixSmallCurves from ShapeUpgrade;