Repository navigation
EasyPDM v0.3
The news we've been waiting a long time to share: EasyPDM now works with Autodesk Inventor!
After many hours of testing, we're thrilled to announce full Inventor support — the same Upload/Download macros you already know from SolidWorks and FreeCAD: upload and download straight from within the CAD program, automatic assembly-tree detection, STEP/PDF export, and full PDM-link tracking.
Alongside that, technical drawing handling is significantly improved across all three CAD integrations — a drawing now uploads as its own real attachment (instead of a guessed 3D-view preview), automatically matched to the right item, with an option to export it to PDF.
And on top of that: a new "Add to a project" checkbox when creating an item, closing/reopening projects, per-project client second names, and a good number of bug fixes reported during testing.
Added
- Technical drawings are now handled properly instead of being confused with a rendered
3D-view PDF. FreeCAD detects an actual TechDraw drawing page in the document (activating
it first if needed) and exports the PDF from that page instead of guessing from raw shapes. SolidWorks recognizes an open Drawing (.SLDDRW) and matches it to the Part/Assembly it documents by reading its views' own references to already-linked models first, falling back to the item number in the drawing's filename only when that finds nothing — if the drawing's views point at more than one distinct item (e.g. an assembly
drawing with a detail view of a single part), a browser window opens to pick the right one (with a Cancel button, and a clear message if none of the candidates could actually be found), with an "export PDF" option right there too. Either way it uploads as its own
"Rysunki"/"Drawings" attachment — separate from, and accumulating alongside, the part's own CAD file (one drawing per revision) — and can optionally export/upload the drawing sheet itself as the item's PDF, upgrading it from a rendered 3D-view snapshot to a real
print-quality drawing. Downloading a Part/Assembly now also fetches its current drawing (if any) and saves it next to the model file, without opening it. If the drawing documents a Part/Assembly that has never itself been uploaded to EasyPDM, the macro now offers to upload that Part/Assembly first (full flow, including picking its number/name/revision in the browser) and then continues straight into the drawing upload, instead of requiring a separate macro run on the part first. If the drawing instead documents SEVERAL distinct elements and only some of them are already in EasyPDM (e.g. an assembly drawing with an extra detail view of one of its own components that was never uploaded on its own), the upload is now blocked with a message listing what's missing, rather than silently attaching the drawing to just the linked item(s) and leaving the rest untracked — this also catches a component whose local link is stale (the item it used to point at was since deleted from EasyPDM), which previously still counted as "linked" and let the upload through. - Clients tab: hovering a client's row in the list now reveals a small "+" button next to its name — a shortcut to add another Name 2 to that client without going through the regular "Add client" dialog's search. The client's own name comes pre-filled and locked; only the new Name 2 needs typing. A Name 2's own detail panel now shows which client it belongs to right at the top, and its delete button moved out of the list (no more trash icon next to each Name 2 row) into the panel itself, in the same spot the client's own delete button already sits. Its confirmation dialog no longer says "Name 2" (a term with no meaning to most users) — just a plain "Delete?" naming the entry itself, with "No"/
"Delete" buttons. - SolidWorks: uploading a document that has never been saved no longer just fails with "save it first" — the macro now asks whether to save it as a new item (name/revision picked in the browser, same as any other new upload) and, on confirmation, gives it its
first location on disk itself once that's resolved, instead of requiring a manual Ctrl+S beforehand. If an assembly being uploaded contains several such never-saved (virtual) components, a single warning now lists all of them upfront — they still won't be uploaded (there's nothing to read them from), but at least it's no longer silent. - A project can now optionally point at one specific Name 2 of its client (not just the
client itself), picked right next to the Client field in the project's own form. The project selector dropdown and the project's own row at the top of its structure now show "Project (Client, Name 2)" instead of the item count in parentheses, which wasn't particularly useful there. - A project can now be closed (and reopened) with a single button in its own properties. A closed project drops out of the project selector, "My projects", and the picker shown when adding a new item — but nothing about it actually changes: its items stay fully searchable
through "Whole database", and the button flips it back open at any time. The project list everywhere is also now sorted by client name, then the client's Name 2, then the project's own name, instead of just alphabetically by project name. - New CAD integration:
EasyPDM.Inventor/EasyPDMUpload.basandEasyPDMDownload.bas, VBA macros for Autodesk Inventor, ported fromEasyPDM.SolidWorks/with the same
browser-based upload/download flow, STEP/PDF export, and automatic assembly-tree
detection, and PDM-link tracking via custom iProperties
(EasyPDM_LinkId/EasyPDM_LinkNumber). Live-tested end to end on Autodesk Inventor
2027.1, including two install-specific COM automation quirks worth knowing about if this ever needs touching again — seeEasyPDM.Inventor/README.md's "Known risks" section:PropertySet.Addrejects a value passed as a bare variable (must be forced by-value, e.g.value & ""), and thekFileBrowseIOMechanismtranslator constant is13059, not a small number as its name might suggest. - The "New item" dialog (both the plain web-UI one and the CAD-macro browser-ticket popup) now has an "Add to a project" checkbox, checked by default, next to the project picker — unchecking it creates the Part/Assembly in the database without assigning it to any project (same state as "Remove from structure" + detaching from a project: reachable only
through "Whole database"). Meant for assembly components a CAD macro creates
automatically while uploading: the macro attaches each new component to the parent
assembly's BOM in a separate call regardless of the component's own project, so
unchecking this for those avoids every one of them also cluttering some project's tree as
an independent root item — they end up visible only as BOM entries under the assembly.
Only shown for Part/Assembly (a project-less Folder wouldn't have anywhere to exist).
Fixed
EasyPDM.SolidWorks/EasyPDMUpload.bas/EasyPDMDownload.bashad Unix line endings
(LF only) — SolidWorks' VBA "Import File" expects Windows-style CRLF and fails outright
with "Input past end of file" on LF-only source, so these macro files failed to import at
all. Content is otherwise unchanged.- All three CAD macros (SolidWorks, Inventor, FreeCAD): uploading to an item already
linked to PDM asked "export STEP?"/"export PDF?" before checking whether the item's
status even allows the upload to proceed — a "wydany" item's own "create a new
revision?" confirmation (or a "sprawdzany" item's hard block) came AFTER those export
questions, so answering them was wasted whenever the user then declined the revision or
the upload turned out to be blocked. The export questions now come last, only once the
status/revision check has actually passed. - Item properties: the CAD and drawing attachment lists (each accumulates one entry per
revision) now show the newest revision at the top, with a small visual gap before the
older revisions below, instead of listing them in upload order (oldest first) with no
distinction between the current file and its history. - FreeCAD: declining to create new components while sending an assembly ("No" on the
"N new components detected" prompt) used to drop the ENTIRE component tree, including
components already linked to PDM that only needed a BOM relation, not a new upload.
"No" now does what it always said it did — skips creating/uploading not-yet-linked
components only; already-linked ones (regardless of their status) still get attached to
the structure, matching the SolidWorks/Inventor macros' existing, correct behavior. - The "pending request from a CAD macro" new-item dialog now shows which local file it's
currently for (Zapisywany plik: …) — an assembly upload can pop this dialog once per
newly-discovered component, and without a reminder of which file is currently open it was
easy to lose track partway through picking the item kind. - Every CAD macro's download flow (SolidWorks, Inventor, FreeCAD) now asks the server
directly which attachment matches an item's current revision, instead of guessing it by
parsing attachment filenames against the macros' own naming convention. Attachments now
carry the item's revision number from the moment they're uploaded
(item_attachments.revision_number); the old filename-parsing guess stays only as a
fallback for attachments uploaded before this change. This closes the same category of
bug fixed earlier in this release (a PDF export attachment being picked instead of the
real CAD file) at the source, rather than only patching around it. - Item responses now carry two more server-computed fields the CAD macros (and, for
isLocked, the web frontend) previously each recomputed on their own:
sanitizedFileName/sanitizedName(the Windows-illegal-character stripping every macro
used to do independently before building a target filename, with a previously-diverging
fallback for an empty name — now one shared implementation) andisLocked(the "does
attaching a file to this item require a new revision" rule, now read from the server
instead of re-derived from the raw status string in three separate macro files). - FreeCAD: matching the active document against an already-existing PDM item (the
"this file looks like it was already sent before" check on upload) no longer downloads
the entire item table just to check one document — it now looks the parsed item number
up directly, the same targeted endpoint SolidWorks/Inventor already use for their
drawing-to-item matching. The assembly-tree scan (checking many components at once)
still fetches the full list once and reuses it, since that stays cheaper than one
request per component for a non-trivial assembly. - SolidWorks: downloading an item whose name contains characters outside the Windows
machine's current ANSI code page — e.g. Polish diacritics on a non-Polish system — could
fail outright with "Bad file name or number", since VBA's legacy file I/O statements
convert the path through that code page before touching disk. Local file writes for
downloaded attachment bytes now go through ADODB.Stream instead, which handles the full
Unicode filename correctly. - SolidWorks: uploading a file whose PDM-derived name contains non-ASCII characters (e.g.
Polish diacritics) sent that name mangled through the Windows machine's current ANSI code
page inside the upload's multipart HTTP request, arriving at the server (which assumes
UTF-8 throughout) as invalid byte sequences — visible as literal replacement characters
wherever that file's name was shown afterward. It's now encoded as UTF-8 instead. Existing
attachments already uploaded with a mangled name need re-uploading to pick up the fix.