Merge branch 'dev' into claire/autocad-reference-point

This commit is contained in:
Claire Kuang
2025-10-04 10:42:17 +01:00
committed by GitHub
4 changed files with 30 additions and 34 deletions
@@ -34,8 +34,7 @@ public class CreateSpeckleProperties : VariableParameterComponentBase
pManager.AddParameter(param);
}
protected override void RegisterOutputParams(GH_OutputParamManager pManager)
{
protected override void RegisterOutputParams(GH_OutputParamManager pManager) =>
pManager.AddParameter(
new SpecklePropertyGroupParam(),
"Properties",
@@ -43,7 +42,6 @@ public class CreateSpeckleProperties : VariableParameterComponentBase
"Properties for Speckle Objects",
GH_ParamAccess.item
);
}
protected override void SolveInstance(IGH_DataAccess da)
{
@@ -67,8 +65,7 @@ public class CreateSpeckleProperties : VariableParameterComponentBase
{
var paramName = Params.Input[i].NickName;
var data = Params.Input[i].VolatileData.AllData(true).ToList();
if (data.Count == 0)
if (Params.Input[i].VolatileDataCount == 0)
{
continue;
}
@@ -168,10 +165,8 @@ public class CreateSpeckleProperties : VariableParameterComponentBase
ExpireSolution(true);
}
protected override void WriteComponentSpecificData(GH_IWriter writer)
{
protected override void WriteComponentSpecificData(GH_IWriter writer) =>
writer.SetBoolean("CreateEmptyProperties", CreateEmptyProperties);
}
protected override void ReadComponentSpecificData(GH_IReader reader)
{
@@ -5,7 +5,7 @@ namespace Speckle.Converters.CSiShared;
[GenerateAutoInterface]
public class CsiConversionSettingsFactory(
IHostToSpeckleUnitConverter<eUnits> unitsConverter,
IHostToSpeckleUnitConverter<eLength> unitsConverter,
IConverterSettingsStore<CsiConversionSettings> settingsStore
) : ICsiConversionSettingsFactory
{
@@ -15,11 +15,21 @@ public class CsiConversionSettingsFactory(
cSapModel document,
List<string>? selectedLoadCasesAndCombinations = null,
List<string>? selectedResultTypes = null
) =>
new(
)
{
// NOTE: only applicable to ETABS. If we bring in SAP2000 then we need to revert to GetPresentUnits
// NOTE: change from GetPresentUnits as this was linked to weird behaviour (see CNX-2621), returning "0" sometimes
// bug in the GetPresentUnits api call ...
eTemperature temperatureUnit = eTemperature.NotApplicable;
eLength lengthUnit = eLength.NotApplicable;
eForce forceUnit = eForce.NotApplicable;
document.GetPresentUnits_2(ref forceUnit, ref lengthUnit, ref temperatureUnit);
return new CsiConversionSettings(
document,
unitsConverter.ConvertOrThrow(document.GetPresentUnits()),
unitsConverter.ConvertOrThrow(lengthUnit),
selectedLoadCasesAndCombinations ?? [],
selectedResultTypes ?? []
);
}
}
@@ -5,37 +5,28 @@ using Speckle.Sdk.Common.Exceptions;
namespace Speckle.Converters.CSiShared;
/// <summary>
/// Convert CSi eUnits enumeration to Speckle units.
/// Convert CSi eLength enumeration to Speckle units.
/// </summary>
/// <remarks>
/// CSi GetPresentUnits() valid for both SAP 2000 and ETABS.
/// CSi GetPresentUnits_2() valid for ONLY ETABS. If we add SAP2000, this needs to be modified
/// Represents units transmitted through API calls and not necessarily those displayed in GUI.
/// </remarks>
public class CsiToSpeckleUnitConverter : IHostToSpeckleUnitConverter<eUnits>
public class CsiToSpeckleUnitConverter : IHostToSpeckleUnitConverter<eLength>
{
private readonly Dictionary<eUnits, string> _unitMapping = new Dictionary<eUnits, string>();
private readonly Dictionary<eLength, string> _unitMapping = [];
public CsiToSpeckleUnitConverter()
{
_unitMapping[eUnits.lb_in_F] = Units.Inches;
_unitMapping[eUnits.lb_ft_F] = Units.Feet;
_unitMapping[eUnits.kip_in_F] = Units.Inches;
_unitMapping[eUnits.kip_ft_F] = Units.Feet;
_unitMapping[eUnits.kN_mm_C] = Units.Millimeters;
_unitMapping[eUnits.kN_m_C] = Units.Meters;
_unitMapping[eUnits.kgf_mm_C] = Units.Millimeters;
_unitMapping[eUnits.kgf_m_C] = Units.Meters;
_unitMapping[eUnits.N_mm_C] = Units.Millimeters;
_unitMapping[eUnits.N_m_C] = Units.Meters;
_unitMapping[eUnits.Ton_mm_C] = Units.Millimeters;
_unitMapping[eUnits.Ton_m_C] = Units.Meters;
_unitMapping[eUnits.kN_cm_C] = Units.Centimeters;
_unitMapping[eUnits.kgf_cm_C] = Units.Centimeters;
_unitMapping[eUnits.N_cm_C] = Units.Centimeters;
_unitMapping[eUnits.Ton_cm_C] = Units.Centimeters;
_unitMapping[eLength.NotApplicable] = Units.None;
_unitMapping[eLength.inch] = Units.Inches;
_unitMapping[eLength.ft] = Units.Feet;
// _unitMapping[eLength.micron] = Units.None;
_unitMapping[eLength.mm] = Units.Millimeters;
_unitMapping[eLength.cm] = Units.Centimeters;
_unitMapping[eLength.m] = Units.Meters;
}
public string ConvertOrThrow(eUnits hostUnit) =>
public string ConvertOrThrow(eLength hostUnit) =>
_unitMapping.TryGetValue(hostUnit, out string? value)
? value
: throw new UnitNotSupportedException($"The Unit System \"{hostUnit}\" is unsupported.");
@@ -39,7 +39,7 @@ public static class ServiceRegistration
serviceCollection.AddScoped<CsiToSpeckleCacheSingleton>();
// Settings and unit conversions
serviceCollection.AddApplicationConverters<CsiToSpeckleUnitConverter, eUnits>(converterAssembly);
serviceCollection.AddApplicationConverters<CsiToSpeckleUnitConverter, eLength>(converterAssembly);
serviceCollection.AddScoped<
IConverterSettingsStore<CsiConversionSettings>,
ConverterSettingsStore<CsiConversionSettings>