public static EnergyMaterial ToLadybugTools(this OpaqueMaterial opaqueMaterial) { if (opaqueMaterial == null || string.IsNullOrEmpty(opaqueMaterial.Name)) { return(null); } return(new EnergyMaterial( identifier: opaqueMaterial.Name, thickness: opaqueMaterial.GetValue <double>(MaterialParameter.DefaultThickness), conductivity: opaqueMaterial.ThermalConductivity, density: opaqueMaterial.Density, specificHeat: opaqueMaterial.SpecificHeatCapacity, displayName: opaqueMaterial.DisplayName, userData: null, roughness: Roughness.MediumSmooth, thermalAbsorptance: opaqueMaterial.GetValue <double>(OpaqueMaterialParameter.ExternalEmissivity), solarAbsorptance: 1 - opaqueMaterial.GetValue <double>(OpaqueMaterialParameter.ExternalSolarReflectance), visibleAbsorptance: 1 - opaqueMaterial.GetValue <double>(OpaqueMaterialParameter.ExternalLightReflectance))); }
private void SetColor(Color color) { if (_currentHighlightingColor == color) { return; } if (_isZWrite) { OpaqueZMaterial.SetColor("_Outline", color); } else { OpaqueMaterial.SetColor("_Outline", color); } for (int i = 0; i < _highlightableRenderers.Count; i++) { _highlightableRenderers[i].SetColorForTransparent(color); } _currentHighlightingColor = color; }
public static bool UpdateMaterial(this TBD.material material, OpaqueMaterial opaqueMaterial) { if (!string.IsNullOrWhiteSpace(opaqueMaterial.Name) && !opaqueMaterial.Name.Equals(material.name)) { material.name = opaqueMaterial.Name; } material.type = (int)TBD.MaterialTypes.tcdOpaqueMaterial; material.description = opaqueMaterial.Description; material.width = System.Convert.ToSingle(opaqueMaterial.GetValue <double>(MaterialParameter.DefaultThickness)); material.conductivity = System.Convert.ToSingle(opaqueMaterial.ThermalConductivity); material.specificHeat = System.Convert.ToSingle(opaqueMaterial.SpecificHeatCapacity); material.density = System.Convert.ToSingle(opaqueMaterial.Density); material.vapourDiffusionFactor = System.Convert.ToSingle(opaqueMaterial.GetValue <double>(MaterialParameter.VapourDiffusionFactor)); material.externalSolarReflectance = System.Convert.ToSingle(opaqueMaterial.GetValue <double>(OpaqueMaterialParameter.ExternalSolarReflectance)); material.internalSolarReflectance = System.Convert.ToSingle(opaqueMaterial.GetValue <double>(OpaqueMaterialParameter.InternalSolarReflectance)); material.externalLightReflectance = System.Convert.ToSingle(opaqueMaterial.GetValue <double>(OpaqueMaterialParameter.ExternalLightReflectance)); material.internalLightReflectance = System.Convert.ToSingle(opaqueMaterial.GetValue <double>(OpaqueMaterialParameter.InternalLightReflectance)); material.externalEmissivity = System.Convert.ToSingle(opaqueMaterial.GetValue <double>(OpaqueMaterialParameter.ExternalEmissivity)); material.internalEmissivity = System.Convert.ToSingle(opaqueMaterial.GetValue <double>(OpaqueMaterialParameter.InternalEmissivity)); return(true); }
public static Material ToSAM(this Autodesk.Revit.DB.Material material, ConvertSettings convertSettings) { if (material == null) { return(null); } Material result = convertSettings?.GetObject <Material>(material.Id); if (result != null) { return(result); } Document document = material.Document; double density = double.NaN; double thermalConductivity = double.NaN; ThermalMaterialType thermalMaterialType = ThermalMaterialType.Undefined; bool transmitsLight = false; ElementId elementId = material.ThermalAssetId; if (elementId != null && elementId != ElementId.InvalidElementId) { PropertySetElement propertySetElement = document.GetElement(elementId) as PropertySetElement; if (propertySetElement != null) { ThermalAsset thermalAsset = propertySetElement.GetThermalAsset(); if (thermalAsset != null) { density = thermalAsset.Density; thermalConductivity = thermalAsset.ThermalConductivity; thermalMaterialType = thermalAsset.ThermalMaterialType; transmitsLight = thermalAsset.TransmitsLight; } } } string description = material.get_Parameter(BuiltInParameter.ALL_MODEL_DESCRIPTION)?.AsString(); if (thermalMaterialType != ThermalMaterialType.Undefined) { switch (thermalMaterialType) { case ThermalMaterialType.Gas: result = new GasMaterial(System.Guid.NewGuid(), material.Name, material.Name, description, thermalConductivity, density, double.NaN, double.NaN); break; case ThermalMaterialType.Liquid: result = new LiquidMaterial(System.Guid.NewGuid(), material.Name, material.Name, description, thermalConductivity, density, double.NaN, double.NaN); break; case ThermalMaterialType.Solid: if (transmitsLight) { result = new TransparentMaterial(material.Name, null, material.Name, description, thermalConductivity, double.NaN, density); } else { result = new OpaqueMaterial(material.Name, null, material.Name, description, thermalConductivity, double.NaN, density); } break; } } if (result == null) { string materialClass = material.MaterialClass?.Trim(); if (string.IsNullOrWhiteSpace(materialClass)) { switch (materialClass.ToLower()) { case "glass": result = new TransparentMaterial(material.Name, materialClass, material.Name, description, thermalConductivity, double.NaN, density); break; case "gas": result = new GasMaterial(System.Guid.NewGuid(), material.Name, material.Name, description, thermalConductivity, density, double.NaN, double.NaN); break; case "ceramic": case "earth": case "brass": case "metal": case "wood": case "concrete": case "masonry": case "paint": case "paint/coating": case "plastic": case "stone": case "textile": result = new OpaqueMaterial(material.Name, materialClass, material.Name, description, thermalConductivity, double.NaN, density); break; case "liquid": result = new LiquidMaterial(System.Guid.NewGuid(), material.Name, material.Name, description, thermalConductivity, density, double.NaN, double.NaN); break; } } } if (result == null) { int transparency = material.Transparency; if (transparency < 10) { result = new OpaqueMaterial(material.Name, null, material.Name, description, thermalConductivity, double.NaN, density); } else if (transparency < 100) { result = new TransparentMaterial(material.Name, null, material.Name, description, thermalConductivity, double.NaN, density); } else { result = new GasMaterial(System.Guid.NewGuid(), material.Name, material.Name, description, thermalConductivity, double.NaN, density, double.NaN); } } if (result != null) { convertSettings?.Add(material.Id, result); } return(result); }