/// <summary> /// Creates extruded solid from extrusion data. /// </summary> /// <param name="exporterIFC">The ExporterIFC object.</param> /// <param name="categoryId">The category id.</param> /// <param name="extrusionData">The extrusion data.</param> /// <returns>The IfcExtrudedAreaSolid handle.</returns> public static IFCAnyHandle CreateExtrudedSolidFromExtrusionData(ExporterIFC exporterIFC, ElementId categoryId, IFCExtrusionData extrusionData) { if (!extrusionData.IsValid()) return IFCAnyHandle.Create(); Plane plane = GeometryUtil.CreateDefaultPlane(); IList<CurveLoop> extrusionLoops = extrusionData.GetLoops(); if (extrusionLoops != null) { XYZ extrusionDir = extrusionData.ExtrusionDirection; double extrusionSize = extrusionData.ScaledExtrusionLength; if (ExporterIFCUtils.CorrectCurveLoopOrientation(extrusionLoops, plane, extrusionDir)) { IFCFile file = exporterIFC.GetFile(); IFCAnyHandle extrudedSolid = file.CreateExtrudedSolidFromCurveLoop(exporterIFC, categoryId, extrusionLoops, plane, extrusionDir, extrusionSize); if (!extrudedSolid.HasValue) return IFCAnyHandle.Create(); return extrudedSolid; } } return IFCAnyHandle.Create(); }
/// <summary> /// Creates extruded solid from extrusion data. /// </summary> /// <param name="exporterIFC">The ExporterIFC object.</param> /// <param name="extrusionData">The extrusion data.</param> /// <returns>The IfcExtrudedAreaSolid handle.</returns> public static IFCAnyHandle CreateExtrudedSolidFromExtrusionData(ExporterIFC exporterIFC, Element element, IFCExtrusionData extrusionData) { if (!extrusionData.IsValid()) return null; IList<CurveLoop> extrusionLoops = extrusionData.GetLoops(); if (extrusionLoops != null) { XYZ extrusionDir = extrusionData.ExtrusionDirection; double extrusionSize = extrusionData.ScaledExtrusionLength; Plane plane = null; if (CorrectCurveLoopOrientation(extrusionLoops, extrusionDir, out plane)) { string profileName = null; if (element != null) { ElementType type = element.Document.GetElement(element.GetTypeId()) as ElementType; if (type != null) profileName = type.Name; } IFCAnyHandle extrudedSolid = CreateExtrudedSolidFromCurveLoop(exporterIFC, profileName, extrusionLoops, plane, extrusionDir, extrusionSize); return extrudedSolid; } } return null; }