/// <summary> /// Create space boundary. /// </summary> /// <param name="exporterIFC"> /// The ExporterIFC object. /// </param> /// <param name="boundary"> /// The space boundary object. /// </param> /// <param name="file"> /// The IFC file. /// </param> /// <returns> /// True if processed successfully, false otherwise. /// </returns> static bool ProcessIFCSpaceBoundary(ExporterIFC exporterIFC, IFCSpaceBoundary boundary, IFCFile file) { string spaceBoundaryName = String.Empty; if (exporterIFC.SpaceBoundaryLevel == 1) spaceBoundaryName = "1stLevel"; else if (exporterIFC.SpaceBoundaryLevel == 2) spaceBoundaryName = "2ndLevel"; IFCLabel spaceBoundaryNameLabel = IFCLabel.Create(spaceBoundaryName); IFCAnyHandle spatialElemHnd = exporterIFC.FindSpatialElementHandle(boundary.SpatialElementId); if (!spatialElemHnd.HasValue) return false; IFCSpaceBoundaryType boundaryType = boundary.SpaceBoundaryType; IFCAnyHandle buildingElemHnd = IFCAnyHandle.Create(); if (boundaryType == IFCSpaceBoundaryType.Physical) { buildingElemHnd = exporterIFC.FindSpaceBoundingElementHandle(boundary.BuildingElementId); if (!buildingElemHnd.HasValue) return false; } file.CreateRelSpaceBoundary(IFCLabel.CreateGUID(), exporterIFC.GetOwnerHistoryHandle(), spaceBoundaryNameLabel, IFCLabel.Create(), spatialElemHnd, buildingElemHnd, boundary.GetConnectionGeometry(), boundaryType, boundary.IsExternal); return true; }