/// <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;
        }