From ad10b26833a188451eee457b0972ffb0cfe37384 Mon Sep 17 00:00:00 2001 From: Jakub Ziolkowski Date: Fri, 20 Feb 2026 11:54:27 +0100 Subject: [PATCH 1/4] ActiveSetting loading bug fixed --- SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs | 9 ++++++++- SAM_Revit/SAM.Core.Revit/Manager/ActiveSetting.cs | 9 ++++++++- SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs | 7 ++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs b/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs index 3664d426..fdfe7cee 100644 --- a/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs +++ b/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs @@ -18,13 +18,15 @@ public static class Name public const string ParameterMap_Tools = "Parameter Map Tools"; } - private static Setting setting = Load(); + private static Setting setting = null; private static Setting Load() { Setting setting = ActiveManager.GetSetting(Assembly.GetExecutingAssembly()); if (setting == null) + { setting = GetDefault(); + } return setting; } @@ -33,6 +35,11 @@ public static Setting Setting { get { + if(setting == null) + { + setting = Load(); + } + return setting; } } diff --git a/SAM_Revit/SAM.Core.Revit/Manager/ActiveSetting.cs b/SAM_Revit/SAM.Core.Revit/Manager/ActiveSetting.cs index 7771bb9f..c0ae13ba 100644 --- a/SAM_Revit/SAM.Core.Revit/Manager/ActiveSetting.cs +++ b/SAM_Revit/SAM.Core.Revit/Manager/ActiveSetting.cs @@ -11,13 +11,15 @@ public static class Name public const string ParameterName_Json = "ParameterName_Json"; } - private static Setting setting = Load(); + private static Setting setting = null; private static Setting Load() { Setting setting = ActiveManager.GetSetting(Assembly.GetExecutingAssembly()); if (setting == null) + { setting = GetDefault(); + } return setting; } @@ -26,6 +28,11 @@ public static Setting Setting { get { + if(setting == null) + { + setting = Load(); + } + return setting; } } diff --git a/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs b/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs index d4a08e0d..bc8c2180 100644 --- a/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs +++ b/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs @@ -9,7 +9,7 @@ public static class Name { } - private static Setting setting = Load(); + private static Setting setting = null; private static Setting Load() { @@ -24,6 +24,11 @@ public static Setting Setting { get { + if(setting == null) + { + setting = Load(); + } + return setting; } } From ab2f9b7782942ed99ed9f2d0dd977d7260828fbf Mon Sep 17 00:00:00 2001 From: Michal Dengusiak Date: Mon, 30 Mar 2026 16:59:13 +0200 Subject: [PATCH 2/4] Update spdx-check.yml --- .github/workflows/spdx-check.yml | 81 +++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 18 deletions(-) diff --git a/.github/workflows/spdx-check.yml b/.github/workflows/spdx-check.yml index 269d562e..e386bd30 100644 --- a/.github/workflows/spdx-check.yml +++ b/.github/workflows/spdx-check.yml @@ -2,44 +2,89 @@ name: SPDX + Copyright header check on: pull_request: + workflow_dispatch: jobs: spdx: runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: read + steps: - - uses: actions/checkout@v4 + - name: Checkout repository + uses: actions/checkout@v5 with: fetch-depth: 0 - name: Check header in changed .cs files + shell: bash run: | - set -e - BASE="${{ github.event.pull_request.base.sha }}" - HEAD="${{ github.event.pull_request.head.sha }}" + set -euo pipefail + + if [ "${{ github.event_name }}" = "pull_request" ]; then + BASE="${{ github.event.pull_request.base.sha }}" + HEAD="${{ github.event.pull_request.head.sha }}" + else + HEAD="${{ github.sha }}" + BASE="$(git rev-parse "${HEAD}^" 2>/dev/null || true)" + fi - FILES=$(git diff --name-only "$BASE" "$HEAD" -- '*.cs' || true) + echo "Base SHA: ${BASE:-}" + echo "Head SHA: $HEAD" + echo - if [ -z "$FILES" ]; then + if [ -z "${BASE:-}" ]; then + mapfile -t files < <(git ls-files '*.cs') + else + mapfile -t files < <(git diff --diff-filter=ACMR --name-only "$BASE" "$HEAD" -- '*.cs' || true) + fi + + if [ "${#files[@]}" -eq 0 ]; then echo "No C# files changed." exit 0 fi - MISSING="" - for f in $FILES; do - HEADBLOCK=$(head -n 6 "$f") + echo "Changed C# files:" + printf ' - %s\n' "${files[@]}" + echo + + missing=() + + for f in "${files[@]}"; do + if [ ! -f "$f" ]; then + echo "Skipping missing file: $f" + continue + fi + + headblock="$(head -n 20 "$f" | sed '1s/^\xEF\xBB\xBF//' | tr -d '\r')" + + echo "Checking: $f" + + if ! grep -q "SPDX-License-Identifier: LGPL-3.0-or-later" <<< "$headblock"; then + echo " Missing SPDX line" + missing+=("$f") + continue + fi + + if ! grep -qE "Copyright \(c\) 2020[-–]2026 Michal Dengusiak & Jakub Ziolkowski and contributors" <<< "$headblock"; then + echo " Missing copyright line" + missing+=("$f") + continue + fi - echo "$HEADBLOCK" | grep -q "// SPDX-License-Identifier: LGPL-3.0-or-later" || MISSING="$MISSING $f" - echo "$HEADBLOCK" | grep -q "// Copyright (c) 2020–2026 Michal Dengusiak & Jakub Ziolkowski and contributors" || MISSING="$MISSING $f" + echo " OK" done - if [ -n "$MISSING" ]; then - echo "❌ Missing required header in:" - for f in $MISSING; do echo " - $f"; done - echo "" - echo "Each changed .cs file must start with:" + echo + if [ "${#missing[@]}" -gt 0 ]; then + echo "Missing required header in:" + printf ' - %s\n' "${missing[@]}" + echo + echo "Each checked .cs file must contain within the first 20 lines:" echo "// SPDX-License-Identifier: LGPL-3.0-or-later" - echo "// Copyright (c) 2020–2026 Michal Dengusiak & Jakub Ziolkowski and contributors" + echo "// Copyright (c) 2020-2026 Michal Dengusiak & Jakub Ziolkowski and contributors" exit 1 fi - echo "✅ SPDX + copyright headers OK." + echo "SPDX + copyright headers OK." \ No newline at end of file From 652d851105f29434271c283bc695606bd09b4e61 Mon Sep 17 00:00:00 2001 From: Jakub Ziolkowski Date: Mon, 30 Mar 2026 17:12:11 +0200 Subject: [PATCH 3/4] Headers added --- SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs | 4 +++- SAM_Revit/SAM.Core.Revit/Manager/ActiveSetting.cs | 5 ++++- SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs | 3 +++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs b/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs index fdfe7cee..1ffed091 100644 --- a/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs +++ b/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs @@ -1,4 +1,6 @@ -using Autodesk.Revit.DB; +// SPDX-License-Identifier: LGPL-3.0-or-later +// Copyright (c) 2020–2026 Michal Dengusiak & Jakub Ziolkowski and contributorsusing Autodesk.Revit.DB; + using SAM.Core; using System.Reflection; diff --git a/SAM_Revit/SAM.Core.Revit/Manager/ActiveSetting.cs b/SAM_Revit/SAM.Core.Revit/Manager/ActiveSetting.cs index c0ae13ba..179a6c50 100644 --- a/SAM_Revit/SAM.Core.Revit/Manager/ActiveSetting.cs +++ b/SAM_Revit/SAM.Core.Revit/Manager/ActiveSetting.cs @@ -1,4 +1,7 @@ -using System.Reflection; +// SPDX-License-Identifier: LGPL-3.0-or-later +// Copyright (c) 2020–2026 Michal Dengusiak & Jakub Ziolkowski and contributors + +using System.Reflection; namespace SAM.Core.Revit { diff --git a/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs b/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs index bc8c2180..38d0a656 100644 --- a/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs +++ b/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs @@ -1,4 +1,7 @@ using SAM.Core; +// SPDX-License-Identifier: LGPL-3.0-or-later +// Copyright (c) 2020–2026 Michal Dengusiak & Jakub Ziolkowski and contributors + using System.Reflection; namespace SAM.Geometry.Revit From a7f2fbc900cbfa58c8acf146620b3d0314552f39 Mon Sep 17 00:00:00 2001 From: Jakub Ziolkowski Date: Mon, 30 Mar 2026 17:30:01 +0200 Subject: [PATCH 4/4] Codex Review --- .../Manager/ActiveSetting.cs | 124 +++++++++--------- .../Manager/ActiveSetting.cs | 18 ++- 2 files changed, 75 insertions(+), 67 deletions(-) diff --git a/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs b/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs index 1ffed091..ca0a6a6c 100644 --- a/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs +++ b/SAM_Revit/SAM.Analytical.Revit/Manager/ActiveSetting.cs @@ -53,33 +53,33 @@ public static Setting GetDefault() TypeMap parameterMap_General = Core.Create.TypeMap(); //AnalyticalModel - parameterMap_General.Add(AnalyticalModelParameter.NorthAngle, typeof(ProjectInfo), "SAM_NorthAngle"); - parameterMap_General.Add(AnalyticalModelParameter.CoolingSizingFactor, typeof(ProjectInfo), "SAM_SizingFactorCooling"); - parameterMap_General.Add(AnalyticalModelParameter.HeatingSizingFactor, typeof(ProjectInfo), "SAM_SizingFactorHeating"); + parameterMap_General.Add(AnalyticalModelParameter.NorthAngle, typeof(Autodesk.Revit.DB.ProjectInfo), "SAM_NorthAngle"); + parameterMap_General.Add(AnalyticalModelParameter.CoolingSizingFactor, typeof(Autodesk.Revit.DB.ProjectInfo), "SAM_SizingFactorCooling"); + parameterMap_General.Add(AnalyticalModelParameter.HeatingSizingFactor, typeof(Autodesk.Revit.DB.ProjectInfo), "SAM_SizingFactorHeating"); //Aperture - parameterMap_General.Add(typeof(Aperture), typeof(FamilyInstance), "GetWidth", "SAM_BuildingElementWidth"); - parameterMap_General.Add(typeof(Aperture), typeof(FamilyInstance), "GetHeight", "SAM_BuildingElementHeight"); - parameterMap_General.Add(typeof(Aperture), typeof(FamilyInstance), "Guid", "SAM_GUID"); + parameterMap_General.Add(typeof(Aperture), typeof(Autodesk.Revit.DB.FamilyInstance), "GetWidth", "SAM_BuildingElementWidth"); + parameterMap_General.Add(typeof(Aperture), typeof(Autodesk.Revit.DB.FamilyInstance), "GetHeight", "SAM_BuildingElementHeight"); + parameterMap_General.Add(typeof(Aperture), typeof(Autodesk.Revit.DB.FamilyInstance), "Guid", "SAM_GUID"); //ApertureConstruction - parameterMap_General.Add(ApertureConstructionParameter.Color, typeof(FamilySymbol), "SAM_BuildingElementColor"); - parameterMap_General.Add(ApertureConstructionParameter.Transparent, typeof(FamilySymbol), "SAM_BuildingElementTransparent"); - parameterMap_General.Add(ApertureConstructionParameter.Description, typeof(FamilySymbol), "SAM_BuildingElementDescription"); - parameterMap_General.Add(ApertureConstructionParameter.DefaultFrameWidth, typeof(FamilySymbol), "SAM_BuildingElementFrameWidth"); - parameterMap_General.Add(ApertureConstructionParameter.IsInternalShadow, typeof(FamilySymbol), "SAM_BuildingElementInternalShadows"); + parameterMap_General.Add(ApertureConstructionParameter.Color, typeof(Autodesk.Revit.DB.FamilySymbol), "SAM_BuildingElementColor"); + parameterMap_General.Add(ApertureConstructionParameter.Transparent, typeof(Autodesk.Revit.DB.FamilySymbol), "SAM_BuildingElementTransparent"); + parameterMap_General.Add(ApertureConstructionParameter.Description, typeof(Autodesk.Revit.DB.FamilySymbol), "SAM_BuildingElementDescription"); + parameterMap_General.Add(ApertureConstructionParameter.DefaultFrameWidth, typeof(Autodesk.Revit.DB.FamilySymbol), "SAM_BuildingElementFrameWidth"); + parameterMap_General.Add(ApertureConstructionParameter.IsInternalShadow, typeof(Autodesk.Revit.DB.FamilySymbol), "SAM_BuildingElementInternalShadows"); //MD 2021-02-25 this property will duplicate from default type //parameterMap_General.Add(typeof(ApertureConstruction), typeof(FamilySymbol), "ApertureType", "SAM_BuildingElementType"); //Construction - parameterMap_General.Add(ConstructionParameter.Color, typeof(HostObjAttributes), "SAM_BuildingElementColor"); - parameterMap_General.Add(ConstructionParameter.DefaultPanelType, typeof(HostObjAttributes), "SAM_BuildingElementType"); - parameterMap_General.Add(ConstructionParameter.Description, typeof(HostObjAttributes), "SAM_BuildingElementDescription"); - parameterMap_General.Add(ConstructionParameter.IsAir, typeof(HostObjAttributes), "SAM_BuildingElementAir"); - parameterMap_General.Add(ConstructionParameter.IsInternalShadow, typeof(HostObjAttributes), "SAM_BuildingElementInternalShadows"); - parameterMap_General.Add(ConstructionParameter.IsGround, typeof(HostObjAttributes), "SAM_BuildingElementGround"); - parameterMap_General.Add(ConstructionParameter.Transparent, typeof(HostObjAttributes), "SAM_BuildingElementTransparent"); - parameterMap_General.Add(ConstructionParameter.DefaultThickness, typeof(HostObjAttributes), "SAM_BuildingElementThickness"); + parameterMap_General.Add(ConstructionParameter.Color, typeof(Autodesk.Revit.DB.HostObjAttributes), "SAM_BuildingElementColor"); + parameterMap_General.Add(ConstructionParameter.DefaultPanelType, typeof(Autodesk.Revit.DB.HostObjAttributes), "SAM_BuildingElementType"); + parameterMap_General.Add(ConstructionParameter.Description, typeof(Autodesk.Revit.DB.HostObjAttributes), "SAM_BuildingElementDescription"); + parameterMap_General.Add(ConstructionParameter.IsAir, typeof(Autodesk.Revit.DB.HostObjAttributes), "SAM_BuildingElementAir"); + parameterMap_General.Add(ConstructionParameter.IsInternalShadow, typeof(Autodesk.Revit.DB.HostObjAttributes), "SAM_BuildingElementInternalShadows"); + parameterMap_General.Add(ConstructionParameter.IsGround, typeof(Autodesk.Revit.DB.HostObjAttributes), "SAM_BuildingElementGround"); + parameterMap_General.Add(ConstructionParameter.Transparent, typeof(Autodesk.Revit.DB.HostObjAttributes), "SAM_BuildingElementTransparent"); + parameterMap_General.Add(ConstructionParameter.DefaultThickness, typeof(Autodesk.Revit.DB.HostObjAttributes), "SAM_BuildingElementThickness"); //InternalCondition parameterMap_General.Add(typeof(InternalCondition), typeof(Autodesk.Revit.DB.Mechanical.Space), "Name", "SAM_IC_ThermalTemplate"); @@ -153,61 +153,61 @@ public static Setting GetDefault() parameterMap_General.Add(typeof(SpaceSimulationResult), typeof(Autodesk.Revit.DB.Mechanical.Space), "Reference", "='SAM' + [SAM.Core.Revit.Query.ParameterNamePrefix(Object_1)] + '_SpaceGUID'"); //Panel - parameterMap_General.Add(PanelParameter.Transparent, typeof(HostObject), "SAM_BuildingElementTransparent"); - parameterMap_General.Add(PanelParameter.ThermalTransmittance, typeof(HostObject), "SAM_SrfUValue"); - parameterMap_General.Add(PanelParameter.LightTransmittance, typeof(HostObject), "SAM_SrfLightTransmittance"); - parameterMap_General.Add(PanelParameter.LightReflectance, typeof(HostObject), "SAM_SrfLightReflectance"); - parameterMap_General.Add(PanelParameter.DirectSolarEnergyTransmittance, typeof(HostObject), "SAM_SrfDirectSolarEnergyTransmittance"); - parameterMap_General.Add(PanelParameter.DirectSolarEnergyReflectance, typeof(HostObject), "SAM_SrfDirectSolarEnergyReflectance"); - parameterMap_General.Add(PanelParameter.DirectSolarEnergyAbsorptance, typeof(HostObject), "SAM_SrfDirectSolarEnergyAbsorptance"); - parameterMap_General.Add(PanelParameter.TotalSolarEnergyTransmittance, typeof(HostObject), "SAM_SrfgValue"); - parameterMap_General.Add(PanelParameter.Adiabatic, typeof(HostObject), "SAM_SrfAdiabatic"); //2023.09.10 + parameterMap_General.Add(PanelParameter.Transparent, typeof(Autodesk.Revit.DB.HostObject), "SAM_BuildingElementTransparent"); + parameterMap_General.Add(PanelParameter.ThermalTransmittance, typeof(Autodesk.Revit.DB.HostObject), "SAM_SrfUValue"); + parameterMap_General.Add(PanelParameter.LightTransmittance, typeof(Autodesk.Revit.DB.HostObject), "SAM_SrfLightTransmittance"); + parameterMap_General.Add(PanelParameter.LightReflectance, typeof(Autodesk.Revit.DB.HostObject), "SAM_SrfLightReflectance"); + parameterMap_General.Add(PanelParameter.DirectSolarEnergyTransmittance, typeof(Autodesk.Revit.DB.HostObject), "SAM_SrfDirectSolarEnergyTransmittance"); + parameterMap_General.Add(PanelParameter.DirectSolarEnergyReflectance, typeof(Autodesk.Revit.DB.HostObject), "SAM_SrfDirectSolarEnergyReflectance"); + parameterMap_General.Add(PanelParameter.DirectSolarEnergyAbsorptance, typeof(Autodesk.Revit.DB.HostObject), "SAM_SrfDirectSolarEnergyAbsorptance"); + parameterMap_General.Add(PanelParameter.TotalSolarEnergyTransmittance, typeof(Autodesk.Revit.DB.HostObject), "SAM_SrfgValue"); + parameterMap_General.Add(PanelParameter.Adiabatic, typeof(Autodesk.Revit.DB.HostObject), "SAM_SrfAdiabatic"); //2023.09.10 //mapCluster.Add(typeof(Panel), typeof(HostObject), null, "SAM_NorthAngle"); //double //mapCluster.Add(typeof(Panel), typeof(HostObject), null, "SAM_FacingExternal"); //double //mapCluster.Add(typeof(Panel), typeof(HostObject), null, "SAM_FacingExternalGlazing"); //double //Aperture - parameterMap_General.Add(ApertureParameter.ThermalTransmittance, typeof(FamilyInstance), "SAM_SrfUValue"); - parameterMap_General.Add(ApertureParameter.LightTransmittance, typeof(FamilyInstance), "SAM_SrfLightTransmittance"); - parameterMap_General.Add(ApertureParameter.LightReflectance, typeof(FamilyInstance), "SAM_SrfLightReflectance"); - parameterMap_General.Add(ApertureParameter.DirectSolarEnergyTransmittance, typeof(FamilyInstance), "SAM_SrfDirectSolarEnergyTransmittance"); - parameterMap_General.Add(ApertureParameter.DirectSolarEnergyReflectance, typeof(FamilyInstance), "SAM_SrfDirectSolarEnergyReflectance"); - parameterMap_General.Add(ApertureParameter.DirectSolarEnergyAbsorptance, typeof(FamilyInstance), "SAM_SrfDirectSolarEnergyAbsorptance"); - parameterMap_General.Add(ApertureParameter.TotalSolarEnergyTransmittance, typeof(FamilyInstance), "SAM_SrfgValue"); + parameterMap_General.Add(ApertureParameter.ThermalTransmittance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_SrfUValue"); + parameterMap_General.Add(ApertureParameter.LightTransmittance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_SrfLightTransmittance"); + parameterMap_General.Add(ApertureParameter.LightReflectance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_SrfLightReflectance"); + parameterMap_General.Add(ApertureParameter.DirectSolarEnergyTransmittance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_SrfDirectSolarEnergyTransmittance"); + parameterMap_General.Add(ApertureParameter.DirectSolarEnergyReflectance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_SrfDirectSolarEnergyReflectance"); + parameterMap_General.Add(ApertureParameter.DirectSolarEnergyAbsorptance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_SrfDirectSolarEnergyAbsorptance"); + parameterMap_General.Add(ApertureParameter.TotalSolarEnergyTransmittance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_SrfgValue"); //Material - parameterMap_General.Add(typeof(Core.Material), typeof(FamilyInstance), "ThermalConductivity", "SAM_Material_Conductivity"); - parameterMap_General.Add(typeof(Core.Material), typeof(FamilyInstance), "SpecificHeatCapacity", "SAM_Material_SpecificHeat"); - parameterMap_General.Add(typeof(Core.Material), typeof(FamilyInstance), "Density", "SAM_Material_Density"); - parameterMap_General.Add(typeof(Core.Material), typeof(FamilyInstance), "Description", "SAM_Material_Description"); - parameterMap_General.Add(typeof(Core.Material), typeof(FamilyInstance), "Name", "SAM_Material_Name"); - parameterMap_General.Add(RevitMaterialParameter.TypeName, typeof(FamilyInstance), "SAM_Material_Type"); - parameterMap_General.Add(Core.MaterialParameter.DefaultThickness, typeof(FamilyInstance), "SAM_Material_Width"); - parameterMap_General.Add(MaterialParameter.VapourDiffusionFactor, typeof(FamilyInstance), "SAM_Material_VapourDiffusionFactor"); + parameterMap_General.Add(typeof(Core.Material), typeof(Autodesk.Revit.DB.FamilyInstance), "ThermalConductivity", "SAM_Material_Conductivity"); + parameterMap_General.Add(typeof(Core.Material), typeof(Autodesk.Revit.DB.FamilyInstance), "SpecificHeatCapacity", "SAM_Material_SpecificHeat"); + parameterMap_General.Add(typeof(Core.Material), typeof(Autodesk.Revit.DB.FamilyInstance), "Density", "SAM_Material_Density"); + parameterMap_General.Add(typeof(Core.Material), typeof(Autodesk.Revit.DB.FamilyInstance), "Description", "SAM_Material_Description"); + parameterMap_General.Add(typeof(Core.Material), typeof(Autodesk.Revit.DB.FamilyInstance), "Name", "SAM_Material_Name"); + parameterMap_General.Add(RevitMaterialParameter.TypeName, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_Type"); + parameterMap_General.Add(Core.MaterialParameter.DefaultThickness, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_Width"); + parameterMap_General.Add(MaterialParameter.VapourDiffusionFactor, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_VapourDiffusionFactor"); //GasMaterial - parameterMap_General.Add(GasMaterialParameter.HeatTransferCoefficient, typeof(FamilyInstance), "SAM_Material_ConvectionCoefficient"); + parameterMap_General.Add(GasMaterialParameter.HeatTransferCoefficient, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_ConvectionCoefficient"); //TransparentMaterial - parameterMap_General.Add(TransparentMaterialParameter.ExternalEmissivity, typeof(FamilyInstance), "SAM_Material_ExternalEmissivity"); - parameterMap_General.Add(TransparentMaterialParameter.ExternalLightReflectance, typeof(FamilyInstance), "SAM_Material_ExternalLightReflectance"); - parameterMap_General.Add(TransparentMaterialParameter.ExternalSolarReflectance, typeof(FamilyInstance), "SAM_Material_ExternalSolarReflectance"); - parameterMap_General.Add(TransparentMaterialParameter.InternalEmissivity, typeof(FamilyInstance), "SAM_Material_InternalEmissivity"); - parameterMap_General.Add(TransparentMaterialParameter.InternalLightReflectance, typeof(FamilyInstance), "SAM_Material_InternalLightReflectance"); - parameterMap_General.Add(TransparentMaterialParameter.InternalSolarReflectance, typeof(FamilyInstance), "SAM_Material_InternalSolarReflectance"); - parameterMap_General.Add(TransparentMaterialParameter.IsBlind, typeof(FamilyInstance), "SAM_Material_IsBlind"); - parameterMap_General.Add(TransparentMaterialParameter.LightTransmittance, typeof(FamilyInstance), "SAM_Material_LightTransmittance"); - parameterMap_General.Add(TransparentMaterialParameter.SolarTransmittance, typeof(FamilyInstance), "SAM_Material_SolarTransmittance"); + parameterMap_General.Add(TransparentMaterialParameter.ExternalEmissivity, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_ExternalEmissivity"); + parameterMap_General.Add(TransparentMaterialParameter.ExternalLightReflectance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_ExternalLightReflectance"); + parameterMap_General.Add(TransparentMaterialParameter.ExternalSolarReflectance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_ExternalSolarReflectance"); + parameterMap_General.Add(TransparentMaterialParameter.InternalEmissivity, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_InternalEmissivity"); + parameterMap_General.Add(TransparentMaterialParameter.InternalLightReflectance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_InternalLightReflectance"); + parameterMap_General.Add(TransparentMaterialParameter.InternalSolarReflectance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_InternalSolarReflectance"); + parameterMap_General.Add(TransparentMaterialParameter.IsBlind, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_IsBlind"); + parameterMap_General.Add(TransparentMaterialParameter.LightTransmittance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_LightTransmittance"); + parameterMap_General.Add(TransparentMaterialParameter.SolarTransmittance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_SolarTransmittance"); //OpaqueMaterial - parameterMap_General.Add(OpaqueMaterialParameter.ExternalEmissivity, typeof(FamilyInstance), "SAM_Material_ExternalEmissivity"); - parameterMap_General.Add(OpaqueMaterialParameter.ExternalLightReflectance, typeof(FamilyInstance), "SAM_Material_ExternalLightReflectance"); - parameterMap_General.Add(OpaqueMaterialParameter.ExternalSolarReflectance, typeof(FamilyInstance), "SAM_Material_ExternalSolarReflectance"); - parameterMap_General.Add(OpaqueMaterialParameter.IgnoreThermalTransmittanceCalculations, typeof(FamilyInstance), "SAM_Material_IngnoreInUvalue"); - parameterMap_General.Add(OpaqueMaterialParameter.InternalEmissivity, typeof(FamilyInstance), "SAM_Material_InternalEmissivity"); - parameterMap_General.Add(OpaqueMaterialParameter.InternalLightReflectance, typeof(FamilyInstance), "SAM_Material_InternalLightReflectance"); - parameterMap_General.Add(OpaqueMaterialParameter.InternalSolarReflectance, typeof(FamilyInstance), "SAM_Material_InternalSolarReflectance"); + parameterMap_General.Add(OpaqueMaterialParameter.ExternalEmissivity, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_ExternalEmissivity"); + parameterMap_General.Add(OpaqueMaterialParameter.ExternalLightReflectance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_ExternalLightReflectance"); + parameterMap_General.Add(OpaqueMaterialParameter.ExternalSolarReflectance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_ExternalSolarReflectance"); + parameterMap_General.Add(OpaqueMaterialParameter.IgnoreThermalTransmittanceCalculations, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_IngnoreInUvalue"); + parameterMap_General.Add(OpaqueMaterialParameter.InternalEmissivity, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_InternalEmissivity"); + parameterMap_General.Add(OpaqueMaterialParameter.InternalLightReflectance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_InternalLightReflectance"); + parameterMap_General.Add(OpaqueMaterialParameter.InternalSolarReflectance, typeof(Autodesk.Revit.DB.FamilyInstance), "SAM_Material_InternalSolarReflectance"); result.Add(Core.Revit.ActiveSetting.Name.ParameterMap, parameterMap_General); @@ -246,7 +246,7 @@ public static Setting GetDefault() parameterMap_Cooling.Add(SpaceSimulationResultParameter.Pollutant, typeof(Autodesk.Revit.DB.Mechanical.Space), "='SAM' + [SAM.Core.Revit.Query.ParameterNamePrefix(Object_1)] + '_SpacePollutant'"); parameterMap_Cooling.Add(SpaceSimulationResultParameter.DesignLoad, typeof(Autodesk.Revit.DB.Mechanical.Space), "='SAM' + [SAM.Core.Revit.Query.ParameterNamePrefix(Object_1)] + '_DesSpecSensCoolLoad'", null, "[SAM.Analytical.Query.SpecificDesignLoad(Object_1)]"); parameterMap_Cooling.Add(SpaceSimulationResultParameter.DesignLoad, typeof(Autodesk.Revit.DB.Mechanical.Space), "='SAM' + [SAM.Core.Revit.Query.ParameterNamePrefix(Object_1)] + '_DesSensCoolingLoad'");// "[SAM.Analytical.Query.SpecificLoad(Object_1)]"); - parameterMap_Cooling.Add(AdjacencyClusterSimulationResultParameter.UnmetHours, typeof(ProjectInfo), "SAM_BuildingUnmetHoursCooling"); + parameterMap_Cooling.Add(AdjacencyClusterSimulationResultParameter.UnmetHours, typeof(Autodesk.Revit.DB.ProjectInfo), "SAM_BuildingUnmetHoursCooling"); parameterMap_Cooling.Add(typeof(Zone), typeof(Autodesk.Revit.DB.Mechanical.Space), "ZoneOutsideSupplyAirFlow", "SAM_ZoneCLGTotalOutsideSupplyAirFlow", null, "[SAM.Analytical.Query.CalculatedOutsideSupplyAirFlow(AdjacencyCluster, Object_1)]"); parameterMap_Cooling.Add(typeof(Zone), typeof(Autodesk.Revit.DB.Mechanical.Space), "ZoneSupplyAirFlow", "SAM_ZoneCLGSpecifiedSupplyAirflow", null, "[SAM.Analytical.Query.CalculatedSupplyAirFlow(AdjacencyCluster, Object_1)]"); parameterMap_Cooling.Add(typeof(Zone), typeof(Autodesk.Revit.DB.Mechanical.Space), "ZoneExhaustAirFlow", "SAM_ZoneCLGSpecifiedExhaustAirflow", null, "[SAM.Analytical.Query.CalculatedExhaustAirFlow(AdjacencyCluster, Object_1)]"); @@ -273,7 +273,7 @@ public static Setting GetDefault() parameterMap_Heating.Add(SpaceSimulationResultParameter.BuildingHeatTransfer, typeof(Autodesk.Revit.DB.Mechanical.Space), "='SAM' + [SAM.Core.Revit.Query.ParameterNamePrefix(Object_1)] + '_HDD_BuildingHeatTransfer'"); parameterMap_Heating.Add(SpaceSimulationResultParameter.DesignLoad, typeof(Autodesk.Revit.DB.Mechanical.Space), "='SAM' + [SAM.Core.Revit.Query.ParameterNamePrefix(Object_1)] + '_DesSpecSensHeatLoad'", null, "[SAM.Analytical.Query.SpecificDesignLoad(Object_1)]"); parameterMap_Heating.Add(SpaceSimulationResultParameter.DesignLoad, typeof(Autodesk.Revit.DB.Mechanical.Space), "='SAM' + [SAM.Core.Revit.Query.ParameterNamePrefix(Object_1)] + '_DesignSensHeatingLoad'");//"='SAM' + [SAM.Core.Revit.Query.ParameterNamePrefix(Object_1)] + '_Height'", null, "[SAM.Analytical.Query.Height(Object_1)]"); - parameterMap_Heating.Add(AdjacencyClusterSimulationResultParameter.UnmetHours, typeof(ProjectInfo), "SAM_BuildingUnmetHoursHeating"); + parameterMap_Heating.Add(AdjacencyClusterSimulationResultParameter.UnmetHours, typeof(Autodesk.Revit.DB.ProjectInfo), "SAM_BuildingUnmetHoursHeating"); parameterMap_Heating.Add(typeof(Zone), typeof(Autodesk.Revit.DB.Mechanical.Space), "ZoneOutsideSupplyAirFlow", "SAM_ZoneHTGTotalOutsideSupplyAirFlow", null, "[SAM.Analytical.Query.CalculatedOutsideSupplyAirFlow(AdjacencyCluster, Object_1)]"); parameterMap_Heating.Add(typeof(Zone), typeof(Autodesk.Revit.DB.Mechanical.Space), "ZoneSupplyAirFlow", "SAM_ZoneHTGSpecifiedSupplyAirflow", null, "[SAM.Analytical.Query.CalculatedSupplyAirFlow(AdjacencyCluster, Object_1)]"); parameterMap_Heating.Add(typeof(Zone), typeof(Autodesk.Revit.DB.Mechanical.Space), "ZoneExhaustAirFlow", "SAM_ZoneHTGSpecifiedExhaustAirflow", null, "[SAM.Analytical.Query.CalculatedExhaustAirFlow(AdjacencyCluster, Object_1)]"); diff --git a/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs b/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs index 38d0a656..df8cddb8 100644 --- a/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs +++ b/SAM_Revit/SAM.Geometry.Revit/Manager/ActiveSetting.cs @@ -1,7 +1,7 @@ -using SAM.Core; -// SPDX-License-Identifier: LGPL-3.0-or-later +// SPDX-License-Identifier: LGPL-3.0-or-later // Copyright (c) 2020–2026 Michal Dengusiak & Jakub Ziolkowski and contributors +using SAM.Core; using System.Reflection; namespace SAM.Geometry.Revit @@ -14,12 +14,17 @@ public static class Name private static Setting setting = null; + private static readonly object settingLock = new (); + private static Setting Load() { Setting setting = ActiveManager.GetSetting(Assembly.GetExecutingAssembly()); if (setting == null) + { setting = GetDefault(); + } + return setting; } @@ -27,9 +32,12 @@ public static Setting Setting { get { - if(setting == null) + if (setting == null) { - setting = Load(); + lock (settingLock) + { + setting ??= Load(); + } } return setting; @@ -38,7 +46,7 @@ public static Setting Setting public static Setting GetDefault() { - Setting setting = new Setting(Assembly.GetExecutingAssembly()); + Setting setting = new(Assembly.GetExecutingAssembly()); return setting; }