/// <summary> /// Processes an IfcColourSpecification entity handle. /// </summary> /// <param name="ifcColourSpecification">The IfcColourSpecification handle.</param> /// <returns>The IFCColourSpecification object.</returns> public static IFCColourSpecification ProcessIFCColourSpecification(IFCAnyHandle ifcColourSpecification) { if (IFCAnyHandleUtil.IsSubTypeOf(ifcColourSpecification, IFCEntityType.IfcColourRgb)) { return(IFCColourRgb.ProcessIFCColourRgb(ifcColourSpecification)); } Importer.TheLog.LogUnhandledSubTypeError(ifcColourSpecification, IFCEntityType.IfcColourSpecification, true); return(null); }
/// <summary> /// Processes an IfcColourRgb entity handle. /// </summary> /// <param name="ifcColourRgb">The IfcColourRgb handle.</param> /// <returns>The IFCColourRgb object.</returns> public static IFCColourRgb ProcessIFCColourRgb(IFCAnyHandle ifcColourRgb) { if (IFCAnyHandleUtil.IsNullOrHasNoValue(ifcColourRgb)) { Importer.TheLog.LogNullError(IFCEntityType.IfcColourRgb); return(null); } IFCEntity colourRgb; if (!IFCImportFile.TheFile.EntityMap.TryGetValue(ifcColourRgb.StepId, out colourRgb)) { colourRgb = new IFCColourRgb(ifcColourRgb); } return(colourRgb as IFCColourRgb); }
override protected void Process(IFCAnyHandle item) { base.Process(item); IFCAnyHandle surfaceColour = IFCImportHandleUtil.GetRequiredInstanceAttribute(item, "SurfaceColour", false); if (!IFCAnyHandleUtil.IsNullOrHasNoValue(surfaceColour)) { m_SurfaceColour = IFCColourRgb.ProcessIFCColourRgb(surfaceColour); } if (IFCAnyHandleUtil.IsSubTypeOf(item, IFCEntityType.IfcSurfaceStyleRendering)) { Transparency = IFCImportHandleUtil.GetOptionalNormalisedRatioAttribute(item, "Transparency", 0.0); IFCData diffuseColour = item.GetAttribute("DiffuseColour"); if (diffuseColour.PrimitiveType == IFCDataPrimitiveType.Instance) { m_DiffuseColour = IFCColourRgb.ProcessIFCColourRgb(diffuseColour.AsInstance()); } else if (diffuseColour.PrimitiveType == IFCDataPrimitiveType.Double) { m_DiffuseColourFactor = diffuseColour.AsDouble(); } IFCData transmissionColour = item.GetAttribute("TransmissionColour"); if (transmissionColour.PrimitiveType == IFCDataPrimitiveType.Instance) { m_TransmissionColour = IFCColourRgb.ProcessIFCColourRgb(transmissionColour.AsInstance()); } else if (transmissionColour.PrimitiveType == IFCDataPrimitiveType.Double) { m_TransmissionColourFactor = transmissionColour.AsDouble(); } IFCData diffuseTransmissionColour = item.GetAttribute("DiffuseTransmissionColour"); if (transmissionColour.PrimitiveType == IFCDataPrimitiveType.Instance) { m_DiffuseTransmissionColour = IFCColourRgb.ProcessIFCColourRgb(diffuseTransmissionColour.AsInstance()); } else if (transmissionColour.PrimitiveType == IFCDataPrimitiveType.Double) { m_DiffuseTransmissionColourFactor = diffuseTransmissionColour.AsDouble(); } IFCData reflectionColour = item.GetAttribute("ReflectionColour"); if (reflectionColour.PrimitiveType == IFCDataPrimitiveType.Instance) { m_ReflectionColour = IFCColourRgb.ProcessIFCColourRgb(reflectionColour.AsInstance()); } else if (reflectionColour.PrimitiveType == IFCDataPrimitiveType.Double) { m_ReflectionColourFactor = reflectionColour.AsDouble(); } IFCData specularColour = item.GetAttribute("SpecularColour"); if (specularColour.PrimitiveType == IFCDataPrimitiveType.Instance) { m_SpecularColour = IFCColourRgb.ProcessIFCColourRgb(specularColour.AsInstance()); } else if (specularColour.PrimitiveType == IFCDataPrimitiveType.Double) { m_SpecularColourFactor = specularColour.AsDouble(); } IFCData specularHighlight = item.GetAttribute("SpecularHighlight"); if (specularHighlight.PrimitiveType == IFCDataPrimitiveType.Double) { try { string simpleType = specularHighlight.GetSimpleType(); if (string.Compare(simpleType, "IfcSpecularExponent", true) == 0) { m_SpecularExponent = specularHighlight.AsDouble(); } else if (string.Compare(simpleType, "IfcSpecularRoughness", true) == 0) { m_SpecularRoughness = specularHighlight.AsDouble(); } else { Importer.TheLog.LogError(item.StepId, "Unknown type of specular highlight, ignoring.", false); } } catch { Importer.TheLog.LogError(item.StepId, "Unspecified type of specular highlight, ignoring.", false); } } else if (specularHighlight.HasValue) { Importer.TheLog.LogError(item.StepId, "Unknown type of specular highlight, ignoring.", false); } } }
override protected void Process(IFCAnyHandle item) { base.Process(item); IFCAnyHandle surfaceColour = IFCImportHandleUtil.GetRequiredInstanceAttribute(item, "SurfaceColour", false); if (!IFCAnyHandleUtil.IsNullOrHasNoValue(surfaceColour)) m_SurfaceColour = IFCColourRgb.ProcessIFCColourRgb(surfaceColour); if (IFCAnyHandleUtil.IsSubTypeOf(item, IFCEntityType.IfcSurfaceStyleRendering)) { Transparency = IFCImportHandleUtil.GetOptionalNormalisedRatioAttribute(item, "Transparency", 0.0); IFCData diffuseColour = item.GetAttribute("DiffuseColour"); if (diffuseColour.PrimitiveType == IFCDataPrimitiveType.Instance) m_DiffuseColour = IFCColourRgb.ProcessIFCColourRgb(diffuseColour.AsInstance()); else if (diffuseColour.PrimitiveType == IFCDataPrimitiveType.Double) m_DiffuseColourFactor = diffuseColour.AsDouble(); IFCData transmissionColour = item.GetAttribute("TransmissionColour"); if (transmissionColour.PrimitiveType == IFCDataPrimitiveType.Instance) m_TransmissionColour = IFCColourRgb.ProcessIFCColourRgb(transmissionColour.AsInstance()); else if (transmissionColour.PrimitiveType == IFCDataPrimitiveType.Double) m_TransmissionColourFactor = transmissionColour.AsDouble(); IFCData diffuseTransmissionColour = item.GetAttribute("DiffuseTransmissionColour"); if (transmissionColour.PrimitiveType == IFCDataPrimitiveType.Instance) m_DiffuseTransmissionColour = IFCColourRgb.ProcessIFCColourRgb(diffuseTransmissionColour.AsInstance()); else if (transmissionColour.PrimitiveType == IFCDataPrimitiveType.Double) m_DiffuseTransmissionColourFactor = diffuseTransmissionColour.AsDouble(); IFCData reflectionColour = item.GetAttribute("ReflectionColour"); if (reflectionColour.PrimitiveType == IFCDataPrimitiveType.Instance) m_ReflectionColour = IFCColourRgb.ProcessIFCColourRgb(reflectionColour.AsInstance()); else if (reflectionColour.PrimitiveType == IFCDataPrimitiveType.Double) m_ReflectionColourFactor = reflectionColour.AsDouble(); IFCData specularColour = item.GetAttribute("SpecularColour"); if (specularColour.PrimitiveType == IFCDataPrimitiveType.Instance) m_SpecularColour = IFCColourRgb.ProcessIFCColourRgb(specularColour.AsInstance()); else if (specularColour.PrimitiveType == IFCDataPrimitiveType.Double) m_SpecularColourFactor = specularColour.AsDouble(); IFCData specularHighlight = item.GetAttribute("SpecularHighlight"); if (specularHighlight.PrimitiveType == IFCDataPrimitiveType.Double) { try { string simpleType = specularHighlight.GetSimpleType(); if (string.Compare(simpleType, "IfcSpecularExponent", true) == 0) m_SpecularExponent = specularHighlight.AsDouble(); else if (string.Compare(simpleType, "IfcSpecularRoughness", true) == 0) m_SpecularRoughness = specularHighlight.AsDouble(); else IFCImportFile.TheLog.LogError(item.StepId, "Unknown type of specular highlight, ignoring.", false); } catch { IFCImportFile.TheLog.LogError(item.StepId, "Unspecified type of specular highlight, ignoring.", false); } } else if (specularHighlight.HasValue) { IFCImportFile.TheLog.LogError(item.StepId, "Unknown type of specular highlight, ignoring.", false); } } }
/// <summary> /// Processes an IfcColourRgb entity handle. /// </summary> /// <param name="ifcColourRgb">The IfcColourRgb handle.</param> /// <returns>The IFCColourRgb object.</returns> public static IFCColourRgb ProcessIFCColourRgb(IFCAnyHandle ifcColourRgb) { if (IFCAnyHandleUtil.IsNullOrHasNoValue(ifcColourRgb)) { IFCImportFile.TheLog.LogNullError(IFCEntityType.IfcColourRgb); return null; } IFCEntity colourRgb; if (!IFCImportFile.TheFile.EntityMap.TryGetValue(ifcColourRgb.StepId, out colourRgb)) colourRgb = new IFCColourRgb(ifcColourRgb); return (colourRgb as IFCColourRgb); }