// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _TopOpeBRep_FacesFiller_HeaderFile #define _TopOpeBRep_FacesFiller_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _TopoDS_Face_HeaderFile #include #endif #ifndef _TopAbs_Orientation_HeaderFile #include #endif #ifndef _TopOpeBRep_PFacesIntersector_HeaderFile #include #endif #ifndef _Handle_TopOpeBRepDS_HDataStructure_HeaderFile #include #endif #ifndef _TopOpeBRepDS_PDataStructure_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _TopOpeBRep_PLineInter_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _TopOpeBRepDS_Transition_HeaderFile #include #endif #ifndef _TopTools_ListOfShape_HeaderFile #include #endif #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile #include #endif #ifndef _TopOpeBRepDS_ListOfInterference_HeaderFile #include #endif #ifndef _TopOpeBRep_PointClassifier_HeaderFile #include #endif #ifndef _TopOpeBRepTool_PShapeClassifier_HeaderFile #include #endif #ifndef _Handle_TopOpeBRep_FFDumper_HeaderFile #include #endif #ifndef _TopOpeBRepDS_Kind_HeaderFile #include #endif #ifndef _Handle_TopOpeBRepDS_Interference_HeaderFile #include #endif #ifndef _TopAbs_State_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif class TopOpeBRepDS_HDataStructure; class TopOpeBRep_FFDumper; class TopoDS_Shape; class TopOpeBRep_FacesIntersector; class TopOpeBRep_PointClassifier; class TopOpeBRep_LineInter; class TopOpeBRep_VPointInter; class TopOpeBRep_VPointInterClassifier; class TopTools_ListOfShape; class TopOpeBRep_VPointInterIterator; class TopOpeBRepDS_Transition; class TopOpeBRepDS_Interference; class TopOpeBRepDS_ListIteratorOfListOfInterference; class TopOpeBRepDS_Point; class TopoDS_Face; class gp_Pnt; class TopOpeBRepDS_DataStructure; //! Fills a DataStructure from TopOpeBRepDS with the result
//! of Face/Face instersection described by FacesIntersector from TopOpeBRep.
//! if the faces have same Domain, record it in the DS.
//! else record lines and points and attach list of interferences
//! to the faces, the lines and the edges.
class TopOpeBRep_FacesFiller { public: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } Standard_EXPORT TopOpeBRep_FacesFiller(); //! Stores in the intersections of and .
Standard_EXPORT void Insert(const TopoDS_Shape& F1,const TopoDS_Shape& F2,TopOpeBRep_FacesIntersector& FACINT,const Handle(TopOpeBRepDS_HDataStructure)& HDS) ; Standard_EXPORT void ProcessSectionEdges() ; Standard_EXPORT TopOpeBRep_PointClassifier& ChangePointClassifier() ; //! return field myPShapeClassifier.
Standard_EXPORT TopOpeBRepTool_PShapeClassifier PShapeClassifier() const; //! set field myPShapeClassifier.
Standard_EXPORT void SetPShapeClassifier(const TopOpeBRepTool_PShapeClassifier& PSC) ; Standard_EXPORT void LoadLine(TopOpeBRep_LineInter& L) ; Standard_EXPORT Standard_Boolean CheckLine(TopOpeBRep_LineInter& L) const; //! compute position of VPoints of lines
Standard_EXPORT void VP_Position(TopOpeBRep_FacesIntersector& FACINT) ; //! compute position of VPoints of line L
Standard_EXPORT void VP_Position(TopOpeBRep_LineInter& L) ; //! compute position of VPoints of non-restriction line L.
Standard_EXPORT void VP_PositionOnL(TopOpeBRep_LineInter& L) ; //! compute position of VPoints of restriction line L.
Standard_EXPORT void VP_PositionOnR(TopOpeBRep_LineInter& L) ; //! compute position of VP with current faces,
//! according to VP.ShapeIndex() .
Standard_EXPORT void VP_Position(TopOpeBRep_VPointInter& VP,TopOpeBRep_VPointInterClassifier& VPC) ; //! Process current intersection line (set by LoadLine)
Standard_EXPORT void ProcessLine() ; Standard_EXPORT void ResetDSC() ; //! Process current restriction line, adding restriction edge
//! and computing face/edge interference.
Standard_EXPORT void ProcessRLine() ; //! VP processing for restriction line and line sharing
//! same domain with section edges :
//! - if restriction :
//! Adds restriction edges as section edges and compute
//! face/edge interference.
//! - if same domain :
//! If line share same domain with section edges, compute
//! parts of line IN/IN the two faces, and compute curve/point
//! interference for VP boundaries.
Standard_EXPORT void FillLineVPonR() ; Standard_EXPORT void FillLine() ; //! compute 3d curve, pcurves and face/curve interferences
//! for current NDSC. Add them to the DS.
Standard_EXPORT void AddShapesLine() ; //! Get map of restriction edges having parts IN one
//! of the 2 faces.
Standard_EXPORT void GetESL(TopTools_ListOfShape& LES) ; //! calling the followings ProcessVPIonR and ProcessVPonR.
Standard_EXPORT void ProcessVPR(TopOpeBRep_FacesFiller& FF,const TopOpeBRep_VPointInter& VP) ; //! processing ProcessVPonR for VPI.
Standard_EXPORT void ProcessVPIonR(TopOpeBRep_VPointInterIterator& VPI,const TopOpeBRepDS_Transition& trans1,const TopoDS_Shape& F1,const Standard_Integer ShapeIndex) ; //! adds 's geometric point (if not stored) and
//! computes (curve or edge)/(point or vertex) interference.
Standard_EXPORT void ProcessVPonR(const TopOpeBRep_VPointInter& VP,const TopOpeBRepDS_Transition& trans1,const TopoDS_Shape& F1,const Standard_Integer ShapeIndex) ; //! VP processing on closing arc.
Standard_EXPORT void ProcessVPonclosingR(const TopOpeBRep_VPointInter& VP,const TopoDS_Shape& F1,const Standard_Integer ShapeIndex,const TopOpeBRepDS_Transition& transEdge,const TopOpeBRepDS_Kind PVKind,const Standard_Integer PVIndex,const Standard_Boolean EPIfound,const Handle(TopOpeBRepDS_Interference)& IEPI) ; //! VP processing on degenerated arc.
Standard_EXPORT Standard_Boolean ProcessVPondgE(const TopOpeBRep_VPointInter& VP,const Standard_Integer ShapeIndex,TopOpeBRepDS_Kind& PVKind,Standard_Integer& PVIndex,Standard_Boolean& EPIfound,Handle(TopOpeBRepDS_Interference)& IEPI,Standard_Boolean& CPIfound,Handle(TopOpeBRepDS_Interference)& ICPI) ; //! processing ProcessVPnotonR for VPI.
Standard_EXPORT void ProcessVPInotonR(TopOpeBRep_VPointInterIterator& VPI) ; //! adds 's geometrical point to the DS (if not stored)
//! and computes curve point interference.
Standard_EXPORT void ProcessVPnotonR(const TopOpeBRep_VPointInter& VP) ; //! Get the geometry of a DS point .
//! Search for it with ScanInterfList (previous method).
//! if found, set to the geometry of the interference found.
//! else, add the point in the and set to the
//! value of the new geometry such created.
//! returns the value of ScanInterfList().
Standard_EXPORT Standard_Boolean GetGeometry(TopOpeBRepDS_ListIteratorOfListOfInterference& IT,const TopOpeBRep_VPointInter& VP,Standard_Integer& G,TopOpeBRepDS_Kind& K) ; Standard_EXPORT Standard_Integer MakeGeometry(const TopOpeBRep_VPointInter& VP,const Standard_Integer ShapeIndex,TopOpeBRepDS_Kind& K) ; //! Add interference to list myDSCIL.
//! on a given line, at first call, add a new DS curve.
Standard_EXPORT void StoreCurveInterference(const Handle(TopOpeBRepDS_Interference)& I) ; //! search for G = geometry of Point which is identical to
//! among the DS Points created in the CURRENT face/face
//! intersection ( current Insert() call).
Standard_EXPORT Standard_Boolean GetFFGeometry(const TopOpeBRepDS_Point& DSP,TopOpeBRepDS_Kind& K,Standard_Integer& G) const; //! search for G = geometry of Point which is identical to
//! among the DS Points created in the CURRENT face/face
//! intersection ( current Insert() call).
Standard_EXPORT Standard_Boolean GetFFGeometry(const TopOpeBRep_VPointInter& VP,TopOpeBRepDS_Kind& K,Standard_Integer& G) const; Standard_EXPORT TopOpeBRep_FacesIntersector& ChangeFacesIntersector() ; Standard_EXPORT Handle_TopOpeBRepDS_HDataStructure HDataStructure() ; Standard_EXPORT TopOpeBRepDS_DataStructure& ChangeDataStructure() ; Standard_EXPORT const TopoDS_Face& Face(const Standard_Integer I) const; Standard_EXPORT const TopOpeBRepDS_Transition& FaceFaceTransition(const TopOpeBRep_LineInter& L,const Standard_Integer I) const; Standard_EXPORT const TopOpeBRepDS_Transition& FaceFaceTransition(const Standard_Integer I) const; Standard_EXPORT TopOpeBRep_PFacesIntersector PFacesIntersectorDummy() const; Standard_EXPORT TopOpeBRepDS_PDataStructure PDataStructureDummy() const; Standard_EXPORT TopOpeBRep_PLineInter PLineInterDummy() const; Standard_EXPORT void SetTraceIndex(const Standard_Integer exF1,const Standard_Integer exF2) ; Standard_EXPORT void GetTraceIndex(Standard_Integer& exF1,Standard_Integer& exF2) const; //! Computes and the upper and lower bounds of
//! enclosing all vpoints.
Standard_EXPORT static void Lminmax(const TopOpeBRep_LineInter& L,Standard_Real& pmin,Standard_Real& pmax) ; //! Returns if shares a same geometric domain with
//! at least one of the section edges of .
Standard_EXPORT static Standard_Boolean LSameDomainERL(const TopOpeBRep_LineInter& L,const TopTools_ListOfShape& ERL) ; //! Computes the transition of the VPoint on the edge
//! of . Returns if the status is unknown.
Standard_EXPORT static Standard_Boolean IsVPtransLok(const TopOpeBRep_LineInter& L,const Standard_Integer iVP,const Standard_Integer SI12,TopOpeBRepDS_Transition& T) ; //! Computes transition on line for VP on edge
//! restriction of . If : returns if
//! transition computed is IN/OUT else : returns if
//! transition computed is OUT/IN.
Standard_EXPORT static Standard_Boolean TransvpOK(const TopOpeBRep_LineInter& L,const Standard_Integer iVP,const Standard_Integer SI,const Standard_Boolean isINOUT) ; //! Returns parameter u of vp on the restriction edge.
Standard_EXPORT static Standard_Real VPParamOnER(const TopOpeBRep_VPointInter& vp,const TopOpeBRep_LineInter& Lrest) ; Standard_EXPORT static Standard_Boolean EqualpPonR(const TopOpeBRep_LineInter& Lrest,const TopOpeBRep_VPointInter& VP1,const TopOpeBRep_VPointInter& VP2) ; Standard_EXPORT static Standard_Boolean EqualpP(const TopOpeBRep_LineInter& L,const Standard_Integer iVP1,const Standard_Integer iVP2) ; protected: private: Standard_EXPORT Standard_Boolean KeepRLine(const TopOpeBRep_LineInter& Lrest,const Standard_Boolean checkkeep) const; Standard_EXPORT TopOpeBRepDS_Transition GetEdgeTrans(const TopOpeBRep_VPointInter& VP,const TopOpeBRepDS_Kind PVKind,const Standard_Integer PVIndex,const Standard_Integer Sind,const TopoDS_Face& F) ; //! If 's index != 3, calls a classifier to determine
//! 's state on the face.
Standard_EXPORT TopAbs_State StateVPonFace(const TopOpeBRep_VPointInter& VP) const; //! is of geometry

.
//! Looks after a VPoint on RESTRICTION with
//! geometric value

. If true, updates states ON for .
Standard_EXPORT Standard_Boolean PequalVPonR(const gp_Pnt& P3D,const Standard_Integer VPshapeindex,TopOpeBRep_VPointInter& VP,TopOpeBRep_LineInter& Lrest) const; //! Classifies (VPf, VPl) middle point on restriction edge
Standard_EXPORT TopAbs_State StBipVPonF(const TopOpeBRep_VPointInter& IVPf,const TopOpeBRep_VPointInter& IVPl,const TopOpeBRep_LineInter& Lrest,const Standard_Boolean isonedge1) const; TopoDS_Face myF1; TopoDS_Face myF2; TopAbs_Orientation myF1ori; TopAbs_Orientation myF2ori; TopOpeBRep_PFacesIntersector myFacesIntersector; Handle_TopOpeBRepDS_HDataStructure myHDS; TopOpeBRepDS_PDataStructure myDS; Standard_Integer myFFfirstDSP; TopOpeBRep_PLineInter myLine; Standard_Boolean myLineOK; Standard_Boolean myLineINL; TopOpeBRepDS_Transition myLineTonF1; TopOpeBRepDS_Transition myLineTonF2; Standard_Boolean myLineIsonEdge; TopTools_ListOfShape myERL; TopTools_DataMapOfShapeListOfShape myDataforDegenEd; Standard_Boolean myLastVPison0; Standard_Boolean mykeptVPnbr; Standard_Integer myDSCIndex; TopOpeBRepDS_ListOfInterference myDSCIL; TopOpeBRep_PointClassifier myPointClassifier; TopOpeBRepTool_PShapeClassifier myPShapeClassifier; Standard_Integer myexF1; Standard_Integer myexF2; Handle_TopOpeBRep_FFDumper myHFFD; }; // other Inline functions and methods (like "C++: function call" methods) #endif