diff --git a/All.sln b/All.sln index 5e80640bb0..4cca95fc50 100644 --- a/All.sln +++ b/All.sln @@ -524,10 +524,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Autocad", "Autocad", "{804E EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Converters.AutocadShared", "DUI3-DX\Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.shproj", "{9ADD1B7A-6401-4202-8613-F668E2FBC0A4}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2023", "DUI3-DX\Converters\Autocad\2023\Speckle.Converters.Autocad2023\Speckle.Converters.Autocad2023.csproj", "{631C295A-7CCF-4B42-8686-7034E31469E7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2023.DependencyInjection", "DUI3-DX\Converters\Autocad\2023\Speckle.Converters.Autocad2023.DependencyInjection\Speckle.Converters.Autocad2023.DependencyInjection.csproj", "{D940853C-003A-482C-BDB0-665367F274A0}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.DUI.WebView", "DUI3-DX\DUI3\Speckle.Connectors.DUI.WebView\Speckle.Connectors.DUI.WebView.csproj", "{7420652C-3046-4F38-BE64-9B9E69D76FA2}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{326ECEE0-D009-4A65-B24C-00FA343D8B99}" @@ -558,9 +554,21 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{B1324D25 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Civil3d2024", "DUI3-DX\Connectors\Autocad\Speckle.Connectors.Civil3d2024\Speckle.Connectors.Civil3d2024.csproj", "{DDBBA313-69A6-40DE-AB3A-79EE5BF32A7E}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2024", "DUI3-DX\Converters\Autocad\2024\Speckle.Converters.Autocad2024\Speckle.Converters.Autocad2024.csproj", "{C9C28F31-1367-438C-83B0-049C3B3A3E3B}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Civil3d", "Civil3d", "{34A6BB15-A030-4C5B-94B2-1A1DFE49334A}" +EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Converters.Civil3dShared", "DUI3-DX\Converters\Civil3d\Speckle.Converters.Civil3dShared\Speckle.Converters.Civil3dShared.shproj", "{35175682-DA83-4C0A-A49D-B191F5885D8E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Civil3d2024", "DUI3-DX\Converters\Civil3d\Speckle.Converters.Civil3d2024\Speckle.Converters.Civil3d2024.csproj", "{E7FA6A25-A224-4207-846B-75CE8236228D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Civil3d2024.DependencyInjection", "DUI3-DX\Converters\Civil3d\Speckle.Converters.Civil3d2024.DependencyInjection\Speckle.Converters.Civil3d2024.DependencyInjection.csproj", "{9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2024.DependencyInjection", "DUI3-DX\Converters\Autocad\Speckle.Converters.Autocad2024.DependencyInjection\Speckle.Converters.Autocad2024.DependencyInjection.csproj", "{2C587020-5F9F-40E1-8AF8-772FE3FC256A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2023", "DUI3-DX\Converters\Autocad\Speckle.Converters.Autocad2023\Speckle.Converters.Autocad2023.csproj", "{C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2023.DependencyInjection", "DUI3-DX\Converters\Autocad\Speckle.Converters.Autocad2023.DependencyInjection\Speckle.Converters.Autocad2023.DependencyInjection.csproj", "{4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Converters.Autocad2024.DependencyInjection", "DUI3-DX\Converters\Autocad\2024\Speckle.Converters.Autocad2024.DependencyInjection\Speckle.Converters.Autocad2024.DependencyInjection.csproj", "{06082BAA-98E8-49B1-9D33-252B126A0561}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Autocad2024", "DUI3-DX\Converters\Autocad\Speckle.Converters.Autocad2024\Speckle.Converters.Autocad2024.csproj", "{A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -2620,38 +2628,6 @@ Global {11F7D41B-AFCA-4D29-BC08-285A14BF3A3B}.Release|Any CPU.Build.0 = Release|Any CPU {11F7D41B-AFCA-4D29-BC08-285A14BF3A3B}.Release|x64.ActiveCfg = Release|Any CPU {11F7D41B-AFCA-4D29-BC08-285A14BF3A3B}.Release|x64.Build.0 = Release|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Debug Mac|x64.ActiveCfg = Debug|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Debug Mac|x64.Build.0 = Debug|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Debug|x64.ActiveCfg = Debug|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Debug|x64.Build.0 = Debug|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Release Mac|Any CPU.ActiveCfg = Release|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Release Mac|Any CPU.Build.0 = Release|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Release Mac|x64.ActiveCfg = Release|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Release Mac|x64.Build.0 = Release|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Release|Any CPU.Build.0 = Release|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Release|x64.ActiveCfg = Release|Any CPU - {631C295A-7CCF-4B42-8686-7034E31469E7}.Release|x64.Build.0 = Release|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Debug Mac|x64.ActiveCfg = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Debug Mac|x64.Build.0 = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Debug|x64.ActiveCfg = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Debug|x64.Build.0 = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Release Mac|Any CPU.ActiveCfg = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Release Mac|Any CPU.Build.0 = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Release Mac|x64.ActiveCfg = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Release Mac|x64.Build.0 = Debug|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Release|Any CPU.Build.0 = Release|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Release|x64.ActiveCfg = Release|Any CPU - {D940853C-003A-482C-BDB0-665367F274A0}.Release|x64.Build.0 = Release|Any CPU {7420652C-3046-4F38-BE64-9B9E69D76FA2}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU {7420652C-3046-4F38-BE64-9B9E69D76FA2}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU {7420652C-3046-4F38-BE64-9B9E69D76FA2}.Debug Mac|x64.ActiveCfg = Debug|Any CPU @@ -2812,38 +2788,102 @@ Global {DDBBA313-69A6-40DE-AB3A-79EE5BF32A7E}.Release|Any CPU.Build.0 = Release|Any CPU {DDBBA313-69A6-40DE-AB3A-79EE5BF32A7E}.Release|x64.ActiveCfg = Release|Any CPU {DDBBA313-69A6-40DE-AB3A-79EE5BF32A7E}.Release|x64.Build.0 = Release|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Debug Mac|x64.ActiveCfg = Debug|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Debug Mac|x64.Build.0 = Debug|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Debug|x64.ActiveCfg = Debug|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Debug|x64.Build.0 = Debug|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Release Mac|Any CPU.ActiveCfg = Release|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Release Mac|Any CPU.Build.0 = Release|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Release Mac|x64.ActiveCfg = Release|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Release Mac|x64.Build.0 = Release|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Release|Any CPU.Build.0 = Release|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Release|x64.ActiveCfg = Release|Any CPU - {C9C28F31-1367-438C-83B0-049C3B3A3E3B}.Release|x64.Build.0 = Release|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Debug Mac|x64.ActiveCfg = Debug|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Debug Mac|x64.Build.0 = Debug|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Debug|Any CPU.Build.0 = Debug|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Debug|x64.ActiveCfg = Debug|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Debug|x64.Build.0 = Debug|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Release Mac|Any CPU.ActiveCfg = Release|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Release Mac|Any CPU.Build.0 = Release|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Release Mac|x64.ActiveCfg = Release|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Release Mac|x64.Build.0 = Release|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Release|Any CPU.ActiveCfg = Release|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Release|Any CPU.Build.0 = Release|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Release|x64.ActiveCfg = Release|Any CPU - {06082BAA-98E8-49B1-9D33-252B126A0561}.Release|x64.Build.0 = Release|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Debug Mac|x64.ActiveCfg = Debug|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Debug Mac|x64.Build.0 = Debug|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Debug|x64.ActiveCfg = Debug|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Debug|x64.Build.0 = Debug|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Release Mac|Any CPU.ActiveCfg = Release|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Release Mac|Any CPU.Build.0 = Release|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Release Mac|x64.ActiveCfg = Release|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Release Mac|x64.Build.0 = Release|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Release|Any CPU.Build.0 = Release|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Release|x64.ActiveCfg = Release|Any CPU + {E7FA6A25-A224-4207-846B-75CE8236228D}.Release|x64.Build.0 = Release|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Debug Mac|x64.ActiveCfg = Debug|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Debug Mac|x64.Build.0 = Debug|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Debug|x64.ActiveCfg = Debug|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Debug|x64.Build.0 = Debug|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Release Mac|Any CPU.ActiveCfg = Release|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Release Mac|Any CPU.Build.0 = Release|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Release Mac|x64.ActiveCfg = Release|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Release Mac|x64.Build.0 = Release|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Release|Any CPU.Build.0 = Release|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Release|x64.ActiveCfg = Release|Any CPU + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34}.Release|x64.Build.0 = Release|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Debug Mac|x64.ActiveCfg = Debug|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Debug Mac|x64.Build.0 = Debug|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Debug|x64.ActiveCfg = Debug|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Debug|x64.Build.0 = Debug|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Release Mac|Any CPU.ActiveCfg = Release|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Release Mac|Any CPU.Build.0 = Release|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Release Mac|x64.ActiveCfg = Release|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Release Mac|x64.Build.0 = Release|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Release|Any CPU.Build.0 = Release|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Release|x64.ActiveCfg = Release|Any CPU + {2C587020-5F9F-40E1-8AF8-772FE3FC256A}.Release|x64.Build.0 = Release|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Debug Mac|x64.ActiveCfg = Debug|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Debug Mac|x64.Build.0 = Debug|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Debug|x64.ActiveCfg = Debug|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Debug|x64.Build.0 = Debug|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Release Mac|Any CPU.ActiveCfg = Release|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Release Mac|Any CPU.Build.0 = Release|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Release Mac|x64.ActiveCfg = Release|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Release Mac|x64.Build.0 = Release|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Release|Any CPU.Build.0 = Release|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Release|x64.ActiveCfg = Release|Any CPU + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF}.Release|x64.Build.0 = Release|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Debug Mac|x64.ActiveCfg = Debug|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Debug Mac|x64.Build.0 = Debug|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Debug|x64.ActiveCfg = Debug|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Debug|x64.Build.0 = Debug|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Release Mac|Any CPU.ActiveCfg = Release|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Release Mac|Any CPU.Build.0 = Release|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Release Mac|x64.ActiveCfg = Release|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Release Mac|x64.Build.0 = Release|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Release|Any CPU.Build.0 = Release|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Release|x64.ActiveCfg = Release|Any CPU + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23}.Release|x64.Build.0 = Release|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Debug Mac|x64.ActiveCfg = Debug|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Debug Mac|x64.Build.0 = Debug|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Debug|x64.ActiveCfg = Debug|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Debug|x64.Build.0 = Debug|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Release Mac|Any CPU.ActiveCfg = Release|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Release Mac|Any CPU.Build.0 = Release|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Release Mac|x64.ActiveCfg = Release|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Release Mac|x64.Build.0 = Release|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Release|Any CPU.Build.0 = Release|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Release|x64.ActiveCfg = Release|Any CPU + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -3054,10 +3094,14 @@ Global {70DEAA13-6DC8-44A0-B287-9E806A8054F1} = {890F3257-FCC2-4ED8-9180-22B3641B494C} {F06E4C37-4076-4272-9CA6-FB505E02CD31} = {BE521908-7944-46F3-98BF-B47D34509934} {DDBBA313-69A6-40DE-AB3A-79EE5BF32A7E} = {743489BF-1941-43D5-8AF9-35C56D0DCC34} - {631C295A-7CCF-4B42-8686-7034E31469E7} = {804E065F-914C-414A-AF84-009312C3CFF6} - {D940853C-003A-482C-BDB0-665367F274A0} = {804E065F-914C-414A-AF84-009312C3CFF6} - {C9C28F31-1367-438C-83B0-049C3B3A3E3B} = {804E065F-914C-414A-AF84-009312C3CFF6} - {06082BAA-98E8-49B1-9D33-252B126A0561} = {804E065F-914C-414A-AF84-009312C3CFF6} + {34A6BB15-A030-4C5B-94B2-1A1DFE49334A} = {1FE3C60E-7865-40A5-9794-55ECB64F6489} + {35175682-DA83-4C0A-A49D-B191F5885D8E} = {34A6BB15-A030-4C5B-94B2-1A1DFE49334A} + {E7FA6A25-A224-4207-846B-75CE8236228D} = {34A6BB15-A030-4C5B-94B2-1A1DFE49334A} + {9BCE88BA-1E01-44EE-BF9D-2CB906E63E34} = {34A6BB15-A030-4C5B-94B2-1A1DFE49334A} + {2C587020-5F9F-40E1-8AF8-772FE3FC256A} = {804E065F-914C-414A-AF84-009312C3CFF6} + {C9F084AF-FB70-4F5F-ACEB-DB6818BBECAF} = {804E065F-914C-414A-AF84-009312C3CFF6} + {4E83BA93-4EC4-4A6E-AD27-8CD9A409FD23} = {804E065F-914C-414A-AF84-009312C3CFF6} + {A6BAA749-0DBE-49A9-9A9D-FCA0F06EE096} = {804E065F-914C-414A-AF84-009312C3CFF6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {1D43D91B-4F01-4A78-8250-CC6F9BD93A14} @@ -3084,6 +3128,7 @@ Global ConnectorTeklaStructures\ConnectorTeklaStructuresShared\ConnectorTeklaStructuresShared.projitems*{28e2ea7f-ffd1-4e13-9165-0243b5ac82f5}*SharedItemsImports = 13 Objects\Converters\ConverterAutocadCivil\ConverterAutocadCivilShared\ConverterAutocadCivilShared.projitems*{2d0f9f8a-2e89-4780-978a-cd92d6d7b843}*SharedItemsImports = 13 Objects\Converters\ConverterRevit\ConverterRevitShared\ConverterRevitShared.projitems*{2dcd648d-dca5-4d2a-8b14-ad2cb85d24b0}*SharedItemsImports = 13 + DUI3-DX\Converters\Civil3d\Speckle.Converters.Civil3dShared\Speckle.Converters.Civil3dShared.projitems*{35175682-da83-4c0a-a49d-b191f5885d8e}*SharedItemsImports = 13 ConnectorBentley\ConnectorBentleyShared\ConnectorBentleyShared.projitems*{372d9f0f-ede9-4050-bf8c-758911c5c2e0}*SharedItemsImports = 13 ConnectorTeklaStructures\ConnectorTeklaStructuresShared\ConnectorTeklaStructuresShared.projitems*{3af1ef30-0906-4926-a02c-4e3ad666352a}*SharedItemsImports = 5 ConnectorAutocadCivil\ConnectorAutocadCivil\ConnectorAutocadCivilShared.projitems*{3b9189b9-e485-448a-8793-9b9587a36791}*SharedItemsImports = 5 @@ -3112,7 +3157,6 @@ Global ConnectorRevit\ConnectorRevit\ConnectorRevit.projitems*{5fd0d810-03e9-4fd2-93e4-b1b51e5d82c5}*SharedItemsImports = 13 ConnectorCSI\ConnectorCSIShared\ConnectorCSIShared.projitems*{61374cd0-e774-4dcd-bfab-6356b0931283}*SharedItemsImports = 13 ConnectorRevit\RevitSharedResources\RevitSharedResources.projitems*{61c1304b-ed48-456b-ab90-a89066187952}*SharedItemsImports = 5 - DUI3-DX\Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{631c295a-7ccf-4b42-8686-7034e31469e7}*SharedItemsImports = 5 ConnectorAutocadCivil\ConnectorAutocadCivil\ConnectorAutocadCivilShared.projitems*{658de496-5177-4cd5-a949-fe59e47109b6}*SharedItemsImports = 5 ConnectorTeklaStructures\ConnectorTeklaStructuresShared\ConnectorTeklaStructuresShared.projitems*{67157264-aaa5-46a8-a38b-16254b49b892}*SharedItemsImports = 5 Objects\Converters\ConverterDynamo\ConverterDynamoShared\ConverterDynamoShared.projitems*{67a463d3-e98b-4b16-b069-d7bbb05386a1}*SharedItemsImports = 5 @@ -3147,6 +3191,7 @@ Global ConnectorBentley\ConnectorBentleyShared\ConnectorBentleyShared.projitems*{a3a0ee09-6055-4009-ab8e-13fbc1a403a9}*SharedItemsImports = 5 ConnectorNavisworks\ConnectorNavisworks\ConnectorNavisworks.Shared.projitems*{a517a609-cab1-4b33-b83c-1b13b34e4560}*SharedItemsImports = 13 ConnectorRhino\ConnectorRhino\ConnectorRhinoShared\ConnectorRhinoShared.projitems*{a64acbf9-db82-4839-af99-57ed2e7989f4}*SharedItemsImports = 5 + DUI3-DX\Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{a6baa749-0dbe-49a9-9a9d-fca0f06ee096}*SharedItemsImports = 5 Objects\Converters\ConverterRhinoGh\ConverterRhinoGhShared\ConverterRhinoGhShared.projitems*{a8607330-1b23-43cc-8b9b-25818d9c1d64}*SharedItemsImports = 5 Objects\Converters\ConverterDynamo\ConverterDynamoShared\ConverterDynamoShared.projitems*{aaa05c3d-856d-4f22-971e-5e3f066d0eae}*SharedItemsImports = 5 Objects\Converters\ConverterRevit\ConverterRevitShared\ConverterRevitShared.projitems*{aaa05c3d-856d-4f22-971e-5e3f066d0eae}*SharedItemsImports = 5 @@ -3165,7 +3210,7 @@ Global Objects\Converters\ConverterRevit\ConverterRevitShared\ConverterRevitShared.projitems*{c21a6553-b4ec-4ec3-b82a-c7a83cffb809}*SharedItemsImports = 5 ConnectorRevit\RevitSharedResources\RevitSharedResources.projitems*{c2ba8b6b-72bd-4dab-865f-90c66083bdb2}*SharedItemsImports = 5 Objects\Converters\ConverterNavisworks\ConverterNavisworks\ConverterNavisworksShared.projitems*{c3232ef3-2000-44c6-a330-b94531c9cc83}*SharedItemsImports = 13 - DUI3-DX\Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{c9c28f31-1367-438c-83b0-049c3b3a3e3b}*SharedItemsImports = 5 + DUI3-DX\Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{c9f084af-fb70-4f5f-aceb-db6818bbecaf}*SharedItemsImports = 5 Objects\Converters\ConverterNavisworks\ConverterNavisworks\ConverterNavisworksShared.projitems*{cafd4eac-75a8-4fc8-94e5-91cadc39f5b3}*SharedItemsImports = 5 Objects\Converters\ConverterRevit\ConverterRevitShared\ConverterRevitShared.projitems*{cc790553-8088-41a9-83cd-b29f7141f408}*SharedItemsImports = 5 Objects\Converters\ConverterNavisworks\ConverterNavisworks\ConverterNavisworksShared.projitems*{cd334556-ba2b-4272-a1eb-628e8152204a}*SharedItemsImports = 5 @@ -3181,6 +3226,8 @@ Global ConnectorNavisworks\ConnectorNavisworks\ConnectorNavisworks.Shared.projitems*{debc2174-5e31-4b6e-8680-690d75e50e2d}*SharedItemsImports = 5 ConnectorRevit\ConnectorRevit\ConnectorRevit.projitems*{dfdfdbb8-018b-4dcb-a012-54227abf53a7}*SharedItemsImports = 5 DUI3-DX\Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{e1c43415-3200-45f4-8bf9-a4dd7d7f2ed6}*SharedItemsImports = 13 + DUI3-DX\Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{e7fa6a25-a224-4207-846b-75ce8236228d}*SharedItemsImports = 5 + DUI3-DX\Converters\Civil3d\Speckle.Converters.Civil3dShared\Speckle.Converters.Civil3dShared.projitems*{e7fa6a25-a224-4207-846b-75ce8236228d}*SharedItemsImports = 5 ConnectorRevit\RevitSharedResources\RevitSharedResources.projitems*{ea34ac83-5825-4473-a572-d5127fd33b1b}*SharedItemsImports = 5 Objects\Converters\ConverterRhinoGh\ConverterRhinoGhShared\ConverterRhinoGhShared.projitems*{ea81f83c-1485-49c8-ab05-9df2798d70ec}*SharedItemsImports = 5 Objects\Converters\ConverterTeklaStructures\ConverterTeklaStructuresShared\ConverterTeklaStructuresShared.projitems*{eb52e451-9ed8-460e-9ee4-6717bfb12eab}*SharedItemsImports = 5 diff --git a/DUI3-DX.slnf b/DUI3-DX.slnf index 4f4a6e3edb..ae770c7ef8 100644 --- a/DUI3-DX.slnf +++ b/DUI3-DX.slnf @@ -12,11 +12,14 @@ "DUI3-DX\\Connectors\\Rhino\\Speckle.Connectors.Rhino7\\Speckle.Connectors.Rhino7.csproj", "DUI3-DX\\Converters\\ArcGIS\\Speckle.Converters.ArcGIS3.DependencyInjection\\Speckle.Converters.ArcGIS3.DependencyInjection.csproj", "DUI3-DX\\Converters\\ArcGIS\\Speckle.Converters.ArcGIS3\\Speckle.Converters.ArcGIS3.csproj", - "DUI3-DX\\Converters\\Autocad\\2023\\Speckle.Converters.Autocad2023.DependencyInjection\\Speckle.Converters.Autocad2023.DependencyInjection.csproj", - "DUI3-DX\\Converters\\Autocad\\2023\\Speckle.Converters.Autocad2023\\Speckle.Converters.Autocad2023.csproj", - "DUI3-DX\\Converters\\Autocad\\2024\\Speckle.Converters.Autocad2024.DependencyInjection\\Speckle.Converters.Autocad2024.DependencyInjection.csproj", - "DUI3-DX\\Converters\\Autocad\\2024\\Speckle.Converters.Autocad2024\\Speckle.Converters.Autocad2024.csproj", + "DUI3-DX\\Converters\\Autocad\\Speckle.Converters.Autocad2023.DependencyInjection\\Speckle.Converters.Autocad2023.DependencyInjection.csproj", + "DUI3-DX\\Converters\\Autocad\\Speckle.Converters.Autocad2023\\Speckle.Converters.Autocad2023.csproj", + "DUI3-DX\\Converters\\Autocad\\Speckle.Converters.Autocad2024.DependencyInjection\\Speckle.Converters.Autocad2024.DependencyInjection.csproj", + "DUI3-DX\\Converters\\Autocad\\Speckle.Converters.Autocad2024\\Speckle.Converters.Autocad2024.csproj", "DUI3-DX\\Converters\\Autocad\\Speckle.Converters.AutocadShared\\Speckle.Converters.AutocadShared.shproj", + "DUI3-DX\\Converters\\Civil3d\\Speckle.Converters.Civil3d2024.DependencyInjection\\Speckle.Converters.Civil3d2024.DependencyInjection.csproj", + "DUI3-DX\\Converters\\Civil3d\\Speckle.Converters.Civil3d2024\\Speckle.Converters.Civil3d2024.csproj", + "DUI3-DX\\Converters\\Civil3d\\Speckle.Converters.Civil3dShared\\Speckle.Converters.Civil3dShared.shproj", "DUI3-DX\\Converters\\Revit\\Speckle.Converters.Revit2023.DependencyInjection\\Speckle.Converters.Revit2023.DependencyInjection.csproj", "DUI3-DX\\Converters\\Revit\\Speckle.Converters.Revit2023\\Speckle.Converters.Revit2023.csproj", "DUI3-DX\\Converters\\Revit\\Speckle.Converters.RevitShared\\Speckle.Converters.RevitShared.shproj", diff --git a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj index e3913f6c11..88e6b47cdf 100644 --- a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj +++ b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj @@ -10,7 +10,7 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/AutocadConnectorModule.cs b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/AutocadConnectorModule.cs index 52da8c7d75..777a2ed66c 100644 --- a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/AutocadConnectorModule.cs +++ b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/AutocadConnectorModule.cs @@ -1,25 +1,6 @@ #if AUTOCAD -using Autodesk.AutoCAD.DatabaseServices; -using Speckle.Autofac; using Speckle.Autofac.DependencyInjection; -using Speckle.Connectors.Autocad.Bindings; -using Speckle.Connectors.Autocad.Filters; -using Speckle.Connectors.Autocad.HostApp; -using Speckle.Connectors.Autocad.Interfaces; -using Speckle.Connectors.Autocad.Operations.Receive; -using Speckle.Connectors.Autocad.Operations.Send; -using Speckle.Connectors.Autocad.Plugin; -using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.Bindings; -using Speckle.Connectors.DUI.Models; -using Speckle.Connectors.DUI.Models.Card.SendFilter; -using Speckle.Connectors.DUI.WebView; -using Speckle.Connectors.Utils; -using Speckle.Connectors.Utils.Builders; -using Speckle.Connectors.Utils.Caching; -using Speckle.Connectors.Utils.Instances; -using Speckle.Connectors.Utils.Operations; -using Speckle.Core.Models.GraphTraversal; namespace Speckle.Connectors.Autocad.DependencyInjection; @@ -27,43 +8,14 @@ public class AutocadConnectorModule : ISpeckleModule { public void Load(SpeckleContainerBuilder builder) { - builder.AddAutofac(); - builder.AddConnectorUtils(); - builder.AddDUI(); - builder.AddDUIView(); - - // Register other connector specific types - builder.AddSingleton(); - builder.AddTransient(); - builder.AddSingleton(new AutocadDocumentManager()); // TODO: Dependent to TransactionContext, can be moved to AutocadContext - builder.AddSingleton(); - builder.AddSingleton(); - builder.AddSingleton(); - - SharedConnectorModule.LoadShared(builder); - - - builder.AddScoped(); + SharedRegistration.Load(builder); // Operations - builder.AddScoped>(); - builder.AddSingleton(DefaultTraversal.CreateTraversalFunc()); - - // Object Builders - builder.AddScoped(); - builder.AddScoped, AutocadRootObjectBuilder>(); + SharedRegistration.LoadSend(builder); + SharedRegistration.LoadReceive(builder); // Register bindings builder.AddSingleton("connectorName", "Autocad"); // POC: Easier like this for now, should be cleaned up later - builder.AddSingleton(); - builder.AddSingleton(); - - // register send filters - builder.AddTransient(); - - // register send conversion cache - builder.AddSingleton(); - builder.AddScoped>, AutocadInstanceObjectManager>(); } } #endif diff --git a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/Civil3dConnectorModule.cs b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/Civil3dConnectorModule.cs index e6889843c5..0b06869c6e 100644 --- a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/Civil3dConnectorModule.cs +++ b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/Civil3dConnectorModule.cs @@ -1,13 +1,7 @@ #if CIVIL3D + using Speckle.Autofac.DependencyInjection; -using Speckle.Connectors.Autocad.Bindings; -using Speckle.Connectors.Autocad.Filters; -using Speckle.Connectors.Autocad.Operations.Send; using Speckle.Connectors.DUI.Bindings; -using Speckle.Connectors.DUI.Models.Card.SendFilter; -using Speckle.Connectors.Utils.Builders; -using Speckle.Connectors.Utils.Caching; -using Speckle.Connectors.Utils.Operations; namespace Speckle.Connectors.Autocad.DependencyInjection; @@ -15,23 +9,11 @@ public class Civil3dConnectorModule : ISpeckleModule { public void Load(SpeckleContainerBuilder builder) { - SharedConnectorModule.LoadShared(builder); - - // Operations - builder.AddScoped>(); - - // Object Builders - builder.AddScoped, AutocadRootObjectBuilder>(); - + SharedRegistration.Load(builder); + SharedRegistration.LoadSend(builder); + // Register bindings builder.AddSingleton("connectorName", "Civil3d"); // POC: Easier like this for now, should be cleaned up later - builder.AddSingleton(); - - // register send filters - builder.AddTransient(); - - // register send conversion cache - builder.AddSingleton(); } } #endif diff --git a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedConnectorModule.cs b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedConnectorModule.cs deleted file mode 100644 index 48b71d723e..0000000000 --- a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedConnectorModule.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Speckle.Autofac; -using Speckle.Autofac.DependencyInjection; -using Speckle.Connectors.Autocad.Bindings; -using Speckle.Connectors.Autocad.HostApp; -using Speckle.Connectors.Autocad.Interfaces; -using Speckle.Connectors.Autocad.Plugin; -using Speckle.Connectors.DUI; -using Speckle.Connectors.DUI.Bindings; -using Speckle.Connectors.DUI.Models; -using Speckle.Connectors.DUI.WebView; -using Speckle.Connectors.Utils; - -namespace Speckle.Connectors.Autocad.DependencyInjection; - -public static class SharedConnectorModule -{ - public static void LoadShared(SpeckleContainerBuilder builder) - { - builder.AddAutofac(); - builder.AddConnectorUtils(); - builder.AddDUI(); - builder.AddDUIView(); - - // Register other connector specific types - builder.AddSingleton(); - builder.AddTransient(); - builder.AddSingleton(new AutocadDocumentManager()); // TODO: Dependent to TransactionContext, can be moved to AutocadContext - builder.AddSingleton(); - builder.AddSingleton(); - builder.AddSingleton(); - builder.AddSingleton(); - - // Register bindings - builder.AddSingleton(); - builder.AddSingleton(); - builder.AddSingleton(); - builder.AddSingleton(); - builder.AddSingleton(); - } -} diff --git a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs new file mode 100644 index 0000000000..b9b5856054 --- /dev/null +++ b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs @@ -0,0 +1,82 @@ +using Autodesk.AutoCAD.DatabaseServices; +using Speckle.Autofac; +using Speckle.Autofac.DependencyInjection; +using Speckle.Connectors.Autocad.Bindings; +using Speckle.Connectors.Autocad.HostApp; +using Speckle.Connectors.Autocad.Interfaces; +using Speckle.Connectors.Autocad.Plugin; +using Speckle.Connectors.DUI; +using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Models; +using Speckle.Connectors.DUI.WebView; +using Speckle.Connectors.Utils; +using Speckle.Connectors.Autocad.Filters; +using Speckle.Connectors.Autocad.Operations.Send; +using Speckle.Connectors.DUI.Models.Card.SendFilter; +using Speckle.Connectors.Utils.Builders; +using Speckle.Connectors.Utils.Caching; +using Speckle.Connectors.Utils.Operations; +using Speckle.Connectors.Utils.Instances; +using Speckle.Connectors.Autocad.Operations.Receive; + +using Speckle.Core.Models.GraphTraversal; + +namespace Speckle.Connectors.Autocad.DependencyInjection; + +public static class SharedRegistration +{ + public static void Load(SpeckleContainerBuilder builder) + { + builder.AddAutofac(); + builder.AddConnectorUtils(); + builder.AddDUI(); + builder.AddDUIView(); + + // Register other connector specific types + builder.AddSingleton(); + builder.AddTransient(); + builder.AddSingleton(new AutocadDocumentManager()); // TODO: Dependent to TransactionContext, can be moved to AutocadContext + builder.AddSingleton(); + builder.AddSingleton(); + builder.AddScoped(); + builder.AddSingleton(); + + // Register bindings + builder.AddSingleton(); + builder.AddSingleton(); + builder.AddSingleton(); + builder.AddSingleton(); + builder.AddSingleton(); + } + + public static void LoadSend(SpeckleContainerBuilder builder) + { + // Operations + builder.AddScoped>(); + + // Object Builders + builder.AddScoped, AutocadRootObjectBuilder>(); + + // Register bindings + builder.AddSingleton(); + + // register send filters + builder.AddTransient(); + + // register send conversion cache + builder.AddSingleton(); + builder.AddScoped>, AutocadInstanceObjectManager>(); + } + + public static void LoadReceive(SpeckleContainerBuilder builder) + { + // traversal + builder.AddSingleton(DefaultTraversal.CreateTraversalFunc()); + + // Object Builders + builder.AddScoped(); + + // Register bindings + builder.AddSingleton(); + } +} diff --git a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems index b95639804d..8fb44c372f 100644 --- a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems +++ b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems @@ -13,7 +13,7 @@ - + diff --git a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj index b04e1c73e0..8e9190f710 100644 --- a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj +++ b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj @@ -1,4 +1,4 @@ - + Speckle.Connectors.Civil3d net48 @@ -10,7 +10,7 @@ - + @@ -19,6 +19,7 @@ + diff --git a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index 71a6fee082..aff9c51d13 100644 --- a/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/DUI3-DX/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -28,6 +28,12 @@ "resolved": "1.14.1", "contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ==" }, + "Speckle.AutoCAD.API": { + "type": "Direct", + "requested": "[2024.0.0, )", + "resolved": "2024.0.0", + "contentHash": "pZZ5uI+NXhZaQnsqRkgp/rywqBAjDObDJ9XNFGJvemT5k2OthDpHzlK/mKxz8QDCYie7uImQ8dv3uWj2QUFDPw==" + }, "Speckle.Civil3D.API": { "type": "Direct", "requested": "[2024.0.0, )", @@ -458,18 +464,19 @@ "Speckle.Core": "[3.0.1-alpha.14, )" } }, - "speckle.converters.autocad2024": { + "speckle.converters.civil3d2024": { "type": "Project", "dependencies": { "Speckle.AutoCAD.API": "[2024.0.0, )", + "Speckle.Civil3D.API": "[2024.0.0, )", "Speckle.Converters.Common": "[2.0.999-local, )" } }, - "speckle.converters.autocad2024.dependencyinjection": { + "speckle.converters.civil3d2024.dependencyinjection": { "type": "Project", "dependencies": { "Autofac": "[5.2.0, )", - "Speckle.Converters.Autocad2024": "[2.0.999-local, )", + "Speckle.Converters.Civil3d2024": "[2.0.999-local, )", "Speckle.Converters.Common.DependencyInjection": "[2.0.999-local, )" } }, @@ -512,12 +519,6 @@ "Serilog": "2.12.0" } }, - "Speckle.AutoCAD.API": { - "type": "CentralTransitive", - "requested": "[2023.0.0, )", - "resolved": "2024.0.0", - "contentHash": "pZZ5uI+NXhZaQnsqRkgp/rywqBAjDObDJ9XNFGJvemT5k2OthDpHzlK/mKxz8QDCYie7uImQ8dv3uWj2QUFDPw==" - }, "Speckle.Core": { "type": "CentralTransitive", "requested": "[3.0.1-alpha.14, )", diff --git a/DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023.DependencyInjection/AutocadConverterModule.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/AutocadConverterModule.cs similarity index 100% rename from DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023.DependencyInjection/AutocadConverterModule.cs rename to DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/AutocadConverterModule.cs diff --git a/DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023.DependencyInjection/Speckle.Converters.Autocad2023.DependencyInjection.csproj b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/Speckle.Converters.Autocad2023.DependencyInjection.csproj similarity index 72% rename from DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023.DependencyInjection/Speckle.Converters.Autocad2023.DependencyInjection.csproj rename to DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/Speckle.Converters.Autocad2023.DependencyInjection.csproj index 303e2f808a..aa5a5af310 100644 --- a/DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023.DependencyInjection/Speckle.Converters.Autocad2023.DependencyInjection.csproj +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/Speckle.Converters.Autocad2023.DependencyInjection.csproj @@ -4,14 +4,14 @@ net48 x64 - + - - + - + + diff --git a/DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023.DependencyInjection/packages.lock.json b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/packages.lock.json similarity index 99% rename from DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023.DependencyInjection/packages.lock.json rename to DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/packages.lock.json index e51635ea86..99b4b1fb8c 100644 --- a/DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023.DependencyInjection/packages.lock.json +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/packages.lock.json @@ -396,7 +396,7 @@ }, "Speckle.AutoCAD.API": { "type": "CentralTransitive", - "requested": "[2023.0.0, )", + "requested": "[2024.0.0, )", "resolved": "2023.0.0", "contentHash": "aNfiNw9zRW8pCl8AAQK7afEJuea4bJ4sFNsGVSDrdq1egaonZrwALU01dSyFNCE8tne86eVjlprpOGG6r0+G/A==" }, diff --git a/DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023/Speckle.Converters.Autocad2023.csproj b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023/Speckle.Converters.Autocad2023.csproj similarity index 57% rename from DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023/Speckle.Converters.Autocad2023.csproj rename to DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023/Speckle.Converters.Autocad2023.csproj index 2fc9b23da0..06ab0541d9 100644 --- a/DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023/Speckle.Converters.Autocad2023.csproj +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023/Speckle.Converters.Autocad2023.csproj @@ -10,9 +10,9 @@ - + - + diff --git a/DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023/packages.lock.json b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json similarity index 100% rename from DUI3-DX/Converters/Autocad/2023/Speckle.Converters.Autocad2023/packages.lock.json rename to DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json diff --git a/DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024.DependencyInjection/AutocadConverterModule.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/AutocadConverterModule.cs similarity index 91% rename from DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024.DependencyInjection/AutocadConverterModule.cs rename to DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/AutocadConverterModule.cs index 66c4b57aff..6d9b3a767a 100644 --- a/DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024.DependencyInjection/AutocadConverterModule.cs +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/AutocadConverterModule.cs @@ -5,7 +5,7 @@ using Speckle.Converters.Common; using Speckle.Converters.Common.DependencyInjection; -namespace Speckle.Converters.Autocad20243.DependencyInjection; +namespace Speckle.Converters.Autocad2024.DependencyInjection; public class AutocadConverterModule : ISpeckleModule { diff --git a/DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024.DependencyInjection/Speckle.Converters.Autocad2024.DependencyInjection.csproj b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/Speckle.Converters.Autocad2024.DependencyInjection.csproj similarity index 73% rename from DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024.DependencyInjection/Speckle.Converters.Autocad2024.DependencyInjection.csproj rename to DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/Speckle.Converters.Autocad2024.DependencyInjection.csproj index 05de443d1e..79c93f345c 100644 --- a/DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024.DependencyInjection/Speckle.Converters.Autocad2024.DependencyInjection.csproj +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/Speckle.Converters.Autocad2024.DependencyInjection.csproj @@ -6,7 +6,7 @@ - + diff --git a/DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024.DependencyInjection/packages.lock.json b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/packages.lock.json similarity index 99% rename from DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024.DependencyInjection/packages.lock.json rename to DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/packages.lock.json index bb0e3cfe08..fe9923d926 100644 --- a/DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024.DependencyInjection/packages.lock.json +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/packages.lock.json @@ -396,7 +396,7 @@ }, "Speckle.AutoCAD.API": { "type": "CentralTransitive", - "requested": "[2023.0.0, )", + "requested": "[2024.0.0, )", "resolved": "2024.0.0", "contentHash": "pZZ5uI+NXhZaQnsqRkgp/rywqBAjDObDJ9XNFGJvemT5k2OthDpHzlK/mKxz8QDCYie7uImQ8dv3uWj2QUFDPw==" }, diff --git a/DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj similarity index 57% rename from DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj rename to DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj index 05f9613b37..da1163a6ad 100644 --- a/DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj @@ -10,9 +10,9 @@ - + - + diff --git a/DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024/packages.lock.json b/DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json similarity index 100% rename from DUI3-DX/Converters/Autocad/2024/Speckle.Converters.Autocad2024/packages.lock.json rename to DUI3-DX/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/GlobalUsings.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/GlobalUsings.cs index 9c48f198aa..7922a59807 100644 --- a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/GlobalUsings.cs +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/GlobalUsings.cs @@ -1,5 +1,6 @@ global using ADB = Autodesk.AutoCAD.DatabaseServices; global using AG = Autodesk.AutoCAD.Geometry; +global using ABR = Autodesk.AutoCAD.BoundaryRepresentation; global using SOG = Objects.Geometry; global using SOP = Objects.Primitive; global using Document = Autodesk.AutoCAD.ApplicationServices.Document; diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.projitems b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.projitems index 3644c81cc1..8fb784a3af 100644 --- a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.projitems +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.projitems @@ -38,6 +38,13 @@ + + + + + + + @@ -49,11 +56,12 @@ - + + \ No newline at end of file diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/ArcToSpeckleConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/ArcToSpeckleConverter.cs index 36d7b796f6..c437aa04e0 100644 --- a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/ArcToSpeckleConverter.cs +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/ArcToSpeckleConverter.cs @@ -5,55 +5,16 @@ namespace Speckle.Converters.Autocad.ToSpeckle.Geometry; [NameAndRankValue(nameof(ADB.Arc), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] -public class DBArcToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConverter +public class DBArcToSpeckleConverter : IToSpeckleTopLevelConverter { - private readonly ITypedConverter _pointConverter; - private readonly ITypedConverter _planeConverter; - private readonly ITypedConverter _boxConverter; - private readonly IConversionContextStack _contextStack; + private readonly ITypedConverter _arcConverter; - public DBArcToSpeckleConverter( - ITypedConverter pointConverter, - ITypedConverter planeConverter, - ITypedConverter boxConverter, - IConversionContextStack contextStack - ) + public DBArcToSpeckleConverter(ITypedConverter arcConverter) { - _pointConverter = pointConverter; - _planeConverter = planeConverter; - _boxConverter = boxConverter; - _contextStack = contextStack; + _arcConverter = arcConverter; } public Base Convert(object target) => Convert((ADB.Arc)target); - public SOG.Arc Convert(ADB.Arc target) - { - SOG.Plane plane = _planeConverter.Convert(target.GetPlane()); - SOG.Point start = _pointConverter.Convert(target.StartPoint); - SOG.Point end = _pointConverter.Convert(target.EndPoint); - SOG.Point mid = _pointConverter.Convert(target.GetPointAtDist(target.Length / 2.0)); - SOP.Interval domain = new(target.StartParam, target.EndParam); - SOG.Box bbox = _boxConverter.Convert(target.GeometricExtents); - - SOG.Arc arc = - new( - plane, - target.Radius, - target.StartAngle, - target.EndAngle, - target.TotalAngle, - _contextStack.Current.SpeckleUnits - ) - { - startPoint = start, - endPoint = end, - midPoint = mid, - domain = domain, - length = target.Length, - bbox = bbox - }; - - return arc; - } + public SOG.Arc Convert(ADB.Arc target) => _arcConverter.Convert(target); } diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/CircleToSpeckleConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/CircleToSpeckleConverter.cs index 18b45a8daf..16b1a2bd26 100644 --- a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/CircleToSpeckleConverter.cs +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/CircleToSpeckleConverter.cs @@ -7,30 +7,14 @@ namespace Speckle.Converters.Autocad.ToSpeckle.Geometry; [NameAndRankValue(nameof(ADB.Circle), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] public class DBCircleToSpeckleConverter : IToSpeckleTopLevelConverter { - private readonly ITypedConverter _planeConverter; - private readonly ITypedConverter _boxConverter; - private readonly IConversionContextStack _contextStack; + private readonly ITypedConverter _circleConverter; - public DBCircleToSpeckleConverter( - ITypedConverter planeConverter, - ITypedConverter boxConverter, - IConversionContextStack contextStack - ) + public DBCircleToSpeckleConverter(ITypedConverter circleConverter) { - _planeConverter = planeConverter; - _boxConverter = boxConverter; - _contextStack = contextStack; + _circleConverter = circleConverter; } public Base Convert(object target) => RawConvert((ADB.Circle)target); - public SOG.Circle RawConvert(ADB.Circle target) - { - SOG.Plane plane = _planeConverter.Convert(target.GetPlane()); - SOG.Box bbox = _boxConverter.Convert(target.GeometricExtents); - SOG.Circle circle = - new(plane, target.Radius, _contextStack.Current.SpeckleUnits) { length = target.Circumference, bbox = bbox }; - - return circle; - } + public SOG.Circle RawConvert(ADB.Circle target) => _circleConverter.Convert(target); } diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/EllipseToSpeckleConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/EllipseToSpeckleConverter.cs index 524e1a1d8c..53d3d7e5b7 100644 --- a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/EllipseToSpeckleConverter.cs +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/EllipseToSpeckleConverter.cs @@ -7,40 +7,14 @@ namespace Speckle.Converters.Autocad.ToSpeckle.Geometry; [NameAndRankValue(nameof(ADB.Ellipse), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] public class DBEllipseToSpeckleConverter : IToSpeckleTopLevelConverter { - private readonly ITypedConverter _planeConverter; - private readonly ITypedConverter _boxConverter; - private readonly IConversionContextStack _contextStack; + private readonly ITypedConverter _ellipseConverter; - public DBEllipseToSpeckleConverter( - ITypedConverter planeConverter, - ITypedConverter boxConverter, - IConversionContextStack contextStack - ) + public DBEllipseToSpeckleConverter(ITypedConverter ellipseConverter) { - _planeConverter = planeConverter; - _boxConverter = boxConverter; - _contextStack = contextStack; + _ellipseConverter = ellipseConverter; } public Base Convert(object target) => RawConvert((ADB.Ellipse)target); - public SOG.Ellipse RawConvert(ADB.Ellipse target) - { - SOG.Plane plane = _planeConverter.Convert(new AG.Plane(target.Center, target.MajorAxis, target.MinorAxis)); - SOG.Box bbox = _boxConverter.Convert(target.GeometricExtents); - - // the start and end param corresponds to start and end angle in radians - SOP.Interval trim = new(target.StartAngle, target.EndAngle); - - SOG.Ellipse ellipse = - new(plane, target.MajorRadius, target.MinorRadius, _contextStack.Current.SpeckleUnits) - { - domain = new(0, Math.PI * 2), - trimDomain = trim, - length = target.GetDistanceAtParameter(target.EndParam), - bbox = bbox - }; - - return ellipse; - } + public SOG.Ellipse RawConvert(ADB.Ellipse target) => _ellipseConverter.Convert(target); } diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/LineToSpeckleConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/LineToSpeckleConverter.cs index 22787e2290..710a607f9e 100644 --- a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/LineToSpeckleConverter.cs +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/LineToSpeckleConverter.cs @@ -5,34 +5,16 @@ namespace Speckle.Converters.Autocad.ToSpeckle.Geometry; [NameAndRankValue(nameof(ADB.Line), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] -public class LineToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConverter +public class LineToSpeckleConverter : IToSpeckleTopLevelConverter { - private readonly ITypedConverter _pointConverter; - private readonly ITypedConverter _boxConverter; - private readonly IConversionContextStack _contextStack; + private readonly ITypedConverter _lineConverter; - public LineToSpeckleConverter( - ITypedConverter pointConverter, - ITypedConverter boxConverter, - IConversionContextStack contextStack - ) + public LineToSpeckleConverter(ITypedConverter lineConverter) { - _pointConverter = pointConverter; - _boxConverter = boxConverter; - _contextStack = contextStack; + _lineConverter = lineConverter; } public Base Convert(object target) => Convert((ADB.Line)target); - public SOG.Line Convert(ADB.Line target) => - new( - _pointConverter.Convert(target.StartPoint), - _pointConverter.Convert(target.EndPoint), - _contextStack.Current.SpeckleUnits - ) - { - length = target.Length, - domain = new SOP.Interval(0, target.Length), - bbox = _boxConverter.Convert(target.GeometricExtents) - }; + public SOG.Line Convert(ADB.Line target) => _lineConverter.Convert(target); } diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Polyline2dToSpeckleConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Polyline2dToSpeckleConverter.cs index 330d832cba..e0b053c12c 100644 --- a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Polyline2dToSpeckleConverter.cs +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Polyline2dToSpeckleConverter.cs @@ -15,7 +15,9 @@ namespace Speckle.Converters.Autocad.Geometry; /// The IToSpeckleTopLevelConverter inheritance should only expect database-resident objects. IRawConversion inheritance can expect non database-resident objects, when generated from other converters. /// [NameAndRankValue(nameof(ADB.Polyline2d), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] -public class Polyline2dToSpeckleConverter : IToSpeckleTopLevelConverter +public class Polyline2dToSpeckleConverter + : IToSpeckleTopLevelConverter, + ITypedConverter { private readonly ITypedConverter _arcConverter; private readonly ITypedConverter _lineConverter; @@ -44,9 +46,9 @@ public Polyline2dToSpeckleConverter( _contextStack = contextStack; } - public Base Convert(object target) => RawConvert((ADB.Polyline2d)target); + public Base Convert(object target) => Convert((ADB.Polyline2d)target); - public SOG.Autocad.AutocadPolycurve RawConvert(ADB.Polyline2d target) + public SOG.Autocad.AutocadPolycurve Convert(ADB.Polyline2d target) { // get the poly type var polyType = SOG.Autocad.AutocadPolyType.Unknown; diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Polyline3dToSpeckleConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Polyline3dToSpeckleConverter.cs index fdef5bd478..87b90ad1e9 100644 --- a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Polyline3dToSpeckleConverter.cs +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Polyline3dToSpeckleConverter.cs @@ -14,7 +14,9 @@ namespace Speckle.Converters.Autocad.Geometry; /// The IToSpeckleTopLevelConverter inheritance should only expect database-resident Polyline2d objects. IRawConversion inheritance can expect non database-resident objects, when generated from other converters. /// [NameAndRankValue(nameof(ADB.Polyline3d), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] -public class Polyline3dToSpeckleConverter : IToSpeckleTopLevelConverter +public class Polyline3dToSpeckleConverter + : IToSpeckleTopLevelConverter, + ITypedConverter { private readonly ITypedConverter _pointConverter; private readonly ITypedConverter _splineConverter; @@ -34,9 +36,9 @@ public Polyline3dToSpeckleConverter( _contextStack = contextStack; } - public Base Convert(object target) => RawConvert((ADB.Polyline3d)target); + public Base Convert(object target) => Convert((ADB.Polyline3d)target); - public SOG.Autocad.AutocadPolycurve RawConvert(ADB.Polyline3d target) + public SOG.Autocad.AutocadPolycurve Convert(ADB.Polyline3d target) { // get the poly type var polyType = SOG.Autocad.AutocadPolyType.Unknown; diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Solid3dToSpeckleConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Solid3dToSpeckleConverter.cs new file mode 100644 index 0000000000..841dc1120b --- /dev/null +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/Solid3dToSpeckleConverter.cs @@ -0,0 +1,23 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Core.Models; + +namespace Speckle.Converters.Autocad.Geometry; + +[NameAndRankValue(nameof(ADB.Solid3d), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] +public class Solid3dToSpeckleConverter : IToSpeckleTopLevelConverter +{ + private readonly ITypedConverter _solidConverter; + + public Solid3dToSpeckleConverter(ITypedConverter solidConverter) + { + _solidConverter = solidConverter; + } + + public Base Convert(object target) => RawConvert((ADB.Solid3d)target); + + public SOG.Mesh RawConvert(ADB.Solid3d target) + { + return _solidConverter.Convert(target); + } +} diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/SplineToSpeckleConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/SplineToSpeckleConverter.cs index 059f92f033..d182376cd7 100644 --- a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/SplineToSpeckleConverter.cs +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/SplineToSpeckleConverter.cs @@ -1,5 +1,3 @@ -using Autodesk.AutoCAD.Geometry; -using Speckle.Converters.Autocad.Extensions; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Core.Models; @@ -7,150 +5,16 @@ namespace Speckle.Converters.Autocad.ToSpeckle.Geometry; [NameAndRankValue(nameof(ADB.Spline), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] -public class SplineToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConverter +public class SplineToSpeckleConverter : IToSpeckleTopLevelConverter { - private readonly ITypedConverter _intervalConverter; - private readonly ITypedConverter _boxConverter; - private readonly IConversionContextStack _contextStack; + private readonly ITypedConverter _splineConverter; - public SplineToSpeckleConverter( - ITypedConverter intervalConverter, - ITypedConverter boxConverter, - IConversionContextStack contextStack - ) + public SplineToSpeckleConverter(ITypedConverter splineConverter) { - _intervalConverter = intervalConverter; - _boxConverter = boxConverter; - _contextStack = contextStack; + _splineConverter = splineConverter; } public Base Convert(object target) => Convert((ADB.Spline)target); - public SOG.Curve Convert(ADB.Spline target) - { - // get nurbs and geo data - ADB.NurbsData data = target.NurbsData; - - // POC: HACK: check for incorrectly closed periodic curves (this seems like acad bug, has resulted from receiving rhino curves) - bool periodicClosed = false; - double length = 0; - SOP.Interval domain = new(); - if (target.GetGeCurve() is NurbCurve3d nurbs) - { - length = nurbs.GetLength(nurbs.StartParameter, nurbs.EndParameter, 0.001); - domain = _intervalConverter.Convert(nurbs.GetInterval()); - if (nurbs.Knots.Count < nurbs.NumberOfControlPoints + nurbs.Degree + 1 && target.IsPeriodic) - { - periodicClosed = true; - } - } - - // get points - List points = new(); - foreach (Point3d point in data.GetControlPoints().OfType()) - { - points.Add(point); - } - - // NOTE: for closed periodic splines, autocad does not track last #degree points. - // Add the first #degree control points to the list if so. - if (periodicClosed) - { - points.AddRange(points.GetRange(0, target.Degree)); - } - - // get knots - // NOTE: for closed periodic splines, autocad has #control points + 1 knots. - // Add #degree extra knots to beginning and end with #degree - 1 multiplicity for first and last - var knots = data.GetKnots().OfType().ToList(); - if (periodicClosed) - { - double interval = knots[1] - knots[0]; //knot interval - - for (int i = 0; i < data.Degree; i++) - { - if (i < 2) - { - knots.Insert(knots.Count, knots[^1] + interval); - knots.Insert(0, knots[0] - interval); - } - else - { - knots.Insert(knots.Count, knots[^1]); - knots.Insert(0, knots[0]); - } - } - } - - // get weights - // NOTE: autocad assigns unweighted points a value of -1, and will return an empty list in the spline's nurbsdata if no points are weighted - // NOTE: for closed periodic splines, autocad does not track last #degree points. Add the first #degree weights to the list if so. - List weights = new(); - for (int i = 0; i < target.NumControlPoints; i++) - { - double weight = target.WeightAt(i); - weights.Add(weight <= 0 ? 1 : weight); - } - - if (periodicClosed) - { - weights.AddRange(weights.GetRange(0, target.Degree)); - } - - // set nurbs curve info - var curve = new SOG.Curve - { - points = points.SelectMany(o => o.ToArray()).ToList(), - knots = knots, - weights = weights, - degree = target.Degree, - periodic = target.IsPeriodic, - rational = target.IsRational, - closed = periodicClosed || target.Closed, - length = length, - domain = domain, - bbox = _boxConverter.Convert(target.GeometricExtents), - units = _contextStack.Current.SpeckleUnits - }; - - // POC: get display value if this is a database-resident spline - // POC: if this is called by another converter that has created a spline, assumes the display value is set by that converter - if (target.Database is not null) - { - curve.displayValue = GetDisplayValue(target); - } - - return curve; - } - - // POC: we might have DisplayValue converter/mapper? - private SOG.Polyline GetDisplayValue(ADB.Spline spline) - { - ADB.Curve polySpline = spline.ToPolylineWithPrecision(10, false, false); - List verticesList = new(); - switch (polySpline) - { - case ADB.Polyline2d o: - verticesList = o.GetSubEntities( - ADB.OpenMode.ForRead, - _contextStack.Current.Document.TransactionManager.TopTransaction - ) - .Where(e => e.VertexType != ADB.Vertex2dType.SplineControlVertex) // POC: not validated yet! - .SelectMany(o => o.Position.ToArray()) - .ToList(); - - break; - case ADB.Polyline3d o: - verticesList = o.GetSubEntities( - ADB.OpenMode.ForRead, - _contextStack.Current.Document.TransactionManager.TopTransaction - ) - .Where(e => e.VertexType != ADB.Vertex3dType.ControlVertex) - .SelectMany(o => o.Position.ToArray()) - .ToList(); - break; - } - - return verticesList.ConvertToSpecklePolyline(_contextStack.Current.SpeckleUnits); - } + public SOG.Curve Convert(ADB.Spline target) => _splineConverter.Convert(target); } diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc3dToSpeckleConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc3dToSpeckleRawConverter.cs similarity index 100% rename from DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc3dToSpeckleConverter.cs rename to DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc3dToSpeckleRawConverter.cs diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBArcToSpeckleRawConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBArcToSpeckleRawConverter.cs new file mode 100644 index 0000000000..8b45be3de3 --- /dev/null +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBArcToSpeckleRawConverter.cs @@ -0,0 +1,58 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Core.Models; + +namespace Speckle.Converters.Autocad.ToSpeckle.Raw; + +public class DBArcToSpeckleRawConverter : ITypedConverter +{ + private readonly ITypedConverter _pointConverter; + private readonly ITypedConverter _planeConverter; + private readonly ITypedConverter _boxConverter; + private readonly IConversionContextStack _contextStack; + + public DBArcToSpeckleRawConverter( + ITypedConverter pointConverter, + ITypedConverter planeConverter, + ITypedConverter boxConverter, + IConversionContextStack contextStack + ) + { + _pointConverter = pointConverter; + _planeConverter = planeConverter; + _boxConverter = boxConverter; + _contextStack = contextStack; + } + + public Base Convert(object target) => Convert((ADB.Arc)target); + + public SOG.Arc Convert(ADB.Arc target) + { + SOG.Plane plane = _planeConverter.Convert(target.GetPlane()); + SOG.Point start = _pointConverter.Convert(target.StartPoint); + SOG.Point end = _pointConverter.Convert(target.EndPoint); + SOG.Point mid = _pointConverter.Convert(target.GetPointAtDist(target.Length / 2.0)); + SOP.Interval domain = new(target.StartParam, target.EndParam); + SOG.Box bbox = _boxConverter.Convert(target.GeometricExtents); + + SOG.Arc arc = + new( + plane, + target.Radius, + target.StartAngle, + target.EndAngle, + target.TotalAngle, + _contextStack.Current.SpeckleUnits + ) + { + startPoint = start, + endPoint = end, + midPoint = mid, + domain = domain, + length = target.Length, + bbox = bbox + }; + + return arc; + } +} diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBCircleToSpeckleRawConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBCircleToSpeckleRawConverter.cs new file mode 100644 index 0000000000..06f4cf6877 --- /dev/null +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBCircleToSpeckleRawConverter.cs @@ -0,0 +1,35 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Core.Models; + +namespace Speckle.Converters.Autocad.ToSpeckle.Raw; + +public class DBCircleToSpeckleRawConverter : ITypedConverter +{ + private readonly ITypedConverter _planeConverter; + private readonly ITypedConverter _boxConverter; + private readonly IConversionContextStack _contextStack; + + public DBCircleToSpeckleRawConverter( + ITypedConverter planeConverter, + ITypedConverter boxConverter, + IConversionContextStack contextStack + ) + { + _planeConverter = planeConverter; + _boxConverter = boxConverter; + _contextStack = contextStack; + } + + public Base Convert(object target) => Convert((ADB.Circle)target); + + public SOG.Circle Convert(ADB.Circle target) + { + SOG.Plane plane = _planeConverter.Convert(target.GetPlane()); + SOG.Box bbox = _boxConverter.Convert(target.GeometricExtents); + SOG.Circle circle = + new(plane, target.Radius, _contextStack.Current.SpeckleUnits) { length = target.Circumference, bbox = bbox }; + + return circle; + } +} diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBCurveToSpeckleRawConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBCurveToSpeckleRawConverter.cs new file mode 100644 index 0000000000..ef392923be --- /dev/null +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBCurveToSpeckleRawConverter.cs @@ -0,0 +1,67 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Core.Models; + +namespace Speckle.Converters.Autocad.ToSpeckle.Raw; + +public class DBCurveToSpeckleRawConverter : ITypedConverter, ITypedConverter +{ + private readonly ITypedConverter _lineConverter; + + private readonly ITypedConverter _polylineConverter; + private readonly ITypedConverter _polyline2dConverter; + private readonly ITypedConverter _polyline3dConverter; + private readonly ITypedConverter _arcConverter; + private readonly ITypedConverter _circleConverter; + private readonly ITypedConverter _ellipseConverter; + private readonly ITypedConverter _splineConverter; + private readonly IConversionContextStack _contextStack; + + public DBCurveToSpeckleRawConverter( + ITypedConverter lineConverter, + ITypedConverter polylineConverter, + ITypedConverter polyline2dConverter, + ITypedConverter polyline3dConverter, + ITypedConverter arcConverter, + ITypedConverter circleConverter, + ITypedConverter ellipseConverter, + ITypedConverter splineConverter, + IConversionContextStack contextStack + ) + { + _lineConverter = lineConverter; + _polylineConverter = polylineConverter; + _polyline2dConverter = polyline2dConverter; + _polyline3dConverter = polyline3dConverter; + _arcConverter = arcConverter; + _circleConverter = circleConverter; + _ellipseConverter = ellipseConverter; + _splineConverter = splineConverter; + _contextStack = contextStack; + } + + /// + /// Converts an Autocad curve to a Speckle ICurve. + /// + /// The Autocad curve to convert. + /// The Speckle curve. + /// + /// This is the main converter when the type of curve you input or output does not matter to the caller.
+ /// ⚠️ If an unsupported type of Curve is input, it will be converted as Spline. + ///
+ public Objects.ICurve Convert(ADB.Curve target) => + target switch + { + ADB.Line line => _lineConverter.Convert(line), + //ADB.Polyline polyline => _polylineConverter.Convert(polyline), + //ADB.Polyline2d polyline2d => _polyline2dConverter.Convert(polyline2d), + //ADB.Polyline3d polyline3d => _polyline3dConverter.Convert(polyline3d), + ADB.Arc arc => _arcConverter.Convert(arc), + ADB.Circle circle => _circleConverter.Convert(circle), + ADB.Ellipse ellipse => _ellipseConverter.Convert(ellipse), + ADB.Spline spline => _splineConverter.Convert(spline), + _ => _splineConverter.Convert(target.Spline) + }; + + Base ITypedConverter.Convert(ADB.Curve target) => (Base)Convert(target); +} diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBEllipseToSpeckleRawConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBEllipseToSpeckleRawConverter.cs new file mode 100644 index 0000000000..c763bb0e66 --- /dev/null +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBEllipseToSpeckleRawConverter.cs @@ -0,0 +1,45 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Core.Models; + +namespace Speckle.Converters.Autocad.ToSpeckle.Raw; + +public class DBEllipseToSpeckleRawConverter : ITypedConverter +{ + private readonly ITypedConverter _planeConverter; + private readonly ITypedConverter _boxConverter; + private readonly IConversionContextStack _contextStack; + + public DBEllipseToSpeckleRawConverter( + ITypedConverter planeConverter, + ITypedConverter boxConverter, + IConversionContextStack contextStack + ) + { + _planeConverter = planeConverter; + _boxConverter = boxConverter; + _contextStack = contextStack; + } + + public Base Convert(object target) => Convert((ADB.Ellipse)target); + + public SOG.Ellipse Convert(ADB.Ellipse target) + { + SOG.Plane plane = _planeConverter.Convert(new AG.Plane(target.Center, target.MajorAxis, target.MinorAxis)); + SOG.Box bbox = _boxConverter.Convert(target.GeometricExtents); + + // the start and end param corresponds to start and end angle in radians + SOP.Interval trim = new(target.StartAngle, target.EndAngle); + + SOG.Ellipse ellipse = + new(plane, target.MajorRadius, target.MinorRadius, _contextStack.Current.SpeckleUnits) + { + domain = new(0, Math.PI * 2), + trimDomain = trim, + length = target.GetDistanceAtParameter(target.EndParam), + bbox = bbox + }; + + return ellipse; + } +} diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBLineToSpeckleRawConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBLineToSpeckleRawConverter.cs new file mode 100644 index 0000000000..b4a083c8e3 --- /dev/null +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBLineToSpeckleRawConverter.cs @@ -0,0 +1,37 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Core.Models; + +namespace Speckle.Converters.Autocad.ToSpeckle.Raw; + +public class DBLineToSpeckleRawConverter : ITypedConverter +{ + private readonly ITypedConverter _pointConverter; + private readonly ITypedConverter _boxConverter; + private readonly IConversionContextStack _contextStack; + + public DBLineToSpeckleRawConverter( + ITypedConverter pointConverter, + ITypedConverter boxConverter, + IConversionContextStack contextStack + ) + { + _pointConverter = pointConverter; + _boxConverter = boxConverter; + _contextStack = contextStack; + } + + public Base Convert(object target) => Convert((ADB.Line)target); + + public SOG.Line Convert(ADB.Line target) => + new( + _pointConverter.Convert(target.StartPoint), + _pointConverter.Convert(target.EndPoint), + _contextStack.Current.SpeckleUnits + ) + { + length = target.Length, + domain = new SOP.Interval(0, target.Length), + bbox = _boxConverter.Convert(target.GeometricExtents) + }; +} diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBSolid3dToSpeckleRawConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBSolid3dToSpeckleRawConverter.cs new file mode 100644 index 0000000000..45c2d531a4 --- /dev/null +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBSolid3dToSpeckleRawConverter.cs @@ -0,0 +1,84 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Core.Models; + +namespace Speckle.Converters.Autocad.ToSpeckle.Raw; + +public class Solid3dToSpeckleRawConverter : ITypedConverter +{ + private readonly ITypedConverter _pointConverter; + private readonly ITypedConverter _boxConverter; + private readonly IConversionContextStack _contextStack; + + public Solid3dToSpeckleRawConverter( + ITypedConverter pointConverter, + ITypedConverter boxConverter, + IConversionContextStack contextStack + ) + { + _pointConverter = pointConverter; + _boxConverter = boxConverter; + _contextStack = contextStack; + } + + public Base Convert(object target) => Convert((ADB.Solid3d)target); + + public SOG.Mesh Convert(ADB.Solid3d target) + { + using ABR.Brep brep = new(target); + if (brep.IsNull) + { + throw new SpeckleConversionException("Could not retrieve brep from the solid3d."); + } + + var vertices = new List(); + var faces = new List(); + + // create mesh from solid with mesh filter + using ABR.Mesh2dControl control = new(); + control.MaxSubdivisions = 10000; // POC: these settings may need adjusting + using ABR.Mesh2dFilter filter = new(); + filter.Insert(brep, control); + using ABR.Mesh2d m = new(filter); + foreach (ABR.Element2d e in m.Element2ds) + { + // get vertices + List faceIndices = new(); + foreach (ABR.Node n in e.Nodes) + { + faceIndices.Add(vertices.Count); + vertices.Add(n.Point); + n.Dispose(); + } + + // get faces + List faceList = new() { e.Nodes.Count() }; + for (int i = 0; i < e.Nodes.Count(); i++) + { + faceList.Add(faceIndices[i]); + } + + faces.AddRange(faceList); + + e.Dispose(); + } + + // mesh props + var convertedVertices = vertices.SelectMany(o => _pointConverter.Convert(o).ToList()).ToList(); + double volume = target.MassProperties.Volume; + double area = target.Area; + SOG.Box bbox = _boxConverter.Convert(target.GeometricExtents); + + // create speckle mesh + SOG.Mesh mesh = + new(convertedVertices, faces) + { + units = _contextStack.Current.SpeckleUnits, + bbox = bbox, + area = area, + volume = volume + }; + + return mesh; + } +} diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBSplineToSpeckleRawConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBSplineToSpeckleRawConverter.cs new file mode 100644 index 0000000000..d46b9de0a7 --- /dev/null +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBSplineToSpeckleRawConverter.cs @@ -0,0 +1,155 @@ +using Autodesk.AutoCAD.Geometry; +using Speckle.Converters.Autocad.Extensions; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Core.Models; + +namespace Speckle.Converters.Autocad.ToSpeckle.Raw; + +public class DBSplineToSpeckleRawConverter : ITypedConverter +{ + private readonly ITypedConverter _intervalConverter; + private readonly ITypedConverter _boxConverter; + private readonly IConversionContextStack _contextStack; + + public DBSplineToSpeckleRawConverter( + ITypedConverter intervalConverter, + ITypedConverter boxConverter, + IConversionContextStack contextStack + ) + { + _intervalConverter = intervalConverter; + _boxConverter = boxConverter; + _contextStack = contextStack; + } + + public Base Convert(object target) => Convert((ADB.Spline)target); + + public SOG.Curve Convert(ADB.Spline target) + { + // get nurbs and geo data + ADB.NurbsData data = target.NurbsData; + + // POC: HACK: check for incorrectly closed periodic curves (this seems like acad bug, has resulted from receiving rhino curves) + bool periodicClosed = false; + double length = 0; + SOP.Interval domain = new(); + if (target.GetGeCurve() is NurbCurve3d nurbs) + { + length = nurbs.GetLength(nurbs.StartParameter, nurbs.EndParameter, 0.001); + domain = _intervalConverter.Convert(nurbs.GetInterval()); + if (nurbs.Knots.Count < nurbs.NumberOfControlPoints + nurbs.Degree + 1 && target.IsPeriodic) + { + periodicClosed = true; + } + } + + // get points + List points = new(); + foreach (Point3d point in data.GetControlPoints().OfType()) + { + points.Add(point); + } + + // NOTE: for closed periodic splines, autocad does not track last #degree points. + // Add the first #degree control points to the list if so. + if (periodicClosed) + { + points.AddRange(points.GetRange(0, target.Degree)); + } + + // get knots + // NOTE: for closed periodic splines, autocad has #control points + 1 knots. + // Add #degree extra knots to beginning and end with #degree - 1 multiplicity for first and last + var knots = data.GetKnots().OfType().ToList(); + if (periodicClosed) + { + double interval = knots[1] - knots[0]; //knot interval + + for (int i = 0; i < data.Degree; i++) + { + if (i < 2) + { + knots.Insert(knots.Count, knots[^1] + interval); + knots.Insert(0, knots[0] - interval); + } + else + { + knots.Insert(knots.Count, knots[^1]); + knots.Insert(0, knots[0]); + } + } + } + + // get weights + // NOTE: autocad assigns unweighted points a value of -1, and will return an empty list in the spline's nurbsdata if no points are weighted + // NOTE: for closed periodic splines, autocad does not track last #degree points. Add the first #degree weights to the list if so. + List weights = new(); + for (int i = 0; i < target.NumControlPoints; i++) + { + double weight = target.WeightAt(i); + weights.Add(weight <= 0 ? 1 : weight); + } + + if (periodicClosed) + { + weights.AddRange(weights.GetRange(0, target.Degree)); + } + + // set nurbs curve info + var curve = new SOG.Curve + { + points = points.SelectMany(o => o.ToArray()).ToList(), + knots = knots, + weights = weights, + degree = target.Degree, + periodic = target.IsPeriodic, + rational = target.IsRational, + closed = periodicClosed || target.Closed, + length = length, + domain = domain, + bbox = _boxConverter.Convert(target.GeometricExtents), + units = _contextStack.Current.SpeckleUnits + }; + + // POC: get display value if this is a database-resident spline + // POC: if this is called by another converter that has created a spline, assumes the display value is set by that converter + if (target.Database is not null) + { + curve.displayValue = GetDisplayValue(target); + } + + return curve; + } + + // POC: we might have DisplayValue converter/mapper? + private SOG.Polyline GetDisplayValue(ADB.Spline spline) + { + ADB.Curve polySpline = spline.ToPolylineWithPrecision(10, false, false); + List verticesList = new(); + switch (polySpline) + { + case ADB.Polyline2d o: + verticesList = o.GetSubEntities( + ADB.OpenMode.ForRead, + _contextStack.Current.Document.TransactionManager.TopTransaction + ) + .Where(e => e.VertexType != ADB.Vertex2dType.SplineControlVertex) // POC: not validated yet! + .SelectMany(o => o.Position.ToArray()) + .ToList(); + + break; + case ADB.Polyline3d o: + verticesList = o.GetSubEntities( + ADB.OpenMode.ForRead, + _contextStack.Current.Document.TransactionManager.TopTransaction + ) + .Where(e => e.VertexType != ADB.Vertex3dType.ControlVertex) + .SelectMany(o => o.Position.ToArray()) + .ToList(); + break; + } + + return verticesList.ConvertToSpecklePolyline(_contextStack.Current.SpeckleUnits); + } +} diff --git a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/PlaneToSpeckleRawConverter.cs b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/PlaneToSpeckleRawConverter.cs index 4c5bc6f1ce..5e712b033b 100644 --- a/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/PlaneToSpeckleRawConverter.cs +++ b/DUI3-DX/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/PlaneToSpeckleRawConverter.cs @@ -4,7 +4,7 @@ namespace Speckle.Converters.Autocad.ToSpeckle.Raw; -public class PlaneToSpeckleRawConverter : IToSpeckleTopLevelConverter, ITypedConverter +public class PlaneToSpeckleRawConverter : ITypedConverter { private readonly ITypedConverter _vectorConverter; private readonly ITypedConverter _pointConverter; diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/Civil3dConverterModule.cs b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/Civil3dConverterModule.cs new file mode 100644 index 0000000000..193648613b --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/Civil3dConverterModule.cs @@ -0,0 +1,24 @@ +using Autodesk.AutoCAD.ApplicationServices; +using Speckle.Autofac.DependencyInjection; +using Speckle.Converters.Civil3d; +using Speckle.Converters.Common; +using Speckle.Converters.Common.DependencyInjection; +using Autodesk.AutoCAD.DatabaseServices; +using Speckle.Converters.Autocad; + +namespace Speckle.Converters.Civil3d2024.DependencyInjection; + +public class Civil3dConverterModule : ISpeckleModule +{ + public void Load(SpeckleContainerBuilder builder) + { + // Register single root + builder.AddRootCommon(); + + // register all application converters + builder.AddApplicationConverters(); + builder.AddApplicationConverters(); + builder.AddScoped, Civil3dConversionContextStack>(); + builder.AddScoped, AutocadConversionContextStack>(); + } +} diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/Speckle.Converters.Civil3d2024.DependencyInjection.csproj b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/Speckle.Converters.Civil3d2024.DependencyInjection.csproj new file mode 100644 index 0000000000..9cbf64f01c --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/Speckle.Converters.Civil3d2024.DependencyInjection.csproj @@ -0,0 +1,17 @@ + + + + net48 + x64 + + + + + + + + + + + + diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/packages.lock.json b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/packages.lock.json new file mode 100644 index 0000000000..90e69d514d --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/packages.lock.json @@ -0,0 +1,448 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "Autofac": { + "type": "Direct", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0" + } + }, + "Microsoft.SourceLink.GitHub": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "8.0.0", + "Microsoft.SourceLink.Common": "8.0.0" + } + }, + "PolySharp": { + "type": "Direct", + "requested": "[1.14.1, )", + "resolved": "1.14.1", + "contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ==" + }, + "Speckle.InterfaceGenerator": { + "type": "Direct", + "requested": "[0.9.5, )", + "resolved": "0.9.5", + "contentHash": "oU/L7pN1R7q8KkbrpQ3WJnHirPHqn+9DEA7asOcUiggV5dzVg1A/VYs7GOSusD24njxXh03tE3a2oTLOjt3cVg==" + }, + "GraphQL.Client": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "8yPNBbuVBpTptivyAlak4GZvbwbUcjeQTL4vN1HKHRuOykZ4r7l5fcLS6vpyPyLn0x8FsL31xbOIKyxbmR9rbA==", + "dependencies": { + "GraphQL.Client.Abstractions": "6.0.0", + "GraphQL.Client.Abstractions.Websocket": "6.0.0", + "System.Net.WebSockets.Client.Managed": "1.0.22", + "System.Reactive": "5.0.0" + } + }, + "GraphQL.Client.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "h7uzWFORHZ+CCjwr/ThAyXMr0DPpzEANDa4Uo54wqCQ+j7qUKwqYTgOrb1W40sqbvNaZm9v/X7It31SUw0maHA==", + "dependencies": { + "GraphQL.Primitives": "6.0.0" + } + }, + "GraphQL.Client.Abstractions.Websocket": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "Nr9bPf8gIOvLuXpqEpqr9z9jslYFJOvd0feHth3/kPqeR3uMbjF5pjiwh4jxyMcxHdr8Pb6QiXkV3hsSyt0v7A==", + "dependencies": { + "GraphQL.Client.Abstractions": "6.0.0" + } + }, + "GraphQL.Primitives": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "yg72rrYDapfsIUrul7aF6wwNnTJBOFvuA9VdDTQpPa8AlAriHbufeXYLBcodKjfUdkCnaiggX1U/nEP08Zb5GA==" + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" + }, + "Microsoft.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "7.0.5", + "contentHash": "KGxbPeWsQMnmQy43DSBxAFtHz3l2JX8EWBSGUCvT3CuZ8KsuzbkqMIJMDOxWtG8eZSoCDI04aiVQjWuuV8HmSw==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.5", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.5", + "contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Sentry": { + "type": "Transitive", + "resolved": "3.33.0", + "contentHash": "8vbD2o6IR2wrRrkSiRbnodWGWUOqIlwYtzpjvPNOb5raJdOf+zxMwfS8f6nx9bmrTTfDj7KrCB8C/5OuicAc8A==", + "dependencies": { + "System.Reflection.Metadata": "5.0.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", + "System.Text.Json": "5.0.2" + } + }, + "Sentry.Serilog": { + "type": "Transitive", + "resolved": "3.33.0", + "contentHash": "V8BU7QGWg2qLYfNPqtuTBhC1opysny5l+Ifp6J6PhOeAxU0FssR7nYfbJVetrnLIoh2rd3DlJ6hHYYQosQYcUQ==", + "dependencies": { + "Sentry": "3.33.0", + "Serilog": "2.7.1" + } + }, + "Serilog": { + "type": "Transitive", + "resolved": "2.12.0", + "contentHash": "xaiJLIdu6rYMKfQMYUZgTy8YK7SMZjB4Yk50C/u//Z4OsvxkUfSPJy4nknfvwAC34yr13q7kcyh4grbwhSxyZg==" + }, + "Serilog.Enrichers.ClientInfo": { + "type": "Transitive", + "resolved": "1.3.0", + "contentHash": "mTc7PM+wC9Hr7LWSwqt5mmnlAr7RJs+eTb3PGPRhwdOackk95MkhUZognuxXEdlW19HAFNmEBTSBY5DfLwM8jQ==", + "dependencies": { + "Serilog": "2.4.0" + } + }, + "Serilog.Exceptions": { + "type": "Transitive", + "resolved": "8.4.0", + "contentHash": "nc/+hUw3lsdo0zCj0KMIybAu7perMx79vu72w0za9Nsi6mWyNkGXxYxakAjWB7nEmYL6zdmhEQRB4oJ2ALUeug==", + "dependencies": { + "Serilog": "2.8.0" + } + }, + "Serilog.Formatting.Compact": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "pNroKVjo+rDqlxNG5PXkRLpfSCuDOBY0ri6jp9PLe505ljqwhwZz8ospy2vWhQlFu5GkIesh3FcDs4n7sWZODA==", + "dependencies": { + "Serilog": "2.8.0" + } + }, + "Serilog.Sinks.Console": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "K6N5q+5fetjnJPvCmkWOpJ/V8IEIoMIB1s86OzBrbxwTyHxdx3pmz4H+8+O/Dc/ftUX12DM1aynx/dDowkwzqg==", + "dependencies": { + "Serilog": "2.10.0" + } + }, + "Serilog.Sinks.File": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==", + "dependencies": { + "Serilog": "2.10.0" + } + }, + "Serilog.Sinks.PeriodicBatching": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "NDWR7m3PalVlGEq3rzoktrXikjFMLmpwF0HI4sowo8YDdU+gqPlTHlDQiOGxHfB0sTfjPA9JjA7ctKG9zqjGkw==", + "dependencies": { + "Serilog": "2.0.0" + } + }, + "Serilog.Sinks.Seq": { + "type": "Transitive", + "resolved": "5.2.2", + "contentHash": "1Csmo5ua7NKUe0yXUx+zsRefjAniPWcXFhUXxXG8pwo0iMiw2gjn9SOkgYnnxbgWqmlGv236w0N/dHc2v5XwMg==", + "dependencies": { + "Serilog": "2.12.0", + "Serilog.Formatting.Compact": "1.1.0", + "Serilog.Sinks.File": "5.0.0", + "Serilog.Sinks.PeriodicBatching": "3.1.0" + } + }, + "SerilogTimings": { + "type": "Transitive", + "resolved": "3.0.1", + "contentHash": "Zs28eTgszAMwpIrbBnWHBI50yuxL50p/dmAUWmy75+axdZYK/Sjm5/5m1N/CisR8acJUhTVcjPZrsB1P5iv0Uw==", + "dependencies": { + "Serilog": "2.10.0" + } + }, + "Speckle.Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.2", + "contentHash": "g1BejUZwax5PRfL6xHgLEK23sqHWOgOj9hE7RvfRRlN00AGt8GnPYt8HedSK7UB3HiRW8zCA9Pn0iiYxCK24BA==" + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "EWI1olKDjFEBMJu0+3wuxwziIAdWDVMYLhuZ3Qs84rrz+DHwD00RzWPZCa+bLnHCf3oJwuFZIRsHT5p236QXww==", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.4", + "SQLitePCLRaw.provider.dynamic_cdecl": "2.1.4" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "inBjvSHo9UDKneGNzfUfDjK08JzlcIhn1+SP5Y3m6cgXpCxXKCJDy6Mka7LpgSV+UZmKSnC8rTwB0SQ0xKu5pA==", + "dependencies": { + "System.Memory": "4.5.3" + } + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg==" + }, + "SQLitePCLRaw.provider.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.Collections.Immutable": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==", + "dependencies": { + "System.Memory": "4.5.4" + } + }, + "System.DoubleNumerics": { + "type": "Transitive", + "resolved": "3.1.3", + "contentHash": "KRKEM/L3KBodjA9VOg3EifFVWUY6EOqaMB05UvPEDm7Zeby/kZW+4kdWUEPzW6xtkwf46p661L9NrbeeQhtLzw==", + "dependencies": { + "NETStandard.Library": "1.6.1" + } + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + } + }, + "System.Net.WebSockets.Client.Managed": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "WqEOxPlXjuZrIjUtXNE9NxEfU/n5E35iV2PtoZdJSUC4tlrqwHnTee+wvMIM4OUaJWmwrymeqcgYrE0IkGAgLA==", + "dependencies": { + "System.Buffers": "4.4.0", + "System.Numerics.Vectors": "4.4.0" + } + }, + "System.Numerics.Vectors": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Reflection.Metadata": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==", + "dependencies": { + "System.Collections.Immutable": "5.0.0" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Runtime.InteropServices.RuntimeInformation": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "System.Threading.Tasks.Extensions": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + } + }, + "System.ValueTuple": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "speckle.converters.civil3d2024": { + "type": "Project", + "dependencies": { + "Speckle.AutoCAD.API": "[2024.0.0, )", + "Speckle.Civil3D.API": "[2024.0.0, )", + "Speckle.Converters.Common": "[2.0.999-local, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[2.0.999-local, )", + "Speckle.Objects": "[3.0.1-alpha.14, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[2.0.999-local, )", + "Speckle.Converters.Common": "[2.0.999-local, )" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5" + } + }, + "Speckle.AutoCAD.API": { + "type": "CentralTransitive", + "requested": "[2024.0.0, )", + "resolved": "2024.0.0", + "contentHash": "pZZ5uI+NXhZaQnsqRkgp/rywqBAjDObDJ9XNFGJvemT5k2OthDpHzlK/mKxz8QDCYie7uImQ8dv3uWj2QUFDPw==" + }, + "Speckle.Civil3D.API": { + "type": "CentralTransitive", + "requested": "[2024.0.0, )", + "resolved": "2024.0.0", + "contentHash": "9Q7M1k0DotN8w7MkiScQezErRdnZ4dAkxBMcPNhHSWoth/lSaT6UPV1aYEdl90RhehJWG4l3O7U2e3OXvVSFdw==", + "dependencies": { + "Speckle.AutoCAD.API": "2024.0.0" + } + }, + "Speckle.Core": { + "type": "CentralTransitive", + "requested": "[3.0.1-alpha.14, )", + "resolved": "3.0.1-alpha.14", + "contentHash": "RzQPVIGFFkKvG56YLr8ACtiwdWJE6IJ9vCQ4qHa0PIsUEpfzAIAi59jnzqtByOFC0FiFrFPow9bkfzylaZorAA==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.5", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Sentry": "3.33.0", + "Sentry.Serilog": "3.33.0", + "Serilog": "2.12.0", + "Serilog.Enrichers.ClientInfo": "1.3.0", + "Serilog.Exceptions": "8.4.0", + "Serilog.Sinks.Console": "4.1.0", + "Serilog.Sinks.Seq": "5.2.2", + "SerilogTimings": "3.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.DoubleNumerics": "3.1.3" + } + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.0.1-alpha.14, )", + "resolved": "3.0.1-alpha.14", + "contentHash": "z38LGryMvh7iU1uBW+4uo5DwsB3CwRgLt2uFexWFx3mPSid+A0l5XcJzOgLwgFhNl6B42Ryz4ezBsddTp1Uc/g==", + "dependencies": { + "Speckle.Core": "3.0.1-alpha.14" + } + } + } + } +} \ No newline at end of file diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024/Speckle.Converters.Civil3d2024.csproj b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024/Speckle.Converters.Civil3d2024.csproj new file mode 100644 index 0000000000..5cd6f9707b --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024/Speckle.Converters.Civil3d2024.csproj @@ -0,0 +1,21 @@ + + + + net48 + x64 + + + + + + + + + + + + + + + + diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json new file mode 100644 index 0000000000..853f08eb85 --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -0,0 +1,424 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "Microsoft.SourceLink.GitHub": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "8.0.0", + "Microsoft.SourceLink.Common": "8.0.0" + } + }, + "PolySharp": { + "type": "Direct", + "requested": "[1.14.1, )", + "resolved": "1.14.1", + "contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ==" + }, + "Speckle.AutoCAD.API": { + "type": "Direct", + "requested": "[2024.0.0, )", + "resolved": "2024.0.0", + "contentHash": "pZZ5uI+NXhZaQnsqRkgp/rywqBAjDObDJ9XNFGJvemT5k2OthDpHzlK/mKxz8QDCYie7uImQ8dv3uWj2QUFDPw==" + }, + "Speckle.Civil3D.API": { + "type": "Direct", + "requested": "[2024.0.0, )", + "resolved": "2024.0.0", + "contentHash": "9Q7M1k0DotN8w7MkiScQezErRdnZ4dAkxBMcPNhHSWoth/lSaT6UPV1aYEdl90RhehJWG4l3O7U2e3OXvVSFdw==", + "dependencies": { + "Speckle.AutoCAD.API": "2024.0.0" + } + }, + "Speckle.InterfaceGenerator": { + "type": "Direct", + "requested": "[0.9.5, )", + "resolved": "0.9.5", + "contentHash": "oU/L7pN1R7q8KkbrpQ3WJnHirPHqn+9DEA7asOcUiggV5dzVg1A/VYs7GOSusD24njxXh03tE3a2oTLOjt3cVg==" + }, + "GraphQL.Client": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "8yPNBbuVBpTptivyAlak4GZvbwbUcjeQTL4vN1HKHRuOykZ4r7l5fcLS6vpyPyLn0x8FsL31xbOIKyxbmR9rbA==", + "dependencies": { + "GraphQL.Client.Abstractions": "6.0.0", + "GraphQL.Client.Abstractions.Websocket": "6.0.0", + "System.Net.WebSockets.Client.Managed": "1.0.22", + "System.Reactive": "5.0.0" + } + }, + "GraphQL.Client.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "h7uzWFORHZ+CCjwr/ThAyXMr0DPpzEANDa4Uo54wqCQ+j7qUKwqYTgOrb1W40sqbvNaZm9v/X7It31SUw0maHA==", + "dependencies": { + "GraphQL.Primitives": "6.0.0" + } + }, + "GraphQL.Client.Abstractions.Websocket": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "Nr9bPf8gIOvLuXpqEpqr9z9jslYFJOvd0feHth3/kPqeR3uMbjF5pjiwh4jxyMcxHdr8Pb6QiXkV3hsSyt0v7A==", + "dependencies": { + "GraphQL.Client.Abstractions": "6.0.0" + } + }, + "GraphQL.Primitives": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "yg72rrYDapfsIUrul7aF6wwNnTJBOFvuA9VdDTQpPa8AlAriHbufeXYLBcodKjfUdkCnaiggX1U/nEP08Zb5GA==" + }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" + }, + "Microsoft.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "7.0.5", + "contentHash": "KGxbPeWsQMnmQy43DSBxAFtHz3l2JX8EWBSGUCvT3CuZ8KsuzbkqMIJMDOxWtG8eZSoCDI04aiVQjWuuV8HmSw==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.5", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.5", + "contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Sentry": { + "type": "Transitive", + "resolved": "3.33.0", + "contentHash": "8vbD2o6IR2wrRrkSiRbnodWGWUOqIlwYtzpjvPNOb5raJdOf+zxMwfS8f6nx9bmrTTfDj7KrCB8C/5OuicAc8A==", + "dependencies": { + "System.Reflection.Metadata": "5.0.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", + "System.Text.Json": "5.0.2" + } + }, + "Sentry.Serilog": { + "type": "Transitive", + "resolved": "3.33.0", + "contentHash": "V8BU7QGWg2qLYfNPqtuTBhC1opysny5l+Ifp6J6PhOeAxU0FssR7nYfbJVetrnLIoh2rd3DlJ6hHYYQosQYcUQ==", + "dependencies": { + "Sentry": "3.33.0", + "Serilog": "2.7.1" + } + }, + "Serilog": { + "type": "Transitive", + "resolved": "2.12.0", + "contentHash": "xaiJLIdu6rYMKfQMYUZgTy8YK7SMZjB4Yk50C/u//Z4OsvxkUfSPJy4nknfvwAC34yr13q7kcyh4grbwhSxyZg==" + }, + "Serilog.Enrichers.ClientInfo": { + "type": "Transitive", + "resolved": "1.3.0", + "contentHash": "mTc7PM+wC9Hr7LWSwqt5mmnlAr7RJs+eTb3PGPRhwdOackk95MkhUZognuxXEdlW19HAFNmEBTSBY5DfLwM8jQ==", + "dependencies": { + "Serilog": "2.4.0" + } + }, + "Serilog.Exceptions": { + "type": "Transitive", + "resolved": "8.4.0", + "contentHash": "nc/+hUw3lsdo0zCj0KMIybAu7perMx79vu72w0za9Nsi6mWyNkGXxYxakAjWB7nEmYL6zdmhEQRB4oJ2ALUeug==", + "dependencies": { + "Serilog": "2.8.0" + } + }, + "Serilog.Formatting.Compact": { + "type": "Transitive", + "resolved": "1.1.0", + "contentHash": "pNroKVjo+rDqlxNG5PXkRLpfSCuDOBY0ri6jp9PLe505ljqwhwZz8ospy2vWhQlFu5GkIesh3FcDs4n7sWZODA==", + "dependencies": { + "Serilog": "2.8.0" + } + }, + "Serilog.Sinks.Console": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "K6N5q+5fetjnJPvCmkWOpJ/V8IEIoMIB1s86OzBrbxwTyHxdx3pmz4H+8+O/Dc/ftUX12DM1aynx/dDowkwzqg==", + "dependencies": { + "Serilog": "2.10.0" + } + }, + "Serilog.Sinks.File": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==", + "dependencies": { + "Serilog": "2.10.0" + } + }, + "Serilog.Sinks.PeriodicBatching": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "NDWR7m3PalVlGEq3rzoktrXikjFMLmpwF0HI4sowo8YDdU+gqPlTHlDQiOGxHfB0sTfjPA9JjA7ctKG9zqjGkw==", + "dependencies": { + "Serilog": "2.0.0" + } + }, + "Serilog.Sinks.Seq": { + "type": "Transitive", + "resolved": "5.2.2", + "contentHash": "1Csmo5ua7NKUe0yXUx+zsRefjAniPWcXFhUXxXG8pwo0iMiw2gjn9SOkgYnnxbgWqmlGv236w0N/dHc2v5XwMg==", + "dependencies": { + "Serilog": "2.12.0", + "Serilog.Formatting.Compact": "1.1.0", + "Serilog.Sinks.File": "5.0.0", + "Serilog.Sinks.PeriodicBatching": "3.1.0" + } + }, + "SerilogTimings": { + "type": "Transitive", + "resolved": "3.0.1", + "contentHash": "Zs28eTgszAMwpIrbBnWHBI50yuxL50p/dmAUWmy75+axdZYK/Sjm5/5m1N/CisR8acJUhTVcjPZrsB1P5iv0Uw==", + "dependencies": { + "Serilog": "2.10.0" + } + }, + "Speckle.Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.2", + "contentHash": "g1BejUZwax5PRfL6xHgLEK23sqHWOgOj9hE7RvfRRlN00AGt8GnPYt8HedSK7UB3HiRW8zCA9Pn0iiYxCK24BA==" + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "EWI1olKDjFEBMJu0+3wuxwziIAdWDVMYLhuZ3Qs84rrz+DHwD00RzWPZCa+bLnHCf3oJwuFZIRsHT5p236QXww==", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.4", + "SQLitePCLRaw.provider.dynamic_cdecl": "2.1.4" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "inBjvSHo9UDKneGNzfUfDjK08JzlcIhn1+SP5Y3m6cgXpCxXKCJDy6Mka7LpgSV+UZmKSnC8rTwB0SQ0xKu5pA==", + "dependencies": { + "System.Memory": "4.5.3" + } + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg==" + }, + "SQLitePCLRaw.provider.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.Collections.Immutable": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==", + "dependencies": { + "System.Memory": "4.5.4" + } + }, + "System.DoubleNumerics": { + "type": "Transitive", + "resolved": "3.1.3", + "contentHash": "KRKEM/L3KBodjA9VOg3EifFVWUY6EOqaMB05UvPEDm7Zeby/kZW+4kdWUEPzW6xtkwf46p661L9NrbeeQhtLzw==", + "dependencies": { + "NETStandard.Library": "1.6.1" + } + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + } + }, + "System.Net.WebSockets.Client.Managed": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "WqEOxPlXjuZrIjUtXNE9NxEfU/n5E35iV2PtoZdJSUC4tlrqwHnTee+wvMIM4OUaJWmwrymeqcgYrE0IkGAgLA==", + "dependencies": { + "System.Buffers": "4.4.0", + "System.Numerics.Vectors": "4.4.0" + } + }, + "System.Numerics.Vectors": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Reflection.Metadata": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==", + "dependencies": { + "System.Collections.Immutable": "5.0.0" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Runtime.InteropServices.RuntimeInformation": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "System.Threading.Tasks.Extensions": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "4.5.3" + } + }, + "System.ValueTuple": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[7.0.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[2.0.999-local, )", + "Speckle.Objects": "[3.0.1-alpha.14, )" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[7.0.0, )", + "resolved": "7.0.0", + "contentHash": "kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5" + } + }, + "Speckle.Core": { + "type": "CentralTransitive", + "requested": "[3.0.1-alpha.14, )", + "resolved": "3.0.1-alpha.14", + "contentHash": "RzQPVIGFFkKvG56YLr8ACtiwdWJE6IJ9vCQ4qHa0PIsUEpfzAIAi59jnzqtByOFC0FiFrFPow9bkfzylaZorAA==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.5", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Sentry": "3.33.0", + "Sentry.Serilog": "3.33.0", + "Serilog": "2.12.0", + "Serilog.Enrichers.ClientInfo": "1.3.0", + "Serilog.Exceptions": "8.4.0", + "Serilog.Sinks.Console": "4.1.0", + "Serilog.Sinks.Seq": "5.2.2", + "SerilogTimings": "3.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.DoubleNumerics": "3.1.3" + } + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.0.1-alpha.14, )", + "resolved": "3.0.1-alpha.14", + "contentHash": "z38LGryMvh7iU1uBW+4uo5DwsB3CwRgLt2uFexWFx3mPSid+A0l5XcJzOgLwgFhNl6B42Ryz4ezBsddTp1Uc/g==", + "dependencies": { + "Speckle.Core": "3.0.1-alpha.14" + } + } + } + } +} \ No newline at end of file diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionContextStack.cs b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionContextStack.cs new file mode 100644 index 0000000000..0d803db250 --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionContextStack.cs @@ -0,0 +1,38 @@ +using System.Diagnostics.CodeAnalysis; +using Speckle.Converters.Common; + +namespace Speckle.Converters.Civil3d; + +// POC: Suppressed naming warning for now, but we should evaluate if we should follow this or disable it. +[SuppressMessage( + "Naming", + "CA1711:Identifiers should not have incorrect suffix", + Justification = "Name ends in Stack but it is in fact a Stack, just not inheriting from `System.Collections.Stack`" +)] +public class Civil3dConversionContextStack : ConversionContextStack +{ + public Civil3dConversionContextStack(IHostToSpeckleUnitConverter unitConverter) + : base( + Application.DocumentManager.CurrentDocument, + GetDocBuiltInUnit(Application.DocumentManager.CurrentDocument), + unitConverter + ) { } + + private static AAEC.BuiltInUnit GetDocBuiltInUnit(Document doc) + { + AAEC.BuiltInUnit unit = AAEC.BuiltInUnit.Dimensionless; + + using (ADB.Transaction tr = doc.Database.TransactionManager.StartTransaction()) + { + ADB.ObjectId id = AAEC.ApplicationServices.DrawingSetupVariables.GetInstance(doc.Database, false); + if (tr.GetObject(id, ADB.OpenMode.ForRead) is AAEC.ApplicationServices.DrawingSetupVariables setupVariables) + { + unit = setupVariables.LinearUnit; + } + + tr.Commit(); + } + + return unit; + } +} diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs new file mode 100644 index 0000000000..265cd3a796 --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs @@ -0,0 +1,59 @@ +using Autodesk.AutoCAD.DatabaseServices; +using Speckle.Autofac.DependencyInjection; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Core.Models; + +namespace Speckle.Converters.Civil3d; + +public class Civil3dRootToHostConverter : IRootToSpeckleConverter +{ + private readonly IFactory _toSpeckle; + private readonly IConversionContextStack _contextStack; + + public Civil3dRootToHostConverter( + IFactory toSpeckle, + IConversionContextStack contextStack + ) + { + _toSpeckle = toSpeckle; + _contextStack = contextStack; + } + + public Base Convert(object target) + { + if (target is not DBObject dbObject) + { + throw new NotSupportedException( + $"Conversion of {target.GetType().Name} to Speckle is not supported. Only objects that inherit from DBObject are." + ); + } + + Type type = dbObject.GetType(); + + try + { + using (var l = _contextStack.Current.Document.LockDocument()) + { + using (var tr = _contextStack.Current.Document.Database.TransactionManager.StartTransaction()) + { + var objectConverter = _toSpeckle.ResolveInstance(type.Name); + + if (objectConverter == null) + { + throw new NotSupportedException($"No conversion found for {target.GetType().Name}"); + } + + var convertedObject = objectConverter.Convert(dbObject); + tr.Commit(); + return convertedObject; + } + } + } + catch (SpeckleConversionException e) + { + Console.WriteLine(e); + throw; // Just rethrowing for now, Logs may be needed here. + } + } +} diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dToSpeckleUnitConverter.cs b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dToSpeckleUnitConverter.cs new file mode 100644 index 0000000000..0c61621a4c --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dToSpeckleUnitConverter.cs @@ -0,0 +1,39 @@ +using Speckle.Converters.Common; +using Speckle.Core.Kits; +using Speckle.Core.Logging; // POC: boy do I think this is the wrong place for SpeckleException! + +namespace Speckle.Converters.Civil3d; + +public class Civil3dToSpeckleUnitConverter : IHostToSpeckleUnitConverter +{ + private static readonly IReadOnlyDictionary s_unitsMapping = Create(); + + private static IReadOnlyDictionary Create() + { + var dict = new Dictionary(); + + // POC: we should have a unit test to confirm these are as expected and don't change + dict[AAEC.BuiltInUnit.Kilometer] = Units.Kilometers; + dict[AAEC.BuiltInUnit.Meter] = Units.Meters; + dict[AAEC.BuiltInUnit.Centimeter] = Units.Centimeters; + dict[AAEC.BuiltInUnit.Millimeter] = Units.Millimeters; + dict[AAEC.BuiltInUnit.Mile] = Units.Miles; + dict[AAEC.BuiltInUnit.Yards] = Units.Yards; + dict[AAEC.BuiltInUnit.Foot] = Units.Feet; + dict[AAEC.BuiltInUnit.SurveyFoot] = Units.USFeet; + dict[AAEC.BuiltInUnit.Inch] = Units.Inches; + dict[AAEC.BuiltInUnit.Dimensionless] = Units.None; + return dict; + } + + public string ConvertOrThrow(AAEC.BuiltInUnit hostUnit) + { + if (s_unitsMapping.TryGetValue(hostUnit, out string value)) + { + return value; + } + + // POC: probably would prefer something more specific + throw new SpeckleException($"The Unit System \"{hostUnit}\" is unsupported."); + } +} diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs new file mode 100644 index 0000000000..c4134c866e --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs @@ -0,0 +1,3 @@ +global using AAEC = Autodesk.Aec; +global using CDB = Autodesk.Civil.DatabaseServices; +global using SOBE = Objects.BuiltElements; diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems new file mode 100644 index 0000000000..1dc6ebd3b8 --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems @@ -0,0 +1,19 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + 35175682-da83-4c0a-a49d-b191f5885d8e + + + Speckle.Converters.Civil3dShared + + + + + + + + + + \ No newline at end of file diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.shproj b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.shproj new file mode 100644 index 0000000000..ab81b391e7 --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.shproj @@ -0,0 +1,13 @@ + + + + 35175682-da83-4c0a-a49d-b191f5885d8e + 14.0 + + + + + + + + diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/PipeToSpeckleConverter.cs b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/PipeToSpeckleConverter.cs new file mode 100644 index 0000000000..f061a890bd --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/PipeToSpeckleConverter.cs @@ -0,0 +1,60 @@ +using Objects; +using Objects.Other; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Core.Models; +using AECPropDB = Autodesk.Aec.PropertyData.DatabaseServices; + +namespace Speckle.Converters.Civil3d.ToSpeckle.BuiltElements; + +[NameAndRankValue(nameof(CDB.Pipe), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] +public class PipeToSpeckleConverter : IToSpeckleTopLevelConverter +{ + private readonly ITypedConverter _pointConverter; + private readonly ITypedConverter _curveConverter; + private readonly ITypedConverter _boxConverter; + private readonly ITypedConverter _solidConverter; + private readonly ITypedConverter> _propertySetConverter; + private readonly IConversionContextStack _contextStack; + + public PipeToSpeckleConverter( + ITypedConverter pointConverter, + ITypedConverter curveConverter, + ITypedConverter boxConverter, + ITypedConverter solidConverter, + ITypedConverter> propertySetConverter, + IConversionContextStack contextStack + ) + { + _pointConverter = pointConverter; + _curveConverter = curveConverter; + _boxConverter = boxConverter; + _solidConverter = solidConverter; + _propertySetConverter = propertySetConverter; + _contextStack = contextStack; + } + + public Base Convert(object target) => Convert((CDB.Pipe)target); + + public SOBE.Pipe Convert(CDB.Pipe target) + { + ICurve curve = _curveConverter.Convert(target.BaseCurve); + SOG.Mesh pipeMesh = _solidConverter.Convert(target.Solid3dBody); + + SOBE.Pipe specklePipe = + new() + { + baseCurve = curve, + diameter = target.InnerDiameterOrWidth, + length = target.Length3DToInsideEdge, + displayValue = new List { pipeMesh }, + units = _contextStack.Current.SpeckleUnits + }; + + // POC: not setting property sets yet, need to determine connector parameter interoperability + // POC: not setting part data yet, same reason as above + // POC: not setting additional pipe properties, probably should scope a CivilPipe class + + return specklePipe; + } +} diff --git a/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs new file mode 100644 index 0000000000..d3576871cc --- /dev/null +++ b/DUI3-DX/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs @@ -0,0 +1,55 @@ +using Objects.Other; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using AECPropDB = Autodesk.Aec.PropertyData.DatabaseServices; + +namespace Speckle.Converters.Civil3d.ToSpeckle.Raw; + +public class PropertySetToSpeckleRawConverter : ITypedConverter> +{ + private readonly ITypedConverter _vectorConverter; + private readonly ITypedConverter _pointConverter; + private readonly IConversionContextStack _contextStack; + + public PropertySetToSpeckleRawConverter( + ITypedConverter vectorConverter, + ITypedConverter pointConverter, + IConversionContextStack contextStack + ) + { + _vectorConverter = vectorConverter; + _pointConverter = pointConverter; + _contextStack = contextStack; + } + + public List Convert(object target) => Convert((AECPropDB.PropertySet)target); + + public List Convert(AECPropDB.PropertySet target) + { + List properties = new(); + + ADB.Transaction tr = _contextStack.Current.Document.TransactionManager.TopTransaction; + AECPropDB.PropertySetDefinition setDef = (AECPropDB.PropertySetDefinition) + tr.GetObject(target.PropertySetDefinition, ADB.OpenMode.ForRead); + + // get property definitions + var propDefs = new Dictionary(); + foreach (AECPropDB.PropertyDefinition def in setDef.Definitions) + { + propDefs.Add(def.Id, def); + } + + foreach (AECPropDB.PropertySetData data in target.PropertySetData) + { + string fieldName = propDefs.TryGetValue(data.Id, out AECPropDB.PropertyDefinition value) + ? value.Name + : data.FieldBucketId; + + object fieldData = data.GetData(); + DataField field = new(fieldName, fieldData.GetType().Name, data.UnitType.PluralName(false), fieldData); + properties.Add(field); + } + + return properties; + } +} diff --git a/DUI3-DX/Directory.Packages.props b/DUI3-DX/Directory.Packages.props index 217c4a191b..06de90bb1c 100644 --- a/DUI3-DX/Directory.Packages.props +++ b/DUI3-DX/Directory.Packages.props @@ -4,25 +4,25 @@ - + - + - + - - + + - + - - - + + + - + \ No newline at end of file