Merge branch 'dev' into claire/autocad-reference-point
This commit is contained in:
+3
-8
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user