Files
qelectrotech-source-mirror/sources/import/edz/README.md
T
Shane Ringrose d56bca66da Harden EPLAN import: format detection, trim SDK, docs (M4)
- EdzArchive checks the archive magic up front: gives a clear message for
  zip-format .edz (not yet supported) and unrecognised data, instead of an
  opaque 7z decode error.
- Trim the vendored LZMA SDK headers to the decode closure actually used
  (removes 21 unused encoder/multithread/Xz/Aes headers; 18 .c + 18 .h remain).
- Add sources/import/edz/README.md documenting the feature, the data mapping
  and the bundled SDK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 08:14:53 +12:00

53 lines
2.4 KiB
Markdown

# EPLAN `.edz` part import
Imports a part from the **EPLAN Data Portal** (`.edz`) into a QElectroTech
element collection. The EPLAN Data Portal is the de-facto parts catalogue for
electrical CAD (ifm, Phoenix Contact, Siemens, Rittal, Weidmüller, Schneider…),
and components ship as `.edz`; this lets a QET user drop one straight into a
project.
## Using it
Right-click a writable collection folder in the elements panel →
**Import an EPLAN part (.edz)…** → choose the file. The generated element is
written into that folder and the panel reloads.
## What is imported
A `.edz` is a 7-Zip archive containing a part definition (`*.part.xml`), an EPLAN
macro (`*.ema`), a product image and metadata. Only the **portable** part data is
used:
- **Terminals** — each `<functiontemplate>` with a physical connection
designation becomes a QET terminal, labelled from its connection description.
- **Element information** — manufacturer, order number, designation and comment
fill the QET element-information fields used by the BOM / nomenclature.
- **Localized names** — one `<name lang="xx">` per language the part provides, so
the element labels itself in any QET UI language.
- **Symbol** — a generic symbol is generated (a body rectangle with one
west-facing terminal per pin). The EPLAN `.ema` macro geometry is **not**
reproduced: it is tokenised EPLAN PXF that references EPLAN's own symbol
libraries. A generic symbol is sufficient for wiring and BOM; swap in a nicer
symbol in the element editor afterwards if desired.
## Structure
| File | Role |
|------|------|
| `edzarchive.*` | Extract the `.edz` to a temp dir; locate `part.xml` |
| `edzsevenzip.*` | 7-Zip extraction via the bundled LZMA SDK (no external 7-Zip) |
| `edzpart.*` | Parse `part.xml` into a portable model |
| `edzelementbuilder.*` | Build the `.elmt` element from the model |
| `edzimporter.*` | Orchestrate the above and write into a collection folder |
| `lzma/` | Vendored public-domain LZMA SDK (decode-only subset) |
The non-UI classes are deliberately decoupled from the widget so they can be
tested headless.
## Bundled LZMA SDK
`lzma/` contains the decode-only subset of Igor Pavlov's **LZMA SDK** (public
domain — see `lzma/LZMA-SDK-LICENSE.txt`), so a `.edz` can be unpacked without an
external 7-Zip install. Only 7-Zip-format `.edz` files are supported; zip-format
packages are detected and reported but not yet handled.