24#ifndef __AECDBSPACETOOLS_H__
25#define __AECDBSPACETOOLS_H__
46 explicit BlockRefPath(
const std::vector<OdDbObjectId>& vecBlockRefs );
86 : m_idTarget(idTarget), m_Path( rPath ) { }
90 m_idTarget = idTarget;
110 return !( rA == rB );
122 class BoundaryVectorizer;
179 return !( rA == rB );
360 bool FindBoundingEntitiesForOtherSpacesOnTheDrawing(
AECDbSpacePtr& ptrSpace,
361 double dGap,
bool bIgnoreHoles,
368 void MakeClosedLoopFromSegments(std::vector<FacetModeler::Segment2D>& vecSegments,
FacetModeler::Contour2D& rResult)
const;
377 void DebugDrawBoundaryAndMetadata(
const std::vector<FacetModeler::Segment2D>& vecSegments,
OdUInt16 clrBoundary = 1,
OdUInt16 clrEnt = 6)
const;
385 class AECImpSpaceCalculator* m_pImpl;
AECSpaceCalculator(const OdGeMatrix3d &mUCS, const OdDbObjectId &idRootBlock, AECDefs::SpaceBoundaryFilter eFilter)
bool FindGrossBoundaryDIN277(AECDbSpacePtr &ptrSpace, const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary)
void ApplyBasicGrossRules(const AECSpaceRegen::BoundingEnt &be, const bool isAdjacentToOtherSpace, FacetModeler::Segment2D &curSeg, AECDbSpacePtr &ptrSpace, AECDbSpacePtr &ptrAdjacentSpace)
void ApplyOpeningsToNetUsable_SIS(FacetModeler::Profile2D &rBoundary)
void ApplyBomaUsableRules(const AECSpaceRegen::BoundingEnt &be, const bool isAdjacentToOtherSpace, FacetModeler::Segment2D &curSeg, AECDbSpacePtr &ptrSpace, AECDbSpacePtr &ptrAdjacentSpace)
bool FindUsableBoundarySIS(AECDbSpacePtr &ptrSpace, const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary)
bool FindNetBoundarySIS(const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary)
void ApplySISUsableRules(const AECSpaceRegen::BoundingEnt &be, const bool isAdjacentToOtherSpace, FacetModeler::Segment2D &curSeg, AECDbSpacePtr &ptrSpace, AECDbSpacePtr &ptrAdjacentSpace)
const AECSpaceRegen::BoundingEnt GetBoundingEnt(OdUInt32 iMetadata) const
bool FindGrossBoundaryBOMA(AECDbSpacePtr &ptrSpace, const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary)
bool UpdateSpace(AECDbSpacePtr pSpace) const
bool FindBoundary(const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary) const
bool FindInnerBoundary(const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary) const
bool ApplyRulesFuncToBaseBoundary(AECDbSpacePtr &ptrSpace, const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary, RULES_FUNCTION pRuleFunc, AECSpaceRegen::BoundingMode ebm=AECSpaceRegen::ebmWallCenterLines)
void Reset(const OdGeMatrix3d &mUCS, const OdDbObjectId &idRootBlock, AECDefs::SpaceBoundaryFilter eFilter)
bool FindUsableBoundaryBOMA(AECDbSpacePtr &ptrSpace, const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary)
bool FindOuterBoundary(const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary) const
bool FindNetBoundaryBOMA(const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary)
bool FindGrossBoundaryBasic(AECDbSpacePtr &ptrSpace, const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary)
void ApplyBomaGrossRules(const AECSpaceRegen::BoundingEnt &be, const bool isAdjacentToOtherSpace, FacetModeler::Segment2D &curSeg, AECDbSpacePtr &ptrSpace, AECDbSpacePtr &ptrAdjacentSpace)
AECDbSpacePtr CreateSpace(const FacetModeler::Profile2D &rBoundary, const OdDbObjectId &idStyle, AECDefs::SpaceGeometryType eType, AECDefs::SpaceOffsetBoundaries eOffsets) const
void ApplyDIN277GrossRules(const AECSpaceRegen::BoundingEnt &be, const bool isAdjacentToOtherSpace, FacetModeler::Segment2D &curSeg, AECDbSpacePtr &ptrSpace, AECDbSpacePtr &ptrAdjacentSpace)
bool FindCenterlinesBoundary(const OdGePoint2d &ptHitTest, double dGap, bool bIgnoreHoles, FacetModeler::Profile2D &rBoundary) const
void AppendToBoundarySet(const OdDbObjectId &idEntity)
BlockRefPath(const std::vector< OdDbObjectId > &vecBlockRefs)
BlockRefPath(const BlockRefPath &rPath)
const std::vector< OdDbObjectId > & GetBlockRefs() const
const OdGeMatrix3d & GetTransform() const
static AECARCHBASE_API_STATIC const BlockRefPath kNull
BoundingEnt(const BoundingEnt &rBEnt)
static AECARCHBASE_API_STATIC const BoundingEnt kNull
const FacetModeler::Profile2D & GetGeometry() const
BoundingEnt(const EntityReference &rEntRef, BoundaryVectorizer *pVect)
BoundaryType GetType() const
const EntityReference & GetEntRef() const
EntityReference & set(const OdDbObjectId &idTarget, const BlockRefPath &rPath=BlockRefPath::kNull)
static AECARCHBASE_API_STATIC const EntityReference kNull
const BlockRefPath & GetPath() const
EntityReference(const OdDbObjectId &idTarget, const BlockRefPath &rPath)
const OdDbObjectId & GetTarget() const
EntityReference(const OdDbObjectId &idTarget)
OdIntPtr metadata() const
bool GetBoundaryOverlappedWith(const FacetModeler::Segment2D &aBoundarySeg, OdDbObjectId idBE, FacetModeler::Segment2D &segOverlappedPart)
FacetModeler::Profile2D rBoundary
std::set< OdDbObjectId > m_boundingEntsIds
AECSpaceRegen::BoundingEnt GetBEForSegment(const FacetModeler::Segment2D &seg)
std::vector< AECSpaceRegen::BoundingEnt > m_boundingEnts
bool HasBoundaryWithEntity(OdDbObjectId idObj)
typedef void(APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture)
bool operator==(const BlockRefPath &rA, const BlockRefPath &rB)
DOM.
bool operator!=(const BlockRefPath &rA, const BlockRefPath &rB)
DOM.
FacetModeler::Segment2D segChunk
AECDbSpacePtr ptrAdjacentSpace