|
||||
File indexing completed on 2025-01-18 10:04:56
0001 // Created on: 1998-06-03 0002 // Created by: data exchange team 0003 // Copyright (c) 1998-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 _ShapeFix_Wire_HeaderFile 0018 #define _ShapeFix_Wire_HeaderFile 0019 0020 #include <Standard.hxx> 0021 0022 #include <Standard_Integer.hxx> 0023 #include <Standard_Real.hxx> 0024 #include <ShapeFix_Root.hxx> 0025 #include <TopoDS_Wire.hxx> 0026 #include <ShapeExtend_Status.hxx> 0027 class ShapeFix_Edge; 0028 class ShapeAnalysis_Wire; 0029 class TopoDS_Wire; 0030 class TopoDS_Face; 0031 class ShapeExtend_WireData; 0032 class Geom_Surface; 0033 class TopLoc_Location; 0034 class ShapeAnalysis_WireOrder; 0035 0036 0037 class ShapeFix_Wire; 0038 DEFINE_STANDARD_HANDLE(ShapeFix_Wire, ShapeFix_Root) 0039 0040 //! This class provides a set of tools for repairing a wire. 0041 //! 0042 //! These are methods Fix...(), organised in two levels: 0043 //! 0044 //! Level 1: Advanced - each method in this level fixes one separate problem, 0045 //! usually dealing with either single edge or connection of the 0046 //! two adjacent edges. These methods should be used carefully and 0047 //! called in right sequence, because some of them depend on others. 0048 //! 0049 //! Level 2: Public (API) - methods which group several methods of level 1 0050 //! and call them in a proper sequence in order to make some 0051 //! consistent set of fixes for a whole wire. It is possible to 0052 //! control calls to methods of the advanced level from methods of 0053 //! the public level by use of flags Fix..Mode() (see below). 0054 //! 0055 //! Fixes can be made in three ways: 0056 //! 1. Increasing tolerance of an edge or a vertex 0057 //! 2. Changing topology (adding/removing/replacing edge in the wire 0058 //! and/or replacing the vertex in the edge) 0059 //! 3. Changing geometry (shifting vertex or adjusting ends of edge 0060 //! curve to vertices, or recomputing curves of the edge) 0061 //! 0062 //! When fix can be made in more than one way (e.g., either 0063 //! by increasing tolerance or shifting a vertex), it is chosen 0064 //! according to the flags: 0065 //! ModifyTopologyMode - allows modification of the topology. 0066 //! This flag can be set when fixing a wire on 0067 //! the separate (free) face, and should be 0068 //! unset for face which is part of shell. 0069 //! ModifyGeometryMode - allows modification of the geometry. 0070 //! 0071 //! The order of descriptions of Fix() methods in this CDL 0072 //! approximately corresponds to the optimal order of calls. 0073 //! 0074 //! NOTE: most of fixing methods expect edges in the 0075 //! ShapeExtend_WireData to be ordered, so it is necessary to make 0076 //! call to FixReorder() before any other fixes 0077 //! 0078 //! ShapeFix_Wire should be initialized prior to any fix by the 0079 //! following data: 0080 //! a) Wire (ether TopoDS_Wire or ShapeExtend_Wire) 0081 //! b) Face or surface 0082 //! c) Precision 0083 //! d) Maximal tail angle and width 0084 //! This can be done either by calling corresponding methods 0085 //! (LoadWire, SetFace or SetSurface, SetPrecision, SetMaxTailAngle 0086 //! and SetMaxTailWidth), or 0087 //! by loading already filled ShapeAnalisis_Wire with method Load 0088 class ShapeFix_Wire : public ShapeFix_Root 0089 { 0090 0091 public: 0092 0093 0094 //! Empty Constructor, creates clear object with default flags 0095 Standard_EXPORT ShapeFix_Wire(); 0096 0097 //! Create new object with default flags and prepare it for use 0098 //! (Loads analyzer with all the data for the wire and face) 0099 Standard_EXPORT ShapeFix_Wire(const TopoDS_Wire& wire, const TopoDS_Face& face, const Standard_Real prec); 0100 0101 //! Sets all modes to default 0102 Standard_EXPORT void ClearModes(); 0103 0104 //! Clears all statuses 0105 Standard_EXPORT void ClearStatuses(); 0106 0107 //! Load analyzer with all the data for the wire and face 0108 //! and drops all fixing statuses 0109 Standard_EXPORT void Init (const TopoDS_Wire& wire, const TopoDS_Face& face, const Standard_Real prec); 0110 0111 //! Load analyzer with all the data already prepared 0112 //! and drops all fixing statuses 0113 //! If analyzer contains face, there is no need to set it 0114 //! by SetFace or SetSurface 0115 Standard_EXPORT void Init (const Handle(ShapeAnalysis_Wire)& saw); 0116 0117 //! Load data for the wire, and drops all fixing statuses 0118 Standard_EXPORT void Load (const TopoDS_Wire& wire); 0119 0120 //! Load data for the wire, and drops all fixing statuses 0121 Standard_EXPORT void Load (const Handle(ShapeExtend_WireData)& sbwd); 0122 0123 //! Set working face for the wire 0124 void SetFace (const TopoDS_Face& face); 0125 0126 //! Set surface for the wire 0127 void SetSurface (const Handle(Geom_Surface)& surf); 0128 0129 //! Set surface for the wire 0130 void SetSurface (const Handle(Geom_Surface)& surf, const TopLoc_Location& loc); 0131 0132 //! Set working precision (to root and to analyzer) 0133 Standard_EXPORT virtual void SetPrecision (const Standard_Real prec) Standard_OVERRIDE; 0134 0135 //! Sets the maximal allowed angle of the tails in radians. 0136 Standard_EXPORT void SetMaxTailAngle (const Standard_Real theMaxTailAngle); 0137 0138 //! Sets the maximal allowed width of the tails. 0139 Standard_EXPORT void SetMaxTailWidth (const Standard_Real theMaxTailWidth); 0140 0141 //! Tells if the wire is loaded 0142 Standard_Boolean IsLoaded() const; 0143 0144 //! Tells if the wire and face are loaded 0145 Standard_Boolean IsReady() const; 0146 0147 //! returns number of edges in the working wire 0148 Standard_EXPORT Standard_Integer NbEdges() const; 0149 0150 //! Makes the resulting Wire (by basic Brep_Builder) 0151 TopoDS_Wire Wire() const; 0152 0153 //! Makes the resulting Wire (by BRepAPI_MakeWire) 0154 TopoDS_Wire WireAPIMake() const; 0155 0156 //! returns field Analyzer (working tool) 0157 Handle(ShapeAnalysis_Wire) Analyzer() const; 0158 0159 //! returns working wire 0160 const Handle(ShapeExtend_WireData)& WireData() const; 0161 0162 //! returns working face (Analyzer.Face()) 0163 const TopoDS_Face& Face() const; 0164 0165 //! Returns (modifiable) the flag which defines whether it is 0166 //! allowed to modify topology of the wire during fixing 0167 //! (adding/removing edges etc.) 0168 Standard_Boolean& ModifyTopologyMode(); 0169 0170 //! Returns (modifiable) the flag which defines whether the Fix..() 0171 //! methods are allowed to modify geometry of the edges and vertices 0172 Standard_Boolean& ModifyGeometryMode(); 0173 0174 //! Returns (modifiable) the flag which defines whether the Fix..() 0175 //! methods are allowed to modify RemoveLoop of the edges 0176 Standard_Integer& ModifyRemoveLoopMode(); 0177 0178 //! Returns (modifiable) the flag which defines whether the wire 0179 //! is to be closed (by calling methods like FixDegenerated() 0180 //! and FixConnected() for last and first edges). 0181 Standard_Boolean& ClosedWireMode(); 0182 0183 //! Returns (modifiable) the flag which defines whether the 2d (True) 0184 //! representation of the wire is preferable over 3d one (in the 0185 //! case of ambiguity in FixEdgeCurves). 0186 Standard_Boolean& PreferencePCurveMode(); 0187 0188 //! Returns (modifiable) the flag which defines whether tool 0189 //! tries to fix gaps first by changing curves ranges (i.e. 0190 //! using intersection, extrema, projections) or not. 0191 Standard_Boolean& FixGapsByRangesMode(); 0192 0193 Standard_Integer& FixReorderMode(); 0194 0195 Standard_Integer& FixSmallMode(); 0196 0197 Standard_Integer& FixConnectedMode(); 0198 0199 Standard_Integer& FixEdgeCurvesMode(); 0200 0201 Standard_Integer& FixDegeneratedMode(); 0202 0203 Standard_Integer& FixSelfIntersectionMode(); 0204 0205 Standard_Integer& FixLackingMode(); 0206 0207 Standard_Integer& FixGaps3dMode(); 0208 0209 //! Returns (modifiable) the flag for corresponding Fix..() method 0210 //! which defines whether this method will be called from the 0211 //! method APIFix(): 0212 //! -1 default 0213 //! 1 method will be called 0214 //! 0 method will not be called 0215 Standard_Integer& FixGaps2dMode(); 0216 0217 Standard_Integer& FixReversed2dMode(); 0218 0219 Standard_Integer& FixRemovePCurveMode(); 0220 0221 Standard_Integer& FixAddPCurveMode(); 0222 0223 Standard_Integer& FixRemoveCurve3dMode(); 0224 0225 Standard_Integer& FixAddCurve3dMode(); 0226 0227 Standard_Integer& FixSeamMode(); 0228 0229 Standard_Integer& FixShiftedMode(); 0230 0231 Standard_Integer& FixSameParameterMode(); 0232 0233 Standard_Integer& FixVertexToleranceMode(); 0234 0235 Standard_Integer& FixNotchedEdgesMode(); 0236 0237 Standard_Integer& FixSelfIntersectingEdgeMode(); 0238 0239 Standard_Integer& FixIntersectingEdgesMode(); 0240 0241 //! Returns (modifiable) the flag for corresponding Fix..() method 0242 //! which defines whether this method will be called from the 0243 //! corresponding Fix..() method of the public level: 0244 //! -1 default 0245 //! 1 method will be called 0246 //! 0 method will not be called 0247 Standard_Integer& FixNonAdjacentIntersectingEdgesMode(); 0248 0249 Standard_Integer& FixTailMode(); 0250 0251 //! This method performs all the available fixes. 0252 //! If some fix is turned on or off explicitly by the Fix..Mode() flag, 0253 //! this fix is either called or not depending on that flag. 0254 //! Else (i.e. if flag is default) fix is called depending on the 0255 //! situation: some fixes are not called or are limited if order of 0256 //! edges in the wire is not OK, or depending on modes 0257 //! 0258 //! The order of the fixes and default behaviour of Perform() are: 0259 //! FixReorder 0260 //! FixSmall (with lockvtx true if ! TopoMode or if wire is not ordered) 0261 //! FixConnected (if wire is ordered) 0262 //! FixEdgeCurves (without FixShifted if wire is not ordered) 0263 //! FixDegenerated (if wire is ordered) 0264 //! FixSelfIntersection (if wire is ordered and ClosedMode is True) 0265 //! FixLacking (if wire is ordered) 0266 Standard_EXPORT Standard_Boolean Perform(); 0267 0268 //! Performs an analysis and reorders edges in the wire using class WireOrder. 0269 //! Flag <theModeBoth> determines the use of miscible mode if necessary. 0270 Standard_EXPORT Standard_Boolean FixReorder(Standard_Boolean theModeBoth = Standard_False); 0271 0272 //! Applies FixSmall(num) to all edges in the wire 0273 Standard_EXPORT Standard_Integer FixSmall (const Standard_Boolean lockvtx, const Standard_Real precsmall = 0.0); 0274 0275 //! Applies FixConnected(num) to all edges in the wire 0276 //! Connection between first and last edges is treated only if 0277 //! flag ClosedMode is True 0278 //! If <prec> is -1 then MaxTolerance() is taken. 0279 Standard_EXPORT Standard_Boolean FixConnected (const Standard_Real prec = -1.0); 0280 0281 //! Groups the fixes dealing with 3d and pcurves of the edges. 0282 //! The order of the fixes and the default behaviour are: 0283 //! ShapeFix_Edge::FixReversed2d 0284 //! ShapeFix_Edge::FixRemovePCurve (only if forced) 0285 //! ShapeFix_Edge::FixAddPCurve 0286 //! ShapeFix_Edge::FixRemoveCurve3d (only if forced) 0287 //! ShapeFix_Edge::FixAddCurve3d 0288 //! FixSeam, 0289 //! FixShifted, 0290 //! ShapeFix_Edge::FixSameParameter 0291 Standard_EXPORT Standard_Boolean FixEdgeCurves(); 0292 0293 //! Applies FixDegenerated(num) to all edges in the wire 0294 //! Connection between first and last edges is treated only if 0295 //! flag ClosedMode is True 0296 Standard_EXPORT Standard_Boolean FixDegenerated(); 0297 0298 //! Applies FixSelfIntersectingEdge(num) and 0299 //! FixIntersectingEdges(num) to all edges in the wire and 0300 //! FixIntersectingEdges(num1, num2) for all pairs num1 and num2 0301 //! such that num2 >= num1 + 2 0302 //! and removes wrong edges if any 0303 Standard_EXPORT Standard_Boolean FixSelfIntersection(); 0304 0305 //! Applies FixLacking(num) to all edges in the wire 0306 //! Connection between first and last edges is treated only if 0307 //! flag ClosedMode is True 0308 //! If <force> is False (default), test for connectness is done with 0309 //! precision of vertex between edges, else it is done with minimal 0310 //! value of vertex tolerance and Analyzer.Precision(). 0311 //! Hence, <force> will lead to inserting lacking edges in replacement 0312 //! of vertices which have big tolerances. 0313 Standard_EXPORT Standard_Boolean FixLacking (const Standard_Boolean force = Standard_False); 0314 0315 //! Fixes a wire to be well closed 0316 //! It performs FixConnected, FixDegenerated and FixLacking between 0317 //! last and first edges (independingly on flag ClosedMode and modes 0318 //! for these fixings) 0319 //! If <prec> is -1 then MaxTolerance() is taken. 0320 Standard_EXPORT Standard_Boolean FixClosed (const Standard_Real prec = -1.0); 0321 0322 //! Fixes gaps between ends of 3d curves on adjacent edges 0323 //! myPrecision is used to detect the gaps. 0324 Standard_EXPORT Standard_Boolean FixGaps3d(); 0325 0326 //! Fixes gaps between ends of pcurves on adjacent edges 0327 //! myPrecision is used to detect the gaps. 0328 Standard_EXPORT Standard_Boolean FixGaps2d(); 0329 0330 //! Reorder edges in the wire as determined by WireOrder 0331 //! that should be filled and computed before 0332 Standard_EXPORT Standard_Boolean FixReorder (const ShapeAnalysis_WireOrder& wi); 0333 0334 //! Fixes Null Length Edge to be removed 0335 //! If an Edge has Null Length (regarding preci, or <precsmall> 0336 //! - what is smaller), it should be removed 0337 //! It can be with no problem if its two vertices are the same 0338 //! Else, if lockvtx is False, it is removed and its end vertex 0339 //! is put on the preceding edge 0340 //! But if lockvtx is True, this edge must be kept ... 0341 Standard_EXPORT Standard_Boolean FixSmall (const Standard_Integer num, const Standard_Boolean lockvtx, const Standard_Real precsmall); 0342 0343 //! Fixes connected edges (preceding and current) 0344 //! Forces Vertices (end of preceding-begin of current) to be 0345 //! the same one 0346 //! Tests with starting preci or, if given greater, <prec> 0347 //! If <prec> is -1 then MaxTolerance() is taken. 0348 Standard_EXPORT Standard_Boolean FixConnected (const Standard_Integer num, const Standard_Real prec); 0349 0350 //! Fixes a seam edge 0351 //! A Seam edge has two pcurves, one for forward. one for reversed 0352 //! The forward pcurve must be set as first 0353 //! 0354 //! NOTE that correct order of pcurves in the seam edge depends on 0355 //! its orientation (i.e., on orientation of the wire, method of 0356 //! exploration of edges etc.). 0357 //! Since wire represented by the ShapeExtend_WireData is always forward 0358 //! (orientation is accounted by edges), it will work correct if: 0359 //! 1. Wire created from ShapeExtend_WireData with methods 0360 //! ShapeExtend_WireData::Wire..() is added into the FORWARD face 0361 //! (orientation can be applied later) 0362 //! 2. Wire is extracted from the face with orientation not composed 0363 //! with orientation of the face 0364 Standard_EXPORT Standard_Boolean FixSeam (const Standard_Integer num); 0365 0366 //! Fixes edges which have pcurves shifted by whole parameter 0367 //! range on the closed surface (the case may occur if pcurve 0368 //! of edge was computed by projecting 3d curve, which goes 0369 //! along the seam). 0370 //! It compares each two consequent edges and tries to connect them 0371 //! if distance between ends is near to range of the surface. 0372 //! It also can detect and fix the case if all pcurves are connected, 0373 //! but lie out of parametric bounds of the surface. 0374 //! In addition to FixShifted from ShapeFix_Wire, more 0375 //! sophisticated check of degenerate points is performed, 0376 //! and special cases like sphere given by two meridians 0377 //! are treated. 0378 Standard_EXPORT Standard_Boolean FixShifted(); 0379 0380 //! Fixes Degenerated Edge 0381 //! Checks an <num-th> edge or a point between <num>th-1 and <num>th 0382 //! edges for a singularity on a supporting surface. 0383 //! If singularity is detected, either adds new degenerated edge 0384 //! (before <num>th), or makes <num>th edge to be degenerated. 0385 Standard_EXPORT Standard_Boolean FixDegenerated (const Standard_Integer num); 0386 0387 //! Fixes Lacking Edge 0388 //! Test if two adjucent edges are disconnected in 2d (while 0389 //! connected in 3d), and in that case either increase tolerance 0390 //! of the vertex or add a new edge (straight in 2d space), in 0391 //! order to close wire in 2d. 0392 //! Returns True if edge was added or tolerance was increased. 0393 Standard_EXPORT Standard_Boolean FixLacking (const Standard_Integer num, const Standard_Boolean force = Standard_False); 0394 0395 Standard_EXPORT Standard_Boolean FixNotchedEdges(); 0396 0397 //! Fixes gap between ends of 3d curves on num-1 and num-th edges. 0398 //! myPrecision is used to detect the gap. 0399 //! If convert is True, converts curves to bsplines to bend. 0400 Standard_EXPORT Standard_Boolean FixGap3d (const Standard_Integer num, const Standard_Boolean convert = Standard_False); 0401 0402 //! Fixes gap between ends of pcurves on num-1 and num-th edges. 0403 //! myPrecision is used to detect the gap. 0404 //! If convert is True, converts pcurves to bsplines to bend. 0405 Standard_EXPORT Standard_Boolean FixGap2d (const Standard_Integer num, const Standard_Boolean convert = Standard_False); 0406 0407 Standard_EXPORT Standard_Boolean FixTails(); 0408 0409 Standard_Boolean StatusReorder (const ShapeExtend_Status status) const; 0410 0411 Standard_Boolean StatusSmall (const ShapeExtend_Status status) const; 0412 0413 Standard_Boolean StatusConnected (const ShapeExtend_Status status) const; 0414 0415 Standard_Boolean StatusEdgeCurves (const ShapeExtend_Status status) const; 0416 0417 Standard_Boolean StatusDegenerated (const ShapeExtend_Status status) const; 0418 0419 Standard_Boolean StatusSelfIntersection (const ShapeExtend_Status status) const; 0420 0421 Standard_Boolean StatusLacking (const ShapeExtend_Status status) const; 0422 0423 Standard_Boolean StatusClosed (const ShapeExtend_Status status) const; 0424 0425 Standard_Boolean StatusGaps3d (const ShapeExtend_Status status) const; 0426 0427 Standard_Boolean StatusGaps2d (const ShapeExtend_Status status) const; 0428 0429 Standard_Boolean StatusNotches (const ShapeExtend_Status status) const; 0430 0431 //! Querying the status of performed API fixing procedures 0432 //! Each Status..() methods gives information about the last call to 0433 //! the corresponding Fix..() method of API level: 0434 //! OK : no problems detected; nothing done 0435 //! DONE: some problem(s) was(were) detected and successfully fixed 0436 //! FAIL: some problem(s) cannot be fixed 0437 Standard_Boolean StatusRemovedSegment() const; 0438 0439 Standard_Boolean StatusFixTails (const ShapeExtend_Status status) const; 0440 0441 //! Queries the status of last call to methods Fix... of 0442 //! advanced level 0443 //! For details see corresponding methods; universal statuses are: 0444 //! OK : problem not detected; nothing done 0445 //! DONE: problem was detected and successfully fixed 0446 //! FAIL: problem cannot be fixed 0447 Standard_Boolean LastFixStatus (const ShapeExtend_Status status) const; 0448 0449 //! Returns tool for fixing wires. 0450 Handle(ShapeFix_Edge) FixEdgeTool() const; 0451 0452 0453 0454 0455 DEFINE_STANDARD_RTTIEXT(ShapeFix_Wire,ShapeFix_Root) 0456 0457 protected: 0458 0459 0460 //! Updates WireData if some replacements are made 0461 //! This is necessary for wires (unlike other shape types) 0462 //! since one edge can present in wire several times 0463 Standard_EXPORT void UpdateWire(); 0464 0465 Handle(ShapeFix_Edge) myFixEdge; 0466 Handle(ShapeAnalysis_Wire) myAnalyzer; 0467 Standard_Boolean myGeomMode; 0468 Standard_Boolean myTopoMode; 0469 Standard_Boolean myClosedMode; 0470 Standard_Boolean myPreference2d; 0471 Standard_Boolean myFixGapsByRanges; 0472 Standard_Integer myFixReversed2dMode; 0473 Standard_Integer myFixRemovePCurveMode; 0474 Standard_Integer myFixAddPCurveMode; 0475 Standard_Integer myFixRemoveCurve3dMode; 0476 Standard_Integer myFixAddCurve3dMode; 0477 Standard_Integer myFixSeamMode; 0478 Standard_Integer myFixShiftedMode; 0479 Standard_Integer myFixSameParameterMode; 0480 Standard_Integer myFixVertexToleranceMode; 0481 Standard_Integer myFixNotchedEdgesMode; 0482 Standard_Integer myFixSelfIntersectingEdgeMode; 0483 Standard_Integer myFixIntersectingEdgesMode; 0484 Standard_Integer myFixNonAdjacentIntersectingEdgesMode; 0485 Standard_Integer myFixTailMode; 0486 Standard_Integer myRemoveLoopMode; 0487 Standard_Integer myFixReorderMode; 0488 Standard_Integer myFixSmallMode; 0489 Standard_Integer myFixConnectedMode; 0490 Standard_Integer myFixEdgeCurvesMode; 0491 Standard_Integer myFixDegeneratedMode; 0492 Standard_Integer myFixSelfIntersectionMode; 0493 Standard_Integer myFixLackingMode; 0494 Standard_Integer myFixGaps3dMode; 0495 Standard_Integer myFixGaps2dMode; 0496 Standard_Integer myLastFixStatus; 0497 Standard_Integer myStatusReorder; 0498 Standard_Integer myStatusSmall; 0499 Standard_Integer myStatusConnected; 0500 Standard_Integer myStatusEdgeCurves; 0501 Standard_Integer myStatusDegenerated; 0502 Standard_Integer myStatusClosed; 0503 Standard_Integer myStatusSelfIntersection; 0504 Standard_Integer myStatusLacking; 0505 Standard_Integer myStatusGaps3d; 0506 Standard_Integer myStatusGaps2d; 0507 Standard_Boolean myStatusRemovedSegment; 0508 Standard_Integer myStatusNotches; 0509 Standard_Integer myStatusFixTails; 0510 Standard_Real myMaxTailAngleSine; 0511 Standard_Real myMaxTailWidth; 0512 0513 0514 private: 0515 0516 0517 //! Detect and fix self-intersecting pcurve of edge <num>. 0518 //! Fix is made by one of two methods: 0519 //! - cut out the self-intersection loop on pcurve (thus 0520 //! producing C0 pcurve). This also increases tolerance of edge 0521 //! in order to satisfy SameParameter requirement. 0522 //! - increase tolerance of the vertex of edge nearest to the 0523 //! self-intersection point so that it comprises that point. 0524 //! The first method is considered only if ModifyGeometryMode 0525 //! is True. In that case, the method which requires less 0526 //! increasing of tolerance is selected. 0527 Standard_EXPORT Standard_Boolean FixSelfIntersectingEdge (const Standard_Integer num); 0528 0529 //! Test if two consequent edges are intersecting and fix it 0530 //! by increasing of tolerance of vertex between edges, 0531 //! shifting this vertex to the point of intersection, 0532 //! cutting edges to the intersection point. 0533 //! It also can give signal to remove edge if it whole is cut by 0534 //! intersection (if flag ModifyTopologyMode is set). 0535 Standard_EXPORT Standard_Boolean FixIntersectingEdges (const Standard_Integer num); 0536 0537 //! Tests if two edges <num1> and <num2> are intersecting and 0538 //! fix intersection by increasing of tolerance of vertex 0539 //! nearest to the point of intersection. 0540 Standard_EXPORT Standard_Boolean FixIntersectingEdges (const Standard_Integer num1, const Standard_Integer num2); 0541 0542 Standard_EXPORT void FixDummySeam (const Standard_Integer num); 0543 0544 0545 0546 }; 0547 0548 0549 #include <ShapeFix_Wire.lxx> 0550 0551 0552 0553 0554 0555 #endif // _ShapeFix_Wire_HeaderFile
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |