mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-07-15 12:35:51 +03:00
Redundant keyword 'mutable' removed in CDL files. In IGESConvGeom_GeomBuilder, unused methods MakeXY() and MakeXYZ() removed. Method StepAP214_AutoDesignGroupAssignment::Init() replicating same method of the base class is removed as it causes CDL extraction error after above (seemingly irrelevant) changes.
228 lines
10 KiB
Plaintext
228 lines
10 KiB
Plaintext
-- Created on: 1998-06-03
|
|
-- Created by: data exchange team
|
|
-- Copyright (c) 1998-1999 Matra Datavision
|
|
-- Copyright (c) 1999-2014 OPEN CASCADE SAS
|
|
--
|
|
-- This file is part of Open CASCADE Technology software library.
|
|
--
|
|
-- This library is free software; you can redistribute it and/or modify it under
|
|
-- the terms of the GNU Lesser General Public License version 2.1 as published
|
|
-- by the Free Software Foundation, with special exception defined in the file
|
|
-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
|
-- distribution for complete text of the license and disclaimer of any warranty.
|
|
--
|
|
-- Alternatively, this file may be used under the terms of Open CASCADE
|
|
-- commercial license or contractual agreement.
|
|
|
|
class WireData from ShapeExtend inherits TShared from MMgt
|
|
|
|
---Purpose: This class provides a data structure necessary for work with the wire as with
|
|
-- ordered list of edges, what is required for many algorithms. The advantage of
|
|
-- this class is that it allows to work with wires which are not correct.
|
|
-- The object of the class ShapeExtend_WireData can be initialized by
|
|
-- TopoDS_Wire, and converted back to TopoDS_Wire.
|
|
-- An edge in the wire is defined by its rank number. Operations of accessing,
|
|
-- adding and removing edge at the given rank number are provided. On the whole
|
|
-- wire, operations of circular permutation and reversing (both orientations of
|
|
-- all edges and order of edges) are provided as well.
|
|
-- This class also provides a method to check if the edge in the wire is a seam
|
|
-- (if the wire lies on a face).
|
|
-- This class is handled by reference. Such an approach gives the following advantages:
|
|
-- 1. Sharing the object of this class strongly optimizes the processes of
|
|
-- analysis and fixing performed in parallel on the wire stored in the form
|
|
-- of this class. Fixing tool (e.g. ShapeFix_Wire) fixes problems one by
|
|
-- one using analyzing tool (e.g. ShapeAnalysis_Wire). Sharing allows not
|
|
-- to reinitialize each time the analyzing tool with modified
|
|
-- ShapeExtend_WireData what consumes certain time.
|
|
-- 2. No copying of contents. The object of ShapeExtend_WireData class has
|
|
-- quite big size, returning it as a result of the function would cause
|
|
-- additional copying of contents if this class were one handled by value.
|
|
-- Moreover, this class is stored as a field in other classes which are
|
|
-- they returned as results of functions, storing only a handle to
|
|
-- ShapeExtend_WireData saves time and memory.
|
|
|
|
uses
|
|
HSequenceOfInteger from TColStd,
|
|
Shape from TopoDS,
|
|
Edge from TopoDS,
|
|
Wire from TopoDS,
|
|
Face from TopoDS,
|
|
HSequenceOfShape from TopTools
|
|
|
|
is
|
|
|
|
Create returns WireData from ShapeExtend;
|
|
---Purpose: Empty constructor, creates empty wire with no edges
|
|
|
|
Create (wire: Wire from TopoDS; chained: Boolean = Standard_True ;
|
|
theManifoldMode :Boolean = Standard_True)
|
|
returns WireData from ShapeExtend;
|
|
---Purpose: Constructor initializing the data from TopoDS_Wire. Calls Init(wire,chained).
|
|
|
|
Init (me: mutable; other: WireData from ShapeExtend);
|
|
---Purpose: Copies data from another WireData
|
|
|
|
Init (me: mutable; wire: Wire from TopoDS; chained: Boolean = Standard_True;
|
|
theManifoldMode :Boolean = Standard_True)
|
|
returns Boolean;
|
|
---Purpose: Loads an already existing wire
|
|
-- If <chained> is True (default), edges are added in the
|
|
-- sequence as they are explored by TopoDS_Iterator
|
|
-- Else, if <chained> is False, wire is explored by
|
|
-- BRepTools_WireExplorer and it is guaranteed that edges will
|
|
-- be sequencially connected.
|
|
-- Remark : In the latter case it can happen that not all edges
|
|
-- will be found (because of limitations of
|
|
-- BRepTools_WireExplorer for disconnected wires and wires
|
|
-- with seam edges).
|
|
|
|
Clear (me: mutable);
|
|
---Purpose: Clears data about Wire.
|
|
|
|
ComputeSeams (me: mutable; enforce: Boolean = Standard_True);
|
|
---Purpose: Computes the list of seam edges
|
|
-- By default (direct call), computing is enforced
|
|
-- For indirect call (from IsSeam) it is redone only if not yet
|
|
-- already done or if the list of edges has changed
|
|
-- Remark : A Seam Edge is an Edge present twice in the list, once as
|
|
-- FORWARD and once as REVERSED
|
|
-- Each sense has its own PCurve, the one for FORWARD
|
|
-- must be set in first
|
|
|
|
SetLast (me: mutable; num: Integer);
|
|
---Purpose: Does a circular permutation in order to set <num>th edge last
|
|
|
|
SetDegeneratedLast (me: mutable);
|
|
---Purpose: When the wire contains at least one degenerated edge, sets it
|
|
-- as last one
|
|
-- Note : It is useful to process pcurves, for instance, while the pcurve
|
|
-- of a DGNR may not be computed from its 3D part (there is none)
|
|
-- it is computed after the other edges have been computed and
|
|
-- chained.
|
|
|
|
Add (me: mutable; edge: Edge from TopoDS; atnum: Integer = 0);
|
|
---Purpose: Adds an edge to a wire, being defined (not yet ended)
|
|
-- This is the plain, basic, function to add an edge
|
|
-- <num> = 0 (D): Appends at end
|
|
-- <num> = 1: Preprends at start
|
|
-- else, Insert before <num>
|
|
-- Remark : Null Edge is simply ignored
|
|
|
|
Add (me: mutable; wire: Wire from TopoDS; atnum: Integer = 0);
|
|
---Purpose: Adds an entire wire, considered as a list of edges
|
|
-- Remark : The wire is assumed to be ordered (TopoDS_Iterator
|
|
-- is used)
|
|
|
|
Add (me: mutable; wire: WireData from ShapeExtend; atnum: Integer = 0);
|
|
---Purpose: Adds a wire in the form of WireData
|
|
|
|
Add (me: mutable; shape: Shape from TopoDS; atnum: Integer = 0);
|
|
---Purpose: Adds an edge or a wire invoking corresponding method Add
|
|
|
|
|
|
AddOriented (me: mutable; edge: Edge from TopoDS; mode: Integer);
|
|
---Purpose: Adds an edge to start or end of <me>, according to <mode>
|
|
-- 0: at end, as direct
|
|
-- 1: at end, as reversed
|
|
-- 2: at start, as direct
|
|
-- 3: at start, as reversed
|
|
-- < 0: no adding
|
|
|
|
AddOriented (me: mutable; wire: Wire from TopoDS; mode: Integer);
|
|
---Purpose: Adds a wire to start or end of <me>, according to <mode>
|
|
-- 0: at end, as direct
|
|
-- 1: at end, as reversed
|
|
-- 2: at start, as direct
|
|
-- 3: at start, as reversed
|
|
-- < 0: no adding
|
|
|
|
AddOriented (me: mutable; shape: Shape from TopoDS; mode: Integer);
|
|
---Purpose: Adds an edge or a wire invoking corresponding method
|
|
-- AddOriented
|
|
|
|
Remove (me: mutable; num: Integer = 0);
|
|
---Purpose: Removes an Edge, given its rank. By default removes the last edge.
|
|
|
|
Set (me: mutable; edge: Edge from TopoDS; num: Integer = 0);
|
|
---Purpose: Replaces an edge at the given
|
|
-- rank number <num> with new one. Default is last edge (<num> = 0).
|
|
|
|
|
|
Reverse (me: mutable);
|
|
---Purpose: Reverses the sense of the list and the orientation of each Edge
|
|
-- This method should be called when either wire has no seam edges
|
|
-- or face is not available
|
|
|
|
Reverse (me: mutable; face: Face from TopoDS);
|
|
---Purpose: Reverses the sense of the list and the orientation of each Edge
|
|
-- The face is necessary for swapping pcurves for seam edges
|
|
-- (first pcurve corresponds to orientation FORWARD, and second to
|
|
-- REVERSED; when edge is reversed, pcurves must be swapped)
|
|
-- If face is NULL, no swapping is performed
|
|
|
|
---Basic Querying:
|
|
|
|
NbEdges (me) returns Integer;
|
|
---Purpose: Returns the count of currently recorded edges
|
|
|
|
NbNonManifoldEdges (me) returns Integer;
|
|
---Purpose: Returns the count of currently recorded non-manifold edges
|
|
|
|
NonmanifoldEdge (me; num: Integer) returns Edge from TopoDS;
|
|
---Purpose: Returns <num>th nonmanifold Edge
|
|
|
|
NonmanifoldEdges(me) returns HSequenceOfShape from TopTools;
|
|
---Purpose: Returns sequence of non-manifold edges
|
|
-- This sequence can be not empty if wire data set in manifold mode but
|
|
-- initial wire has INTERNAL orientation or contains INTERNAL edges
|
|
--
|
|
|
|
ManifoldMode(me: mutable) returns Boolean;
|
|
---Purpose: Returns mode defining manifold wire data or not.
|
|
-- If manifold that nonmanifold edges will not be not
|
|
-- consider during operations(previous behaviour)
|
|
-- and they will be added only in result wire
|
|
-- else non-manifold edges will consider during operations
|
|
---C++: return &
|
|
---Default: True
|
|
|
|
Edge (me; num: Integer) returns Edge from TopoDS;
|
|
---Purpose: Returns <num>th Edge
|
|
|
|
Index (me: mutable; edge: Edge from TopoDS) returns Integer;
|
|
---Purpose: Returns the index of the edge
|
|
-- If the edge is a seam the orientation is also checked
|
|
-- Returns 0 if the edge is not found in the list
|
|
|
|
IsSeam (me: mutable; num: Integer) returns Boolean;
|
|
---Purpose: Tells if an Edge is seam (see ComputeSeams)
|
|
-- An edge is considered as seam if it presents twice in
|
|
-- the edge list, once as FORWARD and once as REVERSED.
|
|
|
|
Wire (me) returns Wire from TopoDS;
|
|
---Purpose: Makes TopoDS_Wire using
|
|
-- BRep_Builder (just creates the TopoDS_Wire object and adds
|
|
-- all edges into it). This method should be called when
|
|
-- the wire is correct (for example, after successful
|
|
-- fixes by ShapeFix_Wire) and adjacent edges share common
|
|
-- vertices. In case if adjacent edges do not share the same
|
|
-- vertices the resulting TopoDS_Wire will be invalid.
|
|
|
|
WireAPIMake (me) returns Wire from TopoDS;
|
|
---Purpose: Makes TopoDS_Wire using
|
|
-- BRepAPI_MakeWire. Class BRepAPI_MakeWire merges
|
|
-- geometrically coincided vertices and can disturb
|
|
-- correct order of edges in the wire. If this class fails,
|
|
-- null shape is returned.
|
|
|
|
fields
|
|
|
|
myEdges: HSequenceOfShape from TopTools;
|
|
myNonmanifoldEdges : HSequenceOfShape from TopTools;
|
|
mySeams: HSequenceOfInteger from TColStd;
|
|
mySeamF: Integer;
|
|
mySeamR: Integer;
|
|
myManifoldMode : Boolean;
|
|
|
|
end WireData;
|