Assimp  v4.1. (December 2018)
IFCOpenings.cpp File Reference

Implements a subset of Ifc CSG operations for pouring holes for windows and doors into walls. More...

Classes

struct  Assimp::IFC::ProjectedWindowContour
 

Namespaces

 Assimp
 MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py.
 
 Assimp::IFC
 

Macros

#define from_int64(p)   (static_cast<IfcFloat>((p)) / max_ulong64)
 
#define one_vec   (IfcVector2(static_cast<IfcFloat>(1.0),static_cast<IfcFloat>(1.0)))
 
#define to_int64(p)   (static_cast<ulong64>(static_cast<IfcFloat>((p) ) * max_ulong64 ))
 

Typedefs

typedef std::pair< IfcVector2, IfcVector2 > Assimp::IFC::BoundingBox
 
typedef std::vector< IfcVector2 > Assimp::IFC::Contour
 
typedef std::vector< std::pair< ContourVector::const_iterator, Contour::const_iterator >> Assimp::IFC::ContourRefVector
 
typedef std::vector< ProjectedWindowContour > Assimp::IFC::ContourVector
 
typedef std::vector< TempOpening * > Assimp::IFC::OpeningRefs
 
typedef std::vector< OpeningRefs > Assimp::IFC::OpeningRefVector
 
typedef std::vector< bool > Assimp::IFC::SkipList
 
typedef std::map< IfcVector2, size_t, XYSorter > Assimp::IFC::XYSortedField
 

Functions

bool Assimp::IFC::BoundingBoxesAdjacent (const BoundingBox &bb, const BoundingBox &ibb)
 
bool Assimp::IFC::BoundingBoxesOverlapping (const BoundingBox &ibb, const BoundingBox &bb)
 
void Assimp::IFC::CleanupOuterContour (const std::vector< IfcVector2 > &contour_flat, TempMesh &curmesh)
 
void Assimp::IFC::CleanupWindowContour (ProjectedWindowContour &window)
 
void Assimp::IFC::CleanupWindowContours (ContourVector &contours)
 
size_t Assimp::IFC::CloseWindows (ContourVector &contours, const IfcMatrix4 &minv, OpeningRefVector &contours_to_openings, TempMesh &curmesh)
 
void Assimp::IFC::ExtractVerticesFromClipper (const ClipperLib::Polygon &poly, std::vector< IfcVector2 > &temp_contour, bool filter_duplicates=false)
 
void Assimp::IFC::FindAdjacentContours (ContourVector::iterator current, const ContourVector &contours)
 
void Assimp::IFC::FindBorderContours (ContourVector::iterator current)
 
void Assimp::IFC::FindLikelyCrossingLines (ContourVector::iterator current)
 
bool Assimp::IFC::GenerateOpenings (std::vector< TempOpening > &openings, const std::vector< IfcVector3 > &nors, TempMesh &curmesh, bool check_intersection, bool generate_connection_geometry, const IfcVector3 &wall_extrusion_axis)
 
BoundingBox Assimp::IFC::GetBoundingBox (const ClipperLib::Polygon &poly)
 
void Assimp::IFC::InsertWindowContours (const ContourVector &contours, const std::vector< TempOpening > &, TempMesh &curmesh)
 
bool Assimp::IFC::IntersectingLineSegments (const IfcVector2 &n0, const IfcVector2 &n1, const IfcVector2 &m0, const IfcVector2 &m1, IfcVector2 &out0, IfcVector2 &out1)
 
bool Assimp::IFC::IsDuplicateVertex (const IfcVector2 &vv, const std::vector< IfcVector2 > &temp_contour)
 
AI_FORCE_INLINE bool Assimp::IFC::LikelyBorder (const IfcVector2 &vdelta)
 
AI_FORCE_INLINE bool Assimp::IFC::LikelyDiagonal (IfcVector2 vdelta)
 
void Assimp::IFC::MakeDisjunctWindowContours (const std::vector< IfcVector2 > &a, const std::vector< IfcVector2 > &b, ClipperLib::ExPolygons &out)
 
void Assimp::IFC::MergeWindowContours (const std::vector< IfcVector2 > &a, const std::vector< IfcVector2 > &b, ClipperLib::ExPolygons &out)
 
IfcMatrix4 Assimp::IFC::ProjectOntoPlane (std::vector< IfcVector2 > &out_contour, const TempMesh &in_mesh, bool &ok, IfcVector3 &nor_out)
 
void Assimp::IFC::Quadrify (const ContourVector &contours, TempMesh &curmesh)
 
void Assimp::IFC::Quadrify (const std::vector< BoundingBox > &bbs, TempMesh &curmesh)
 
void Assimp::IFC::QuadrifyPart (const IfcVector2 &pmin, const IfcVector2 &pmax, XYSortedField &field, const std::vector< BoundingBox > &bbs, std::vector< IfcVector2 > &out)
 
bool Assimp::IFC::TryAddOpenings_Poly2Tri (const std::vector< TempOpening > &openings, const std::vector< IfcVector3 > &nors, TempMesh &curmesh)
 

Variables

const ClipperLib::long64 Assimp::IFC::max_ulong64 = 1518500249
 

Detailed Description

Implements a subset of Ifc CSG operations for pouring holes for windows and doors into walls.

Macro Definition Documentation

◆ from_int64

#define from_int64 (   p)    (static_cast<IfcFloat>((p)) / max_ulong64)

◆ one_vec

#define one_vec   (IfcVector2(static_cast<IfcFloat>(1.0),static_cast<IfcFloat>(1.0)))

◆ to_int64

#define to_int64 (   p)    (static_cast<ulong64>(static_cast<IfcFloat>((p) ) * max_ulong64 ))