mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-04 13:13:25 +03:00
0024002: Overall code and build procedure refactoring -- automatic
Automatic upgrade of OCCT code by command "occt_upgrade . -nocdl": - WOK-generated header files from inc and sources from drv are moved to src - CDL files removed - All packages are converted to nocdlpack
This commit is contained in:
281
src/HLRBRep/HLRBRep_Data.hxx
Normal file
281
src/HLRBRep/HLRBRep_Data.hxx
Normal file
@@ -0,0 +1,281 @@
|
||||
// Created on: 1993-01-11
|
||||
// Created by: Christophe MARION
|
||||
// Copyright (c) 1993-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.
|
||||
|
||||
#ifndef _HLRBRep_Data_HeaderFile
|
||||
#define _HLRBRep_Data_HeaderFile
|
||||
|
||||
#include <Standard.hxx>
|
||||
#include <Standard_Type.hxx>
|
||||
|
||||
#include <Standard_Integer.hxx>
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
#include <HLRBRep_Array1OfEData.hxx>
|
||||
#include <HLRBRep_Array1OfFData.hxx>
|
||||
#include <TColStd_Array1OfInteger.hxx>
|
||||
#include <Standard_ShortReal.hxx>
|
||||
#include <HLRAlgo_Projector.hxx>
|
||||
#include <HLRBRep_CLProps.hxx>
|
||||
#include <HLRBRep_SLProps.hxx>
|
||||
#include <Standard_Real.hxx>
|
||||
#include <HLRBRep_FaceIterator.hxx>
|
||||
#include <Standard_Address.hxx>
|
||||
#include <GeomAbs_SurfaceType.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <GeomAbs_CurveType.hxx>
|
||||
#include <TopAbs_Orientation.hxx>
|
||||
#include <HLRBRep_Intersector.hxx>
|
||||
#include <HLRAlgo_Interference.hxx>
|
||||
#include <MMgt_TShared.hxx>
|
||||
#include <BRepTopAdaptor_MapOfShapeTool.hxx>
|
||||
#include <TopAbs_State.hxx>
|
||||
#include <HLRAlgo_InterferenceList.hxx>
|
||||
class BRepTopAdaptor_TopolTool;
|
||||
class StdFail_UndefinedDerivative;
|
||||
class HLRAlgo_Projector;
|
||||
class HLRAlgo_Interference;
|
||||
class gp_Dir2d;
|
||||
class HLRBRep_EdgeData;
|
||||
class HLRBRep_FaceData;
|
||||
class IntRes2d_IntersectionPoint;
|
||||
|
||||
|
||||
class HLRBRep_Data;
|
||||
DEFINE_STANDARD_HANDLE(HLRBRep_Data, MMgt_TShared)
|
||||
|
||||
|
||||
class HLRBRep_Data : public MMgt_TShared
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Create an empty data structure of <NV> vertices,
|
||||
//! <NE> edges and <NF> faces.
|
||||
Standard_EXPORT HLRBRep_Data(const Standard_Integer NV, const Standard_Integer NE, const Standard_Integer NF);
|
||||
|
||||
//! Write <DS> in me with a translation of
|
||||
//! <dv>,<de>,<df>.
|
||||
Standard_EXPORT void Write (const Handle(HLRBRep_Data)& DS, const Standard_Integer dv, const Standard_Integer de, const Standard_Integer df);
|
||||
|
||||
HLRBRep_Array1OfEData& EDataArray();
|
||||
|
||||
HLRBRep_Array1OfFData& FDataArray();
|
||||
|
||||
//! Set the tolerance for the rejections during the
|
||||
//! exploration
|
||||
void Tolerance (const Standard_ShortReal tol);
|
||||
|
||||
//! returns the tolerance for the rejections during
|
||||
//! the exploration
|
||||
Standard_ShortReal Tolerance() const;
|
||||
|
||||
//! end of building of the Data and updating
|
||||
//! all the informations linked to the projection.
|
||||
Standard_EXPORT void Update (const HLRAlgo_Projector& P);
|
||||
|
||||
HLRAlgo_Projector& Projector();
|
||||
|
||||
Standard_Integer NbVertices() const;
|
||||
|
||||
Standard_Integer NbEdges() const;
|
||||
|
||||
Standard_Integer NbFaces() const;
|
||||
|
||||
TopTools_IndexedMapOfShape& EdgeMap();
|
||||
|
||||
TopTools_IndexedMapOfShape& FaceMap();
|
||||
|
||||
//! to compare with only non rejected edges.
|
||||
Standard_EXPORT void InitBoundSort (const Standard_Address MinMaxTot, const Standard_Integer e1, const Standard_Integer e2);
|
||||
|
||||
//! Begin an iteration only on visible Edges
|
||||
//! crossing the face number <FI>.
|
||||
Standard_EXPORT void InitEdge (const Standard_Integer FI, BRepTopAdaptor_MapOfShapeTool& MST);
|
||||
|
||||
Standard_EXPORT Standard_Boolean MoreEdge();
|
||||
|
||||
Standard_EXPORT void NextEdge (const Standard_Boolean skip = Standard_True);
|
||||
|
||||
//! Returns the current Edge
|
||||
Standard_EXPORT Standard_Integer Edge() const;
|
||||
|
||||
//! Returns true if the current edge to be hidden
|
||||
//! belongs to the hiding face.
|
||||
Standard_Boolean HidingTheFace() const;
|
||||
|
||||
//! Returns true if the current hiding face is not an
|
||||
//! auto-intersected one.
|
||||
Standard_Boolean SimpleHidingFace() const;
|
||||
|
||||
//! Intersect the current Edge with the boundary of
|
||||
//! the hiding face. The interferences are given by
|
||||
//! the More, Next, and Value methods.
|
||||
Standard_EXPORT void InitInterference();
|
||||
|
||||
Standard_Boolean MoreInterference() const;
|
||||
|
||||
Standard_EXPORT void NextInterference();
|
||||
|
||||
//! Returns True if the interference is rejected.
|
||||
Standard_EXPORT Standard_Boolean RejectedInterference();
|
||||
|
||||
//! Returns True if the rejected interference is above
|
||||
//! the face.
|
||||
Standard_EXPORT Standard_Boolean AboveInterference();
|
||||
|
||||
HLRAlgo_Interference& Interference();
|
||||
|
||||
//! Returns the local description of the projection of
|
||||
//! the current LEdge at parameter <Param>.
|
||||
Standard_EXPORT void LocalLEGeometry2D (const Standard_Real Param, gp_Dir2d& Tg, gp_Dir2d& Nm, Standard_Real& Cu);
|
||||
|
||||
//! Returns the local description of the projection of
|
||||
//! the current FEdge at parameter <Param>.
|
||||
Standard_EXPORT void LocalFEGeometry2D (const Standard_Integer FE, const Standard_Real Param, gp_Dir2d& Tg, gp_Dir2d& Nm, Standard_Real& Cu);
|
||||
|
||||
//! Returns the local 3D state of the intersection
|
||||
//! between the current edge and the current face at the
|
||||
//! <p1> and <p2> parameters.
|
||||
Standard_EXPORT void EdgeState (const Standard_Real p1, const Standard_Real p2, TopAbs_State& stbef, TopAbs_State& staf);
|
||||
|
||||
//! Returns the true if the Edge <ED> belongs to the
|
||||
//! Hiding Face.
|
||||
Standard_Boolean EdgeOfTheHidingFace (const Standard_Integer E, const HLRBRep_EdgeData& ED) const;
|
||||
|
||||
//! Returns the number of levels of hiding face above
|
||||
//! the first point of the edge <ED>. The
|
||||
//! InterferenceList is given to compute far away of
|
||||
//! the Interferences and then come back.
|
||||
Standard_EXPORT Standard_Integer HidingStartLevel (const Standard_Integer E, const HLRBRep_EdgeData& ED, const HLRAlgo_InterferenceList& IL);
|
||||
|
||||
//! Returns the state of the Edge <ED> after
|
||||
//! classification.
|
||||
Standard_EXPORT TopAbs_State Compare (const Standard_Integer E, const HLRBRep_EdgeData& ED);
|
||||
|
||||
//! Simple classification of part of edge [p1, p2]
|
||||
//! returns OUT if at least 1 of Nbp points of edge is out
|
||||
//! othewise returns IN
|
||||
//! It is used to check "suspision" hided part of edge.
|
||||
Standard_EXPORT TopAbs_State SimplClassify (const Standard_Integer E, const HLRBRep_EdgeData& ED, const Standard_Integer Nbp, const Standard_Real p1, const Standard_Real p2);
|
||||
|
||||
//! Classification of an edge.
|
||||
Standard_EXPORT TopAbs_State Classify (const Standard_Integer E, const HLRBRep_EdgeData& ED, const Standard_Boolean LevelFlag, Standard_Integer& Level, const Standard_Real param);
|
||||
|
||||
Standard_EXPORT void Destroy();
|
||||
~HLRBRep_Data()
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
|
||||
|
||||
DEFINE_STANDARD_RTTI(HLRBRep_Data,MMgt_TShared)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
//! Orient the OutLines ( left must be inside in
|
||||
//! projection ). Returns True if the face of a closed
|
||||
//! shell has been inverted;
|
||||
Standard_EXPORT Standard_Boolean OrientOutLine (const Standard_Integer I, HLRBRep_FaceData& FD);
|
||||
|
||||
//! Orient the Edges which are not Internal OutLine,
|
||||
//! not Double and not IsoLine.
|
||||
Standard_EXPORT void OrientOthEdge (const Standard_Integer I, HLRBRep_FaceData& FD);
|
||||
|
||||
//! Returns True if the intersection is rejected.
|
||||
Standard_EXPORT Standard_Boolean RejectedPoint (const IntRes2d_IntersectionPoint& PInter, const TopAbs_Orientation BoundOri, const Standard_Integer NumSeg);
|
||||
|
||||
//! returns True if there is a common vertex between
|
||||
//! myLE and myFE dependig on <head1> and <head2>.
|
||||
Standard_EXPORT Standard_Boolean SameVertex (const Standard_Boolean head1, const Standard_Boolean head2);
|
||||
|
||||
Standard_Integer myNbVertices;
|
||||
Standard_Integer myNbEdges;
|
||||
Standard_Integer myNbFaces;
|
||||
TopTools_IndexedMapOfShape myEMap;
|
||||
TopTools_IndexedMapOfShape myFMap;
|
||||
HLRBRep_Array1OfEData myEData;
|
||||
HLRBRep_Array1OfFData myFData;
|
||||
TColStd_Array1OfInteger myEdgeIndices;
|
||||
Standard_ShortReal myToler;
|
||||
HLRAlgo_Projector myProj;
|
||||
HLRBRep_CLProps myLLProps;
|
||||
HLRBRep_CLProps myFLProps;
|
||||
HLRBRep_SLProps mySLProps;
|
||||
Standard_Real myBigSize;
|
||||
HLRBRep_FaceIterator myFaceItr1;
|
||||
HLRBRep_FaceIterator myFaceItr2;
|
||||
Standard_Integer iFace;
|
||||
Standard_Address iFaceData;
|
||||
Standard_Address iFaceGeom;
|
||||
Standard_Address iFaceMinMax;
|
||||
GeomAbs_SurfaceType iFaceType;
|
||||
Standard_Boolean iFaceBack;
|
||||
Standard_Boolean iFaceSimp;
|
||||
Standard_Boolean iFaceSmpl;
|
||||
Standard_Boolean iFaceTest;
|
||||
Standard_Integer myHideCount;
|
||||
Standard_Real myDeca[16];
|
||||
Standard_Real mySurD[16];
|
||||
Standard_Integer myCurSortEd;
|
||||
Standard_Integer myNbrSortEd;
|
||||
Standard_Integer myLE;
|
||||
Standard_Boolean myLEOutLine;
|
||||
Standard_Boolean myLEInternal;
|
||||
Standard_Boolean myLEDouble;
|
||||
Standard_Boolean myLEIsoLine;
|
||||
Standard_Address myLEData;
|
||||
Standard_Address myLEGeom;
|
||||
Standard_Address myLEMinMax;
|
||||
GeomAbs_CurveType myLEType;
|
||||
Standard_ShortReal myLETol;
|
||||
Standard_Integer myFE;
|
||||
TopAbs_Orientation myFEOri;
|
||||
Standard_Boolean myFEOutLine;
|
||||
Standard_Boolean myFEInternal;
|
||||
Standard_Boolean myFEDouble;
|
||||
Standard_Address myFEData;
|
||||
Standard_Address myFEGeom;
|
||||
GeomAbs_CurveType myFEType;
|
||||
Standard_ShortReal myFETol;
|
||||
HLRBRep_Intersector myIntersector;
|
||||
Handle(BRepTopAdaptor_TopolTool) myClassifier;
|
||||
Standard_Boolean mySameVertex;
|
||||
Standard_Boolean myIntersected;
|
||||
Standard_Integer myNbPoints;
|
||||
Standard_Integer myNbSegments;
|
||||
Standard_Integer iInterf;
|
||||
HLRAlgo_Interference myIntf;
|
||||
Standard_Boolean myAboveIntf;
|
||||
Standard_Address myReject;
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
#include <HLRBRep_Data.lxx>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // _HLRBRep_Data_HeaderFile
|
Reference in New Issue
Block a user