/// <summary> /// Creates 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> public static bool ProcessIFCSpaceBoundary(ExporterIFC exporterIFC, SpaceBoundary boundary, IFCFile file) { string spaceBoundaryName = String.Empty; if (ExporterCacheManager.ExportOptionsCache.SpaceBoundaryLevel == 1) spaceBoundaryName = "1stLevel"; else if (ExporterCacheManager.ExportOptionsCache.SpaceBoundaryLevel == 2) spaceBoundaryName = "2ndLevel"; IFCAnyHandle spatialElemHnd = ExporterCacheManager.SpaceInfoCache.FindSpaceHandle(boundary.SpatialElementId); if (IFCAnyHandleUtil.IsNullOrHasNoValue(spatialElemHnd)) return false; IFCPhysicalOrVirtual boundaryType = boundary.SpaceBoundaryType; IFCAnyHandle buildingElemHnd = null; if (boundaryType == IFCPhysicalOrVirtual.Physical) { buildingElemHnd = exporterIFC.FindSpaceBoundingElementHandle(boundary.BuildingElementId, boundary.LevelId); if (IFCAnyHandleUtil.IsNullOrHasNoValue(buildingElemHnd)) return false; } IFCInstanceExporter.CreateRelSpaceBoundary(file, GUIDUtil.CreateGUID(), ExporterCacheManager.OwnerHistoryHandle, spaceBoundaryName, null, spatialElemHnd, buildingElemHnd, boundary.ConnectGeometryHandle, boundaryType, boundary.InternalOrExternal); return true; }
/// <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; }