diff --git a/All.sln b/All.sln
index bceb0b5d70..2ad59e31d7 100644
--- a/All.sln
+++ b/All.sln
@@ -2065,38 +2065,6 @@ Global
{737D5567-7B1F-410D-9B7B-BAE8065ED15B}.Release|Any CPU.Build.0 = Release|Any CPU
{737D5567-7B1F-410D-9B7B-BAE8065ED15B}.Release|x64.ActiveCfg = Release|Any CPU
{737D5567-7B1F-410D-9B7B-BAE8065ED15B}.Release|x64.Build.0 = Release|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug Mac|x64.ActiveCfg = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug Mac|x64.Build.0 = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug|x64.ActiveCfg = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug|x64.Build.0 = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release Mac|Any CPU.ActiveCfg = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release Mac|Any CPU.Build.0 = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release Mac|x64.ActiveCfg = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release Mac|x64.Build.0 = Debug|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release|Any CPU.Build.0 = Release|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release|x64.ActiveCfg = Release|Any CPU
- {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release|x64.Build.0 = Release|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug Mac|x64.ActiveCfg = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug Mac|x64.Build.0 = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug|x64.ActiveCfg = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug|x64.Build.0 = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release Mac|Any CPU.ActiveCfg = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release Mac|Any CPU.Build.0 = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release Mac|x64.ActiveCfg = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release Mac|x64.Build.0 = Debug|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release|Any CPU.Build.0 = Release|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release|x64.ActiveCfg = Release|Any CPU
- {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release|x64.Build.0 = Release|Any CPU
{75144587-6F51-46C8-8E40-DA652FBC53F4}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU
{75144587-6F51-46C8-8E40-DA652FBC53F4}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU
{75144587-6F51-46C8-8E40-DA652FBC53F4}.Debug Mac|x64.ActiveCfg = Debug|Any CPU
@@ -2145,6 +2113,38 @@ Global
{A0C9EBE0-A56A-4D07-B6EF-2EEAEC45D6C4}.Release|Any CPU.Build.0 = Release|Any CPU
{A0C9EBE0-A56A-4D07-B6EF-2EEAEC45D6C4}.Release|x64.ActiveCfg = Release|Any CPU
{A0C9EBE0-A56A-4D07-B6EF-2EEAEC45D6C4}.Release|x64.Build.0 = Release|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug Mac|x64.ActiveCfg = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug Mac|x64.Build.0 = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Debug|x64.Build.0 = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release Mac|Any CPU.ActiveCfg = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release Mac|Any CPU.Build.0 = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release Mac|x64.ActiveCfg = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release Mac|x64.Build.0 = Debug|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release|x64.ActiveCfg = Release|Any CPU
+ {7F0206A9-61D4-4D3A-9B43-789DABA7C143}.Release|x64.Build.0 = Release|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug Mac|x64.ActiveCfg = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug Mac|x64.Build.0 = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Debug|x64.Build.0 = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release Mac|Any CPU.ActiveCfg = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release Mac|Any CPU.Build.0 = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release Mac|x64.ActiveCfg = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release Mac|x64.Build.0 = Debug|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release|x64.ActiveCfg = Release|Any CPU
+ {2CC777EB-BD63-4FAB-BC3A-68A640D2E639}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/ConnectorCSI/ConnectorCSIBridge/ConnectorCSIBridge.csproj b/ConnectorCSI/ConnectorCSIBridge/ConnectorCSIBridge.csproj
index f427af43a9..e2d7c9fdb9 100644
--- a/ConnectorCSI/ConnectorCSIBridge/ConnectorCSIBridge.csproj
+++ b/ConnectorCSI/ConnectorCSIBridge/ConnectorCSIBridge.csproj
@@ -5,6 +5,6 @@
false
-
+
\ No newline at end of file
diff --git a/ConnectorCSI/ConnectorCSIShared/UI/ConnectorBindingsCSI.Recieve.cs b/ConnectorCSI/ConnectorCSIShared/UI/ConnectorBindingsCSI.Recieve.cs
index 9c4dfa108e..d810f40ada 100644
--- a/ConnectorCSI/ConnectorCSIShared/UI/ConnectorBindingsCSI.Recieve.cs
+++ b/ConnectorCSI/ConnectorCSIShared/UI/ConnectorBindingsCSI.Recieve.cs
@@ -1,4 +1,4 @@
-using ConnectorCSI.Storage;
+using ConnectorCSI.Storage;
using DesktopUI2;
using DesktopUI2.Models;
using DesktopUI2.ViewModels;
@@ -18,6 +18,8 @@
using Serilog.Context;
using Speckle.Core.Logging;
using Speckle.Core.Models.GraphTraversal;
+using Speckle.Core.Logging;
+using Speckle.Core.Kits.ConverterInterfaces;
namespace Speckle.ConnectorCSI.UI
{
@@ -38,7 +40,7 @@ public override async Task ReceiveStream(StreamState state, Progres
var kit = KitManager.GetDefaultKit();
var appName = GetHostAppVersion(Model);
- var converter = kit.LoadConverter(appName);
+ ISpeckleConverter converter = kit.LoadConverter(appName);
// set converter settings as tuples (setting slug, setting selection)
// for csi, these must go before the SetContextDocument method.
@@ -151,6 +153,11 @@ private List ConvertReceivedObjects(ISpeckleConverter convert
progress.Update(conversionProgressDict);
}
+ if (converter is IFinalizable finalizable)
+ {
+ finalizable.FinalizeConversion();
+ }
+
return conversionResults;
}
diff --git a/ConnectorCSI/ConnectorSAP2000/ConnectorSAP2000.csproj b/ConnectorCSI/ConnectorSAP2000/ConnectorSAP2000.csproj
index 8f61141175..d953a8de1f 100644
--- a/ConnectorCSI/ConnectorSAP2000/ConnectorSAP2000.csproj
+++ b/ConnectorCSI/ConnectorSAP2000/ConnectorSAP2000.csproj
@@ -5,6 +5,6 @@
false
-
+
\ No newline at end of file
diff --git a/ConnectorCSI/DriverCSharp/DriverCSharp.csproj b/ConnectorCSI/DriverCSharp/DriverCSharp.csproj
index b2f9fefb85..723e97c68c 100644
--- a/ConnectorCSI/DriverCSharp/DriverCSharp.csproj
+++ b/ConnectorCSI/DriverCSharp/DriverCSharp.csproj
@@ -8,7 +8,6 @@
false
-
@@ -23,4 +22,5 @@
+
\ No newline at end of file
diff --git a/Core/Core/Kits/ConverterInterfaces/IFinalizable.cs b/Core/Core/Kits/ConverterInterfaces/IFinalizable.cs
new file mode 100644
index 0000000000..1c6d27cdbb
--- /dev/null
+++ b/Core/Core/Kits/ConverterInterfaces/IFinalizable.cs
@@ -0,0 +1,7 @@
+namespace Speckle.Core.Kits.ConverterInterfaces
+{
+ public interface IFinalizable
+ {
+ void FinalizeConversion();
+ }
+}
diff --git a/Objects/Converters/ConverterCSI/ConverterCSIBridge/ConverterCSIBridge.csproj b/Objects/Converters/ConverterCSI/ConverterCSIBridge/ConverterCSIBridge.csproj
index 4a309a3a93..2c09c9843d 100644
--- a/Objects/Converters/ConverterCSI/ConverterCSIBridge/ConverterCSIBridge.csproj
+++ b/Objects/Converters/ConverterCSI/ConverterCSIBridge/ConverterCSIBridge.csproj
@@ -17,13 +17,13 @@
-
+
-
-
-
+
+
+
@@ -33,12 +33,10 @@
-
-
-
+
+
+
-
+
\ No newline at end of file
diff --git a/Objects/Converters/ConverterCSI/ConverterCSIShared/ConverterCSI.DatabaseTableUtils.cs b/Objects/Converters/ConverterCSI/ConverterCSIShared/ConverterCSI.DatabaseTableUtils.cs
new file mode 100644
index 0000000000..13e12071b1
--- /dev/null
+++ b/Objects/Converters/ConverterCSI/ConverterCSIShared/ConverterCSI.DatabaseTableUtils.cs
@@ -0,0 +1,14 @@
+using ConverterCSIShared.Models;
+
+namespace Objects.Converter.CSI
+{
+ public partial class ConverterCSI
+ {
+ private ETABSGridLineDefinitionTable gridLineDefinitionTable;
+ private ETABSGridLineDefinitionTable GridLineDefinitionTable => gridLineDefinitionTable ??= new(Model, new(Model));
+ public void CommitAllDatabaseTableChanges()
+ {
+ GridLineDefinitionTable.CommitPendingChanges();
+ }
+ }
+}
diff --git a/Objects/Converters/ConverterCSI/ConverterCSIShared/ConverterCSI.cs b/Objects/Converters/ConverterCSI/ConverterCSIShared/ConverterCSI.cs
index 96c57688ed..1eb54355aa 100644
--- a/Objects/Converters/ConverterCSI/ConverterCSIShared/ConverterCSI.cs
+++ b/Objects/Converters/ConverterCSI/ConverterCSIShared/ConverterCSI.cs
@@ -15,10 +15,11 @@
using Objects.Other;
using Objects.Structural.Materials;
using OSG = Objects.Structural.Geometry;
+using Speckle.Core.Kits.ConverterInterfaces;
namespace Objects.Converter.CSI
{
- public partial class ConverterCSI : ISpeckleConverter
+ public partial class ConverterCSI : ISpeckleConverter, IFinalizable
{
#if ETABS
public static string CSIAppName = HostApplications.ETABS.Name;
@@ -432,5 +433,10 @@ public List ConvertToSpeckle(List