Skip to content

EasyPDM v0.3

Choose a tag to compare

@github-actions github-actions released this 17 Sep 20:27
· 54 commits to main since this release

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.bas and EasyPDMDownload.bas, VBA macros for Autodesk Inventor, ported from EasyPDM.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 — see EasyPDM.Inventor/README.md's "Known risks" section: PropertySet.Add rejects a value passed as a bare variable (must be forced by-value, e.g. value & ""), and the kFileBrowseIOMechanism translator constant is 13059, 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.bas had 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) and isLocked (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.