Compare commits

..

1 Commits

Author SHA1 Message Date
Alan Rynne 64f80f9c61 Merge pull request #20 from specklesystems/develop
MSBuild / build (push) Has been cancelled
MSBuild / deploy-installers (push) Has been cancelled
First merge from `develop` to `release/3.0.0`
2024-11-11 10:53:24 +01:00
161 changed files with 1090 additions and 12499 deletions
+2 -104
View File
@@ -13,7 +13,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ActiveLib17", "..\..\Active
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SpeckleLib17", "..\SpeckleLib\SpeckleLib17.vcxproj", "{942743B7-B3CB-4F91-BE46-28937F5E3FD1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Build", "..\ci-build\Build.csproj", "{702DE13A-1CCF-485D-A50D-846F645F07D3}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Build", "..\ci-build\Build.csproj", "{702DE13A-1CCF-485D-A50D-846F645F07D3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -21,28 +21,16 @@ Global
Debug16|x86 = Debug16|x86
Debug17|x64 = Debug17|x64
Debug17|x86 = Debug17|x86
DebugAC25|x64 = DebugAC25|x64
DebugAC25|x86 = DebugAC25|x86
DebugAC26|x64 = DebugAC26|x64
DebugAC26|x86 = DebugAC26|x86
DebugAC27|x64 = DebugAC27|x64
DebugAC27|x86 = DebugAC27|x86
DebugAC28|x64 = DebugAC28|x64
DebugAC28|x86 = DebugAC28|x86
DebugVS2022|x64 = DebugVS2022|x64
DebugVS2022|x86 = DebugVS2022|x86
Release16|x64 = Release16|x64
Release16|x86 = Release16|x86
Release17|x64 = Release17|x64
Release17|x86 = Release17|x86
ReleaseAC25|x64 = ReleaseAC25|x64
ReleaseAC25|x86 = ReleaseAC25|x86
ReleaseAC26|x64 = ReleaseAC26|x64
ReleaseAC26|x86 = ReleaseAC26|x86
ReleaseAC27|x64 = ReleaseAC27|x64
ReleaseAC27|x86 = ReleaseAC27|x86
ReleaseAC28|x64 = ReleaseAC28|x64
ReleaseAC28|x86 = ReleaseAC28|x86
ReleaseVS2019|x64 = ReleaseVS2019|x64
ReleaseVS2019|x86 = ReleaseVS2019|x86
ReleaseVS2022|x64 = ReleaseVS2022|x64
@@ -57,22 +45,10 @@ Global
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.Debug17|x64.Build.0 = DebugVW2024|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.Debug17|x86.ActiveCfg = DebugAC27|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.Debug17|x86.Build.0 = DebugAC27|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC25|x64.ActiveCfg = DebugAC25|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC25|x64.Build.0 = DebugAC25|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC25|x86.ActiveCfg = DebugVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC25|x86.Build.0 = DebugVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC26|x64.ActiveCfg = DebugAC26|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC26|x64.Build.0 = DebugAC26|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC26|x86.ActiveCfg = DebugVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC26|x86.Build.0 = DebugVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC27|x64.ActiveCfg = DebugAC27|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC27|x64.Build.0 = DebugAC27|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC27|x86.ActiveCfg = DebugVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC27|x86.Build.0 = DebugVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC28|x64.ActiveCfg = DebugAC28|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC28|x64.Build.0 = DebugAC28|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC28|x86.ActiveCfg = DebugVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugAC28|x86.Build.0 = DebugVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugVS2022|x64.ActiveCfg = DebugVW2024|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugVS2022|x64.Build.0 = DebugVW2024|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.DebugVS2022|x86.ActiveCfg = DebugRV2024|Win32
@@ -85,22 +61,10 @@ Global
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.Release17|x64.Build.0 = ReleaseVW2024|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.Release17|x86.ActiveCfg = ReleaseAC27|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.Release17|x86.Build.0 = ReleaseAC27|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC25|x64.ActiveCfg = ReleaseAC25|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC25|x64.Build.0 = ReleaseAC25|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC25|x86.ActiveCfg = ReleaseVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC25|x86.Build.0 = ReleaseVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC26|x64.ActiveCfg = ReleaseAC26|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC26|x64.Build.0 = ReleaseAC26|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC26|x86.ActiveCfg = ReleaseVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC26|x86.Build.0 = ReleaseVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC27|x64.ActiveCfg = ReleaseAC27|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC27|x64.Build.0 = ReleaseAC27|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC27|x86.ActiveCfg = ReleaseVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC27|x86.Build.0 = ReleaseVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC28|x64.ActiveCfg = ReleaseAC28|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC28|x64.Build.0 = ReleaseAC28|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC28|x86.ActiveCfg = ReleaseVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseAC28|x86.Build.0 = ReleaseVW2024|Win32
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseVS2019|x64.ActiveCfg = ReleaseVW2024|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseVS2019|x64.Build.0 = ReleaseVW2024|x64
{CB120C04-054F-485B-BB5F-1EDE23F7FACB}.ReleaseVS2019|x86.ActiveCfg = ReleaseRV2024|Win32
@@ -117,22 +81,10 @@ Global
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.Debug17|x64.Build.0 = Debug17|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.Debug17|x86.ActiveCfg = Debug17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.Debug17|x86.Build.0 = Debug17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC25|x64.ActiveCfg = Debug16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC25|x64.Build.0 = Debug16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC25|x86.ActiveCfg = Debug17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC25|x86.Build.0 = Debug17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC26|x64.ActiveCfg = Debug16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC26|x64.Build.0 = Debug16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC26|x86.ActiveCfg = Debug17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC26|x86.Build.0 = Debug17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC27|x64.ActiveCfg = Debug16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC27|x64.Build.0 = Debug16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC27|x86.ActiveCfg = Debug17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC27|x86.Build.0 = Debug17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC28|x64.ActiveCfg = Debug16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC28|x64.Build.0 = Debug16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC28|x86.ActiveCfg = Debug17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugAC28|x86.Build.0 = Debug17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugVS2022|x64.ActiveCfg = Debug16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugVS2022|x64.Build.0 = Debug16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.DebugVS2022|x86.ActiveCfg = Debug17|Win32
@@ -145,22 +97,10 @@ Global
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.Release17|x64.Build.0 = Release17|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.Release17|x86.ActiveCfg = Release17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.Release17|x86.Build.0 = Release17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC25|x64.ActiveCfg = Release16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC25|x64.Build.0 = Release16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC25|x86.ActiveCfg = Release17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC25|x86.Build.0 = Release17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC26|x64.ActiveCfg = Release16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC26|x64.Build.0 = Release16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC26|x86.ActiveCfg = Release17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC26|x86.Build.0 = Release17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC27|x64.ActiveCfg = Release16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC27|x64.Build.0 = Release16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC27|x86.ActiveCfg = Release17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC27|x86.Build.0 = Release17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC28|x64.ActiveCfg = Release16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC28|x64.Build.0 = Release16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC28|x86.ActiveCfg = Release17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseAC28|x86.Build.0 = Release17|Win32
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseVS2019|x64.ActiveCfg = Release16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseVS2019|x64.Build.0 = Release16|x64
{64EBDBC7-AB2D-4AE1-8E54-922B6FA6E1CC}.ReleaseVS2019|x86.ActiveCfg = Release17|Win32
@@ -177,22 +117,10 @@ Global
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.Debug17|x64.Build.0 = DebugAC27|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.Debug17|x86.ActiveCfg = DebugAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.Debug17|x86.Build.0 = DebugAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC25|x64.ActiveCfg = DebugAC25|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC25|x64.Build.0 = DebugAC25|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC25|x86.ActiveCfg = DebugAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC25|x86.Build.0 = DebugAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC26|x64.ActiveCfg = DebugAC26|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC26|x64.Build.0 = DebugAC26|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC26|x86.ActiveCfg = DebugAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC26|x86.Build.0 = DebugAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC27|x64.ActiveCfg = DebugAC27|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC27|x64.Build.0 = DebugAC27|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC27|x86.ActiveCfg = DebugAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC27|x86.Build.0 = DebugAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC28|x64.ActiveCfg = DebugAC28|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC28|x64.Build.0 = DebugAC28|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC28|x86.ActiveCfg = DebugAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugAC28|x86.Build.0 = DebugAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugVS2022|x64.ActiveCfg = DebugAC27|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugVS2022|x64.Build.0 = DebugAC27|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.DebugVS2022|x86.ActiveCfg = DebugAC27|Win32
@@ -205,22 +133,10 @@ Global
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.Release17|x64.Build.0 = ReleaseAC27|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.Release17|x86.ActiveCfg = ReleaseAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.Release17|x86.Build.0 = ReleaseAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC25|x64.ActiveCfg = ReleaseAC25|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC25|x64.Build.0 = ReleaseAC25|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC25|x86.ActiveCfg = ReleaseAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC25|x86.Build.0 = ReleaseAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC26|x64.ActiveCfg = ReleaseAC26|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC26|x64.Build.0 = ReleaseAC26|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC26|x86.ActiveCfg = ReleaseAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC26|x86.Build.0 = ReleaseAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC27|x64.ActiveCfg = ReleaseAC27|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC27|x64.Build.0 = ReleaseAC27|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC27|x86.ActiveCfg = ReleaseAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC27|x86.Build.0 = ReleaseAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC28|x64.ActiveCfg = ReleaseAC28|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC28|x64.Build.0 = ReleaseAC28|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC28|x86.ActiveCfg = ReleaseAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseAC28|x86.Build.0 = ReleaseAC27|Win32
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseVS2019|x64.ActiveCfg = ReleaseAC27|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseVS2019|x64.Build.0 = ReleaseAC27|x64
{942743B7-B3CB-4F91-BE46-28937F5E3FD1}.ReleaseVS2019|x86.ActiveCfg = ReleaseAC27|Win32
@@ -237,18 +153,9 @@ Global
{702DE13A-1CCF-485D-A50D-846F645F07D3}.Debug17|x64.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.Debug17|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.Debug17|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC25|x64.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC25|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC25|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC26|x64.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC26|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC26|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC27|x64.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC27|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC27|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC28|x64.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC28|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugAC28|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugVS2022|x64.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugVS2022|x64.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.DebugVS2022|x86.ActiveCfg = Debug|Any CPU
@@ -261,18 +168,8 @@ Global
{702DE13A-1CCF-485D-A50D-846F645F07D3}.Release17|x64.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.Release17|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.Release17|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC25|x64.ActiveCfg = Release|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC25|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC25|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC26|x64.ActiveCfg = Release|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC26|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC26|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC27|x64.ActiveCfg = Release|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC27|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC27|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC28|x64.ActiveCfg = Release|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC28|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC28|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseVS2019|x64.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseVS2019|x64.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseVS2019|x86.ActiveCfg = Debug|Any CPU
@@ -281,6 +178,7 @@ Global
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseVS2022|x64.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseVS2022|x86.ActiveCfg = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseVS2022|x86.Build.0 = Debug|Any CPU
{702DE13A-1CCF-485D-A50D-846F645F07D3}.ReleaseAC27|x64.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
-798
View File
@@ -1,22 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="DebugAC25|Win32">
<Configuration>DebugAC25</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugAC25|x64">
<Configuration>DebugAC25</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugAC26|Win32">
<Configuration>DebugAC26</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugAC26|x64">
<Configuration>DebugAC26</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugAC27|Win32">
<Configuration>DebugAC27</Configuration>
<Platform>Win32</Platform>
@@ -25,14 +9,6 @@
<Configuration>DebugAC27</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugAC28|Win32">
<Configuration>DebugAC28</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugAC28|x64">
<Configuration>DebugAC28</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="DebugRV2024|Win32">
<Configuration>DebugRV2024</Configuration>
<Platform>Win32</Platform>
@@ -45,22 +21,6 @@
<Configuration>DebugVW2024</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseAC25|Win32">
<Configuration>ReleaseAC25</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseAC25|x64">
<Configuration>ReleaseAC25</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseAC26|Win32">
<Configuration>ReleaseAC26</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseAC26|x64">
<Configuration>ReleaseAC26</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseAC27|Win32">
<Configuration>ReleaseAC27</Configuration>
<Platform>Win32</Platform>
@@ -69,14 +29,6 @@
<Configuration>ReleaseAC27</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseAC28|Win32">
<Configuration>ReleaseAC28</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseAC28|x64">
<Configuration>ReleaseAC28</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="ReleaseRV2024|Win32">
<Configuration>ReleaseRV2024</Configuration>
<Platform>Win32</Platform>
@@ -112,24 +64,12 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseRV2024|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugVW2024|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseAC27|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugRV2024|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugAC27|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugAC28|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugAC26|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugAC25|x64'">true</ExcludedFromBuild>
</None>
<None Include="RFIX.win\Connector.rc2">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseAC27|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugAC27|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugAC28|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugAC26|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugAC25|x64'">true</ExcludedFromBuild>
</None>
<None Include="RINT\Connector.grc" />
<None Include="RINT\ConnectorMenu.grc" />
@@ -175,8 +115,6 @@
<ClCompile Include="Connector\Interface\Browser\Bridge\Config\GetConfig.cpp" />
<ClCompile Include="Connector\Interface\Browser\Bridge\Config\GetIsDevMode.cpp" />
<ClCompile Include="Connector\Interface\Browser\Bridge\Config\UpdateConfig.cpp" />
<ClCompile Include="Connector\Interface\Browser\Bridge\Receive\Receive.cpp" />
<ClCompile Include="Connector\Interface\Browser\Bridge\Receive\ReceiveBridge.cpp" />
<ClCompile Include="Connector\Interface\Browser\Bridge\Selection\Arg\SelectionInfo.cpp" />
<ClCompile Include="Connector\Interface\Browser\Bridge\Selection\GetSelection.cpp" />
<ClCompile Include="Connector\Interface\Browser\Bridge\Selection\SelectionBridge.cpp" />
@@ -208,7 +146,6 @@
<ClCompile Include="Connector\Record\Model\ModelCard.cpp" />
<ClCompile Include="Connector\Record\Model\ReceiverModelCard.cpp" />
<ClCompile Include="Connector\Record\Model\SenderModelCard.cpp" />
<ClCompile Include="Connector\Tool\ElementHighlighter.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="Connector\Connector.h" />
@@ -237,8 +174,6 @@
<ClInclude Include="Connector\Interface\Browser\Bridge\Config\GetConfig.h" />
<ClInclude Include="Connector\Interface\Browser\Bridge\Config\GetIsDevMode.h" />
<ClInclude Include="Connector\Interface\Browser\Bridge\Config\UpdateConfig.h" />
<ClInclude Include="Connector\Interface\Browser\Bridge\Receive\Receive.h" />
<ClInclude Include="Connector\Interface\Browser\Bridge\Receive\ReceiveBridge.h" />
<ClInclude Include="Connector\Interface\Browser\Bridge\Selection\Arg\SelectionInfo.h" />
<ClInclude Include="Connector\Interface\Browser\Bridge\Selection\GetSelection.h" />
<ClInclude Include="Connector\Interface\Browser\Bridge\Selection\SelectionBridge.h" />
@@ -273,7 +208,6 @@
<ClInclude Include="Connector\Record\Model\ModelCard.h" />
<ClInclude Include="Connector\Record\Model\ReceiverModelCard.h" />
<ClInclude Include="Connector\Record\Model\SenderModelCard.h" />
<ClInclude Include="Connector\Tool\ElementHighlighter.h" />
<ClInclude Include="Connector\Version.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
@@ -303,24 +237,6 @@
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC28|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC26|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC25|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseVW2024|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
@@ -342,27 +258,6 @@
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugVW2024|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
@@ -388,30 +283,6 @@
<VCToolsVersion>
</VCToolsVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC28|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
<VCToolsVersion />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC26|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
<VCToolsVersion />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC25|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
<VCToolsVersion />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseVW2024|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
@@ -440,33 +311,6 @@
<VCToolsVersion>
</VCToolsVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
<VCToolsVersion />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
<VCToolsVersion />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
<VCToolsVersion />
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
@@ -481,15 +325,6 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC27|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC28|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC26|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC25|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='ReleaseVW2024|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
@@ -499,15 +334,6 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC27|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='DebugVW2024|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\SpeckleLib\Make.win\VW2024.props" />
@@ -523,21 +349,6 @@
<Import Project="..\SpeckleLib\Make.win\AC27.props" />
<Import Project="Make.win\ConnectorAC27.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC28|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\SpeckleLib\Make.win\AC28.props" />
<Import Project="Make.win\ConnectorAC28.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC26|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\SpeckleLib\Make.win\AC26.props" />
<Import Project="Make.win\ConnectorAC26.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC25|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\SpeckleLib\Make.win\AC25.props" />
<Import Project="Make.win\ConnectorAC25.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='ReleaseVW2024|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\SpeckleLib\Make.win\VW2024.props" />
@@ -553,21 +364,6 @@
<Import Project="..\SpeckleLib\Make.win\AC27.props" />
<Import Project="Make.win\ConnectorAC27.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\SpeckleLib\Make.win\AC28.props" />
<Import Project="Make.win\ConnectorAC28.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\SpeckleLib\Make.win\AC26.props" />
<Import Project="Make.win\ConnectorAC26.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\SpeckleLib\Make.win\AC25.props" />
<Import Project="Make.win\ConnectorAC25.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugVW2024|Win32'">
<LinkIncremental>true</LinkIncremental>
@@ -578,15 +374,6 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC27|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC28|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC26|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC25|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseVW2024|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
@@ -596,15 +383,6 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC27|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugVW2024|x64'">
<LinkIncremental>true</LinkIncremental>
<SourcePath>$(SourcePath)</SourcePath>
@@ -626,27 +404,6 @@
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<TargetName>$(BASE_NAME)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC28|x64'">
<LinkIncremental>true</LinkIncremental>
<SourcePath>$(SourcePath)</SourcePath>
<TargetExt>.apx</TargetExt>
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<TargetName>$(BASE_NAME)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC26|x64'">
<LinkIncremental>true</LinkIncremental>
<SourcePath>$(SourcePath)</SourcePath>
<TargetExt>.apx</TargetExt>
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<TargetName>$(BASE_NAME)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC25|x64'">
<LinkIncremental>true</LinkIncremental>
<SourcePath>$(SourcePath)</SourcePath>
<TargetExt>.apx</TargetExt>
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<TargetName>$(BASE_NAME)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseVW2024|x64'">
<LinkIncremental>false</LinkIncremental>
<TargetExt>.vlb</TargetExt>
@@ -665,24 +422,6 @@
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<TargetName>$(BASE_NAME)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|x64'">
<LinkIncremental>false</LinkIncremental>
<TargetExt>.apx</TargetExt>
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<TargetName>$(BASE_NAME)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|x64'">
<LinkIncremental>false</LinkIncremental>
<TargetExt>.apx</TargetExt>
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<TargetName>$(BASE_NAME)</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|x64'">
<LinkIncremental>false</LinkIncremental>
<TargetExt>.apx</TargetExt>
<OutDir>$(Platform)\$(Configuration)\</OutDir>
<TargetName>$(BASE_NAME)</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugVW2024|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
@@ -728,51 +467,6 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC28|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC26|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC25|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseVW2024|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
@@ -830,63 +524,6 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugVW2024|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
@@ -1048,219 +685,6 @@ CALL "$(ProjectDir)..\SpeckleLib\Make.win\install.bat"</Command>
<PostBuildEvent>
<Command>REM Archicad installbuild script
SET PROJECTDIR=$(ProjectDir)
SET TARGETNAME=$(TargetName)
SET TARGETDIR=$(TargetDir)
SET BIMVERSION=$(BIM_VERSION)
ECHO ON
ECHO "Starting Install"
set CONFIGURATION=$(Configuration)
set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\install.bat"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Creating VWR File</Message>
</PostBuildEvent>
<PreBuildEvent>
<Command>set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\buildResAC.bat"</Command>
</PreBuildEvent>
<ResourceCompile>
<AdditionalIncludeDirectories>$(HEADER_PATH_5)\Inc;$(HEADER_PATH_5)\Modules\DGLib;$(RES_OUTPUT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC28|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>TESTING_MODE;DEBUG;ARCHICAD;"__ACENV_CALL= ";WIN32;_WINDOWS;WINDOWS;AddOn_EXPORTS;ACExtension;_STLP_DONT_FORCE_MSVC_LIB_NAME;_USRDLL;_WIN_EXTERNAL_;_WINDLL;_CRT_SECURE_NO_WARNINGS;_SILENCE_ALL_CXX20_DEPRECATION_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<PrecompiledHeaderOutputFile>
</PrecompiledHeaderOutputFile>
<LanguageStandard>stdcpp20</LanguageStandard>
<AdditionalIncludeDirectories>./;$(HEADER_PATH_1)/;$(HEADER_PATH_2)/;$(HEADER_PATH_3)/;$(HEADER_PATH_3)/$(BIM_PLATFORM)/;$(HEADER_PATH_4)/;$(HEADER_PATH_5)/;$(HEADER_PATH_5)/Inc;$(HEADER_PATH_5)/Modules/AnalyticalModelAPI;$(HEADER_PATH_5)/Modules/ArchicadAPI;$(HEADER_PATH_5)/Modules/Brep;$(HEADER_PATH_5)/Modules/BuiltInLibrary;$(HEADER_PATH_5)/Modules/CADInfrastructureBase;$(HEADER_PATH_5)/Modules/CommunicationClient;$(HEADER_PATH_5)/Modules/CommunicationCommon;$(HEADER_PATH_5)/Modules/DGGraphix;$(HEADER_PATH_5)/Modules/DGLib;$(HEADER_PATH_5)/Modules/DesignVariantAPI;$(HEADER_PATH_5)/Modules/GDL;$(HEADER_PATH_5)/Modules/GSMSections;$(HEADER_PATH_5)/Modules/GSModelDevLib;$(HEADER_PATH_5)/Modules/GSModeler;$(HEADER_PATH_5)/Modules/GSModeler2D;$(HEADER_PATH_5)/Modules/GSRoot;$(HEADER_PATH_5)/Modules/GSUtils;$(HEADER_PATH_5)/Modules/GSXML;$(HEADER_PATH_5)/Modules/GSXMLUtils;$(HEADER_PATH_5)/Modules/GX;$(HEADER_PATH_5)/Modules/GXImage;$(HEADER_PATH_5)/Modules/GXImageBase;$(HEADER_PATH_5)/Modules/GXMedia;$(HEADER_PATH_5)/Modules/Geometry;$(HEADER_PATH_5)/Modules/Graphix;$(HEADER_PATH_5)/Modules/HTTP;$(HEADER_PATH_5)/Modules/InputOutput;$(HEADER_PATH_5)/Modules/JSON;$(HEADER_PATH_5)/Modules/JSONConversion;$(HEADER_PATH_5)/Modules/JavascriptEngine;$(HEADER_PATH_5)/Modules/LibXL;$(HEADER_PATH_5)/Modules/MEPAPI;$(HEADER_PATH_5)/Modules/MPIInterfaceDevLib;$(HEADER_PATH_5)/Modules/MPIInterfaceImpDevLib;$(HEADER_PATH_5)/Modules/Model3D;$(HEADER_PATH_5)/Modules/Model3DViewerControl;$(HEADER_PATH_5)/Modules/Network;$(HEADER_PATH_5)/Modules/Pattern;$(HEADER_PATH_5)/Modules/PointCloud;$(HEADER_PATH_5)/Modules/PointCloudManager;$(HEADER_PATH_5)/Modules/QGDrawing;$(HEADER_PATH_5)/Modules/RS;$(HEADER_PATH_5)/Modules/RapidJSON;$(HEADER_PATH_5)/Modules/SecureCommunication;$(HEADER_PATH_5)/Modules/TWClientLib;$(HEADER_PATH_5)/Modules/TWRoot;$(HEADER_PATH_5)/Modules/TextEngine;$(HEADER_PATH_5)/Modules/TransparentWindowLib;$(HEADER_PATH_5)/Modules/UCLib;$(HEADER_PATH_5)/Modules/UDLib;$(HEADER_PATH_5)/Modules/UserInterfaceAPI;$(HEADER_PATH_5)/Modules/VBElemDialogs;$(HEADER_PATH_5)/Modules/VBUtils;$(HEADER_PATH_5)/Modules/VectorImage $(inherited)</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<StringPooling>true</StringPooling>
<CallingConvention>FastCall</CallingConvention>
<CompileAs>CompileAsCpp</CompileAs>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FunctionLevelLinking>
</FunctionLevelLinking>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<TreatLinkerWarningAsErrors>false</TreatLinkerWarningAsErrors>
<AdditionalDependencies>$(HEADER_PATH_5)\Lib\ACAP_STATD.lib;$(HEADER_PATH_5)\Modules\DGGraphix\Win\DGGraphixImp.LIB;$(HEADER_PATH_5)\Modules\DGLib\Win\DGImp.lib;$(HEADER_PATH_5)\Modules\Geometry\Win\GeometryImp.LIB;$(HEADER_PATH_5)\Modules\Graphix\Win\GraphixImp.LIB;$(HEADER_PATH_5)\Modules\GSModeler\Win\GSModelerImp.LIB;$(HEADER_PATH_5)\Modules\GSRoot\Win\GSRootImp.lib;$(HEADER_PATH_5)\Modules\GXImage\Win\GXImageImp.lib;$(HEADER_PATH_5)\Modules\GXImageBase\Win\GXImageBaseImp.lib;$(HEADER_PATH_5)\Modules\GX\Win\GXImp.LIB;$(HEADER_PATH_5)\Modules\InputOutput\Win\InputOutputImp.lib;$(HEADER_PATH_5)\Modules\RS\Win\RSImp.LIB;$(HEADER_PATH_5)\Modules\UCLib\Win\UCImp.lib;$(HEADER_PATH_5)\Modules\UDLib\Win\UDImp.lib;$(HEADER_PATH_5)\Modules\VBElemDialogs\Win\VBElemDialogsImp.LIB;$(HEADER_PATH_5)\Modules\VectorImage\Win\VectorImageImp.LIB;$(HEADER_PATH_5)\Modules\JavascriptEngine\Win\JavascriptEngineImp.LIB;$(HEADER_PATH_5)\Modules\JSON\Win\JSONImp.LIB;%(AdditionalDependencies)</AdditionalDependencies>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
<AdditionalLibraryDirectories>$(HEADER_PATH_5)\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<EntryPointSymbol>DllMainEntry</EntryPointSymbol>
<AdditionalOptions>/export:GetExportedFuncAddrs,%401 /export:SetImportedFuncAddrs,%402 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Lib>
<AdditionalDependencies>../zlib/x64/ZlibStatRelease/zlibstat.lib</AdditionalDependencies>
</Lib>
<PostBuildEvent>
<Command>REM Archicad installbuild script
SET PROJECTDIR=$(ProjectDir)
SET TARGETNAME=$(TargetName)
SET TARGETDIR=$(TargetDir)
SET BIMVERSION=$(BIM_VERSION)
ECHO ON
ECHO "Starting Install"
set CONFIGURATION=$(Configuration)
set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\install.bat"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Creating VWR File</Message>
</PostBuildEvent>
<PreBuildEvent>
<Command>set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\buildResAC.bat"</Command>
</PreBuildEvent>
<ResourceCompile>
<AdditionalIncludeDirectories>$(HEADER_PATH_5)\Inc;$(HEADER_PATH_5)\Modules\DGLib;$(RES_OUTPUT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC26|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>TESTING_MODE;DEBUG;ARCHICAD;WIN32;_WINDOWS;WINDOWS;AddOn_EXPORTS;ACExtension;_STLP_DONT_FORCE_MSVC_LIB_NAME;_USRDLL;_WIN_EXTERNAL_;_WINDLL;_CRT_SECURE_NO_WARNINGS;_SILENCE_ALL_CXX20_DEPRECATION_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<PrecompiledHeaderOutputFile>
</PrecompiledHeaderOutputFile>
<LanguageStandard>stdcpp20</LanguageStandard>
<AdditionalIncludeDirectories>./;$(HEADER_PATH_1)/;$(HEADER_PATH_2)/;$(HEADER_PATH_3)/;$(HEADER_PATH_3)/$(BIM_PLATFORM)/;$(HEADER_PATH_4)/;$(HEADER_PATH_5)/;$(HEADER_PATH_5)/Inc;$(HEADER_PATH_5)/Modules/AnalyticalModelAPI;$(HEADER_PATH_5)/Modules/ArchicadAPI;$(HEADER_PATH_5)/Modules/Brep;$(HEADER_PATH_5)/Modules/BuiltInLibrary;$(HEADER_PATH_5)/Modules/CADInfrastructureBase;$(HEADER_PATH_5)/Modules/CommunicationClient;$(HEADER_PATH_5)/Modules/CommunicationCommon;$(HEADER_PATH_5)/Modules/DGGraphix;$(HEADER_PATH_5)/Modules/DGLib;$(HEADER_PATH_5)/Modules/DesignVariantAPI;$(HEADER_PATH_5)/Modules/GDL;$(HEADER_PATH_5)/Modules/GSMSections;$(HEADER_PATH_5)/Modules/GSModelDevLib;$(HEADER_PATH_5)/Modules/GSModeler;$(HEADER_PATH_5)/Modules/GSModeler2D;$(HEADER_PATH_5)/Modules/GSRoot;$(HEADER_PATH_5)/Modules/GSUtils;$(HEADER_PATH_5)/Modules/GSXML;$(HEADER_PATH_5)/Modules/GSXMLUtils;$(HEADER_PATH_5)/Modules/GX;$(HEADER_PATH_5)/Modules/GXImage;$(HEADER_PATH_5)/Modules/GXImageBase;$(HEADER_PATH_5)/Modules/GXMedia;$(HEADER_PATH_5)/Modules/Geometry;$(HEADER_PATH_5)/Modules/Graphix;$(HEADER_PATH_5)/Modules/HTTP;$(HEADER_PATH_5)/Modules/InputOutput;$(HEADER_PATH_5)/Modules/JSON;$(HEADER_PATH_5)/Modules/JSONConversion;$(HEADER_PATH_5)/Modules/JavascriptEngine;$(HEADER_PATH_5)/Modules/LibXL;$(HEADER_PATH_5)/Modules/MEPAPI;$(HEADER_PATH_5)/Modules/MPIInterfaceDevLib;$(HEADER_PATH_5)/Modules/MPIInterfaceImpDevLib;$(HEADER_PATH_5)/Modules/Model3D;$(HEADER_PATH_5)/Modules/Model3DViewerControl;$(HEADER_PATH_5)/Modules/Network;$(HEADER_PATH_5)/Modules/Pattern;$(HEADER_PATH_5)/Modules/PointCloud;$(HEADER_PATH_5)/Modules/PointCloudManager;$(HEADER_PATH_5)/Modules/QGDrawing;$(HEADER_PATH_5)/Modules/RS;$(HEADER_PATH_5)/Modules/RapidJSON;$(HEADER_PATH_5)/Modules/SecureCommunication;$(HEADER_PATH_5)/Modules/TWClientLib;$(HEADER_PATH_5)/Modules/TWRoot;$(HEADER_PATH_5)/Modules/TextEngine;$(HEADER_PATH_5)/Modules/TransparentWindowLib;$(HEADER_PATH_5)/Modules/UCLib;$(HEADER_PATH_5)/Modules/UDLib;$(HEADER_PATH_5)/Modules/UserInterfaceAPI;$(HEADER_PATH_5)/Modules/VBElemDialogs;$(HEADER_PATH_5)/Modules/VBUtils;$(HEADER_PATH_5)/Modules/VectorImage $(inherited)</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<StringPooling>true</StringPooling>
<CallingConvention>FastCall</CallingConvention>
<CompileAs>CompileAsCpp</CompileAs>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FunctionLevelLinking>
</FunctionLevelLinking>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<TreatLinkerWarningAsErrors>false</TreatLinkerWarningAsErrors>
<AdditionalDependencies>$(HEADER_PATH_5)\Lib\Win\ACAP_STATD.lib;$(HEADER_PATH_5)\Modules\DGGraphix\Win\DGGraphixImp.LIB;$(HEADER_PATH_5)\Modules\DGLib\Win\DGImp.lib;$(HEADER_PATH_5)\Modules\Geometry\Win\GeometryImp.LIB;$(HEADER_PATH_5)\Modules\Graphix\Win\GraphixImp.LIB;$(HEADER_PATH_5)\Modules\GSModeler\Win\GSModelerImp.LIB;$(HEADER_PATH_5)\Modules\GSRoot\Win\GSRootImp.lib;$(HEADER_PATH_5)\Modules\GXImage\Win\GXImageImp.lib;$(HEADER_PATH_5)\Modules\GXImageBase\Win\GXImageBaseImp.lib;$(HEADER_PATH_5)\Modules\GX\Win\GXImp.LIB;$(HEADER_PATH_5)\Modules\InputOutput\Win\InputOutputImp.lib;$(HEADER_PATH_5)\Modules\RS\Win\RSImp.LIB;$(HEADER_PATH_5)\Modules\TextEngine\Win\TextEngineImp.LIB;$(HEADER_PATH_5)\Modules\UCLib\Win\UCImp.lib;$(HEADER_PATH_5)\Modules\UDLib\Win\UDImp.lib;$(HEADER_PATH_5)\Modules\VBElemDialogs\Win\VBElemDialogsImp.LIB;$(HEADER_PATH_5)\Modules\VectorImage\Win\VectorImageImp.LIB;$(HEADER_PATH_5)\Modules\JSON\Win\JSONImp.LIB;%(AdditionalDependencies)</AdditionalDependencies>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
<AdditionalLibraryDirectories>$(HEADER_PATH_5)\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<EntryPointSymbol>DllMainEntry</EntryPointSymbol>
<AdditionalOptions>/export:GetExportedFuncAddrs,%401 /export:SetImportedFuncAddrs,%402 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Lib>
<AdditionalDependencies>../zlib/x64/ZlibStatRelease/zlibstat.lib</AdditionalDependencies>
</Lib>
<PostBuildEvent>
<Command>REM Archicad installbuild script
SET PROJECTDIR=$(ProjectDir)
SET TARGETNAME=$(TargetName)
SET TARGETDIR=$(TargetDir)
SET BIMVERSION=$(BIM_VERSION)
ECHO ON
ECHO "Starting Install"
set CONFIGURATION=$(Configuration)
set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\install.bat"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Creating VWR File</Message>
</PostBuildEvent>
<PreBuildEvent>
<Command>set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\buildResAC.bat"</Command>
</PreBuildEvent>
<ResourceCompile>
<AdditionalIncludeDirectories>$(HEADER_PATH_5)\Inc;$(HEADER_PATH_5)\Modules\DGLib;$(RES_OUTPUT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC25|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>TESTING_MODE;DEBUG;ARCHICAD;WIN32;_WINDOWS;WINDOWS;AddOn_EXPORTS;ACExtension;_STLP_DONT_FORCE_MSVC_LIB_NAME;_USRDLL;_WIN_EXTERNAL_;_WINDLL;_CRT_SECURE_NO_WARNINGS;_SILENCE_ALL_CXX20_DEPRECATION_WARNINGS;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>false</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
<PrecompiledHeaderOutputFile>
</PrecompiledHeaderOutputFile>
<LanguageStandard>stdcpp20</LanguageStandard>
<AdditionalIncludeDirectories>./;$(HEADER_PATH_1)/;$(HEADER_PATH_2)/;$(HEADER_PATH_3)/;$(HEADER_PATH_3)/$(BIM_PLATFORM)/;$(HEADER_PATH_4)/;$(HEADER_PATH_5)/;$(HEADER_PATH_5)/Inc;$(HEADER_PATH_5)/Modules/AnalyticalModelAPI;$(HEADER_PATH_5)/Modules/ArchicadAPI;$(HEADER_PATH_5)/Modules/Brep;$(HEADER_PATH_5)/Modules/BuiltInLibrary;$(HEADER_PATH_5)/Modules/CADInfrastructureBase;$(HEADER_PATH_5)/Modules/CommunicationClient;$(HEADER_PATH_5)/Modules/CommunicationCommon;$(HEADER_PATH_5)/Modules/DGGraphix;$(HEADER_PATH_5)/Modules/DGLib;$(HEADER_PATH_5)/Modules/DesignVariantAPI;$(HEADER_PATH_5)/Modules/GDL;$(HEADER_PATH_5)/Modules/GSMSections;$(HEADER_PATH_5)/Modules/GSModelDevLib;$(HEADER_PATH_5)/Modules/GSModeler;$(HEADER_PATH_5)/Modules/GSModeler2D;$(HEADER_PATH_5)/Modules/GSRoot;$(HEADER_PATH_5)/Modules/GSUtils;$(HEADER_PATH_5)/Modules/GSXML;$(HEADER_PATH_5)/Modules/GSXMLUtils;$(HEADER_PATH_5)/Modules/GX;$(HEADER_PATH_5)/Modules/GXImage;$(HEADER_PATH_5)/Modules/GXImageBase;$(HEADER_PATH_5)/Modules/GXMedia;$(HEADER_PATH_5)/Modules/Geometry;$(HEADER_PATH_5)/Modules/Graphix;$(HEADER_PATH_5)/Modules/HTTP;$(HEADER_PATH_5)/Modules/InputOutput;$(HEADER_PATH_5)/Modules/JSON;$(HEADER_PATH_5)/Modules/JSONConversion;$(HEADER_PATH_5)/Modules/JavascriptEngine;$(HEADER_PATH_5)/Modules/LibXL;$(HEADER_PATH_5)/Modules/MEPAPI;$(HEADER_PATH_5)/Modules/MPIInterfaceDevLib;$(HEADER_PATH_5)/Modules/MPIInterfaceImpDevLib;$(HEADER_PATH_5)/Modules/Model3D;$(HEADER_PATH_5)/Modules/Model3DViewerControl;$(HEADER_PATH_5)/Modules/Network;$(HEADER_PATH_5)/Modules/Pattern;$(HEADER_PATH_5)/Modules/PointCloud;$(HEADER_PATH_5)/Modules/PointCloudManager;$(HEADER_PATH_5)/Modules/QGDrawing;$(HEADER_PATH_5)/Modules/RS;$(HEADER_PATH_5)/Modules/RapidJSON;$(HEADER_PATH_5)/Modules/SecureCommunication;$(HEADER_PATH_5)/Modules/TWClientLib;$(HEADER_PATH_5)/Modules/TWRoot;$(HEADER_PATH_5)/Modules/TextEngine;$(HEADER_PATH_5)/Modules/TransparentWindowLib;$(HEADER_PATH_5)/Modules/UCLib;$(HEADER_PATH_5)/Modules/UDLib;$(HEADER_PATH_5)/Modules/UserInterfaceAPI;$(HEADER_PATH_5)/Modules/VBElemDialogs;$(HEADER_PATH_5)/Modules/VBUtils;$(HEADER_PATH_5)/Modules/VectorImage $(inherited)</AdditionalIncludeDirectories>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<StringPooling>true</StringPooling>
<CallingConvention>FastCall</CallingConvention>
<CompileAs>CompileAsCpp</CompileAs>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<FunctionLevelLinking>
</FunctionLevelLinking>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<FloatingPointExceptions>false</FloatingPointExceptions>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<TreatLinkerWarningAsErrors>false</TreatLinkerWarningAsErrors>
<AdditionalDependencies>$(HEADER_PATH_5)\Lib\Win\ACAP_STATD.lib;$(HEADER_PATH_5)\Modules\DGGraphix\Win\DGGraphixImp.LIB;$(HEADER_PATH_5)\Modules\DGLib\Win\DGImp.lib;$(HEADER_PATH_5)\Modules\Geometry\Win\GeometryImp.LIB;$(HEADER_PATH_5)\Modules\Graphix\Win\GraphixImp.LIB;$(HEADER_PATH_5)\Modules\GSModeler\Win\GSModelerImp.LIB;$(HEADER_PATH_5)\Modules\GSRoot\Win\GSRootImp.lib;$(HEADER_PATH_5)\Modules\GXImage\Win\GXImageImp.lib;$(HEADER_PATH_5)\Modules\GXImageBase\Win\GXImageBaseImp.lib;$(HEADER_PATH_5)\Modules\GX\Win\GXImp.LIB;$(HEADER_PATH_5)\Modules\InputOutput\Win\InputOutputImp.lib;$(HEADER_PATH_5)\Modules\RS\Win\RSImp.LIB;$(HEADER_PATH_5)\Modules\TextEngine\Win\TextEngineImp.LIB;$(HEADER_PATH_5)\Modules\UCLib\Win\UCImp.lib;$(HEADER_PATH_5)\Modules\UDLib\Win\UDImp.lib;$(HEADER_PATH_5)\Modules\VBAttributes\Win\VBAttributesImp.LIB;$(HEADER_PATH_5)\Modules\VBElemDialogs\Win\VBElemDialogsImp.LIB;$(HEADER_PATH_5)\Modules\VectorImage\Win\VectorImageImp.LIB;$(HEADER_PATH_5)\Modules\ObjectDatabase\Win\ObjectDatabaseImp.LIB;$(HEADER_PATH_5)\Modules\JSON\Win\JSONImp.LIB;%(AdditionalDependencies)</AdditionalDependencies>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
<AdditionalLibraryDirectories>$(HEADER_PATH_5)\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<EntryPointSymbol>DllMainEntry</EntryPointSymbol>
<AdditionalOptions>/export:GetExportedFuncAddrs,%401 /export:SetImportedFuncAddrs,%402 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Lib>
<AdditionalDependencies>../zlib/x64/ZlibStatRelease/zlibstat.lib</AdditionalDependencies>
</Lib>
<PostBuildEvent>
<Command>REM Archicad installbuild script
SET PROJECTDIR=$(ProjectDir)
SET TARGETNAME=$(TargetName)
SET TARGETDIR=$(TargetDir)
@@ -1448,228 +872,6 @@ CALL "$(ProjectDir)..\SpeckleLib\Make.win\install.bat"</Command>
<PostBuildEvent>
<Command>REM Archicad installbuild script
SET PROJECTDIR=$(ProjectDir)
SET TARGETNAME=$(TargetName)
SET TARGETDIR=$(TargetDir)
SET BIMVERSION=$(BIM_VERSION)
ECHO ON
ECHO "Starting Install $(TargetName)"
set CONFIGURATION=$(Configuration)
set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\install.bat"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Creating VWR File</Message>
</PostBuildEvent>
<PreBuildEvent>
<Command>set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\buildResAC.bat"</Command>
</PreBuildEvent>
<ResourceCompile>
<AdditionalIncludeDirectories>$(HEADER_PATH_5)\Inc;$(HEADER_PATH_5)\Modules\DGLib;$(RES_OUTPUT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>
</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>NDEBUG;ARCHICAD;"__ACENV_CALL= ";WIN32;_WINDOWS;WINDOWS;AddOn_EXPORTS;ACExtension;_USRDLL;_WIN_EXTERNAL_;_WINDLL;_CRT_SECURE_NO_WARNINGS;_SILENCE_ALL_CXX20_DEPRECATION_WARNINGS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<AdditionalIncludeDirectories>./;$(HEADER_PATH_1)/;$(HEADER_PATH_2)/;$(HEADER_PATH_3)/;$(HEADER_PATH_3)/$(BIM_PLATFORM)/;$(HEADER_PATH_4)/;$(HEADER_PATH_5)/;$(HEADER_PATH_5)/Inc;$(HEADER_PATH_5)/Modules/AnalyticalModelAPI;$(HEADER_PATH_5)/Modules/ArchicadAPI;$(HEADER_PATH_5)/Modules/Brep;$(HEADER_PATH_5)/Modules/BuiltInLibrary;$(HEADER_PATH_5)/Modules/CADInfrastructureBase;$(HEADER_PATH_5)/Modules/CommunicationClient;$(HEADER_PATH_5)/Modules/CommunicationCommon;$(HEADER_PATH_5)/Modules/DGGraphix;$(HEADER_PATH_5)/Modules/DGLib;$(HEADER_PATH_5)/Modules/DesignVariantAPI;$(HEADER_PATH_5)/Modules/GDL;$(HEADER_PATH_5)/Modules/GSMSections;$(HEADER_PATH_5)/Modules/GSModelDevLib;$(HEADER_PATH_5)/Modules/GSModeler;$(HEADER_PATH_5)/Modules/GSModeler2D;$(HEADER_PATH_5)/Modules/GSRoot;$(HEADER_PATH_5)/Modules/GSUtils;$(HEADER_PATH_5)/Modules/GSXML;$(HEADER_PATH_5)/Modules/GSXMLUtils;$(HEADER_PATH_5)/Modules/GX;$(HEADER_PATH_5)/Modules/GXImage;$(HEADER_PATH_5)/Modules/GXImageBase;$(HEADER_PATH_5)/Modules/GXMedia;$(HEADER_PATH_5)/Modules/Geometry;$(HEADER_PATH_5)/Modules/Graphix;$(HEADER_PATH_5)/Modules/HTTP;$(HEADER_PATH_5)/Modules/InputOutput;$(HEADER_PATH_5)/Modules/JSON;$(HEADER_PATH_5)/Modules/JSONConversion;$(HEADER_PATH_5)/Modules/JavascriptEngine;$(HEADER_PATH_5)/Modules/LibXL;$(HEADER_PATH_5)/Modules/MEPAPI;$(HEADER_PATH_5)/Modules/MPIInterfaceDevLib;$(HEADER_PATH_5)/Modules/MPIInterfaceImpDevLib;$(HEADER_PATH_5)/Modules/Model3D;$(HEADER_PATH_5)/Modules/Model3DViewerControl;$(HEADER_PATH_5)/Modules/Network;$(HEADER_PATH_5)/Modules/Pattern;$(HEADER_PATH_5)/Modules/PointCloud;$(HEADER_PATH_5)/Modules/PointCloudManager;$(HEADER_PATH_5)/Modules/QGDrawing;$(HEADER_PATH_5)/Modules/RS;$(HEADER_PATH_5)/Modules/RapidJSON;$(HEADER_PATH_5)/Modules/SecureCommunication;$(HEADER_PATH_5)/Modules/TWClientLib;$(HEADER_PATH_5)/Modules/TWRoot;$(HEADER_PATH_5)/Modules/TextEngine;$(HEADER_PATH_5)/Modules/TransparentWindowLib;$(HEADER_PATH_5)/Modules/UCLib;$(HEADER_PATH_5)/Modules/UDLib;$(HEADER_PATH_5)/Modules/UserInterfaceAPI;$(HEADER_PATH_5)/Modules/VBElemDialogs;$(HEADER_PATH_5)/Modules/VBUtils;$(HEADER_PATH_5)/Modules/VectorImage $(inherited)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp20</LanguageStandard>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<WholeProgramOptimization>false</WholeProgramOptimization>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<StringPooling>true</StringPooling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeaderOutputFile>
</PrecompiledHeaderOutputFile>
<ForceConformanceInForLoopScope>
</ForceConformanceInForLoopScope>
<CallingConvention>FastCall</CallingConvention>
<CompileAs>CompileAsCpp</CompileAs>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<TreatLinkerWarningAsErrors>false</TreatLinkerWarningAsErrors>
<AdditionalDependencies>$(HEADER_PATH_5)\Lib\ACAP_STAT.lib;$(HEADER_PATH_5)\Modules\DGGraphix\Win\DGGraphixImp.LIB;$(HEADER_PATH_5)\Modules\DGLib\Win\DGImp.lib;$(HEADER_PATH_5)\Modules\Geometry\Win\GeometryImp.LIB;$(HEADER_PATH_5)\Modules\Graphix\Win\GraphixImp.LIB;$(HEADER_PATH_5)\Modules\GSModeler\Win\GSModelerImp.LIB;$(HEADER_PATH_5)\Modules\GSRoot\Win\GSRootImp.lib;$(HEADER_PATH_5)\Modules\GXImage\Win\GXImageImp.lib;$(HEADER_PATH_5)\Modules\GXImageBase\Win\GXImageBaseImp.lib;$(HEADER_PATH_5)\Modules\GX\Win\GXImp.LIB;$(HEADER_PATH_5)\Modules\InputOutput\Win\InputOutputImp.lib;$(HEADER_PATH_5)\Modules\RS\Win\RSImp.LIB;$(HEADER_PATH_5)\Modules\UCLib\Win\UCImp.lib;$(HEADER_PATH_5)\Modules\UDLib\Win\UDImp.lib;$(HEADER_PATH_5)\Modules\VBElemDialogs\Win\VBElemDialogsImp.LIB;$(HEADER_PATH_5)\Modules\VectorImage\Win\VectorImageImp.LIB;$(HEADER_PATH_5)\Modules\JavascriptEngine\Win\JavascriptEngineImp.LIB;$(HEADER_PATH_5)\Modules\JSON\Win\JSONImp.LIB;msvcrt.lib;msvcprt.lib;IPHLPAPI.lib;Wininet.lib;Dbghelp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(HEADER_PATH_5)\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>msvcrtd.lib</IgnoreSpecificDefaultLibraries>
<AdditionalOptions>/export:GetExportedFuncAddrs,%401 /export:SetImportedFuncAddrs,%402 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Lib>
<AdditionalDependencies>../zlib/x64/ZlibStatRelease/zlibstat.lib</AdditionalDependencies>
</Lib>
<PostBuildEvent>
<Command>REM Archicad installbuild script
SET PROJECTDIR=$(ProjectDir)
SET TARGETNAME=$(TargetName)
SET TARGETDIR=$(TargetDir)
SET BIMVERSION=$(BIM_VERSION)
ECHO ON
ECHO "Starting Install $(TargetName)"
set CONFIGURATION=$(Configuration)
set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\install.bat"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Creating VWR File</Message>
</PostBuildEvent>
<PreBuildEvent>
<Command>set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\buildResAC.bat"</Command>
</PreBuildEvent>
<ResourceCompile>
<AdditionalIncludeDirectories>$(HEADER_PATH_5)\Inc;$(HEADER_PATH_5)\Modules\DGLib;$(RES_OUTPUT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>
</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>NDEBUG;ARCHICAD;WIN32;_WINDOWS;WINDOWS;AddOn_EXPORTS;ACExtension;_USRDLL;_WIN_EXTERNAL_;_WINDLL;_CRT_SECURE_NO_WARNINGS;_SILENCE_ALL_CXX20_DEPRECATION_WARNINGS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<AdditionalIncludeDirectories>./;$(HEADER_PATH_1)/;$(HEADER_PATH_2)/;$(HEADER_PATH_3)/;$(HEADER_PATH_3)/$(BIM_PLATFORM)/;$(HEADER_PATH_4)/;$(HEADER_PATH_5)/;$(HEADER_PATH_5)/Inc;$(HEADER_PATH_5)/Modules/AnalyticalModelAPI;$(HEADER_PATH_5)/Modules/ArchicadAPI;$(HEADER_PATH_5)/Modules/Brep;$(HEADER_PATH_5)/Modules/BuiltInLibrary;$(HEADER_PATH_5)/Modules/CADInfrastructureBase;$(HEADER_PATH_5)/Modules/CommunicationClient;$(HEADER_PATH_5)/Modules/CommunicationCommon;$(HEADER_PATH_5)/Modules/DGGraphix;$(HEADER_PATH_5)/Modules/DGLib;$(HEADER_PATH_5)/Modules/DesignVariantAPI;$(HEADER_PATH_5)/Modules/GDL;$(HEADER_PATH_5)/Modules/GSMSections;$(HEADER_PATH_5)/Modules/GSModelDevLib;$(HEADER_PATH_5)/Modules/GSModeler;$(HEADER_PATH_5)/Modules/GSModeler2D;$(HEADER_PATH_5)/Modules/GSRoot;$(HEADER_PATH_5)/Modules/GSUtils;$(HEADER_PATH_5)/Modules/GSXML;$(HEADER_PATH_5)/Modules/GSXMLUtils;$(HEADER_PATH_5)/Modules/GX;$(HEADER_PATH_5)/Modules/GXImage;$(HEADER_PATH_5)/Modules/GXImageBase;$(HEADER_PATH_5)/Modules/GXMedia;$(HEADER_PATH_5)/Modules/Geometry;$(HEADER_PATH_5)/Modules/Graphix;$(HEADER_PATH_5)/Modules/HTTP;$(HEADER_PATH_5)/Modules/InputOutput;$(HEADER_PATH_5)/Modules/JSON;$(HEADER_PATH_5)/Modules/JSONConversion;$(HEADER_PATH_5)/Modules/JavascriptEngine;$(HEADER_PATH_5)/Modules/LibXL;$(HEADER_PATH_5)/Modules/MEPAPI;$(HEADER_PATH_5)/Modules/MPIInterfaceDevLib;$(HEADER_PATH_5)/Modules/MPIInterfaceImpDevLib;$(HEADER_PATH_5)/Modules/Model3D;$(HEADER_PATH_5)/Modules/Model3DViewerControl;$(HEADER_PATH_5)/Modules/Network;$(HEADER_PATH_5)/Modules/Pattern;$(HEADER_PATH_5)/Modules/PointCloud;$(HEADER_PATH_5)/Modules/PointCloudManager;$(HEADER_PATH_5)/Modules/QGDrawing;$(HEADER_PATH_5)/Modules/RS;$(HEADER_PATH_5)/Modules/RapidJSON;$(HEADER_PATH_5)/Modules/SecureCommunication;$(HEADER_PATH_5)/Modules/TWClientLib;$(HEADER_PATH_5)/Modules/TWRoot;$(HEADER_PATH_5)/Modules/TextEngine;$(HEADER_PATH_5)/Modules/TransparentWindowLib;$(HEADER_PATH_5)/Modules/UCLib;$(HEADER_PATH_5)/Modules/UDLib;$(HEADER_PATH_5)/Modules/UserInterfaceAPI;$(HEADER_PATH_5)/Modules/VBElemDialogs;$(HEADER_PATH_5)/Modules/VBUtils;$(HEADER_PATH_5)/Modules/VectorImage $(inherited)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp20</LanguageStandard>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<WholeProgramOptimization>false</WholeProgramOptimization>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<StringPooling>true</StringPooling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeaderOutputFile>
</PrecompiledHeaderOutputFile>
<ForceConformanceInForLoopScope>
</ForceConformanceInForLoopScope>
<CallingConvention>FastCall</CallingConvention>
<CompileAs>CompileAsCpp</CompileAs>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<TreatLinkerWarningAsErrors>false</TreatLinkerWarningAsErrors>
<AdditionalDependencies>$(HEADER_PATH_5)\Lib\Win\ACAP_STAT.lib;$(HEADER_PATH_5)\Modules\DGGraphix\Win\DGGraphixImp.LIB;$(HEADER_PATH_5)\Modules\DGLib\Win\DGImp.lib;$(HEADER_PATH_5)\Modules\Geometry\Win\GeometryImp.LIB;$(HEADER_PATH_5)\Modules\Graphix\Win\GraphixImp.LIB;$(HEADER_PATH_5)\Modules\GSModeler\Win\GSModelerImp.LIB;$(HEADER_PATH_5)\Modules\GSRoot\Win\GSRootImp.lib;$(HEADER_PATH_5)\Modules\GXImage\Win\GXImageImp.lib;$(HEADER_PATH_5)\Modules\GXImageBase\Win\GXImageBaseImp.lib;$(HEADER_PATH_5)\Modules\GX\Win\GXImp.LIB;$(HEADER_PATH_5)\Modules\InputOutput\Win\InputOutputImp.lib;$(HEADER_PATH_5)\Modules\RS\Win\RSImp.LIB;$(HEADER_PATH_5)\Modules\TextEngine\Win\TextEngineImp.LIB;$(HEADER_PATH_5)\Modules\UCLib\Win\UCImp.lib;$(HEADER_PATH_5)\Modules\UDLib\Win\UDImp.lib;$(HEADER_PATH_5)\Modules\VBElemDialogs\Win\VBElemDialogsImp.LIB;$(HEADER_PATH_5)\Modules\VectorImage\Win\VectorImageImp.LIB;$(HEADER_PATH_5)\Modules\JSON\Win\JSONImp.LIB;msvcrt.lib;msvcprt.lib;IPHLPAPI.lib;Wininet.lib;Dbghelp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(HEADER_PATH_5)\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>msvcrtd.lib</IgnoreSpecificDefaultLibraries>
<AdditionalOptions>/export:GetExportedFuncAddrs,%401 /export:SetImportedFuncAddrs,%402 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Lib>
<AdditionalDependencies>../zlib/x64/ZlibStatRelease/zlibstat.lib</AdditionalDependencies>
</Lib>
<PostBuildEvent>
<Command>REM Archicad installbuild script
SET PROJECTDIR=$(ProjectDir)
SET TARGETNAME=$(TargetName)
SET TARGETDIR=$(TargetDir)
SET BIMVERSION=$(BIM_VERSION)
ECHO ON
ECHO "Starting Install $(TargetName)"
set CONFIGURATION=$(Configuration)
set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\install.bat"</Command>
</PostBuildEvent>
<PostBuildEvent>
<Message>Creating VWR File</Message>
</PostBuildEvent>
<PreBuildEvent>
<Command>set PLATFORM_NAME=$(Platform)
set SYMROOT=$(SolutionDir)
"$(ProjectDir)..\SpeckleLib\Make.win\buildResAC.bat"</Command>
</PreBuildEvent>
<ResourceCompile>
<AdditionalIncludeDirectories>$(HEADER_PATH_5)\Inc;$(HEADER_PATH_5)\Modules\DGLib;$(RES_OUTPUT);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>
</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>
</SDLCheck>
<PreprocessorDefinitions>NDEBUG;ARCHICAD;WIN32;_WINDOWS;WINDOWS;AddOn_EXPORTS;ACExtension;_USRDLL;_WIN_EXTERNAL_;_WINDLL;_CRT_SECURE_NO_WARNINGS;_SILENCE_ALL_CXX20_DEPRECATION_WARNINGS;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<PrecompiledHeaderFile>
</PrecompiledHeaderFile>
<AdditionalIncludeDirectories>./;$(HEADER_PATH_1)/;$(HEADER_PATH_2)/;$(HEADER_PATH_3)/;$(HEADER_PATH_3)/$(BIM_PLATFORM)/;$(HEADER_PATH_4)/;$(HEADER_PATH_5)/;$(HEADER_PATH_5)/Inc;$(HEADER_PATH_5)/Modules/AnalyticalModelAPI;$(HEADER_PATH_5)/Modules/ArchicadAPI;$(HEADER_PATH_5)/Modules/Brep;$(HEADER_PATH_5)/Modules/BuiltInLibrary;$(HEADER_PATH_5)/Modules/CADInfrastructureBase;$(HEADER_PATH_5)/Modules/CommunicationClient;$(HEADER_PATH_5)/Modules/CommunicationCommon;$(HEADER_PATH_5)/Modules/DGGraphix;$(HEADER_PATH_5)/Modules/DGLib;$(HEADER_PATH_5)/Modules/DesignVariantAPI;$(HEADER_PATH_5)/Modules/GDL;$(HEADER_PATH_5)/Modules/GSMSections;$(HEADER_PATH_5)/Modules/GSModelDevLib;$(HEADER_PATH_5)/Modules/GSModeler;$(HEADER_PATH_5)/Modules/GSModeler2D;$(HEADER_PATH_5)/Modules/GSRoot;$(HEADER_PATH_5)/Modules/GSUtils;$(HEADER_PATH_5)/Modules/GSXML;$(HEADER_PATH_5)/Modules/GSXMLUtils;$(HEADER_PATH_5)/Modules/GX;$(HEADER_PATH_5)/Modules/GXImage;$(HEADER_PATH_5)/Modules/GXImageBase;$(HEADER_PATH_5)/Modules/GXMedia;$(HEADER_PATH_5)/Modules/Geometry;$(HEADER_PATH_5)/Modules/Graphix;$(HEADER_PATH_5)/Modules/HTTP;$(HEADER_PATH_5)/Modules/InputOutput;$(HEADER_PATH_5)/Modules/JSON;$(HEADER_PATH_5)/Modules/JSONConversion;$(HEADER_PATH_5)/Modules/JavascriptEngine;$(HEADER_PATH_5)/Modules/LibXL;$(HEADER_PATH_5)/Modules/MEPAPI;$(HEADER_PATH_5)/Modules/MPIInterfaceDevLib;$(HEADER_PATH_5)/Modules/MPIInterfaceImpDevLib;$(HEADER_PATH_5)/Modules/Model3D;$(HEADER_PATH_5)/Modules/Model3DViewerControl;$(HEADER_PATH_5)/Modules/Network;$(HEADER_PATH_5)/Modules/Pattern;$(HEADER_PATH_5)/Modules/PointCloud;$(HEADER_PATH_5)/Modules/PointCloudManager;$(HEADER_PATH_5)/Modules/QGDrawing;$(HEADER_PATH_5)/Modules/RS;$(HEADER_PATH_5)/Modules/RapidJSON;$(HEADER_PATH_5)/Modules/SecureCommunication;$(HEADER_PATH_5)/Modules/TWClientLib;$(HEADER_PATH_5)/Modules/TWRoot;$(HEADER_PATH_5)/Modules/TextEngine;$(HEADER_PATH_5)/Modules/TransparentWindowLib;$(HEADER_PATH_5)/Modules/UCLib;$(HEADER_PATH_5)/Modules/UDLib;$(HEADER_PATH_5)/Modules/UserInterfaceAPI;$(HEADER_PATH_5)/Modules/VBElemDialogs;$(HEADER_PATH_5)/Modules/VBUtils;$(HEADER_PATH_5)/Modules/VectorImage $(inherited)</AdditionalIncludeDirectories>
<LanguageStandard>stdcpp20</LanguageStandard>
<ForcedIncludeFiles>
</ForcedIncludeFiles>
<TreatWarningAsError>true</TreatWarningAsError>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<WholeProgramOptimization>false</WholeProgramOptimization>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<StringPooling>true</StringPooling>
<BufferSecurityCheck>false</BufferSecurityCheck>
<RuntimeTypeInfo>true</RuntimeTypeInfo>
<PrecompiledHeaderOutputFile>
</PrecompiledHeaderOutputFile>
<ForceConformanceInForLoopScope>
</ForceConformanceInForLoopScope>
<CallingConvention>FastCall</CallingConvention>
<CompileAs>CompileAsCpp</CompileAs>
</ClCompile>
<Link>
<SubSystem>
</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<TreatLinkerWarningAsErrors>false</TreatLinkerWarningAsErrors>
<AdditionalDependencies>$(HEADER_PATH_5)\Lib\Win\ACAP_STAT.lib;$(HEADER_PATH_5)\Modules\DGGraphix\Win\DGGraphixImp.LIB;$(HEADER_PATH_5)\Modules\DGLib\Win\DGImp.lib;$(HEADER_PATH_5)\Modules\Geometry\Win\GeometryImp.LIB;$(HEADER_PATH_5)\Modules\Graphix\Win\GraphixImp.LIB;$(HEADER_PATH_5)\Modules\GSModeler\Win\GSModelerImp.LIB;$(HEADER_PATH_5)\Modules\GSRoot\Win\GSRootImp.lib;$(HEADER_PATH_5)\Modules\GXImage\Win\GXImageImp.lib;$(HEADER_PATH_5)\Modules\GXImageBase\Win\GXImageBaseImp.lib;$(HEADER_PATH_5)\Modules\GX\Win\GXImp.LIB;$(HEADER_PATH_5)\Modules\InputOutput\Win\InputOutputImp.lib;$(HEADER_PATH_5)\Modules\RS\Win\RSImp.LIB;$(HEADER_PATH_5)\Modules\TextEngine\Win\TextEngineImp.LIB;$(HEADER_PATH_5)\Modules\UCLib\Win\UCImp.lib;$(HEADER_PATH_5)\Modules\UDLib\Win\UDImp.lib;$(HEADER_PATH_5)\Modules\VBAttributes\Win\VBAttributesImp.LIB;$(HEADER_PATH_5)\Modules\VBElemDialogs\Win\VBElemDialogsImp.LIB;$(HEADER_PATH_5)\Modules\VectorImage\Win\VectorImageImp.LIB;$(HEADER_PATH_5)\Modules\ObjectDatabase\Win\ObjectDatabaseImp.LIB;$(HEADER_PATH_5)\Modules\JSON\Win\JSONImp.LIB;msvcrt.lib;msvcprt.lib;IPHLPAPI.lib;Wininet.lib;Dbghelp.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(HEADER_PATH_5)\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<IgnoreAllDefaultLibraries>
</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>msvcrtd.lib</IgnoreSpecificDefaultLibraries>
<AdditionalOptions>/export:GetExportedFuncAddrs,%401 /export:SetImportedFuncAddrs,%402 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Lib>
<AdditionalDependencies>../zlib/x64/ZlibStatRelease/zlibstat.lib</AdditionalDependencies>
</Lib>
<PostBuildEvent>
<Command>REM Archicad installbuild script
SET PROJECTDIR=$(ProjectDir)
SET TARGETNAME=$(TargetName)
SET TARGETDIR=$(TargetDir)
+5 -33
View File
@@ -74,12 +74,6 @@
<Filter Include="Connector\Environment">
<UniqueIdentifier>{1d9a10c3-cac6-4b15-afb9-f117b99b3a24}</UniqueIdentifier>
</Filter>
<Filter Include="Connector\Interface\Browser\Bridge\Receive">
<UniqueIdentifier>{896b7b9b-61d8-46e7-8432-cfbdab4918fb}</UniqueIdentifier>
</Filter>
<Filter Include="Connector\Tool">
<UniqueIdentifier>{f9330e8f-8242-4605-b25c-b1ba24451825}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="RFIX.win\Connector.rc2">
@@ -104,6 +98,9 @@
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Connector\Connector.cpp">
<Filter>Connector</Filter>
</ClCompile>
<ClCompile Include="Connector\Interface\ConnectorMenu.cpp">
<Filter>Connector\Interface</Filter>
</ClCompile>
@@ -170,6 +167,7 @@
<ClCompile Include="Connector\Interface\Browser\Bridge\Send\SendBridge.cpp">
<Filter>Connector\Interface\Browser\Bridge\Send</Filter>
</ClCompile>
<ClCompile Include="Connector\Interface\Browser\Bridge\Config\GetIsDevMode.cpp" />
<ClCompile Include="Connector\Interface\Browser\Bridge\Send\Send.cpp">
<Filter>Connector\Interface\Browser\Bridge\Send</Filter>
</ClCompile>
@@ -260,21 +258,6 @@
<ClCompile Include="Connector\Interface\Browser\Bridge\Base\HighlightObjects.cpp">
<Filter>Connector\Interface\Browser\Bridge\Base</Filter>
</ClCompile>
<ClCompile Include="Connector\Interface\Browser\Bridge\Config\GetIsDevMode.cpp">
<Filter>Connector\Interface\Browser\Bridge\Config</Filter>
</ClCompile>
<ClCompile Include="Connector\Interface\Browser\Bridge\Receive\Receive.cpp">
<Filter>Connector\Interface\Browser\Bridge\Receive</Filter>
</ClCompile>
<ClCompile Include="Connector\Interface\Browser\Bridge\Receive\ReceiveBridge.cpp">
<Filter>Connector\Interface\Browser\Bridge\Receive</Filter>
</ClCompile>
<ClCompile Include="Connector\Tool\ElementHighlighter.cpp">
<Filter>Connector\Tool</Filter>
</ClCompile>
<ClCompile Include="Connector\Connector.cpp">
<Filter>Connector</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Connector\ConnectorResource.h">
@@ -355,6 +338,7 @@
<ClInclude Include="Connector\Interface\Browser\Bridge\Send\SendBridge.h">
<Filter>Connector\Interface\Browser\Bridge\Send</Filter>
</ClInclude>
<ClInclude Include="Connector\Interface\Browser\Bridge\Config\GetIsDevMode.h" />
<ClInclude Include="Connector\Interface\Browser\Bridge\Send\Send.h">
<Filter>Connector\Interface\Browser\Bridge\Send</Filter>
</ClInclude>
@@ -457,17 +441,5 @@
<ClInclude Include="Connector\Interface\Browser\Bridge\Base\HighlightObjects.h">
<Filter>Connector\Interface\Browser\Bridge\Base</Filter>
</ClInclude>
<ClInclude Include="Connector\Interface\Browser\Bridge\Config\GetIsDevMode.h">
<Filter>Connector\Interface\Browser\Bridge\Config</Filter>
</ClInclude>
<ClInclude Include="Connector\Interface\Browser\Bridge\Receive\Receive.h">
<Filter>Connector\Interface\Browser\Bridge\Receive</Filter>
</ClInclude>
<ClInclude Include="Connector\Interface\Browser\Bridge\Receive\ReceiveBridge.h">
<Filter>Connector\Interface\Browser\Bridge\Receive</Filter>
</ClInclude>
<ClInclude Include="Connector\Tool\ElementHighlighter.h">
<Filter>Connector\Tool</Filter>
</ClInclude>
</ItemGroup>
</Project>
-30
View File
@@ -15,21 +15,6 @@
<LocalDebuggerAttach>false</LocalDebuggerAttach>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC28|x64'">
<LocalDebuggerCommand>C:\Program Files\Graphisoft\Archicad 28\Archicad.exe</LocalDebuggerCommand>
<LocalDebuggerAttach>false</LocalDebuggerAttach>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC26|x64'">
<LocalDebuggerCommand>C:\Program Files\Graphisoft\Archicad 26\Archicad.exe</LocalDebuggerCommand>
<LocalDebuggerAttach>false</LocalDebuggerAttach>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugAC25|x64'">
<LocalDebuggerCommand>C:\Program Files\Graphisoft\ARCHICAD 25\Archicad.exe</LocalDebuggerCommand>
<LocalDebuggerAttach>false</LocalDebuggerAttach>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseVW2024|x64'">
<LocalDebuggerCommand>C:\Program Files\Vectorworks 2024\Vectorworks2024.exe</LocalDebuggerCommand>
<LocalDebuggerAttach>false</LocalDebuggerAttach>
@@ -45,19 +30,4 @@
<LocalDebuggerAttach>false</LocalDebuggerAttach>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC28|x64'">
<LocalDebuggerCommand>C:\Program Files\Graphisoft\Archicad 28\Archicad.exe</LocalDebuggerCommand>
<LocalDebuggerAttach>false</LocalDebuggerAttach>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC26|x64'">
<LocalDebuggerCommand>C:\Program Files\Graphisoft\Archicad 26\Archicad.exe</LocalDebuggerCommand>
<LocalDebuggerAttach>false</LocalDebuggerAttach>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseAC25|x64'">
<LocalDebuggerCommand>C:\Program Files\Graphisoft\ARCHICAD 25\Archicad.exe</LocalDebuggerCommand>
<LocalDebuggerAttach>false</LocalDebuggerAttach>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>
File diff suppressed because it is too large Load Diff
@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1610"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21BD79802CE23E4D00526AD1"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC25-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<PathRunnable
runnableDebuggingMode = "0"
FilePath = "/Applications/Graphisoft/ARCHICAD 25/ARCHICAD 25.app">
</PathRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21BD79802CE23E4D00526AD1"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC25-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1610"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21BD79802CE23E4D00526AD1"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC25-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<PathRunnable
runnableDebuggingMode = "0"
FilePath = "/Applications/Graphisoft/ARCHICAD 25/ARCHICAD 25.app">
</PathRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21BD79802CE23E4D00526AD1"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC25-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Release">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -1,72 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1610"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21CE8A922CE4F3370076522F"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC26-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<PathRunnable
runnableDebuggingMode = "0"
BundleIdentifier = "com.graphisoft.archicad26"
FilePath = "/Applications/Graphisoft/Archicad 26/Archicad 26.app">
</PathRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21CE8A922CE4F3370076522F"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC26-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1610"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21CE8A922CE4F3370076522F"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC26-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<PathRunnable
runnableDebuggingMode = "0"
FilePath = "/Applications/Graphisoft/Archicad 26/Archicad 26.app">
</PathRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21CE8A922CE4F3370076522F"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC26-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Release">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1610"
LastUpgradeVersion = "1530"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1610"
LastUpgradeVersion = "1530"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1610"
LastUpgradeVersion = "1530"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
@@ -39,10 +39,6 @@
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<PathRunnable
runnableDebuggingMode = "0"
FilePath = "/Applications/Graphisoft/Archicad 27/Archicad 27.app">
</PathRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1610"
LastUpgradeVersion = "1530"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1610"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21CE8DD22CE5137C0076522F"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC28-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<PathRunnable
runnableDebuggingMode = "0"
FilePath = "/Applications/Graphisoft/Archicad 28/Archicad 28.app">
</PathRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21CE8DD22CE5137C0076522F"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC28-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1610"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
buildArchitectures = "Automatic">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21CE8DD22CE5137C0076522F"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC28-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
shouldUseLaunchSchemeArgsEnv = "YES"
shouldAutocreateTestPlan = "YES">
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<PathRunnable
runnableDebuggingMode = "0"
FilePath = "/Applications/Graphisoft/Archicad 28/Archicad 28.app">
</PathRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "21CE8DD22CE5137C0076522F"
BuildableName = "Speckle Connector.bundle"
BlueprintName = "Connector-AC28-EN-GB"
ReferencedContainer = "container:Connector.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Release">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
+1 -44
View File
@@ -4,21 +4,10 @@
#include "Connector/Environment/ConnectorProject.h"
#include "Connector/Interface/ConnectorMenu.h"
#include "Connector/Interface/ConnectorPalette.h"
#include "Connector/Tool/ElementHighlighter.h"
#include "Speckle/Database/AccountDatabase.h"
#include "Speckle/Environment/Addon.h"
#include "Speckle/Utility/String.h"
#include <mutex>
#ifdef WINDOWS
//NB: VS is ignoring template specialisations unless they are explicitly used in the top-level project
#include "Active/Setting/Values/GuidValue.h"
#include "Active/Setting/Values/TimeValue.h"
#include "Active/Setting/Values/StringValue.h"
using namespace active::setting;
#endif
using namespace active::file;
using namespace active::environment;
using namespace connector;
@@ -34,24 +23,12 @@ namespace {
//The account database name
const char* accountDBaseName = "Accounts.db";
/*!
Class for a concrete instance of an add-on
This class is private to prevent ad-hoc construction of instances while fulfilling the requirements of the public interface. Essentially
this should behave as a singleton, representing the sole instance of the running add-on
*/
///The Connector addon class
class ConnectorInstance : public ConnectorAddon {
public:
/*!
Constructor
@param name The connector add-on name
*/
ConnectorInstance(const String& name) : ConnectorAddon{name} {
//Define the connector UI components
add<ConnectorMenu>();
add<ConnectorPalette>();
add<ElementHighlighter>();
}
// MARK: Functions (const)
@@ -72,13 +49,9 @@ namespace {
}
private:
///The accounts database - always a single instance for the active user
mutable std::unique_ptr<AccountDatabase> m_account;
///Mutex to control access to the accounts database
mutable std::mutex m_accountMutex;
};
///The active addon instance
std::unique_ptr<ConnectorAddon> m_addonInstance;
@@ -94,18 +67,6 @@ namespace {
return std::nullopt;
return Directory{*appData, speckleDataDirName, true};
} //getAppDataDirectory
#ifdef WINDOWS
//NB: VS is ignoring template specialisations unless they are explicitly used in the top-level project
void invokeSpecialisation() {
StringValue stringValue;
active::utility::String unusedString = stringValue;
GuidValue guidValue;
active::utility::Guid unusedGuid = guidValue;
TimeValue timeValue;
active::utility::Time unusedTime = timeValue;
}
#endif
}
@@ -115,9 +76,6 @@ namespace {
name: The add-on name
--------------------------------------------------------------------*/
ConnectorAddon::ConnectorAddon(const speckle::utility::String& name) : Addon{name} {
#ifdef WINDOWS
invokeSpecialisation();
#endif
} //ConnectorAddon::ConnectorAddon
@@ -127,7 +85,6 @@ ConnectorAddon::ConnectorAddon(const speckle::utility::String& name) : Addon{nam
return: The account database
--------------------------------------------------------------------*/
const AccountDatabase* ConnectorInstance::getAccountDatabase() const {
const std::lock_guard<std::mutex> lock{m_accountMutex};
if (!m_account) {
auto speckleDirectory = getAppDataDirectory();
if (!speckleDirectory)
+1
View File
@@ -1,4 +1,5 @@
#include "Speckle/Environment/Addon.h"
#include "Speckle/Utility/String.h"
namespace speckle::database {
class AccountDatabase;
@@ -29,7 +29,6 @@ enum TitleString {
addonNameID = 1,
addonDescriptionID,
noStoreyID,
showLayersID,
};
@@ -45,7 +44,6 @@ enum GeneralString {
//Notification strings (advice displayed in alerts)
enum NotifyString {
showHiddenLayersID = 1,
};
@@ -96,7 +96,7 @@ Vector<ModelCard> ModelCardDatabase::getCards() const {
card: The card to write
--------------------------------------------------------------------*/
void ModelCardDatabase::write(ModelCard& card) const {
void ModelCardDatabase::write(const ModelCard& card) const {
m_store->write(card);
} //ModelCardDatabase::write
@@ -43,7 +43,7 @@ namespace connector::database {
Write a card to storage
@param card The card to write
*/
void write(record::ModelCard& card) const;
void write(const record::ModelCard& card) const;
/*!
Erase a card
@param cardID The ID of the card to erase
@@ -3,20 +3,6 @@
#include "Active/Utility/NameID.h"
// MARK: - Event identities
//Identifier for event signalling the connector palette visibility should be toggled
inline const active::utility::NameID toggleConnectorPaletteID{"toggleConnectorPalette"};
//Identifier for event signalling the connector palette has changed (state carried with event)
inline const active::utility::NameID reflectPaletteVisibilityID{"setConnectorMenuCheck"};
//Identifier for event signalling the that an attached list of elements should be highlighted
inline const active::utility::NameID setElementHighlight{"setElementHighlight"};
// MARK: - Event setting identities
//Identifier for setting carrying a menu state
inline const active::utility::NameID paletteVisibilityStateID{"menuCheckState"};
//Identifier for setting carrying a list of element links
inline const active::utility::NameID recordLinks{"recordLinks"};
#endif //CONNECTOR_EVENT_ID
@@ -29,8 +29,6 @@ void AddModel::run(const ModelCard& card) const {
auto connectorProject = dynamic_cast<ConnectorProject*>(project.get());
if (!connectorProject)
return;
if (auto modelCardDBase = connectorProject->getModelCardDatabase(); modelCardDBase != nullptr) {
auto newCard = clone(card);
modelCardDBase->write(*newCard);
}
if (auto modelCardDBase = connectorProject->getModelCardDatabase(); modelCardDBase != nullptr)
modelCardDBase->write(card);
} //AddModel::run
@@ -1,11 +1,7 @@
#include "Active/Setting/ValueSetting.h"
#include "Active/Setting/Values/GuidValue.h"
#include "Active/Event/Event.h"
#include "Connector/Interface/Browser/Bridge/Base/HighlightModel.h"
#include "Connector/Connector.h"
#include "Connector/ConnectorResource.h"
#include "Connector/Environment/ConnectorProject.h"
#include "Connector/Event/ConnectorEventID.h"
#include "Connector/Database/ModelCardDatabase.h"
#include "Connector/Interface/Browser/Bridge/Send/Arg/SendError.h"
#include "Connector/Record/Model/SenderModelCard.h"
@@ -13,16 +9,12 @@
#include "Speckle/Interface/Browser/Bridge/BrowserBridge.h"
#include "Speckle/Record/Element/Element.h"
#include "Speckle/Database/BIMElementDatabase.h"
#include "Speckle/Environment/Host.h"
#include "Speckle/Environment/Project.h"
using namespace active::event;
using namespace active::setting;
using namespace speckle::record::element;
using namespace connector::environment;
using namespace connector::interfac::browser::bridge;
using namespace connector::record;
using namespace speckle::environment;
using namespace speckle::record::element;
using namespace speckle::utility;
/*--------------------------------------------------------------------
@@ -52,9 +44,12 @@ void HighlightModel::run(const String& modelCardID) const {
return;
}
if (auto senderCard = dynamic_cast<SenderModelCard*>(modelCard.get())) {
ValueSetting elementIDs{recordLinks};
for (const auto& elementID : senderCard->getFilter().getElementIDs())
elementIDs.emplace_back(GuidValue{elementID});
connector()->publish(Event{setElementHighlight, { elementIDs }});
auto modelCardSelection = senderCard->getFilter().getElementIDs();
auto project = connector()->getActiveProject().lock();
if (!project)
return; // TODO: is this OK? should this throw?
auto elementDatabase = project->getElementDatabase();
elementDatabase->clearSelection();
elementDatabase->setSelection(modelCardSelection);
}
} //HighlightModel::run
@@ -1,16 +1,13 @@
#include "Connector/Interface/Browser/Bridge/Base/HighlightObjects.h"
#include "Active/Setting/ValueSetting.h"
#include "Active/Event/Event.h"
#include "Connector/Connector.h"
#include "Connector/Event/ConnectorEventID.h"
#include "Connector/Environment/ConnectorProject.h"
#include "Speckle/Database/BIMElementDatabase.h"
#include "Speckle/Environment/Project.h"
using namespace active::event;
using namespace active::setting;
using namespace connector;
using namespace connector::environment;
using namespace connector::interfac::browser::bridge;
using namespace speckle::database;
using namespace speckle::environment;
using namespace speckle::utility;
/*--------------------------------------------------------------------
@@ -27,5 +24,17 @@ HighlightObjects::HighlightObjects() : BridgeMethod{"HighlightObjects", [&](cons
objectIDs: List of object IDs to be highlighted
--------------------------------------------------------------------*/
void HighlightObjects::run(const StringList& objectIDs) const {
connector()->publish(Event{setElementHighlight, { ValueSetting{objectIDs, recordLinks} }});
BIMLinkList objectSelection;
for (const auto& text : objectIDs)
if (Guid guid{text}; !guid.empty())
objectSelection.emplace_back(guid);
if (objectSelection.empty())
return;
auto project = connector()->getActiveProject().lock();
auto connectorProject = dynamic_cast<ConnectorProject*>(project.get());
if (!connectorProject)
return;
auto elementDatabase = project->getElementDatabase();
elementDatabase->clearSelection();
elementDatabase->setSelection(objectSelection);
} //HighlightObjects::run
@@ -36,8 +36,6 @@ void UpdateModel::run(const ModelCard& card) const {
auto connectorProject = dynamic_cast<ConnectorProject*>(project.get());
if (!connectorProject)
return;
if (auto modelCardDBase = connectorProject->getModelCardDatabase(); modelCardDBase != nullptr) {
auto newCard = clone(card);
modelCardDBase->write(*newCard);
}
if (auto modelCardDBase = connectorProject->getModelCardDatabase(); modelCardDBase != nullptr)
modelCardDBase->write(card);
} //UpdateModel::run
@@ -1,46 +0,0 @@
#include "Connector/Interface/Browser/Bridge/Receive/Receive.h"
#include "Active/Serialise/CargoHold.h"
#include "Active/Serialise/Package/Wrapper/PackageWrap.h"
#include "Connector/Connector.h"
#include "Connector/ConnectorResource.h"
#include "Connector/Database/ModelCardDatabase.h"
#include "Connector/Environment/ConnectorProject.h"
#include "Connector/Record/Collection/ProjectCollection.h"
#include "Connector/Record/Model/ReceiverModelCard.h"
#include "Speckle/Database/AccountDatabase.h"
#include "Speckle/Database/BIMElementDatabase.h"
#include "Speckle/Database/Content/BIMRecord.h"
#include "Speckle/Environment/Project.h"
#include "Speckle/Environment/Host.h"
#include "Speckle/Interface/Browser/Bridge/BrowserBridge.h"
#include "Speckle/Record/Credentials/Account.h"
#include "Speckle/Record/Element/Element.h"
#include "Speckle/Serialise/Detached/Storage/DetachedMemoryStore.h"
#include "Speckle/Utility/Exception.h"
using namespace active::serialise;
using namespace connector::environment;
using namespace connector::interfac::browser::bridge;
using namespace connector::record;
using namespace speckle::database;
using namespace speckle::environment;
using namespace speckle::record::element;
using namespace speckle::serialise;
using namespace speckle::utility;
/*--------------------------------------------------------------------
Default constructor
--------------------------------------------------------------------*/
Receive::Receive() : BridgeMethod{"Receive", [&](const ReceiveArgs& args) {
run(args);
}} {}
/*--------------------------------------------------------------------
Receive a specified model
modelCardID: The ID of the model card identifying the objects to receive
--------------------------------------------------------------------*/
void Receive::run(const String& modelCardID) const {
} //Receive::run
@@ -1,39 +0,0 @@
#ifndef CONNECTOR_INTERFACE_BRIDGE_RECEIVE
#define CONNECTOR_INTERFACE_BRIDGE_RECEIVE
#include "Active/Serialise/CargoHold.h"
#include "Active/Serialise/Item/Wrapper/ValueWrap.h"
#include "Speckle/Interface/Browser/Bridge/BridgeMethod.h"
namespace connector::interfac::browser::bridge {
///Argument parameter for a string
using StringHold = active::serialise::CargoHold<active::serialise::ValueWrap<speckle::utility::String>, speckle::utility::String>;
///Argument type for this method
using ReceiveArgs = speckle::interfac::browser::bridge::JSArgType<StringHold>;
/*!
JS Function class to receive a specified model
*/
class Receive : public speckle::interfac::browser::bridge::BridgeMethod<ReceiveArgs, void> {
public:
// MARK: - Constructors
/*!
Constructor
*/
Receive();
// MARK: - Functions (const)
/*!
Receive a specified model
@param modelCardID The ID of the model card identifying the objects to receive
*/
void run(const speckle::utility::String& modelCardID) const;
};
}
#endif //CONNECTOR_INTERFACE_BRIDGE_RECEIVE
@@ -1,30 +0,0 @@
#include "Connector/Interface/Browser/Bridge/Receive/ReceiveBridge.h"
#include "Connector/Interface/Browser/Bridge/Receive/Receive.h"
#include "Connector/Connector.h"
#include "Connector/ConnectorResource.h"
#include "Connector/Database/ModelCardDatabase.h"
#include "Connector/Environment/ConnectorProject.h"
#include "Speckle/Event/Type/ElementEvent.h"
#include "Speckle/Record/Element/Element.h"
#include "Speckle/Database/BIMElementDatabase.h"
#include "Speckle/Environment/Project.h"
#include "Speckle/Database/Identity/RecordID.h"
#include "Active/Serialise/CargoHold.h"
#include "Active/Serialise/Package/Wrapper/ContainerWrap.h"
#include "Connector/Record/Model/ReceiverModelCard.h"
using namespace speckle::database;
using namespace connector::environment;
using namespace connector::interfac::browser::bridge;
using namespace speckle::utility;
using namespace speckle::event;
using namespace active::serialise;
using namespace connector::record;
/*--------------------------------------------------------------------
Default constructor
--------------------------------------------------------------------*/
ReceiveBridge::ReceiveBridge() : BrowserBridge{"receiveBinding"} {
//Add bridge methods
addMethod<Receive>();
} //ReceiveBridge::ReceiveBridge
@@ -1,29 +0,0 @@
#ifndef CONNECTOR_INTERFACE_BRIDGE_RECEIVE_BRIDGE
#define CONNECTOR_INTERFACE_BRIDGE_RECEIVE_BRIDGE
#include "Speckle/Interface/Browser/Bridge/BrowserBridge.h"
namespace connector::interfac::browser::bridge {
/*!
A browser bridge to support receiving model data from a Speckle server
*/
class ReceiveBridge : public speckle::interfac::browser::bridge::BrowserBridge {
public:
// MARK: - Types
using base = speckle::interfac::browser::bridge::BrowserBridge;
// MARK: - Constructors
using base::base;
/*!
Default constructor
*/
ReceiveBridge();
};
}
#endif //CONNECTOR_INTERFACE_BRIDGE_RECEIVE_BRIDGE
@@ -24,7 +24,7 @@ SelectionBridge::SelectionBridge() : BrowserBridge{"selectionBinding"} {
--------------------------------------------------------------------*/
bool SelectionBridge::handle(const speckle::event::SelectionEvent& event) {
auto selectionInfo = std::make_unique<SelectionInfo>();
auto wrapped = std::make_unique<CargoHold<PackageWrap, SelectionInfo>>(std::move(selectionInfo));
auto wrapped = std::make_unique<CargoHold<PackageWrap, SelectionInfo>>(std::move(selectionInfo));
sendEvent("setSelection", std::move(wrapped));
return true;
} //SelectionBridge::handle
@@ -76,9 +76,10 @@ void Send::run(const String& modelCardID) const {
}
//Get the selected elements from the modelcard
auto elementDatabase = project->getElementDatabase();
BIMRecordIDList selected{};
if (auto senderCard = dynamic_cast<SenderModelCard*>(modelCard.get()))
ElementIDList selected{};
if (auto senderCard = dynamic_cast<SenderModelCard*>(modelCard.get())) {
selected = senderCard->getFilter().getElementIDs();
}
//Build a collection from the selected elements
auto collection = std::make_unique<ProjectCollection>(project, modelCard->getID());
for (const auto& link : selected) {
@@ -59,9 +59,10 @@ bool SendBridge::handle(const ElementEvent& event) {
// POC: this is probably not efficient, should test, review and refactor it
RecordIDList expiredModelCardIds;
for (const auto& modelCard : modelCards) {
if (auto senderCard = dynamic_cast<SenderModelCard*>(modelCard.get()); senderCard) {
for (const auto& recordID : m_changedElements) {
if (senderCard->contains(recordID)) {
if (auto senderCard = dynamic_cast<SenderModelCard*>(modelCard.get())) {
auto modelCardSelection = senderCard->getFilter().getElementIDs();
for (const auto& elemId : modelCardSelection) {
if (std::find(m_changedElements.begin(), m_changedElements.end(), elemId) != m_changedElements.end()) {
expiredModelCardIds.push_back(modelCard->getID());
break;
}
@@ -75,8 +76,8 @@ bool SendBridge::handle(const ElementEvent& event) {
break;
}
case changeElem: case editElem: case deleteElem: {
if (event.getElementID())
m_changedElements.insert(*event.getElementID());
if (event.getElmentID())
m_changedElements.push_back(*event.getElmentID());
break;
}
default:
@@ -31,10 +31,6 @@ namespace connector::interfac::browser::bridge {
@return True if the event should be closed
*/
bool handle(const speckle::event::ElementEvent& event) override;
private:
///List of changed element IDs
speckle::database::BIMRecordIDList m_changedElements;
};
}
@@ -11,12 +11,6 @@ using namespace active::event;
using namespace connector;
using namespace speckle::event;
namespace {
auto connectorMenuItem = 1;
}
/*--------------------------------------------------------------------
Default constructor
--------------------------------------------------------------------*/
@@ -28,35 +22,6 @@ ConnectorMenu::ConnectorMenu()
} //ConnectorMenu::ConnectorMenu
/*--------------------------------------------------------------------
Get the event subscription list
return: The subscription list (an empty list will put the subscriber into a suspended state)
--------------------------------------------------------------------*/
Subscriber::Subscription ConnectorMenu::subscription() const {
auto result = MenuSubscriber::subscription();
result.insert(reflectPaletteVisibilityID);
return result;
} //ConnectorMenu::subscription
/*--------------------------------------------------------------------
Receive a subscribed event
event: The incoming event
return: True if the event should be closed
--------------------------------------------------------------------*/
bool ConnectorMenu::receive(const active::event::Event& event) {
if (event != reflectPaletteVisibilityID)
return MenuSubscriber::receive(event);
//Set the menu checked state based on the palette visibility from the event
if (auto menuState = event.findValue(paletteVisibilityStateID); menuState != nullptr)
setMenuChecked(connectorMenuItem, menuState->boolVal());
return false;
} //ConnectorMenu::receive
/*--------------------------------------------------------------------
Handle the menu selection
@@ -11,21 +11,6 @@ namespace connector {
Default constructor
*/
ConnectorMenu();
/*!
Get the event subscription list
@return The subscription list (an empty list will put the subscriber into a suspended state)
*/
Subscription subscription() const override;
// MARK: - Functions (mutating)
/*!
Receive a subscribed event
@param event The incoming event
@return True if the event should be closed
*/
bool receive(const active::event::Event& event) override;
protected:
/*!
@@ -1,32 +1,30 @@
#include "Connector/Interface/ConnectorPalette.h"
#include "Active/Event/Event.h"
#include "Active/Setting/ValueSetting.h"
#include "Active/Utility/String.h"
#include "Active/Serialise/JSON/JSONTransport.h"
#include "Active/Utility/BufferOut.h"
#include "Active/Utility/String.h"
#include "Connector/Connector.h"
#include "Connector/ConnectorResource.h"
#include "Connector/Event/ConnectorEventID.h"
#include "Connector/Interface/Browser/Bridge/Account/AccountBridge.h"
#include "Connector/Interface/Browser/Bridge/Base/BaseBridge.h"
#include "Connector/Interface/Browser/Bridge/Config/ConfigBridge.h"
#include "Connector/Interface/Browser/Bridge/Receive/ReceiveBridge.h"
#include "Connector/Interface/Browser/Bridge/Send/SendBridge.h"
#include "Connector/Interface/Browser/Bridge/Selection/SelectionBridge.h"
#include "Connector/Interface/Browser/Bridge/Test/TestBridge.h"
#include "Speckle/Environment/Addon.h"
#include "Speckle/Event/Type/MenuEvent.h"
#include "Speckle/Event/Type/ProjectEvent.h"
#include "Speckle/Interface/Browser/JSPortal.h"
#include "Speckle/Event/Type/ProjectEvent.h"
#include <ACAPinc.h>
#include <DGModule.hpp>
#include <DGBrowser.hpp>
using namespace active::environment;
using namespace active::event;
using namespace active::setting;
using namespace connector;
using namespace speckle::interfac::browser;
using namespace connector::interfac::browser::bridge;
@@ -77,7 +75,7 @@ namespace {
std::shared_ptr<DG::Browser> browser;
void InitBrowserControl();
void publshVisibilityChange(bool);
void SetMenuItemCheckedState(bool);
virtual void PanelResized(const DG::PanelResizeEvent& ev) override;
virtual void PanelCloseRequested(const DG::PanelCloseRequestEvent& ev, bool* accepted) override;
@@ -136,19 +134,20 @@ bool ConnectorPalette::start() {
return: True if the event should be closed
--------------------------------------------------------------------*/
bool ConnectorPalette::receive(const active::event::Event& event) {
if (event == toggleConnectorPaletteID) {
if (BrowserPalette::HasInstance() && BrowserPalette::GetInstance().IsVisible()) {
BrowserPalette::GetInstance().Hide();
}
else {
if (!BrowserPalette::HasInstance())
BrowserPalette::CreateInstance();
BrowserPalette::GetInstance().Show();
}
return true;
}
return ProjectSubscriber::receive(event);
if (event == toggleConnectorPaletteID) {
if (BrowserPalette::HasInstance() && BrowserPalette::GetInstance().IsVisible()) {
BrowserPalette::GetInstance().Hide();
}
else {
if (!BrowserPalette::HasInstance())
BrowserPalette::CreateInstance();
BrowserPalette::GetInstance().Show();
}
return true;
}
return ProjectSubscriber::receive(event);
} //ConnectorPalette::receive
/*--------------------------------------------------------------------
@@ -199,34 +198,34 @@ static GSErrCode __ACENV_CALL NotificationHandler(API_NotifyEventID notifID, Int
BrowserPalette::BrowserPalette() :
DG::Palette(ACAPI_GetOwnResModule(), BrowserPaletteResId, ACAPI_GetOwnResModule(), paletteGuid) {
browser = std::make_shared<DG::Browser>(GetReference(), BrowserId);
#ifdef ServerMainVers_2700
ACAPI_ProjectOperation_CatchProjectEvent(APINotify_Quit, NotificationHandler);
#else
ACAPI_Notify_CatchProjectEvent(APINotify_Quit, NotificationHandler);
#endif
Attach(*this);
BeginEventProcessing();
//Install required connector bridges
install<AccountBridge>();
if (auto ref = install<BaseBridge>(); ref) {
if (auto baseBridgeRef = std::dynamic_pointer_cast<BaseBridge>(ref); baseBridgeRef) {
connector::connector()->addWeak(baseBridgeRef);
}
}
install<ConfigBridge>();
install<ReceiveBridge>();
if (auto ref = install<SendBridge>(); ref) {
if (auto sendBridgeRef = std::dynamic_pointer_cast<SendBridge>(ref); sendBridgeRef) {
connector::connector()->addWeak(sendBridgeRef);
sendBridgeRef->start();
}
}
if (auto ref = install<SelectionBridge>(); ref) {
if (auto selectionBridgeRef = std::dynamic_pointer_cast<SelectionBridge>(ref); selectionBridgeRef) {
connector::connector()->addWeak(selectionBridgeRef);
selectionBridgeRef->start();
}
}
install<TestBridge>();
InitBrowserControl();
}
@@ -256,12 +255,12 @@ void BrowserPalette::DestroyInstance() {
void BrowserPalette::Show() {
DG::Palette::Show();
publshVisibilityChange(true);
SetMenuItemCheckedState(true);
}
void BrowserPalette::Hide() {
DG::Palette::Hide();
publshVisibilityChange(false);
SetMenuItemCheckedState(false);
}
void BrowserPalette::InitBrowserControl() {
@@ -274,9 +273,19 @@ void BrowserPalette::InitBrowserControl() {
}
void BrowserPalette::publshVisibilityChange(bool isChecked) {
//Signal that the palette visibility has changed
app()->publish(Event{reflectPaletteVisibilityID, { ValueSetting{isChecked, paletteVisibilityStateID} }});
void BrowserPalette::SetMenuItemCheckedState(bool isChecked) {
API_MenuItemRef itemRef = {};
GSFlags itemFlags = {};
itemRef.menuResID = BrowserPaletteMenuResId;
itemRef.itemIndex = BrowserPaletteMenuItemIndex;
ACAPI_MenuItem_GetMenuItemFlags(&itemRef, &itemFlags);
if(isChecked)
itemFlags |= API_MenuItemChecked;
else
itemFlags &= ~API_MenuItemChecked;
ACAPI_MenuItem_SetMenuItemFlags(&itemRef, &itemFlags);
}
void BrowserPalette::PanelResized(const DG::PanelResizeEvent& ev) {
@@ -310,7 +319,7 @@ GSErrCode __ACENV_CALL BrowserPalette::PaletteControlCallBack(Int32, API_Palette
break;
case APIPalMsg_HidePalette_End:
if(HasInstance() && !GetInstance().IsVisible())
if (HasInstance() && !GetInstance().IsVisible())
{
GetInstance().Show();
}
@@ -56,7 +56,7 @@ Cargo::Unique DirectSelectionSendFilter::getCargo(const Inventory::Item& item) c
using namespace active::serialise;
switch (item.index) {
case selectedElemID:
return std::make_unique<ContainerWrap<BIMRecordIDList>>(m_selectedElements, false, fieldID[selectedElemID].name);
return std::make_unique<ContainerWrap<ElementIDList>>(m_selectedElements, false, fieldID[selectedElemID].name);
default:
return nullptr; //Requested an unknown index
}
@@ -32,17 +32,11 @@ namespace connector::record {
// MARK: - Functions (const)
/*!
Determine if the send filter contains a specified record ID
@param recordID The record ID to search for
@return True if the filter contains the record ID
*/
virtual bool contains(const speckle::database::BIMRecordID& recordID) const override { return m_selectedElements.contains(recordID); }
/*!
Get the filtered element IDs
@return The filter elements
*/
const speckle::database::BIMRecordIDList& getElementIDs() const override { return m_selectedElements; }
const speckle::database::ElementIDList& getElementIDs() const override { return m_selectedElements; }
// MARK: - Serialisation
@@ -65,7 +59,7 @@ namespace connector::record {
private:
///A list of selected element IDs
speckle::database::BIMRecordIDList m_selectedElements;
speckle::database::ElementIDList m_selectedElements;
};
}
@@ -58,7 +58,7 @@ Cargo::Unique EverythingSendFilter::getCargo(const Inventory::Item& item) const
using namespace active::serialise;
switch (item.index) {
case selectedElemID:
return std::make_unique<ContainerWrap<BIMRecordIDList>>(m_emptyList);
return std::make_unique<ContainerWrap<ElementIDList>>(m_emptyList);
default:
return nullptr; //Requested an unknown index
}
@@ -32,23 +32,17 @@ namespace connector::record {
// MARK: - Functions (const)
/*!
Determine if the send filter contains a specified record ID
@param recordID The record ID to search for
@return True if the filter contains the record ID
*/
virtual bool contains(const speckle::database::BIMRecordID& recordID) const override { return true; }
/*!
Get the filtered element IDs
@return The filter elements
*/
const speckle::database::BIMRecordIDList& getElementIDs() const override { return m_emptyList; }
const speckle::database::ElementIDList& getElementIDs() const override { return m_emptyList; }
/*!
Determine if the filter has expired because an element in the selection has changed
@param changed The list of changed element IDs
@return True if the one of the changed elements is in the selection
*/
virtual bool checkExpiry(const speckle::database::BIMRecordIDList& changed) const override { return true; }
virtual bool checkExpiry(const speckle::database::ElementIDList& changed) const override { return true; }
// MARK: - Serialisation
@@ -71,7 +65,7 @@ namespace connector::record {
private:
///Enables a const empty list to be returned
speckle::database::BIMRecordIDList m_emptyList;
speckle::database::ElementIDList m_emptyList;
};
}
@@ -34,10 +34,12 @@ namespace {
return: True if the one of the changed elements is in the selection
--------------------------------------------------------------------*/
bool SendFilter::checkExpiry(const BIMRecordIDList& changed) const {
BIMRecordIDList intersect;
BIMRecordIDList mine{getElementIDs()}, theirs{changed};
std::set_intersection(mine.begin(), mine.end(), theirs.begin(), theirs.end(), std::inserter(intersect, intersect.begin()));
bool SendFilter::checkExpiry(const ElementIDList& changed) const {
ElementIDList intersect;
ElementIDList mine{getElementIDs()}, theirs{changed};
std::sort(mine.begin(), mine.end());
std::sort(theirs.begin(), theirs.end());
std::set_intersection (mine.begin(), mine.end(), theirs.begin(), theirs.end(), std::back_inserter(intersect));
return !intersect.empty();
} //SendFilter::checkExpiry
@@ -4,7 +4,6 @@
#include "Active/Serialise/Package/Package.h"
#include "Active/Utility/Cloner.h"
#include "Speckle/Database/Identity/RecordID.h"
#include "Speckle/Database/Identity/BIMRecordID.h"
#include "Speckle/Utility/String.h"
namespace connector::record {
@@ -56,23 +55,17 @@ namespace connector::record {
@return True if this is the default filter
*/
bool isDefault() const { return m_isDefault; };
/*!
Determine if the send filter contains a specified record ID
@param recordID The record ID to search for
@return True if the filter contains the record ID
*/
virtual bool contains(const speckle::database::BIMRecordID& recordID) const = 0;
/*!
Get the filtered element IDs
@return The filter elements
*/
virtual const speckle::database::BIMRecordIDList& getElementIDs() const = 0;
virtual const speckle::database::ElementIDList& getElementIDs() const = 0;
/*!
Determine if the filter has expired because an element in the selection has changed
@param changed The list of changed element IDs
@return True if the one of the changed elements is in the selection
*/
virtual bool checkExpiry(const speckle::database::BIMRecordIDList& changed) const;
virtual bool checkExpiry(const speckle::database::ElementIDList& changed) const;
// MARK: - Serialisation
@@ -2,7 +2,6 @@
#include "Active/Serialise/Item/Wrapper/ValueWrap.h"
#include "Active/Serialise/Package/Wrapper/ContainerWrap.h"
#include "Speckle/Database/Identity/BIMRecordID.h"
#include <array>
@@ -82,7 +81,7 @@ Cargo::Unique ReceiverModelCard::getCargo(const Inventory::Item& item) const {
case warningDismissedID:
return std::make_unique<BoolWrap>(m_hasDismissedUpdateWarning);
case bakedObjectsID:
return std::make_unique<ContainerWrap<BIMRecordIDList>>(m_bakedObjectIDs);
return std::make_unique<ContainerWrap<ElementIDList>>(m_bakedObjectIDs);
default:
return nullptr; //Requested an unknown index
}
@@ -1,7 +1,7 @@
#ifndef CONNECTOR_RECORD_RECEIVER_MODEL_CARD
#define CONNECTOR_RECORD_RECEIVER_MODEL_CARD
#include "Speckle/Database/Identity/BIMRecordID.h"
#include "Speckle/Database/Identity/RecordID.h"
#include "Connector/Record/Model/ModelCard.h"
namespace connector::record {
@@ -37,7 +37,7 @@ namespace connector::record {
const speckle::database::RecordID& modelID, const speckle::utility::String& modelName,
const speckle::database::RecordID& selectedVersion, const speckle::database::RecordID& latestVersion,
const speckle::database::RecordID& accountID, const speckle::utility::String& serverURL,
bool hasDimissedWarning, speckle::database::BIMRecordIDList&& bakedObjects, const SettingList& settings) :
bool hasDimissedWarning, speckle::database::ElementIDList&& bakedObjects, const SettingList& settings) :
ModelCard{modelID, projectID, accountID, serverURL, settings},
m_projectName{projectName}, m_modelName{modelName}, m_selectedVersionID{selectedVersion}, m_latestVersionID{latestVersion},
m_hasDismissedUpdateWarning{hasDimissedWarning}, m_bakedObjectIDs{bakedObjects} {}
@@ -78,7 +78,7 @@ namespace connector::record {
Get the IDs of objects accepted in the receive
@return The accepted object IDs
*/
const speckle::database::BIMRecordIDList& getBakedObjectIDs() const { return m_bakedObjectIDs; }
const speckle::database::ElementIDList& getBakedObjectIDs() const { return m_bakedObjectIDs; }
// MARK: - Serialisation
@@ -111,7 +111,7 @@ namespace connector::record {
///True if the user has already dismissed an alert to update
bool m_hasDismissedUpdateWarning = false;
///IDs of objects accepted in the receive
speckle::database::BIMRecordIDList m_bakedObjectIDs;
speckle::database::ElementIDList m_bakedObjectIDs;
};
}
@@ -61,18 +61,6 @@ SenderModelCard::~SenderModelCard() {
} //SenderModelCard::~SenderModelCard
/*--------------------------------------------------------------------
Determine if the send filter contains a specified record ID
recordID: The record ID to search for
return: True if the filter contains the record ID
--------------------------------------------------------------------*/
bool SenderModelCard::contains(const speckle::database::BIMRecordID& recordID) const {
return m_filter->contains(recordID);
} //SenderModelCard::contains
/*--------------------------------------------------------------------
Fill an inventory with the package items
@@ -2,7 +2,6 @@
#define CONNECTOR_RECORD_SENDER_MODEL_CARD
#include "Connector/Record/Model/ModelCard.h"
#include "Speckle/Database/Identity/BIMRecordID.h"
namespace connector::record {
@@ -47,12 +46,6 @@ namespace connector::record {
// MARK: - Functions (const)
/*!
Determine if the send filter contains a specified record ID
@param recordID The record ID to search for
@return True if the filter contains the record ID
*/
bool contains(const speckle::database::BIMRecordID& recordID) const;
/*!
Get the filter applied when the model was sent
@return The model filter
@@ -1,123 +0,0 @@
#include "Connector/Tool/ElementHighlighter.h"
#include "Active/Database/Transaction.h"
#include "Active/Event/Event.h"
#include "Connector/Connector.h"
#include "Connector/ConnectorResource.h"
#include "Connector/Environment/ConnectorProject.h"
#include "Connector/Event/ConnectorEventID.h"
#include "Speckle/Database/BIMAttributeDatabase.h"
#include "Speckle/Database/BIMElementDatabase.h"
#include "Speckle/Database/Identity/BIMLink.h"
#include "Speckle/Environment/Host.h"
#include "Speckle/Record/Filter/ElementVisibilityCollector.h"
#include "Speckle/Utility/Guid.h"
using namespace active::database;
using namespace active::event;
using namespace active::setting;
using namespace connector;
using namespace connector::environment;
using namespace speckle::database;
using namespace speckle::environment;
using namespace speckle::record;
using namespace speckle::utility;
namespace {
/*!
Transaction to make a selection of layers visible
*/
class ShowLayers : public Transaction {
public:
/*!
Constructor
@param project The target project
@param layers The layers in the project to be made visible
*/
ShowLayers(Project::Shared project, ElementVisibilityCollector::Layers& layers) :
Transaction{connector::connector()->getLocalString(titleString, showLayersID)}, m_project{project}, m_layers{layers} {}
protected:
//MARK: - Functions (App management)
/*!
Perform the transaction. Database writes can be performed. NB: this function is not called if the prepare phase was unsuccessful)
@return True if the transaction was successfully performed
*/
bool perform() override {
auto attributeDatabase = m_project->getAttributeDatabase();
for (auto& layer : m_layers) {
if (layer.second.isHidden()) {
layer.second.setHidden(false);
attributeDatabase->write(layer.second);
}
}
return true;
}
private:
///The target project for showing layers
Project::Shared m_project;
///The layers to be made visible
ElementVisibilityCollector::Layers& m_layers;
};
}
/*--------------------------------------------------------------------
Get the event subscription list
return: The subscription list (an empty list will put the subscriber into a suspended state)
--------------------------------------------------------------------*/
Subscriber::Subscription ElementHighlighter::subscription() const {
return Subscription{setElementHighlight};
} //ElementHighlighter::subscription
/*--------------------------------------------------------------------
Receive a subscribed event
event: The incoming event
return: True if the event should be closed
--------------------------------------------------------------------*/
bool ElementHighlighter::receive(const active::event::Event& event) {
//Collect the IDs of elements to be highlighted
ValueSetting* elementIDs = nullptr;
if (elementIDs = event.findValue(recordLinks); elementIDs == nullptr)
return false;
BIMLinkList elementSelection;
for (const auto& value : *elementIDs)
if (Guid guid{value->operator active::utility::Guid()}; guid)
elementSelection.emplace_back(guid);
if (elementSelection.empty())
return false;
auto project = connector()->getActiveProject().lock();
auto connectorProject = dynamic_cast<ConnectorProject*>(project.get());
if (!connectorProject)
return false;
auto elementDatabase = project->getElementDatabase();
//Collect the layers assigned to the model card elements
ElementVisibilityCollector collector;
BIMElementDatabase::Filter filter = [&collector](const speckle::record::element::Element& elem) { return collector(elem); };
elementDatabase->findElements(&filter, elementSelection);
//If any collected layers are hidden, the useer is prompted to show them (otherwise they may see nothing happen when a model card is clicked)
for (const auto& layer : collector.getLayers()) {
if (layer.second.isHidden()) {
//If a hidden layer is found, ask the user before taking any action
if (host()->displayConfirmation(addon()->getLocalString(notifyString, showHiddenLayersID))) {
//Run a transaction to ensure all layers are visible
ShowLayers showLayers{project, collector.getLayers()};
connector()->makeTransaction(showLayers);
}
break;
}
}
host()->makeModelViewActive();
elementDatabase->clearSelection();
elementDatabase->setSelection(elementSelection);
host()->zoomToFit(true);
return false;
} //ElementHighlighter::receive
@@ -1,28 +0,0 @@
#ifndef CONNECTOR_ELEMENT_HIGHLIGHTER
#define CONNECTOR_ELEMENT_HIGHLIGHTER
#include "Active/Event/Subscriber.h"
namespace connector {
class ElementHighlighter : public active::event::Subscriber {
public:
/*!
Get the event subscription list
@return The subscription list (an empty list will put the subscriber into a suspended state)
*/
Subscription subscription() const override;
// MARK: - Functions (mutating)
/*!
Receive a subscribed event
@param event The incoming event
@return True if the event should be closed
*/
bool receive(const active::event::Event& event) override;
};
}
#endif //CONNECTOR_ELEMENT_HIGHLIGHTER
@@ -1,43 +0,0 @@
#include "ActiveLibDoctest/TestingPlatforms.h"
#include "Connector/Record/Model/CardMover.h"
#include "Connector/Record/Model/ModelCard.h"
#include "Active/Serialise/CargoHold.h"
#include "Active/Serialise/JSON/JSONTransport.h"
#include "Active/Utility/BufferIn.h"
#include "Speckle/Utility/String.h"
namespace {
speckle::utility::String json{"{\n\
\"typeDiscriminator\": \"SenderModelCard\",\n\
\"modelCardId\": \"8a007ac08b43771ec20d\",\n\
\"modelId\": \"c9b5a4fa94\",\n\
\"projectId\": \"ce9a0d130e\",\n\
\"workspaceId\": \"10ee1c0f73\",\n\
\"accountId\": \"5724C96F3FF796628292B6E67E86CC2F\",\n\
\"serverUrl\": \"https://app.speckle.systems\",\n\
\"expired\": false,\n\
\"sendFilter\": {\n\
\"typeDiscriminator\": \"ArchicadSelectionFilter\",\n\
\"selectedObjectIds\": [\n\
\"7B531D03-0219-420F-BE86-633451AEF19B\"\n\
],\n\
\"name\": \"Selection\",\n\
\"summary\": \"1 objects selected.\"\n\
}\n\
}"};
}
using namespace speckle::utility;
TEST_SUITE(TESTQ(ModelCardSerialiseTest)) TEST_SUITE_OPEN
///Test for deserialising a ModelCard
TEST_CASE(TESTQ(deserialiseModelCard)) {
using CardHold = active::serialise::CargoHold<connector::record::CardMover, connector::record::ModelCard>;
CardHold result;
active::serialise::json::JSONTransport().receive(std::forward<CardHold&&>(result), active::serialise::Identity{}, json);
}
TEST_SUITE_CLOSE
@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<HEADER_PATH_7>$(SolutionDir)RINT.$(BIM_PLATFORM)/$(LOCALISATION_SUFFIX)</HEADER_PATH_7>
<WORD_SIZE>64</WORD_SIZE>
<BASE_NAME>Speckle Connector</BASE_NAME>
<DISPLAY_NAME>$(BASE_NAME)</DISPLAY_NAME>
<WRAPPER_EXTENSION>apx</WRAPPER_EXTENSION>
<LOCALISATION_SUFFIX>EN-GB</LOCALISATION_SUFFIX>
<EXEC_PATH>$(BIM_PATH)</EXEC_PATH>
<INSTALL_FOLDER>$(BASE_NAME)Win$(WORD_SIZE)-$(BIM_PLATFORM)$(BIM_VERSION)-$(LOCALISATION_SUFFIX)</INSTALL_FOLDER>
<INSTALL_PATH>$(SolutionDir)Install/$(BASE_NAME)/$(LOCALISATION_SUFFIX)</INSTALL_PATH>
<PLUGIN_FOLDER>Add-Ons</PLUGIN_FOLDER>
<RESOURCE_EXTENSION>lcf</RESOURCE_EXTENSION>
<RES_OUTPUT>$(SolutionDir)ResourceObjects</RES_OUTPUT>
<RES_SOURCE>$(SolutionDir)RFIX.Win</RES_SOURCE>
</PropertyGroup>
<PropertyGroup />
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="HEADER_PATH_7">
<Value>$(HEADER_PATH_7)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="WORD_SIZE">
<Value>$(WORD_SIZE)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="BASE_NAME">
<Value>$(BASE_NAME)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="DISPLAY_NAME">
<Value>$(DISPLAY_NAME)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="WRAPPER_EXTENSION">
<Value>$(WRAPPER_EXTENSION)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="LOCALISATION_SUFFIX">
<Value>$(LOCALISATION_SUFFIX)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="EXEC_PATH">
<Value>$(EXEC_PATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="INSTALL_FOLDER">
<Value>$(INSTALL_FOLDER)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="INSTALL_PATH">
<Value>$(INSTALL_PATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="PLUGIN_FOLDER">
<Value>$(PLUGIN_FOLDER)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="RESOURCE_EXTENSION">
<Value>$(RESOURCE_EXTENSION)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="RES_OUTPUT">
<Value>$(RES_OUTPUT)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="RES_SOURCE">
<Value>$(RES_SOURCE)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<HEADER_PATH_7>$(SolutionDir)RINT.$(BIM_PLATFORM)/$(LOCALISATION_SUFFIX)</HEADER_PATH_7>
<WORD_SIZE>64</WORD_SIZE>
<BASE_NAME>Speckle Connector</BASE_NAME>
<DISPLAY_NAME>$(BASE_NAME)</DISPLAY_NAME>
<WRAPPER_EXTENSION>apx</WRAPPER_EXTENSION>
<LOCALISATION_SUFFIX>EN-GB</LOCALISATION_SUFFIX>
<EXEC_PATH>$(BIM_PATH)</EXEC_PATH>
<INSTALL_FOLDER>$(BASE_NAME)Win$(WORD_SIZE)-$(BIM_PLATFORM)$(BIM_VERSION)-$(LOCALISATION_SUFFIX)</INSTALL_FOLDER>
<INSTALL_PATH>$(SolutionDir)Install/$(BASE_NAME)/$(LOCALISATION_SUFFIX)</INSTALL_PATH>
<PLUGIN_FOLDER>Add-Ons</PLUGIN_FOLDER>
<RESOURCE_EXTENSION>lcf</RESOURCE_EXTENSION>
<RES_OUTPUT>$(SolutionDir)ResourceObjects</RES_OUTPUT>
<RES_SOURCE>$(SolutionDir)RFIX.Win</RES_SOURCE>
</PropertyGroup>
<PropertyGroup />
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="HEADER_PATH_7">
<Value>$(HEADER_PATH_7)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="WORD_SIZE">
<Value>$(WORD_SIZE)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="BASE_NAME">
<Value>$(BASE_NAME)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="DISPLAY_NAME">
<Value>$(DISPLAY_NAME)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="WRAPPER_EXTENSION">
<Value>$(WRAPPER_EXTENSION)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="LOCALISATION_SUFFIX">
<Value>$(LOCALISATION_SUFFIX)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="EXEC_PATH">
<Value>$(EXEC_PATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="INSTALL_FOLDER">
<Value>$(INSTALL_FOLDER)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="INSTALL_PATH">
<Value>$(INSTALL_PATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="PLUGIN_FOLDER">
<Value>$(PLUGIN_FOLDER)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="RESOURCE_EXTENSION">
<Value>$(RESOURCE_EXTENSION)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="RES_OUTPUT">
<Value>$(RES_OUTPUT)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="RES_SOURCE">
<Value>$(RES_SOURCE)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<HEADER_PATH_7>$(SolutionDir)RINT.$(BIM_PLATFORM)/$(LOCALISATION_SUFFIX)</HEADER_PATH_7>
<WORD_SIZE>64</WORD_SIZE>
<BASE_NAME>Speckle Connector</BASE_NAME>
<DISPLAY_NAME>$(BASE_NAME)</DISPLAY_NAME>
<WRAPPER_EXTENSION>apx</WRAPPER_EXTENSION>
<LOCALISATION_SUFFIX>EN-GB</LOCALISATION_SUFFIX>
<EXEC_PATH>$(BIM_PATH)</EXEC_PATH>
<INSTALL_FOLDER>$(BASE_NAME)Win$(WORD_SIZE)-$(BIM_PLATFORM)$(BIM_VERSION)-$(LOCALISATION_SUFFIX)</INSTALL_FOLDER>
<INSTALL_PATH>$(SolutionDir)Install/$(BASE_NAME)/$(LOCALISATION_SUFFIX)</INSTALL_PATH>
<PLUGIN_FOLDER>Add-Ons</PLUGIN_FOLDER>
<RESOURCE_EXTENSION>lcf</RESOURCE_EXTENSION>
<RES_OUTPUT>$(SolutionDir)ResourceObjects</RES_OUTPUT>
<RES_SOURCE>$(SolutionDir)RFIX.Win</RES_SOURCE>
</PropertyGroup>
<PropertyGroup />
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="HEADER_PATH_7">
<Value>$(HEADER_PATH_7)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="WORD_SIZE">
<Value>$(WORD_SIZE)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="BASE_NAME">
<Value>$(BASE_NAME)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="DISPLAY_NAME">
<Value>$(DISPLAY_NAME)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="WRAPPER_EXTENSION">
<Value>$(WRAPPER_EXTENSION)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="LOCALISATION_SUFFIX">
<Value>$(LOCALISATION_SUFFIX)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="EXEC_PATH">
<Value>$(EXEC_PATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="INSTALL_FOLDER">
<Value>$(INSTALL_FOLDER)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="INSTALL_PATH">
<Value>$(INSTALL_PATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="PLUGIN_FOLDER">
<Value>$(PLUGIN_FOLDER)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="RESOURCE_EXTENSION">
<Value>$(RESOURCE_EXTENSION)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="RES_OUTPUT">
<Value>$(RES_OUTPUT)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="RES_SOURCE">
<Value>$(RES_SOURCE)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleGetInfoString</key>
<string>Speckle Connector for Archicad 25</string>
<key>CFBundleIconFile</key>
<string>ArchiCADPlugin.icns</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Speckle Connector</string>
<key>CFBundlePackageType</key>
<string>.APX</string>
<key>CFBundleShortVersionString</key>
<string>Speckle Connector</string>
<key>CFBundleSignature</key>
<string>GSAP</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>LSRequiresCarbon</key>
<true/>
</dict>
</plist>
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleGetInfoString</key>
<string>Speckle Connector for Archicad 26</string>
<key>CFBundleIconFile</key>
<string>ArchiCADPlugin.icns</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Speckle Connector</string>
<key>CFBundlePackageType</key>
<string>.APX</string>
<key>CFBundleShortVersionString</key>
<string>Speckle Connector</string>
<key>CFBundleSignature</key>
<string>GSAP</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>LSRequiresCarbon</key>
<true/>
</dict>
</plist>
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleGetInfoString</key>
<string>Speckle Connector for Archicad 28</string>
<key>CFBundleIconFile</key>
<string>ArchiCADPlugin.icns</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Speckle Connector</string>
<key>CFBundlePackageType</key>
<string>.APX</string>
<key>CFBundleShortVersionString</key>
<string>Speckle Connector</string>
<key>CFBundleSignature</key>
<string>GSAP</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>LSRequiresCarbon</key>
<true/>
</dict>
</plist>
-7
View File
@@ -2,15 +2,8 @@
/* [ 1] */ "Speckle Connector"
/* [ 2] */ "Connector to share model content with Speckle"
/* [ 3] */ "No level"
/* [ 4] */ "Show Layers"
}
'STR#' 32602 "Notify strings" {
/* [ 1] */ "Some elements published with the selected model card are on hidden layers - do you wish to make these layers visible?"
}
'STR#' 32604 "Error strings" {
/* [ 1] */ "No objects were found to convert. Please update your publish filter!"
/* [ 2] */ "The specified model card cannot be found. Try another card or create a new one"
+17 -12
View File
@@ -41,19 +41,23 @@ class ResourceCompiler (object):
return True
def RunResConv (self, platformSign, codepage, inputFilePath, nativeResourceFileExtenion):
imageResourcesFolder = os.path.join (self.resourcesPath, 'RFIX', 'Images')
resourcesFolders = [
os.path.join (self.resourcesPath, 'RFIX', 'Images'),
os.path.join (self.resourcesPath, 'RFIX')
]
inputFileBaseName = os.path.splitext (os.path.split (inputFilePath)[1])[0]
nativeResourceFilePath = os.path.join (self.resourceObjectsPath, inputFileBaseName + nativeResourceFileExtenion)
result = subprocess.call ([
buildcommand = [
self.resConvPath,
'-m', 'r', # resource compile mode
'-T', platformSign, # target platform
'-q', 'utf8', codepage, # code page conversion
'-w', '2', # HiDPI image size list
'-p', imageResourcesFolder, # image search path
'-i', inputFilePath, # input path
'-o', nativeResourceFilePath # output path
])
'-m', 'r', # resource compile mode
'-T', platformSign, # target platform
'-q', 'utf8', codepage, # code page conversion
'-w', '2', # HiDPI image size list
'-p', ';'.join (resourcesFolders), # resource search paths
'-i', inputFilePath, # input path
'-o', nativeResourceFilePath # output path
]
result = subprocess.call (buildcommand)
if result != 0:
return False
return True
@@ -94,13 +98,13 @@ class WinResourceCompiler (ResourceCompiler):
'/I', os.path.join (self.devKitPath, 'Support', 'Modules', 'DGLib'),
'/I', self.sourcesPath,
'/DWINDOWS',
'/execution-charset:utf-8',
'/utf-8',
'/Fi{}'.format (precompiledGrcFilePath),
grcFilePath,
])
if result != 0:
return False
return self.RunResConv ('W', '1252', precompiledGrcFilePath, '.rc2')
return self.RunResConv ('W', 'utf8', precompiledGrcFilePath, '.rc2')
def CompileNativeResource (self, resultResourcePath):
nativeResourceFiles = self.CollectFilesFromFolderWithExtension (os.path.join (self.resourcesPath, 'RFIX.win'), '.rc2')
@@ -112,6 +116,7 @@ class WinResourceCompiler (ResourceCompiler):
return False
result = subprocess.call ([
'rc',
'/c65001',
'/i', os.path.join (self.devKitPath, 'Support', 'Inc'),
'/i', os.path.join (self.devKitPath, 'Support', 'Modules', 'DGLib'),
'/i', self.sourcesPath,
-280
View File
@@ -1,280 +0,0 @@
#! /usr/bin/perl -w
use FindBin ;
use File::Spec::Functions qw(splitpath catfile updir);
use File::Copy;
use Cwd;
my $os;
my $devKitPath;
my $acVersion = $ENV{BIM_VERSION};
if ($^O =~ /MSWin/) {
$os = "Win";
} else {
$os = "Mac";
}
$devKitPath = catfile ($FindBin::Bin, updir (), updir (), "ArchiCAD " . $acVersion);
#-----------------------------------------------------------------------
# Strip redundant expressions from the target file
# $targetDirectory: The target directory
# $$targetFile: The target file
#-----------------------------------------------------------------------
sub StripRedundancies ($$)
{
my ($source, $destination) = @_ ;
open my $fh, "< :raw", $source or die "Cannot open $filename for reading: $!\n";
my $saved_sep = $/;
undef $/;
$content = <$fh>;
close ($fh) or die "Can't close file: $!";
#Strip out comments
$content =~ s { ( [^"'/]*
+r comment.
| "[^\\"]*(?:\\.[^\\"]*)*"
| '[^\\']*(?:\\.[^\\']*)*'
| / (?![*])
)
|
( /[*] [^*]* (?: [*] [^*/]* )* [*]/ )
}
{ $2 ? "" : $1 }gsex;
open $fh, "+> :raw", $destination or die "Cannot open $filename for writing: $!\n";
print $fh $content;
$/ = $saved_sep;
close ($fh) or die "Can't close file: $!";
} #StripRedundancies
#-----------------------------------------------------------------------
# Convert all image resources to the svg format for AC >= 20
# $intermediaryFile: The target file
#-----------------------------------------------------------------------
sub UpdateSVG($)
{
my ($target) = @_;
open my $fh, "< :raw", $target or die "Cannot open $filename for reading: $!\n";
local $/ = undef;
$contents = <$fh>;
close ($fh) or die "Can't close file: $!";
my @svg_defs = ();
while ($contents =~ /('GBMP'|'GICN')\s*(\d{5})\s*("[^"]*")\s*\{/sg)
{
push @svg_defs, "'GICN' $2 $3 {\n}\n\n";
}
if (@svg_defs) {
open $fh, "> :raw", $target or die "Cannot open $filename for writing: $!\n";
print $fh "@ #include \"MDIDs_APICD.h\"\n\n";
print $fh @svg_defs;
close ($fh) or die "Can't close file: $!";
}
} #UpdateSVG
#-----------------------------------------------------------------------
# Executes one GRC conversion command
# tool: Path to the GRC converter tool
# headerDir: Path to headers included in resource files
# sourceDir: Path to the input GRC source directory
# inputFile: Name of the input GRC file
# destinationDir: Path to the output native resource file directory
# localCode: The localisation code, e.g. "EN-GB"
# platformName: Name of the target platform, e.g. "ArchiCAD18"
# resourcePath: Optional path to any supplementary resources, e.g. images
#-----------------------------------------------------------------------
sub DoGRC ($$$$$$$$)
{
my ($tool, $headerDir, $sourceDir, $inputFile, $destinationDir, $localCode, $platformName, $resourcePath) = @_ ;
#Get the bare resource name
my $outputName = $inputFile;
$outputName =~ s/.grc//;
#And extract the version number (if found)
my ($outputNumber) = $outputName =~ /([0-9]+)$/;
#If it has a version that doesn't match this build, we don't want it
if ($outputNumber) {
if ($outputNumber != $ENV{BIM_VERSION}) {
return;
}
$outputName =~ s/$outputNumber\z//;
}
my $outputFile = $outputName . ".ro";
my $imageRes = "";
#Optional path to a resource directory
if ($resourcePath ne "") {
if ($ENV{BIM_VERSION} > 16) {
$resourcePath = " -p \"" . $resourcePath . "\"";
if ($ENV{BIM_VERSION} >= 20) {
$imageRes = " -w 2";
}
} else {
$resourcePath = " -j .roo -p \"" . $resourcePath . "\""
}
}
#Create the destination directory
if ( $localCode ne "" ) {
$destinationDir = catfile ($destinationDir, $localCode) ;
}
mkdir $destinationDir;
$destinationDir = catfile ($destinationDir, $platformName);
mkdir $destinationDir;
#Run the tool on the file
print "\t$inputFile\n";
my $toolOptions = "";
if ($os eq "Win") {
$toolOptions = " -m r -q utf8 0 -T W";
} else {
$toolOptions = " -m r -q utf8 utf16 -T M -n";
}
my $intermediaryFile = catfile ($destinationDir, $outputFile .".i");
if ($os eq "Win") {
StripRedundancies(catfile ($sourceDir, $inputFile), $intermediaryFile);
}
if ($os eq "Mac") {
my $frameworkVersion = catfile ($ENV{FRAMEWORK_PATH}, "Speckle" . $acVersion );
my $incHeaderDir = catfile (Cwd::realpath ($devKitPath), "Support", "Inc");
system ("xcrun clang -x c++ -E -P -DPREPROCESS_GRC -DGS_64BIT -Dmacintosh -DINT__APP -I \"" . $headerDir . "\" -I \"" . $incHeaderDir . "\" -I \"" . $frameworkVersion . "\" \"" . catfile ($sourceDir, $inputFile) . "\" > \"" . $intermediaryFile . "\"");
}
UpdateSVG($intermediaryFile);
if ($os eq "Win") {
chdir($devKitPath);
}
system ($tool . $toolOptions . " -i \"" . $intermediaryFile . "\"" . $resourcePath . " -o \"" . catfile ($destinationDir, $outputFile) . "\"" . $imageRes);
unlink($intermediaryFile);
} #DoGRC
#-----------------------------------------------------------------------
# Main - Convert GRC files
my ($localCode) = $ENV{LOCALISATION_SUFFIX};
my $suffix = ".r" . $acVersion;
my $fixed = "RFIX";
my $output = "RO";
my $platform = "ArchiCAD" . $acVersion;
my $baseName = $ENV{BASE_NAME};
my $makeResConvTool;
if ($os eq "Win") {
$makeResConvTool = catfile ("Support", "Tools", "Win", "ResConv");
} else {
$makeResConvTool = "\"" . catfile (Cwd::realpath ($devKitPath), "Support", "Tools", "OSX", "ResConv") . "\"";
}
my $projectPath = $ENV{PROJECT_PATH};
my $resTarget = catfile ($ENV{TARGET_BUILD_DIR}, $ENV{UNLOCALIZED_RESOURCES_FOLDER_PATH});
my $roFolder = catfile ($projectPath, $output);
my $rfixFolder = catfile ($projectPath, $fixed);
my $rintFolder = catfile ($projectPath, "RINT", $localCode);
my $srcFolder = catfile ($projectPath, "Src");
my @files;
print "Converting resource files:\n";
mkdir $roFolder;
#Convert the project fixed resources
print $projectPath . "RFIX\n";
opendir (DIR, catfile ($projectPath, "RFIX"));
@files = readdir (DIR);
closedir (DIR);
foreach $path (@files) {
($volume,$directories,$file) = splitpath ($path);
DoGRC ($makeResConvTool, $srcFolder, $rfixFolder, $file, $roFolder, $fixed, $platform, catfile ($projectPath, "RFIX/Images") ) if ($file =~ /.*\.grc$/i);
}
#Convert the project localisable resources
opendir (DIR, $rintFolder);
@files = readdir (DIR);
closedir (DIR);
foreach $path (@files) {
($volume,$directories,$file) = splitpath ($path);
if ((index($file, "Subtype") != -1) || (index($file, "SubType") != -1)) {
DoGRC ($makeResConvTool, $srcFolder, $rintFolder, $file, $roFolder, $localCode, $platform, catfile ($projectPath, "GDL", $baseName, $localCode, $os, $platform, "Built-in") ) if ($file =~ /.*\.grc$/i);
} else {
DoGRC ($makeResConvTool, $srcFolder, $rintFolder, $file, $roFolder, $localCode, $platform, "") if ($file =~ /.*\.grc$/i);
}
}
#-----------------------------------------------------------------------
# Copy tiff resources
$roFolder = catfile ($projectPath, $output, $fixed, $platform);
opendir (DIR, $roFolder);
@files = readdir (DIR);
closedir (DIR);
mkdir $resTarget;
foreach $file (@files) {
copy (catfile ($roFolder, $file), $resTarget) if ($file =~ /.*\.tif$/);
}
#-----------------------------------------------------------------------
# Copy localisable resource files and merge string resources to "Localizable.strings"
if (($os eq "Mac") && ($ENV{BIM_VERSION} > 17)) {
$roFolder = catfile ($projectPath, $output, $localCode, $platform);
my $localResources = $ENV{LANGUAGE_NAME} . ".lproj";
system ("mkdir -p \"" . catfile ($resTarget, $localResources) . "\"") ;
my $locStrings = catfile ($resTarget, $localResources, "Localizable.strings");
open (OFILE, ">:encoding(UTF-16LE)", $locStrings) or die "Can't create file: $!";
my $buf = "\x{feff}";
print OFILE $buf;
printf "\t=> Localizable resources\n";
opendir (DIR, $roFolder);
@files = readdir (DIR);
closedir (DIR);
undef $/; # enable slurp mode
foreach $file (@files) {
if ($file =~ /.*\.strings$/) {
printf "\t\t$file\n";
my $stringsFile = catfile ($roFolder, $file);
if ((stat ($stringsFile))[7] > 2) { # check file size
open (IFILE, "<:encoding(UTF-16LE)", $stringsFile) or die "Can't open file: $!";
read (IFILE, $buf, 1); # skip byte order mark
if ($buf ne "\x{feff}") {
print OFILE $buf;
}
my $content = <IFILE>;
close (IFILE) or die "Can't close file: $!";
print OFILE $content;
}
} else {
if ($file =~ /.*\.rsrd$/) {
printf "\t\t$file\n";
copy (catfile ($roFolder, $file), catfile ($resTarget, $localResources));
}
}
}
close (OFILE) or die "Can't close $locStrings: $!";
}
#-----------------------------------------------------------------------
# Copy nonlocalisable resource files
if ($os eq "Mac") {
$roFolder = catfile ($projectPath, $output, $fixed, $platform);
my $localResources = $ENV{LANGUAGE_NAME} . ".lproj";
system ("mkdir -p \"" . catfile ($resTarget, $localResources) . "\"") ;
printf "\t=> Fixed resources\n";
opendir (DIR, $roFolder);
@files = readdir (DIR);
closedir (DIR);
foreach $file (@files) {
if ($file =~ /.*\.rsrd$/) {
printf "\t\t$file\n";
copy (catfile ($roFolder, $file), catfile ($resTarget, $localResources));
}
}
}
print "done.\n";
-63
View File
@@ -1,63 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<BIM_VERSION>25</BIM_VERSION>
<BIM_PLATFORM>ARCHICAD</BIM_PLATFORM>
<BIM_PATH>C:\Program Files\Graphisoft\$(BIM_PLATFORM) $(BIM_VERSION)</BIM_PATH>
<HEADER_PATH_1>$(SolutionDir)..\..\ActiveLib</HEADER_PATH_1>
<HEADER_PATH_2>$(SolutionDir)</HEADER_PATH_2>
<HEADER_PATH_3>$(SolutionDir)..\SpeckleLib\Make.win</HEADER_PATH_3>
<HEADER_PATH_4>$(SolutionDir)..\SpeckleLib</HEADER_PATH_4>
<HEADER_PATH_5>$(SolutionDir)..\..\$(BIM_PLATFORM) $(BIM_VERSION)\Support</HEADER_PATH_5>
<HEADER_PATH_6>$(SolutionDir)</HEADER_PATH_6>
<WORD_SIZE>64</WORD_SIZE>
<ARCHICAD>1</ARCHICAD>
</PropertyGroup>
<PropertyGroup />
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="BIM_VERSION">
<Value>$(BIM_VERSION)</Value>
</BuildMacro>
<BuildMacro Include="BIM_PLATFORM">
<Value>$(BIM_PLATFORM)</Value>
</BuildMacro>
<BuildMacro Include="BIM_PATH">
<Value>$(BIM_PATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_1">
<Value>$(HEADER_PATH_1)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_2">
<Value>$(HEADER_PATH_2)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_3">
<Value>$(HEADER_PATH_3)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_4">
<Value>$(HEADER_PATH_4)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_5">
<Value>$(HEADER_PATH_5)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_6">
<Value>$(HEADER_PATH_6)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="WORD_SIZE">
<Value>$(WORD_SIZE)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="ARCHICAD">
<Value>$(ARCHICAD)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
-63
View File
@@ -1,63 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<BIM_VERSION>26</BIM_VERSION>
<BIM_PLATFORM>ARCHICAD</BIM_PLATFORM>
<BIM_PATH>C:\Program Files\Graphisoft\$(BIM_PLATFORM) $(BIM_VERSION)</BIM_PATH>
<HEADER_PATH_1>$(SolutionDir)..\..\ActiveLib</HEADER_PATH_1>
<HEADER_PATH_2>$(SolutionDir)</HEADER_PATH_2>
<HEADER_PATH_3>$(SolutionDir)..\..\$(BIM_PLATFORM) $(BIM_VERSION)\Support\Tools</HEADER_PATH_3>
<HEADER_PATH_4>$(SolutionDir)..\SpeckleLib</HEADER_PATH_4>
<HEADER_PATH_5>$(SolutionDir)..\..\$(BIM_PLATFORM) $(BIM_VERSION)\Support</HEADER_PATH_5>
<HEADER_PATH_6>$(SolutionDir)</HEADER_PATH_6>
<WORD_SIZE>64</WORD_SIZE>
<ARCHICAD>1</ARCHICAD>
</PropertyGroup>
<PropertyGroup />
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="BIM_VERSION">
<Value>$(BIM_VERSION)</Value>
</BuildMacro>
<BuildMacro Include="BIM_PLATFORM">
<Value>$(BIM_PLATFORM)</Value>
</BuildMacro>
<BuildMacro Include="BIM_PATH">
<Value>$(BIM_PATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_1">
<Value>$(HEADER_PATH_1)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_2">
<Value>$(HEADER_PATH_2)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_3">
<Value>$(HEADER_PATH_3)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_4">
<Value>$(HEADER_PATH_4)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_5">
<Value>$(HEADER_PATH_5)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_6">
<Value>$(HEADER_PATH_6)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="WORD_SIZE">
<Value>$(WORD_SIZE)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="ARCHICAD">
<Value>$(ARCHICAD)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
+2 -1
View File
@@ -7,7 +7,8 @@
<BIM_PATH>C:\Program Files\Graphisoft\$(BIM_PLATFORM) $(BIM_VERSION)</BIM_PATH>
<HEADER_PATH_1>$(SolutionDir)..\..\ActiveLib</HEADER_PATH_1>
<HEADER_PATH_2>$(SolutionDir)</HEADER_PATH_2>
<HEADER_PATH_3>$(SolutionDir)..\..\$(BIM_PLATFORM) $(BIM_VERSION)\Support\Tools</HEADER_PATH_3>
<HEADER_PATH_3>
</HEADER_PATH_3>
<HEADER_PATH_4>$(SolutionDir)..\SpeckleLib</HEADER_PATH_4>
<HEADER_PATH_5>$(SolutionDir)..\..\$(BIM_PLATFORM) $(BIM_VERSION)\Support</HEADER_PATH_5>
<HEADER_PATH_6>$(SolutionDir)</HEADER_PATH_6>
-63
View File
@@ -1,63 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<BIM_VERSION>28</BIM_VERSION>
<BIM_PLATFORM>ARCHICAD</BIM_PLATFORM>
<BIM_PATH>C:\Program Files\Graphisoft\$(BIM_PLATFORM) $(BIM_VERSION)</BIM_PATH>
<HEADER_PATH_1>$(SolutionDir)..\..\ActiveLib</HEADER_PATH_1>
<HEADER_PATH_2>$(SolutionDir)</HEADER_PATH_2>
<HEADER_PATH_3>$(SolutionDir)..\..\$(BIM_PLATFORM) $(BIM_VERSION)\Support\Tools</HEADER_PATH_3>
<HEADER_PATH_4>$(SolutionDir)..\SpeckleLib</HEADER_PATH_4>
<HEADER_PATH_5>$(SolutionDir)..\..\$(BIM_PLATFORM) $(BIM_VERSION)\Support</HEADER_PATH_5>
<HEADER_PATH_6>$(SolutionDir)</HEADER_PATH_6>
<WORD_SIZE>64</WORD_SIZE>
<ARCHICAD>1</ARCHICAD>
</PropertyGroup>
<PropertyGroup />
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="BIM_VERSION">
<Value>$(BIM_VERSION)</Value>
</BuildMacro>
<BuildMacro Include="BIM_PLATFORM">
<Value>$(BIM_PLATFORM)</Value>
</BuildMacro>
<BuildMacro Include="BIM_PATH">
<Value>$(BIM_PATH)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_1">
<Value>$(HEADER_PATH_1)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_2">
<Value>$(HEADER_PATH_2)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_3">
<Value>$(HEADER_PATH_3)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_4">
<Value>$(HEADER_PATH_4)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_5">
<Value>$(HEADER_PATH_5)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="HEADER_PATH_6">
<Value>$(HEADER_PATH_6)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="WORD_SIZE">
<Value>$(WORD_SIZE)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="ARCHICAD">
<Value>$(ARCHICAD)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
-212
View File
@@ -1,212 +0,0 @@
import os
import sys
import platform
import subprocess
import shutil
import codecs
import glob
class ResourceCompiler (object):
def __init__ (self, devKitPath, languageCode, sourcesPath, resourcesPath, resourceObjectsPath):
self.devKitPath = devKitPath
self.languageCode = languageCode
self.sourcesPath = sourcesPath
self.resourcesPath = resourcesPath
self.resourceObjectsPath = resourceObjectsPath
self.resConvPath = None
def IsValid (self):
if self.resConvPath == None:
return False
if not os.path.exists (self.resConvPath):
return False
return True
def CompileLocalizedResources (self):
locResourcesFolder = os.path.join (self.resourcesPath, 'R' + self.languageCode)
grcFiles = self.CollectFilesFromFolderWithExtension (locResourcesFolder, '.grc')
for grcFilePath in grcFiles:
if not self.CompileResourceFile (grcFilePath):
print ('Failed to compile resource: ' + grcFilePath)
return False
return True
def CompileFixResources (self):
fixResourcesFolder = os.path.join (self.resourcesPath, 'RFIX')
grcFiles = self.CollectFilesFromFolderWithExtension (fixResourcesFolder, '.grc')
for grcFilePath in grcFiles:
if not self.CompileResourceFile (grcFilePath):
print ('Failed to compile resource: ' + grcFilePath)
return False
return True
def RunResConv (self, platformSign, codepage, inputFilePath, nativeResourceFileExtenion):
imageResourcesFolder = os.path.join (self.resourcesPath, 'RFIX', 'Images')
inputFileBaseName = os.path.splitext (os.path.split (inputFilePath)[1])[0]
nativeResourceFilePath = os.path.join (self.resourceObjectsPath, inputFileBaseName + nativeResourceFileExtenion)
result = subprocess.call ([
self.resConvPath,
'-m', 'r', # resource compile mode
'-T', platformSign, # target platform
'-q', 'utf8', codepage, # code page conversion
'-w', '2', # HiDPI image size list
'-p', imageResourcesFolder, # image search path
'-i', inputFilePath, # input path
'-o', nativeResourceFilePath # output path
])
if result != 0:
return False
return True
def CollectFilesFromFolderWithExtension (self, folderPath, extension):
result = []
for fileName in os.listdir (folderPath):
fileExtension = os.path.splitext (fileName)[1]
if fileExtension == extension:
fullPath = os.path.join (folderPath, fileName)
result.append (fullPath)
return result
def CollectFilesFromFolderRecursive (self, path, name):
result = []
for folder, subs, files in os.walk (path):
for fileName in files + subs:
if fileName.lower () == name.lower ():
fullPath = os.path.join (folder, fileName)
result.append (fullPath)
return result
class WinResourceCompiler (ResourceCompiler):
def __init__ (self, devKitPath, languageCode, sourcesPath, resourcesPath, resourceObjectsPath):
super (WinResourceCompiler, self).__init__ (devKitPath, languageCode, sourcesPath, resourcesPath, resourceObjectsPath)
self.resConvPath = os.path.join (devKitPath, 'Support', 'Tools', 'Win', 'ResConv.exe')
def CompileResourceFile (self, grcFilePath):
grcFileName = os.path.split (grcFilePath)[1]
precompiledGrcFilePath = os.path.join (self.resourceObjectsPath, grcFileName + '.i')
result = subprocess.call ([
'cl',
'/nologo',
'/X',
'/EP',
'/P',
'/I', os.path.join (self.devKitPath, 'Support', 'Inc'),
'/I', os.path.join (self.devKitPath, 'Support', 'Modules', 'DGLib'),
'/I', self.sourcesPath,
'/DWINDOWS',
'/execution-charset:utf-8',
'/Fi{}'.format (precompiledGrcFilePath),
grcFilePath,
])
if result != 0:
return False
return self.RunResConv ('W', '1252', precompiledGrcFilePath, '.rc2')
def CompileNativeResource (self, resultResourcePath):
nativeResourceFiles = self.CollectFilesFromFolderWithExtension (os.path.join (self.resourcesPath, 'RFIX.win'), '.rc2')
if not nativeResourceFiles:
print ('Native resource file was not found')
return False
if len (nativeResourceFiles) > 1:
print ('More than one native resource file was found')
return False
result = subprocess.call ([
'rc',
'/i', os.path.join (self.devKitPath, 'Support', 'Inc'),
'/i', os.path.join (self.devKitPath, 'Support', 'Modules', 'DGLib'),
'/i', self.sourcesPath,
'/i', self.resourceObjectsPath,
'/fo', resultResourcePath,
nativeResourceFiles[0]
])
if result != 0:
print ('Failed to compile native resource')
return False
return True
class MacResourceCompiler (ResourceCompiler):
def __init__ (self, devKitPath, languageCode, sourcesPath, resourcesPath, resourceObjectsPath):
super (MacResourceCompiler, self).__init__ (devKitPath, languageCode, sourcesPath, resourcesPath, resourceObjectsPath)
self.resConvPath = os.path.join (devKitPath, 'Support', 'Tools', 'OSX', 'ResConv')
def CompileResourceFile (self, grcFilePath):
grcFileName = os.path.split (grcFilePath)[1]
precompiledGrcFilePath = os.path.join (self.resourceObjectsPath, grcFileName + '.i')
result = subprocess.call ([
'clang',
'-x', 'c++',
'-E',
'-P',
'-Dmacintosh',
'-I', os.path.join (self.devKitPath, 'Support', 'Inc'),
'-I', os.path.join (self.devKitPath, 'Support', 'Modules', 'DGLib'),
'-I', self.sourcesPath,
'-o', precompiledGrcFilePath,
grcFilePath,
])
if result != 0:
return False
return self.RunResConv ('M', 'utf16', precompiledGrcFilePath, '.ro')
def CompileNativeResource (self, resultResourcePath):
resultLocalizedResourcePath = os.path.join (resultResourcePath, 'English.lproj')
if not os.path.exists (resultLocalizedResourcePath):
os.makedirs (resultLocalizedResourcePath)
resultLocalizableStringsPath = os.path.join (resultLocalizedResourcePath, 'Localizable.strings')
resultLocalizableStringsFile = codecs.open (resultLocalizableStringsPath, 'w', 'utf-16')
for fileName in os.listdir (self.resourceObjectsPath):
filePath = os.path.join (self.resourceObjectsPath, fileName)
extension = os.path.splitext (fileName)[1]
if extension == '.tif':
shutil.copy (filePath, resultResourcePath)
elif extension == '.rsrd':
shutil.copy (filePath, resultLocalizedResourcePath)
elif extension == '.strings':
stringsFile = codecs.open (filePath, 'r', 'utf-16')
resultLocalizableStringsFile.write (stringsFile.read ())
stringsFile.close ()
resultLocalizableStringsFile.close ()
return True
def Main (argv):
if len (argv) != 7:
print ('Usage: CompileResources.py <languageCode> <devKitPath> <sourcesPath> <resourcesPath> <resourceObjectsPath> <resultResourcePath>')
return 1
currentDir = os.path.dirname (os.path.abspath (__file__))
os.chdir (currentDir)
languageCode = argv[1]
devKitPath = os.path.abspath (argv[2])
sourcesPath = os.path.abspath (argv[3])
resourcesPath = os.path.abspath (argv[4])
resourceObjectsPath = os.path.abspath (argv[5])
resultResourcePath = os.path.abspath (argv[6])
resourceCompiler = None
system = platform.system ()
if system == 'Windows':
resourceCompiler = WinResourceCompiler (devKitPath, languageCode, sourcesPath, resourcesPath, resourceObjectsPath)
elif system == 'Darwin':
resourceCompiler = MacResourceCompiler (devKitPath, languageCode, sourcesPath, resourcesPath, resourceObjectsPath)
if resourceCompiler == None:
print ('Platform is not supported')
return 1
if not resourceCompiler.IsValid ():
print ('Invalid resource compiler')
return 1
if not resourceCompiler.CompileLocalizedResources ():
return 1
if not resourceCompiler.CompileFixResources ():
return 1
if not resourceCompiler.CompileNativeResource (resultResourcePath):
return 1
return 0
sys.exit (Main (sys.argv))
+2 -2
View File
@@ -3,7 +3,7 @@ REM AC Resource build script
ECHO "Building AC Resources"
if not exist "%RES_OUTPUT%" MD "%RES_OUTPUT%"
python "%HEADER_PATH_3%\CompileResources.py" "INT" "%HEADER_PATH_5%\.." "%HEADER_PATH_6%\Connector" "%SYMROOT%\" "%RES_OUTPUT%" "%RES_SOURCE%\Speckle Connector.apx.mui"
python "%HEADER_PATH_3%\CompileResources.py" "INT" "%HEADER_PATH_5%\.." "%HEADER_PATH_4%\Speckle" "%HEADER_PATH_4%" "%RES_OUTPUT%" "%RES_SOURCE%\Speckle Connector.apx.mui"
python "%HEADER_PATH_5%\Tools\CompileResources.py" "INT" "%HEADER_PATH_5%\.." "%HEADER_PATH_6%\Connector" "%SYMROOT%\" "%RES_OUTPUT%" "%RES_SOURCE%\Speckle Connector.apx.mui"
python "%HEADER_PATH_5%\Tools\CompileResources.py" "INT" "%HEADER_PATH_5%\.." "%HEADER_PATH_4%\Speckle" "%HEADER_PATH_4%" "%RES_OUTPUT%" "%RES_SOURCE%\Speckle Connector.apx.mui"
ECHO "Finished AC Resource"
-5
View File
@@ -2,9 +2,4 @@
/* [ 1] */ "Untitled"
/* [ 2] */ "Unknown"
/* [ 3] */ "Converting elements"
/* [ 4] */ "Notification"
/* [ 5] */ "Confirm"
/* [ 6] */ "Yes"
/* [ 7] */ "No"
/* [ 8] */ "OK"
}
@@ -27,7 +27,7 @@ namespace speckle::database {
///Attribute database engine declaration
class BIMAttributeDatabase::Engine : public AttributeDatabaseEngine {
using base = AttributeDatabaseEngine;
using base = ArchicadAttributeDBaseEngine;
using base::base;
};
@@ -102,7 +102,7 @@ Vector<Attribute> BIMAttributeDatabase::getAttributes() const {
attribute: The attribute to write
--------------------------------------------------------------------*/
void BIMAttributeDatabase::write(Attribute& attribute) const {
void BIMAttributeDatabase::write(const Attribute& attribute) const {
m_store->write(attribute);
} //BIMAttributeDatabase::write
@@ -55,7 +55,7 @@ namespace speckle::database {
Write an attribute to storage
@param attribute The attribute to write
*/
void write(record::attribute::Attribute& attribute) const;
void write(const record::attribute::Attribute& attribute) const;
/*!
Erase an attribute
@param attributeID The ID of the attribute to erase
@@ -148,15 +148,14 @@ void BIMElementDatabase::clearSelection() const {
Find a filtered list of objects
filter: The object filter (nullptr = find all objects)
subset: A subset of the database content to search (specified by record ID)
tableID: Optional table ID (defaults to the first table)
documentID: Optional document ID (filter for this document only - nullopt = all objects)
return: A list containing IDs of found elements (empty if none found)
--------------------------------------------------------------------*/
BIMRecordIDList BIMElementDatabase::findElements(const Filter* filter, const BIMRecordIDList& subset, std::optional<BIMRecordID> tableID,
std::optional<BIMRecordID> documentID) const {
return m_engine->findObjects(filter, subset, tableID, documentID);
BIMRecordIDList BIMElementDatabase::findElements(const Filter& filter, std::optional<BIMRecordID> tableID,
std::optional<BIMRecordID> documentID) const {
return m_engine->findObjects(filter, tableID, documentID);
} //BIMElementDatabase::findElements
@@ -213,7 +212,7 @@ Memo::Unique BIMElementDatabase::getMemo(const BIMRecordID& elementID, Part::fil
element: The element to write
--------------------------------------------------------------------*/
void BIMElementDatabase::write(Element& element) const {
void BIMElementDatabase::write(const Element& element) const {
m_store->write(element);
} //BIMElementDatabase::write
@@ -74,13 +74,12 @@ namespace speckle::database {
/*!
Find a filtered list of objects
@param filter The object filter (nullptr = find all objects)
@param subset A subset of the database content to search (specified by record ID)
@param tableID Optional table ID (defaults to the first table)
@param documentID Optional document ID (filter for this document only - nullopt = all objects)
@return A list containing IDs of found elements (empty if none found)
*/
BIMRecordIDList findElements(const Filter* filter = nullptr, const BIMRecordIDList& subset = {},
std::optional<BIMRecordID> tableID = std::nullopt, std::optional<BIMRecordID> documentID = std::nullopt) const;
BIMRecordIDList findElements(const Filter& filter = nullptr, std::optional<BIMRecordID> tableID = std::nullopt,
std::optional<BIMRecordID> documentID = std::nullopt) const;
/*!
Get a specified element
@param elementID The ID of the target element
@@ -115,7 +114,7 @@ namespace speckle::database {
Write an element to storage
@param element The element to write
*/
void write(record::element::Element& element) const;
void write(const record::element::Element& element) const;
/*!
Erase an element
@param elementID The ID of the element to erase
@@ -114,7 +114,7 @@ Vector<Group> BIMGroupDatabase::getGroups() const {
group: The group to write
--------------------------------------------------------------------*/
void BIMGroupDatabase::write(Group& group) const {
void BIMGroupDatabase::write(const Group& group) const {
m_store->write(group);
} //BIMGroupDatabase::write
@@ -57,7 +57,7 @@ namespace speckle::database {
Write an group to storage
@param group The group to write
*/
void write(record::property::Group& group) const;
void write(const record::property::Group& group) const;
/*!
Erase an group
@param groupID The ID of the group to erase
@@ -126,7 +126,7 @@ std::vector<std::shared_ptr<Template>> BIMPropertyDatabase::findTemplatesByClass
property: The property to write
--------------------------------------------------------------------*/
void BIMPropertyDatabase::write(Template& property) const {
void BIMPropertyDatabase::write(const Template& property) const {
m_store->write(property);
} //BIMPropertyDatabase::write
@@ -63,7 +63,7 @@ namespace speckle::database {
Write an property to storage
@param property The property to write
*/
void write(record::property::Template& property) const;
void write(const record::property::Template& property) const;
/*!
Erase an property
@param propertyID The ID of the property to erase
@@ -13,28 +13,9 @@ using namespace speckle::utility;
BIMLink::BIMLink(const API_Neig& selected, const BIMRecordID& tableID) : base{Guid{selected.guid}, tableID} {
//More info should be extracted from API_Neig in future (as required) - extract into link settings, e.g. selection target etc
} //Link::Link
#endif
/*--------------------------------------------------------------------
Constructor
elementIDList: BIM record IDs to populate the links
--------------------------------------------------------------------*/
BIMLinkList::BIMLinkList(const BIMRecordIDList& elementIDList) {
BIMLinkList::BIMLinkList(const ElementIDList& elementIDList) {
for (const auto& id : elementIDList)
push_back(id);
} //BIMLinkList::BIMLinkList
/*--------------------------------------------------------------------
Conversion operator
return: A list of BIM record IDs from this list
--------------------------------------------------------------------*/
BIMLinkList::operator BIMRecordIDList() const {
BIMRecordIDList result;
for (const auto& link : *this)
result.insert(BIMRecordID{link});
return result;
} //BIMLinkList::operator BIMRecordIDList
}
#endif
+5 -22
View File
@@ -41,35 +41,18 @@ namespace speckle::database {
#endif
};
/*!
A list of links to BIM records
*/
//A list of links to BIM records
//using BIMLinkList = std::vector<BIMLink>;
class BIMLinkList : public std::vector<BIMLink> {
public:
// MARK: - Types
using base = std::vector<BIMLink>;
// MARK: - Constructors
using base::base;
BIMLinkList() = default;
/*!
Constructor
@param elementIDList BIM record IDs to populate the links
*/
BIMLinkList(const BIMRecordIDList& elementIDList);
// MARK: - Operators
/*!
Conversion operator
@return A list of BIM record IDs from this list
*/
operator BIMRecordIDList() const;
BIMLinkList(const ElementIDList& elementIDList);
};
}
@@ -15,6 +15,12 @@ namespace speckle::database {
//A list of record IDs
using RecordIDList = std::vector<RecordID>;
//BIM element record identifier
using ElementID = speckle::utility::Guid;
//A list of element IDs
using ElementIDList = std::vector<ElementID>;
}
@@ -33,7 +33,7 @@ namespace {
return: An equivalent status code
--------------------------------------------------------------------*/
ArchicadDBaseCore::Status convertArchicadError(GSErrCode acErrorCode) {
ArchicadDBaseCore::Status convertArchicadError(long acErrorCode) {
using enum ArchicadDBaseCore::Status;
switch (acErrorCode) {
case NoError:
@@ -92,16 +92,4 @@ std::error_code ArchicadDBaseCore::makeError(ArchicadDBaseCore::Status code) {
return std::error_code(static_cast<int>(code), instance);
} //ArchicadDBaseCore::makeError
/*--------------------------------------------------------------------
Make an error code for ArchicadElementDBase processing
code: An Archicad API error code
return: An STL error code
--------------------------------------------------------------------*/
std::error_code ArchicadDBaseCore::makeError(GSErrCode code) {
return makeError(convertArchicadError(code));
} //ArchicadDBaseCore::makeError
#endif
@@ -9,8 +9,6 @@
#include "Active/Utility/NameID.h"
#include "Speckle/Event/Subscriber/ProjectSubscriber.h"
#include <Definitions.hpp>
namespace speckle::database {
using ArchicadDBaseSchema = active::database::DBaseSchema<>;
@@ -37,16 +35,9 @@ namespace speckle::database {
/*!
Make an error code for ArchicadElementDBase processing
@param code An ArchicadDBaseCore status code
@return An STL error code
*/
static std::error_code makeError(ArchicadDBaseCore::Status code);
/*!
Make an error code for ArchicadElementDBase processing
@param code An Archicad API error code
@return An STL error code
*/
static std::error_code makeError(GSErrCode code);
// MARK: - Constructors
@@ -16,10 +16,8 @@
#include "Speckle/Utility/String.h"
#include <ACAPinc.h>
#include <BM.hpp>
#ifdef ServerMainVers_2700
#include <ACAPI_Database.h>
#endif
#include <BM.hpp>
using namespace active::event;
using namespace active::setting;
@@ -53,11 +51,7 @@ namespace speckle::database {
clear();
API_StoryInfo storeyInfo;
active::utility::Memory::erase(storeyInfo);
#ifdef ServerMainVers_2700
ACAPI_ProjectSetting_GetStorySettings(&storeyInfo);
#else
ACAPI_Environment(APIEnv_GetStorySettingsID, &storeyInfo, (void*) APIElemMask_FromFloorplan);
#endif
auto storeyCount = storeyInfo.lastStory - storeyInfo.firstStory + 1;
for (auto i = 0; i < storeyCount; ++i)
push_back((*storeyInfo.data)[i]);
@@ -117,11 +111,7 @@ namespace {
std::optional<API_Attribute> getAPIData(const BIMRecordID& ID, std::optional<BIMRecordID> tableID) {
API_Attribute attribute;
active::utility::Memory::erase(attribute);
#ifdef ServerMainVers_2700
attribute.header.index = ACAPI_CreateAttributeIndex(static_cast<int32_t>(Guid::toInt(ID)));
#else
attribute.header.index = static_cast<int32_t>(Guid::toInt(ID));
#endif
attribute.header.typeID = static_cast<API_AttrTypeID>(Guid::toInt(*tableID));
if (ACAPI_Attribute_Get(&attribute) != NoError)
return std::nullopt;
@@ -221,26 +211,9 @@ active::container::Vector<Attribute> ArchicadAttributeDBaseEngine::getObjects(co
tableID: Optional table ID (defaults to the floor plan)
documentID: Optional document ID (when the object is bound to a specific document)
--------------------------------------------------------------------*/
void ArchicadAttributeDBaseEngine::write(Attribute& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID,
std::optional<BIMRecordID> tableID, std::optional<BIMRecordID> documentID) const {
auto attributeData = object.getDataOut();
//An record with no index has not been written (and needs to be created in the dbase)
GSErrCode status = NoError;
#ifdef ServerMainVers_2700
if (attributeData.header.index.GenerateHashValue() == 0)
#else
if (attributeData.header.index == 0)
#endif
{
status = ACAPI_Attribute_CreateExt(&attributeData, nullptr); //TODO: Handle attribute extended definition
//Archicad assigns record guids - we need to capture this for the caller
object.setBIMID(attributeData.header.guid);
} else
status = ACAPI_Attribute_ModifyExt(&attributeData, nullptr);
if (status != NoError)
throw std::system_error(makeError(status));
//Archicad modifies record headers on write - need to capture this data for the caller
object.getHead() = attributeData.header;
void ArchicadAttributeDBaseEngine::write(const Attribute& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID,
std::optional<BIMRecordID> tableID, std::optional<BIMRecordID> documentID) const {
//TODO: Implement
} //ArchicadAttributeDBaseEngine::write
@@ -55,13 +55,11 @@ namespace speckle::database {
/*!
Find a filtered list of objects
@param filter The object filter (nullptr = find all objects)
@param subset A subset of the database content to search (specified by record ID)
@param tableID Optional table ID (defaults to the first table)
@param documentID Optional document ID (filter for this document only - nullopt = all objects)
@return A list containing IDs of found elements (empty if none found)
*/
virtual ObjIDList findObjects(const Filter* filter = nullptr, const ObjIDList& subset = {},
std::optional<BIMRecordID> tableID = std::nullopt,
virtual ObjIDList findObjects(const Filter& filter = nullptr, std::optional<BIMRecordID> tableID = std::nullopt,
std::optional<BIMRecordID> documentID = std::nullopt) const override { return {}; } //Implement when required
/*!
Get an object by ID
@@ -103,7 +101,7 @@ namespace speckle::database {
@param tableID Optional table ID (defaults to the floor plan)
@param documentID Optional document ID (when the object is bound to a specific document)
*/
void write(Attribute& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID = std::nullopt,
void write(const Attribute& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID = std::nullopt,
std::optional<BIMRecordID> tableID = std::nullopt, std::optional<BIMRecordID> documentID = std::nullopt) const override;
/*!
Erase an object by index
@@ -21,19 +21,13 @@
#include "Speckle/Record/Element/Roof.h"
#include "Speckle/Record/Element/Shell.h"
#include "Speckle/Record/Element/Slab.h"
#include "Speckle/Record/Element/Stair.h"
#include "Speckle/Record/Element/StairRiser.h"
#include "Speckle/Record/Element/StairStructure.h"
#include "Speckle/Record/Element/StairTread.h"
#include "Speckle/Record/Element/Wall.h"
#include "Speckle/Utility/Guid.h"
#include "Speckle/Utility/String.h"
#include <ACAPinc.h>
#include <BM.hpp>
#ifdef ServerMainVers_2700
#include <ACAPI_Database.h>
#endif
#include <BM.hpp>
using namespace active::event;
using namespace active::setting;
@@ -65,11 +59,7 @@ namespace {
dbaseInfo.typeID = APIWind_3DModelID;
else
dbaseInfo.databaseUnId.elemSetId = tableID;
#ifdef ServerMainVers_2700
if (auto err = ACAPI_Window_GetDatabaseInfo(&dbaseInfo); err == NoError)
#else
if (auto err = ACAPI_Database(APIDb_GetDatabaseInfoID, &dbaseInfo, 0, 0); err == NoError)
#endif
return dbaseInfo;
return std::nullopt;
} //getTableInfo
@@ -88,29 +78,10 @@ namespace {
auto dbaseInfo = getTableInfo(tableID);
if (!dbaseInfo)
return false;
#ifdef ServerMainVers_2700
return ACAPI_Database_ChangeCurrentDatabase(&*dbaseInfo) == NoError;
#else
return ACAPI_Database(APIDb_ChangeCurrentDatabaseID, &dbaseInfo, 0, 0) == NoError;
#endif
} //setActiveTable
/*!
Find indices of all elements in an Archicad database. NB: It is assumed that the active database has already been set
@return A list of all element IDs in the active database
*/
BIMRecordIDList getAllElementIDs() {
GS::Array<API_Guid> found;
if ((ACAPI_Element_GetElemList({}, &found) != NoError) || found.IsEmpty())
return {};
BIMRecordIDList result;
for (const auto& item : found)
result.insert(item);
return result;
} //getAllElementIDs
/*!
Make a new element object
@param elementData The API element representation
@@ -118,11 +89,7 @@ namespace {
@return A new element object (nullptr on failure)
*/
Element::Unique makeElement(const API_Element& elementData, const BIMRecordID& tableID) {
#ifdef ServerMainVers_2600
switch (elementData.header.type.typeID) {
#else
switch (elementData.header.typeID) {
#endif
case API_ColumnID:
return std::make_unique<Column>(elementData, tableID);
case API_ColumnSegmentID:
@@ -135,29 +102,17 @@ namespace {
return std::make_unique<Mesh>(elementData, tableID);
case API_MorphID:
return std::make_unique<Morph>(elementData, tableID);
case API_RiserID:
return std::make_unique<StairRiser>(elementData, tableID);
case API_StairStructureID:
return std::make_unique<StairStructure>(elementData, tableID);
case API_TreadID:
return std::make_unique<StairTread>(elementData, tableID);
case API_RoofID:
return std::make_unique<Roof>(elementData, tableID);
case API_ShellID:
return std::make_unique<Shell>(elementData, tableID);
case API_SlabID:
return std::make_unique<Slab>(elementData, tableID);
case API_StairID:
return std::make_unique<Stair>(elementData, tableID);
case API_WallID:
return std::make_unique<Wall>(elementData, tableID);
case API_ObjectID:
// POC: change this case once we are ready to convert Grid Elements
#ifdef ServerMainVers_2600
if (elementData.header.type.variationID == APIVarId_GridElement)
#else
if (elementData.header.variationID == APIVarId_GridElement)
#endif
return nullptr;
default:
return std::make_unique<GenericModelElement>(elementData, tableID);
@@ -173,12 +128,7 @@ namespace {
std::optional<BIMRecordID> ArchicadElementDBaseEngine::getActiveTable() {
API_WindowInfo dbaseInfo;
active::utility::Memory::erase(dbaseInfo);
#ifdef ServerMainVers_2700
if (auto err = ACAPI_Database_GetCurrentDatabase(&dbaseInfo); err == NoError)
#else
if (auto err = ACAPI_Database(APIDb_GetCurrentDatabaseID, &dbaseInfo); err == NoError)
#endif
{
if (auto err = ACAPI_Database_GetCurrentDatabase(&dbaseInfo); err == NoError) {
if (dbaseInfo.typeID == APIWind_FloorPlanID)
return primary2DViewID;
else if (dbaseInfo.typeID == APIWind_3DModelID)
@@ -202,11 +152,7 @@ void ArchicadElementDBaseEngine::bringViewToFront(BIMRecordID tableID) const {
windowInfo.typeID = dbaseInfo->typeID;
if ((windowInfo.typeID != APIWind_FloorPlanID) && (windowInfo.typeID != APIWind_3DModelID))
windowInfo.databaseUnId = dbaseInfo->databaseUnId;
#ifdef ServerMainVers_2700
ACAPI_Window_ChangeWindow(&windowInfo);
#else
ACAPI_Automate(APIDo_ChangeWindowID, &windowInfo);
#endif
} //ArchicadElementDBaseEngine::bringViewToFront
@@ -240,11 +186,7 @@ void ArchicadElementDBaseEngine::setSelection(const BIMLinkList& elementIDs) con
API_Neig neig(elemID);
selNeigs.Push(neig);
}
#ifdef ServerMainVers_2700
ACAPI_Selection_Select(selNeigs, true);
#else
ACAPI_Element_Select(selNeigs, true);
#endif
} //ArchicadElementDBaseEngine::setSelection
@@ -252,11 +194,7 @@ void ArchicadElementDBaseEngine::setSelection(const BIMLinkList& elementIDs) con
Clear the element selection
--------------------------------------------------------------------*/
void ArchicadElementDBaseEngine::clearSelection() const {
#ifdef ServerMainVers_2700
ACAPI_Selection_DeselectAll();
#else
ACAPI_Element_DeselectAll();
#endif
} //ArchicadElementDBaseEngine::clearSelection
@@ -302,38 +240,28 @@ void ArchicadElementDBaseEngine::setDefaultTable(const BIMRecordID& tableID) con
Find a filtered list of objects
filter: The object filter (nullptr = find all objects)
subset: A subset of the database content to search (specified by record ID)
tableID: Optional table ID (defaults to the first table)
documentID: Optional document ID (filter for this document only - nullopt = all objects)
return: A list containing IDs of found elements (empty if none found)
--------------------------------------------------------------------*/
BIMRecordIDList ArchicadElementDBaseEngine::findObjects(const Filter* filter, const BIMRecordIDList& subset, std::optional<BIMRecordID> tableID,
std::optional<BIMRecordID> documentID) const {
BIMRecordIDList ArchicadElementDBaseEngine::findObjects(const Filter& filter, std::optional<BIMRecordID> tableID,
std::optional<BIMRecordID> documentID) const {
//Switch to the target table (when specified). Otherwise the currently active table will be used
if (tableID)
setActiveTable(*tableID);
//First check for no filter (in which case we return all objects)
if (filter == nullptr) {
if (!subset.empty())
return subset;
return getAllElementIDs();
GS::Array<API_Guid> found;
if ((ACAPI_Element_GetElemList({}, &found) != NoError) || found.IsEmpty())
return {};
BIMRecordIDList result;
for (const auto& item : found)
result.insert(item);
return result;
}
BIMRecordIDList buffer, result;
//Pick either all records or the specified subset
auto source = &subset;
if (subset.empty()) {
buffer = getAllElementIDs();
source = &buffer;
}
//Run the filter on the specified elements
for (const auto& elemID : *source) {
if (auto element = getObject(elemID); element) {
if ((*filter)(*element))
result.insert(elemID);
}
}
return result;
//Implement other filtering as required - ideally identify characteristics supported by API, e.g. filter by type/renovation etc
return {};
} //ArchicadElementDBaseEngine::findObjects
@@ -371,11 +299,7 @@ std::unique_ptr<Element> ArchicadElementDBaseEngine::getObject(const BIMRecordID
API_Element element;
active::utility::Memory::erase(element);
API_Guid guid{ID.operator API_Guid()};
#ifdef ServerMainVers_2700
if (ACAPI_Element_GetElementFromAnywhere(&guid, &element) != NoError)
#else
if (ACAPI_Database(APIDb_GetElementFromAnywhereID, &guid, &element, 0) != NoError)
#endif
return nullptr;
return makeElement(element, *tableID);
} //ArchicadElementDBaseEngine::getObject
@@ -448,7 +372,7 @@ active::container::Vector<Element> ArchicadElementDBaseEngine::getObjects(const
tableID: Optional table ID (defaults to the floor plan)
documentID: Optional document ID (when the object is bound to a specific document)
--------------------------------------------------------------------*/
void ArchicadElementDBaseEngine::write(Element& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID,
void ArchicadElementDBaseEngine::write(const Element& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID,
std::optional<BIMRecordID> tableID, std::optional<BIMRecordID> documentID) const {
} //ArchicadElementDBaseEngine::write
@@ -92,14 +92,12 @@ namespace speckle::database {
/*!
Find a filtered list of objects
@param filter The object filter (nullptr = find all objects)
@param subset A subset of the database content to search (specified by record ID)
@param tableID Optional table ID (defaults to the first table)
@param documentID Optional document ID (filter for this document only - nullopt = all objects)
@return A list containing IDs of found elements (empty if none found)
*/
virtual BIMRecordIDList findObjects(const Filter* filter = nullptr, const BIMRecordIDList& subset = {},
std::optional<BIMRecordID> tableID = std::nullopt,
std::optional<BIMRecordID> documentID = std::nullopt) const override;
virtual BIMRecordIDList findObjects(const Filter& filter = nullptr, std::optional<BIMRecordID> tableID = std::nullopt,
std::optional<BIMRecordID> documentID = std::nullopt) const override;
/*!
Get an object by index
@param objID The object ID
@@ -140,7 +138,7 @@ namespace speckle::database {
@param tableID Optional table ID (defaults to the floor plan)
@param documentID Optional document ID (when the object is bound to a specific document)
*/
void write(Element& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID = std::nullopt,
void write(const Element& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID = std::nullopt,
std::optional<BIMRecordID> tableID = std::nullopt, std::optional<BIMRecordID> documentID = std::nullopt) const override;
/*!
Erase an object by index
@@ -12,6 +12,7 @@
#include "Speckle/Utility/String.h"
#include <ACAPinc.h>
#include <ACAPI_Database.h>
using namespace active::event;
using namespace active::setting;
@@ -154,7 +155,7 @@ active::container::Vector<Group> ArchicadGroupDBaseEngine::getObjects(const Filt
tableID: Optional table ID (defaults to the floor plan)
documentID: Optional document ID (when the object is bound to a specific document)
--------------------------------------------------------------------*/
void ArchicadGroupDBaseEngine::write(Group& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID,
void ArchicadGroupDBaseEngine::write(const Group& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID,
std::optional<BIMRecordID> tableID, std::optional<BIMRecordID> documentID) const {
//TODO: Implement
} //ArchicadGroupDBaseEngine::write
@@ -50,13 +50,11 @@ namespace speckle::database {
/*!
Find a filtered list of objects
@param filter The object filter (nullptr = find all objects)
@param subset A subset of the database content to search (specified by record ID)
@param tableID Optional table ID (defaults to the first table)
@param documentID Optional document ID (filter for this document only - nullopt = all objects)
@return A list containing IDs of found elements (empty if none found)
*/
virtual ObjIDList findObjects(const Filter* filter = nullptr, const ObjIDList& subset = {},
std::optional<BIMRecordID> tableID = std::nullopt,
virtual ObjIDList findObjects(const Filter& filter = nullptr, std::optional<BIMRecordID> tableID = std::nullopt,
std::optional<BIMRecordID> documentID = std::nullopt) const override { return {}; } //Implement when required
/*!
Get an object by ID
@@ -98,7 +96,7 @@ namespace speckle::database {
@param tableID Optional table ID (default selected based on record type)
@param documentID Optional document ID (when the object is bound to a specific document)
*/
void write(Group& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID = std::nullopt,
void write(const Group& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID = std::nullopt,
std::optional<BIMRecordID> tableID = std::nullopt, std::optional<BIMRecordID> documentID = std::nullopt) const override;
/*!
Erase an object by index
@@ -12,6 +12,7 @@
#include "Speckle/Utility/String.h"
#include <ACAPinc.h>
#include <ACAPI_Database.h>
#include <BM.hpp>
using namespace active::event;
@@ -178,7 +179,7 @@ active::container::Vector<Template> ArchicadPropertyDBaseEngine::getObjects(cons
tableID: Optional table ID (defaults to the floor plan)
documentID: Optional document ID (when the object is bound to a specific document)
--------------------------------------------------------------------*/
void ArchicadPropertyDBaseEngine::write(Template& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID,
void ArchicadPropertyDBaseEngine::write(const Template& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID,
std::optional<BIMRecordID> tableID, std::optional<BIMRecordID> documentID) const {
//TODO: Implement
} //ArchicadPropertyDBaseEngine::write
@@ -51,12 +51,11 @@ namespace speckle::database {
/*!
Find a filtered list of objects
@param filter The object filter (nullptr = find all objects)
@param subset A subset of the database content to search (specified by record ID)
@param tableID Optional table ID (defaults to the first table)
@param documentID Optional document ID (filter for this document only - nullopt = all objects)
@return A list containing IDs of found elements (empty if none found)
*/
virtual ObjIDList findObjects(const Filter* filter = nullptr, const ObjIDList& subset = {}, std::optional<BIMRecordID> tableID = std::nullopt,
virtual ObjIDList findObjects(const Filter& filter = nullptr, std::optional<BIMRecordID> tableID = std::nullopt,
std::optional<BIMRecordID> documentID = std::nullopt) const override { return {}; } //Implement when required
/*!
Find all property templates linked to specified classifications
@@ -104,7 +103,7 @@ namespace speckle::database {
@param tableID Optional table ID (default selected based on record type)
@param documentID Optional document ID (when the object is bound to a specific document)
*/
void write(Template& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID = std::nullopt,
void write(const Template& object, const BIMRecordID& objID, std::optional<BIMRecordID> objDocID = std::nullopt,
std::optional<BIMRecordID> tableID = std::nullopt, std::optional<BIMRecordID> documentID = std::nullopt) const override;
/*!
Erase an object by index
@@ -63,12 +63,11 @@ namespace speckle::database {
/*!
Find a filtered list of objects
@param filter The object filter (nullptr = find all objects)
@param subset A subset of the database content to search (specified by record ID)
@param tableID Optional table ID (defaults to the first table)
@param documentID Optional document ID (filter for this document only - nullopt = all objects)
@return A list containing IDs of found elements (empty if none found)
*/
virtual ObjIDList findObjects(const Filter* filter = nullptr, const ObjIDList& subset = {}, std::optional<RecordID> tableID = std::nullopt,
virtual ObjIDList findObjects(const Filter& filter = nullptr, std::optional<RecordID> tableID = std::nullopt,
std::optional<RecordID> documentID = std::nullopt) const override { return {}; } //Implement when required
/*!
Get an object by index
@@ -110,7 +109,7 @@ namespace speckle::database {
@param tableID Optional table ID (defaults to the first table)
@param documentID Optional document ID (when the object is bound to a specific document)
*/
void write(Obj& object, const ObjID& objID, std::optional<ObjID> objDocID = std::nullopt,
void write(const Obj& object, const ObjID& objID, std::optional<ObjID> objDocID = std::nullopt,
std::optional<RecordID> tableID = std::nullopt, std::optional<RecordID> documentID = std::nullopt) const override;
/*!
Erase an object by index
@@ -275,7 +274,7 @@ namespace speckle::database {
--------------------------------------------------------------------*/
template<typename Obj, typename ObjWrapper, typename Transport, typename ObjID>
requires DocumentStorable<Obj, ObjWrapper, Transport>
void DocumentStoreEngine<Obj, ObjWrapper, Transport, ObjID>::write(Obj& object, const ObjID& objID, std::optional<ObjID> objDocID,
void DocumentStoreEngine<Obj, ObjWrapper, Transport, ObjID>::write(const Obj& object, const ObjID& objID, std::optional<ObjID> objDocID,
std::optional<RecordID> tableID, std::optional<RecordID> documentID) const {
getCache()->write(object); //NB: In future we might support duplicating records if objID != obj.id
} //DocumentStoreEngine<Obj, ObjWrapper, Transport, ObjID>::write
-45
View File
@@ -1,6 +1,5 @@
#include "Speckle/Environment/Addon.h"
#include "Active/Database/Transaction.h"
#include "Speckle/Environment/Project.h"
#include "Speckle/Event/Type/ProjectEvent.h"
#include "Speckle/Event/Subscriber/ProjectSubscriber.h"
@@ -11,7 +10,6 @@
#include <ACAPinc.h>
#endif
using namespace active::database;
using namespace speckle::environment;
using namespace speckle::event;
using namespace speckle::utility;
@@ -230,46 +228,3 @@ std::shared_ptr<Project> Addon::makeProject() const {
auto project = new Project; //make_shared can't use protected constructor
return std::shared_ptr<Project>{project};
} //Addon::makeProject
/*--------------------------------------------------------------------
Determine if a transaction can be started
return: True if a transaction can be started
--------------------------------------------------------------------*/
bool Addon::canTransactionStart() const {
return true; //TODO: There are some situations where Archicad cannot accept perform a new transaction - add when determine essential
} //Addon::canTransactionStart
/*--------------------------------------------------------------------
Perform a transaction
transaction: The transaction to perform
return: True if the transaction was successfully performed
--------------------------------------------------------------------*/
bool Addon::performTransaction(Transaction& transaction) const {
//If this is the opening transaction, we need to enclose it in a host undo session
if (isPerforming(transaction)) {
#ifdef ARCHICAD
return ACAPI_CallUndoableCommand(String{transaction.getName()}, [&]() -> GSErrCode {
if (App::performTransaction(transaction))
return NoError;
return APIERR_COMMANDFAILED;
});
#endif
}
return App::performTransaction(transaction);
} //Addon::performTransaction
/*--------------------------------------------------------------------
Finalise a transaction
transaction: The transaction to be finalised
wasPerformedSuccessfully: True if the transaction was successfully performed
--------------------------------------------------------------------*/
void Addon::finaliseTransaction(Transaction& transaction, bool wasPerformedSuccessfully) const {
} //Addon::finaliseTransaction
-20
View File
@@ -103,26 +103,6 @@ namespace speckle::environment {
*/
virtual std::shared_ptr<Project> makeProject() const;
// MARK: - Functions (transactions)
/*!
Determine if a transaction can be started
@return True if a transaction can be started
*/
bool canTransactionStart() const override;
/*!
Perform a transaction
@param transaction The transaction to perform
@return True if the transaction was successfully performed
*/
bool performTransaction(active::database::Transaction& transaction) const override;
/*!
Finalise a transaction
@param transaction The transaction to be finalised
@param wasPerformedSuccessfully True if the transaction was successfully performed
*/
void finaliseTransaction(active::database::Transaction& transaction, bool wasPerformedSuccessfully) const override;
private:
///The active project
std::shared_ptr<Project> m_activeProject;
+1 -60
View File
@@ -1,8 +1,5 @@
#include "Speckle/Environment/Host.h"
#include "Active/Utility/Memory.h"
#include "Speckle/Environment/Addon.h"
#include "Speckle/SpeckleResource.h"
#ifdef ARCHICAD
#include "DG.h"
@@ -36,50 +33,15 @@ bool Host::makeModelViewActive(bool isSelectionOnly) const {
#ifdef ARCHICAD
API_WindowInfo windowInfo;
active::utility::Memory::erase(windowInfo);
#ifdef ServerMainVers_2700
if ((ACAPI_Window_GetCurrentWindow(&windowInfo) == NoError) && (windowInfo.typeID == APIWind_3DModelID))
#else
if ((ACAPI_Database(APIDb_GetCurrentWindowID, &windowInfo) == NoError) && (windowInfo.typeID == APIWind_3DModelID))
#endif
return true;
if (isSelectionOnly)
#ifdef ServerMainVers_2700
return (ACAPI_View_ShowSelectionIn3D() == NoError);
#else
return (ACAPI_Automate(APIDo_ShowSelectionIn3DID) == NoError);
#endif
#ifdef ServerMainVers_2700
return (ACAPI_View_ShowAllIn3D() == NoError);
#else
return (ACAPI_Automate(APIDo_ShowAllIn3DID) == NoError);
#endif
#endif //ARCHICAD
} //Host::makeModelViewActive
/*--------------------------------------------------------------------
Zoom the active view to fit the content bounds
isSelectionOnly: True to zoom to fit just the current selection
--------------------------------------------------------------------*/
void Host::zoomToFit(bool isSelectionOnly) const {
#ifdef ARCHICAD
if (isSelectionOnly)
#ifdef ServerMainVers_2700
ACAPI_View_ZoomToSelected();
#else
ACAPI_Automate(APIDo_ZoomToSelectedID);
#endif
else
#ifdef ServerMainVers_2700
ACAPI_View_Zoom();
#else
ACAPI_Automate(APIDo_ZoomID);
#endif
#endif //ARCHICAD
} //Host::zoomToFit
/*--------------------------------------------------------------------
Display an alert dialog
@@ -87,32 +49,11 @@ void Host::zoomToFit(bool isSelectionOnly) const {
--------------------------------------------------------------------*/
void Host::displayAlert(const String& message) const {
#ifdef ARCHICAD
DGAlert(DG_INFORMATION, addon()->getLocalString(titleStringLib, notifyDialogTitleID), message, "",
addon()->getLocalString(titleStringLib, okButtonTitleID));
DGAlert(DG_INFORMATION, "Notification", message.data(), "", "OK");
#endif
} //Host::displayAlert
/*--------------------------------------------------------------------
Display a confirmation dialog (prompting the user to pick one of two options)
question: The question text, e.g. "Do you wish to continue?"
positiveOption: The positive option text (nullopt = "Yes")
negativeOption: The negative option text (nullopt = "No")
return: True if the user picked the positive option
--------------------------------------------------------------------*/
bool Host::displayConfirmation(const speckle::utility::String& question,
const speckle::utility::String::Option positiveOption,
const speckle::utility::String::Option negativeOption) const {
#ifdef ARCHICAD
String positivePrompt{positiveOption.value_or(addon()->getLocalString(titleStringLib, positiveResponseTitleID))},
negativePrompt{positiveOption.value_or(addon()->getLocalString(titleStringLib, negativeResponseTitleID))};
return (DGAlert(DG_WARNING, addon()->getLocalString(titleStringLib, confirmDialogTitleID), question, String{}, positivePrompt, negativePrompt) == 1);
#endif
} //Host::displayConfirmation
/*--------------------------------------------------------------------
Get an object representing the parent process/application
-16
View File
@@ -26,27 +26,11 @@ namespace speckle::environment {
@return True if the model view is active
*/
bool makeModelViewActive(bool isSelectionOnly = false) const;
/*!
Zoom the active view to fit the content bounds
@param isSelectionOnly True to zoom to fit just the current selection
*/
void zoomToFit(bool isSelectionOnly = false) const;
/*!
Display an alert dialog
@param message The alert message
*/
void displayAlert(const speckle::utility::String& message) const;
/*!
Display a confirmation dialog (prompting the user to pick one of two options)
@param question The question text, e.g. "Do you wish to continue?"
@param positiveOption The positive option text (nullopt = "Yes")
@param negativeOption The negative option text (nullopt = "No")
@return True if the user picked the positive option
*/
bool displayConfirmation(const speckle::utility::String& question,
const speckle::utility::String::Option positiveOption = std::nullopt,
const speckle::utility::String::Option negativeOption = std::nullopt) const;
// MARK: Functions (mutating)
+1 -6
View File
@@ -49,12 +49,7 @@ Project::Info Project::getInfo() const {
Info result{addon()->getLocalString(titleStringLib, untitledProjectID)};
#ifdef ARCHICAD
API_ProjectInfo projectInfo;
#ifdef ServerMainVers_2700
if (ACAPI_ProjectOperation_Project(&projectInfo) == NoError)
#else
if (ACAPI_Environment(APIEnv_ProjectID, &projectInfo) == NoError)
#endif
{
if (ACAPI_ProjectOperation_Project(&projectInfo) == NoError) {
if ((projectInfo.projectName != nullptr) && !projectInfo.projectName->IsEmpty())
result.name = *projectInfo.projectName;
result.isShared = projectInfo.teamwork;
@@ -65,11 +65,7 @@ bool DocStoreSubscriber::receive(const Event& event) {
--------------------------------------------------------------------*/
bool DocStoreSubscriber::attach() {
#ifdef ARCHICAD
#ifdef ServerMainVers_2700
ACAPI_AddOnObject_RegisterAddOnObjectHandler();
#else
ACAPI_Register_AddOnObjectHandler();
#endif
#endif
return true;
} //DocStoreSubscriber::attach
@@ -85,12 +81,8 @@ bool DocStoreSubscriber::start() {
return true;
m_isStarted = true;
#ifdef ARCHICAD
#ifdef ServerMainVers_2700
return (ACAPI_AddOnObject_InstallAddOnObjectMergeHandler(docMergeCallback) == NoError);
#else
return (ACAPI_Install_AddOnObjectMergeHandler(docMergeCallback) == NoError);
#endif //ServerMainVers_2600
#else //ARCHICAD
return false;
#endif //ARCHICAD
#endif
} //DocStoreSubscriber::start
@@ -33,16 +33,16 @@ namespace {
case APINotifyElement_New: {
// POC: Put this back once we decide to use Object Tracking
// ACAPI_Element_AttachObserver(elemType->elemHead.guid);
addon()->publishExternal(ElementEvent{newElem, BIMRecordID{elemType->elemHead.guid}});
addon()->publishExternal(ElementEvent{newElem, ElementID{elemType->elemHead.guid}});
} break;
case APINotifyElement_Change: {
addon()->publishExternal(ElementEvent{changeElem, BIMRecordID{elemType->elemHead.guid}});
addon()->publishExternal(ElementEvent{changeElem, ElementID{elemType->elemHead.guid}});
} break;
case APINotifyElement_Edit: {
addon()->publishExternal(ElementEvent{editElem, BIMRecordID{elemType->elemHead.guid}});
addon()->publishExternal(ElementEvent{editElem, ElementID{elemType->elemHead.guid}});
} break;
case APINotifyElement_Delete: {
addon()->publishExternal(ElementEvent{deleteElem, BIMRecordID{ elemType->elemHead.guid}});
addon()->publishExternal(ElementEvent{deleteElem, ElementID{ elemType->elemHead.guid}});
} break;
case APINotifyElement_BeginEvents:
addon()->publishExternal(ElementEvent{begin});
@@ -92,19 +92,22 @@ bool ElementSubscriber::receive(const Event& event) {
--------------------------------------------------------------------*/
bool ElementSubscriber::start() {
#ifdef ARCHICAD
#ifdef ServerMainVers_2700
auto err = ACAPI_Element_InstallElementObserver(elementChangedCallback);
#else
auto err = ACAPI_Notify_InstallElementObserver(elementChangedCallback);
#endif
GSErrCode err = ACAPI_Element_InstallElementObserver(elementChangedCallback);
if (err != NoError)
return false;
#ifdef ServerMainVers_2700
return (ACAPI_Element_CatchNewElement(nullptr, elementChangedCallback) == NoError);
#else
return (ACAPI_Notify_CatchNewElement(nullptr, elementChangedCallback) == NoError);
#endif
#else
return false;
#endif
} //ElementSubscriber::start
/*--------------------------------------------------------------------
Stop participation (release resources etc)
--------------------------------------------------------------------*/
void ElementSubscriber::stop() {
#ifdef ARCHICAD
ACAPI_Notification_CatchSelectionChange(nullptr);
#endif
} //ElementSubscriber::stop
@@ -2,7 +2,7 @@
#define SPECKLE_EVENT_ELEMENT_CHANGED_SUBSCRIBER
#include "Active/Event/Subscriber.h"
#include "Speckle/Database/Identity/BIMRecordID.h"
#include "Speckle/Database/Identity/RecordID.h"
namespace speckle::event {
@@ -51,6 +51,10 @@ namespace speckle::event {
@return True if the participant is able to continue
*/
virtual bool start() override;
/*!
Stop participation (release resources etc)
*/
void stop() override;
protected:
@@ -60,6 +64,8 @@ namespace speckle::event {
@return True if the event should be closed
*/
virtual bool handle(const ElementEvent& event) = 0;
speckle::database::ElementIDList m_changedElements;
};
}
@@ -3,12 +3,6 @@
#include "Speckle/Environment/Addon.h"
#include "Speckle/Event/Type/MenuEvent.h"
#ifdef ARCHICAD
#ifdef ServerMainVers_2700
#include <ACAPI_Interface.h>
#endif
#endif
using namespace active::environment;
using namespace active::event;
using namespace speckle::environment;
@@ -40,99 +34,6 @@ Subscriber::Subscription MenuSubscriber::subscription() const {
} //MenuSubscriber::subscription
/*--------------------------------------------------------------------
Set whether a menu item is enabled
item: The menu item index
state: True if the menu item is enabled
--------------------------------------------------------------------*/
void MenuSubscriber::setMenuEnabled(uint16_t item, bool state) const {
#ifdef ARCHICAD
API_MenuItemRef menuRef{};
menuRef.menuResID = m_resourceID;
menuRef.itemIndex = item;
#ifdef ServerMainVers_2700
GSFlags flags{};
if (ACAPI_MenuItem_GetMenuItemFlags(&menuRef, &flags) == NoError)
#else
Int32 flags = 0;
if (ACAPI_Interface(APIIo_GetMenuItemFlagsID, &menuRef, &flags) == NoError)
#endif //ServerMainVers_2600
{
bool isActive = ((flags & API_MenuItemDisabled) == 0);
if (isActive != state) {
if (state)
flags &= ~API_MenuItemDisabled;
else
flags |= API_MenuItemDisabled;
#ifdef ServerMainVers_2700
ACAPI_MenuItem_SetMenuItemFlags(&menuRef, &flags);
#else
ACAPI_Interface(APIIo_SetMenuItemFlagsID, &menuRef, &flags);
#endif //ServerMainVers_2600
}
}
#endif //ARCHICAD
} //MenuSubscriber::setMenuEnabled
/*--------------------------------------------------------------------
Set whether a menu item is checked
item: The menu item index
state: True if the menu item is checked
--------------------------------------------------------------------*/
void MenuSubscriber::setMenuChecked(uint16_t item, bool state) const {
#ifdef ARCHICAD
API_MenuItemRef menuRef{};
menuRef.menuResID = m_resourceID;
menuRef.itemIndex = item;
#ifdef ServerMainVers_2700
GSFlags flags{};
if (ACAPI_MenuItem_GetMenuItemFlags(&menuRef, &flags) == NoError)
#else
Int32 flags = 0;
if (ACAPI_Interface(APIIo_GetMenuItemFlagsID, &menuRef, &flags) == NoError)
#endif //ServerMainVers_2600
{
bool isChecked = ((flags & API_MenuItemChecked) != 0);
if (isChecked != state) {
if (state)
flags |= API_MenuItemChecked;
else
flags &= ~API_MenuItemChecked;
#ifdef ServerMainVers_2700
ACAPI_MenuItem_SetMenuItemFlags(&menuRef, &flags);
#else
ACAPI_Interface(APIIo_SetMenuItemFlagsID, &menuRef, &flags);
#endif //ServerMainVers_2600
}
}
#endif
} //MenuSubscriber::setMenuChecked
/*--------------------------------------------------------------------
Set the label of a menu item
item: The menu item index
text: The menu item text
--------------------------------------------------------------------*/
void MenuSubscriber::setMenuLabel(uint16_t item, const speckle::utility::String& text) const {
#ifdef ARCHICAD
API_MenuItemRef menuRef{};
menuRef.menuResID = m_resourceID;
menuRef.itemIndex = item;
GS::UniString label(text);
#ifdef ServerMainVers_2700
ACAPI_MenuItem_SetMenuItemText(&menuRef, nullptr, &label);
#else
ACAPI_Interface(APIIo_SetMenuItemTextID, &menuRef, nullptr, (void*) &label);
#endif
#endif
} //MenuSubscriber::setMenuLabel
/*--------------------------------------------------------------------
Receive a subscribed event
@@ -155,11 +56,7 @@ bool MenuSubscriber::receive(const Event& event) {
--------------------------------------------------------------------*/
bool MenuSubscriber::attach() {
#ifdef ARCHICAD
#ifdef ServerMainVers_2700
return (ACAPI_MenuItem_RegisterMenu(m_resourceID, m_helpID, m_location, m_flags) == NoError);
#else
return (ACAPI_Register_Menu(m_resourceID, m_helpID, m_location, m_flags) == NoError);
#endif
#else
return false;
#endif
@@ -173,11 +70,7 @@ bool MenuSubscriber::attach() {
--------------------------------------------------------------------*/
bool MenuSubscriber::start() {
#ifdef ARCHICAD
#ifdef ServerMainVers_2700
return (ACAPI_MenuItem_InstallMenuHandler(m_resourceID, menuCallback) == NoError);
#else
return (ACAPI_Install_MenuHandler(m_resourceID, menuCallback) == NoError);
#endif
#else
return false;
#endif
@@ -2,7 +2,6 @@
#define SPECKLE_EVENT_MENU_SUBSCRIBER
#include "Active/Event/Subscriber.h"
#include "Speckle/Utility/String.h"
#ifdef ARCHICAD
#include <ACAPinc.h>
@@ -61,24 +60,6 @@ namespace speckle::event {
@return The subscription list (an empty list will put the subscriber into a suspended state)
*/
virtual Subscription subscription() const override;
/*!
Set whether a menu item is enabled
@param item The menu item index
@param state True if the menu item is enabled
*/
void setMenuEnabled(uint16_t item, bool state) const;
/*!
Set whether a menu item is checked
@param item The menu item index
@param state True if the menu item is checked
*/
void setMenuChecked(uint16_t item, bool state) const;
/*!
Set the label of a menu item
@param item The menu item index
@param text The menu item text
*/
void setMenuLabel(uint16_t item, const speckle::utility::String& text) const;
// MARK: - Functions (mutating)
@@ -69,12 +69,8 @@ bool ProjectSubscriber::start() {
return true;
m_isStarted = true;
#ifdef ARCHICAD
#ifdef ServerMainVers_2700
return (ACAPI_ProjectOperation_CatchProjectEvent(API_AllNotificationMask, projectCallback) == NoError);
#else
return (ACAPI_Notify_CatchProjectEvent(API_AllNotificationMask, projectCallback) == NoError);
#endif //ServerMainVers_2600
#else //ARCHICAD
return false;
#endif
} //ProjectSubscriber::start
@@ -67,14 +67,10 @@ bool SelectionSubscriber::receive(const Event& event) {
--------------------------------------------------------------------*/
bool SelectionSubscriber::start() {
#ifdef ARCHICAD
#ifdef ServerMainVers_2700
return (ACAPI_Notification_CatchSelectionChange(selectionCallback) == NoError);
#else
return (ACAPI_Notify_CatchSelectionChange(selectionCallback) == NoError);
#endif //ServerMainVers_2600
#else //ARCHICAD
return false;
#endif //ARCHICAD
#endif
} //SelectionSubscriber::start
@@ -83,10 +79,6 @@ bool SelectionSubscriber::start() {
--------------------------------------------------------------------*/
void SelectionSubscriber::stop() {
#ifdef ARCHICAD
#ifdef ServerMainVers_2700
ACAPI_Notification_CatchSelectionChange(nullptr);
#else
ACAPI_Notify_CatchSelectionChange(nullptr);
#endif //ServerMainVers_2600
#endif //ARCHICAD
#endif
} //SelectionSubscriber::stop
+3 -4
View File
@@ -5,7 +5,6 @@
#include "Active/Utility/Guid.h"
#include "Active/Utility/String.h"
#include "Speckle/Database/Identity/BIMRecordID.h"
namespace speckle::event {
@@ -34,7 +33,7 @@ namespace speckle::event {
@param eventType An event type identifier
@param targetID The ID of the element targeted by the database transaction (nullopt = undefined, e.g. for a begin/end event)
*/
ElementEvent(Type eventType, database::BIMRecordID::Option targetID = std::nullopt) : Event{ID}, m_elementID{targetID}, m_eventType{eventType} {}
ElementEvent(Type eventType, database::ElementID::Option targetID = std::nullopt) : Event{ID}, m_elementID{targetID}, m_eventType{eventType} {}
/*!
Copy constructor
@param source The object to copy
@@ -51,12 +50,12 @@ namespace speckle::event {
Get the ID of the database transaction target element
@return The target element ID (nullopt = no target, e.g. a begin/end event)
*/
database::BIMRecordID::Option getElementID() const { return m_elementID; }
database::ElementID::Option getElmentID() const { return m_elementID; }
Type getEventType() const { return m_eventType; }
private:
///The ID of the target element (nullopt = undefined)
database::BIMRecordID::Option m_elementID;
database::ElementID::Option m_elementID;
///The specific database operation performed
Type m_eventType;
};

Some files were not shown because too many files have changed in this diff Show More