15 lines
887 B
C#
15 lines
887 B
C#
namespace PRecAnnot.Plant3D2026;
|
|
|
|
public sealed record Plant3D2026Availability(bool IsAvailable, string InstallDirectory, IReadOnlyList<string> MissingAssemblies)
|
|
{
|
|
public static Plant3D2026Availability Detect(string installDirectory)
|
|
{
|
|
var expected = new[] { "AcMgd.dll", "AcDbMgd.dll", "AcCoreMgd.dll", "PnPDataLinks.dll", Path.Combine("PLNT3D", "PnPProjectManagerMgd.dll"), Path.Combine("PLNT3D", "PnP3dObjectsMgd.dll") };
|
|
var missing = expected.Where(x => !File.Exists(Path.Combine(installDirectory, x))).ToArray();
|
|
return new(missing.Length == 0, installDirectory, missing);
|
|
}
|
|
}
|
|
|
|
public sealed class Plant3D2026BlockedException(Plant3D2026Availability availability)
|
|
: InvalidOperationException($"Plant 3D 2026 assemblies are unavailable at '{availability.InstallDirectory}'. Missing: {string.Join(", ", availability.MissingAssemblies)}") { }
|