AlibrePDMObjectModel 1.0.3
See the version list below for details.
dotnet add package AlibrePDMObjectModel --version 1.0.3
NuGet\Install-Package AlibrePDMObjectModel -Version 1.0.3
<PackageReference Include="AlibrePDMObjectModel" Version="1.0.3" />
<PackageVersion Include="AlibrePDMObjectModel" Version="1.0.3" />
<PackageReference Include="AlibrePDMObjectModel" />
paket add AlibrePDMObjectModel --version 1.0.3
#r "nuget: AlibrePDMObjectModel, 1.0.3"
#:package AlibrePDMObjectModel@1.0.3
#addin nuget:?package=AlibrePDMObjectModel&version=1.0.3
#tool nuget:?package=AlibrePDMObjectModel&version=1.0.3
AlibrePDMObjectModel (.NET library)
AlibrePDMObjectModel wraps the Alibre PDM vault API (safes, projects, libraries, folders, files, properties, classes, version history) in a VBA-style object model. PDMApplication is the entry point. Call it from VB.NET or C#.
| Package ID | AlibrePDMObjectModel |
| Entry point | PDMApplication |
| Target frameworks | net481, net8.0 |
| Runtime | Windows only, x64 |
| License | MIT |
Requirements
- Windows x64.
- Alibre Design 29.x with Alibre PDM, installed. The library drives PDM over COM. It does not redistribute
AlibreX.dll; it loads that at runtime from your licensed Alibre install. - A reachable Alibre PDM vault.
Installation
dotnet add package AlibrePDMObjectModel
Or add a PackageReference:
<PackageReference Include="AlibrePDMObjectModel" Version="1.0.3" />
Getting started
Connect with credentials, or reuse a PDM Browser session you already signed into:
Dim app As New PDMApplication()
app.Connect("http://localhost:8099/", "MYDOMAIN", "user", "password")
' Or reuse the Alibre UI's connection:
' app.UseActiveConnection()
For Each safe In app.Safes
Console.WriteLine(safe.Name)
Next
Browse a safe and read file metadata:
Dim safe = app.GetSafe("Alibre Safe")
Dim proj = safe.Projects("bore")
For Each f As PDMFile In proj.Files
Console.WriteLine($"{f.FullName} v{f.CurrentVersion}")
For Each p As PDMProperty In f.Properties
Console.WriteLine($" {p.DisplayName} = {p.ValueText}")
Next
Next
C# reads the same way:
var app = new PDMApplication();
app.UseActiveConnection();
var safe = app.GetSafe("Alibre Safe");
foreach (PDMFile f in safe.Projects["bore"].Files)
Console.WriteLine($"{f.FullName} v{f.CurrentVersion}");
Object model
PDMApplication: entry point.Connect/UseActiveConnection/Disconnect,Safes,GetSafe(name).PDMSafe:Projects,Libraries,Classes,PropertyDefinitions.PDMFolder:Folders,Files, create / upload / check-in.PDMFile:Properties,History,Lock/Unlock,CheckIn,Rename,SetPropertyValue.PDMProperty/PDMPropertyDefinition: metadata values and the definitions behind them.PDMClass/PDMClassDataItem: vault classes and their data items.
Every call throws a PDMException on failure, with a friendly message. PDMApplication.LastError holds the most recent one.
Not implemented in this build
PDMFile.CheckIn and PDMFolder.UploadFiles throw NotImplementedException. The asynchronous PDM upload/check-in hangs when driven over a reused Alibre Design connection, because the completion callback never reaches the calling thread. Check in and upload from the Alibre PDM Browser instead.
Everything else is verified against a live vault: create, copy, move, rename, delete, lock, unlock, property get and set, revisions, and the full read and browse surface.
PDMFile.Copy returns Nothing: the copied file materializes asynchronously. Wait, then look the file up by name in the destination folder.
Notes
One client at a time holds the active PDM connection. A second concurrent client gets "another client instance is already accessing the Server."
© 2026 Stephen S. Mitchell. Released under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Framework | net481 is compatible. |
-
.NETFramework 4.8.1
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v1.0.3 - Package metadata only: removed the misleading "VBA" tag (this is a VBA-style object model for .NET, not a VBA package) and replaced it with object-model and COM. No code changes from v1.0.2. v1.0.2 -Fix: PDMFolder.Files and PDMFolder.Folders no longer throw NullReferenceException on a freshly created project (the COM collection is Nothing until the folder is re-fetched); they now return an empty collection. Disabled (throw NotImplementedException instead of failing badly, implementation retained): PDMFile.CheckIn and PDMFolder.UploadFiles, because the asynchronous PDM upload/check-in hangs when driven over a reused Alibre Design connection (the completion callback never reaches the STA thread); Use the Alibre PDM Browser for check-in and upload. Fix: PDMFolder.CreateFolder returned a folder whose underlying COM object was unpopulated, which made any later use of it (for example PDMFile.Move into that folder) fail with a null reference; it now re-fetches the new folder by name. PDMFile.Move also rejects an unbound destination folder with a clear message. All other operations (create/copy/move/rename/delete/lock/unlock/property get+set/revisions and the full read+browse surface) are verified against a live vault. v1.0.1 - PDMFiles.Item(name) falls back to Name/FullName enumeration when COM GetFileItemByName returns nothing.