Skip to main content

icadkit

A Rust-based Python reader for iCAD SX .icd files. Inspect file headers, list embedded Parasolid resources, extract validated X_B payloads, and read resource-level geometry and boundary representations (B-Rep).

icadkit is experimental. It preserves source coordinates and unknown content; it does not reconstruct complete iCAD models, assembly placement or drawings. See supported capabilities and limits before choosing it for your files.

Installation

Python 3.10–3.14 with the standard GIL is supported. Wheel targets are Linux x86_64 (glibc 2.28+), Windows x86_64 and macOS ARM64 (11+). Install a wheel matching your platform:

python -m pip install /path/to/icadkit-0.1.0-cp310-abi3-PLATFORM.whl

Replace the path with the actual wheel filename. Version 0.1.0 is not yet published on PyPI. To install from a source checkout or source distribution, install Rust 1.88+ and a C linker, then run this in the source directory:

python -m pip install .

The native extension bundles parasolid-core and has no Python runtime dependencies. iCAD, Wine and an external SDK are not required. Files needing a schema absent from the built-in profiles require an explicitly supplied compatible schema catalog.

Quick start

import icadkit

info = icadkit.inspect("model.icd")
print(info.header.byte_order, info.header.name_cp932_candidate)

doc = icadkit.read("model.icd")
for resource in doc.resources:
    print(resource.resource_id, resource.encoding)
    extracted = doc.extract(resource.resource_id)
    print(len(extracted.payload), extracted.source.payload_sha256)

    geometry = doc.read_geometry(resource.resource_id)
    print(geometry.status, geometry.diagnostics)
    if geometry.brep is not None:
        print(geometry.brep.counts)
    geometry.require_complete("brep")  # Raises if this scope is incomplete.

inspect() reads only the leading structure. read() owns the input and indexes resources; decompression and geometry parsing happen on request. A successful extraction or B-Rep applies to that resource and scope only. An empty resource list does not establish that a file contains no geometry.

Paths can be strings or Path objects. Passing bytes means file contents, not a filename. Structured format errors derive from icadkit.IcadError; file access errors use OSError. See the Python API and CLI reference for limits, diagnostics, schema selection and pagination.

Command line

icadkit --version
icadkit info --json
icadkit inspect model.icd --json
icadkit resources model.icd --json
icadkit extract model.icd RESOURCE_ID --output body.x_b --json
icadkit check model.icd --target geometry --resource RESOURCE_ID --json

Use an ID returned by resources in place of RESOURCE_ID. Extraction creates a new file and refuses to overwrite an existing file. python -m icadkit provides the same commands. JSON output includes a schema version, scope status and diagnostics; exit codes are documented in the reference.

License

icadkit is offered under PolyForm Noncommercial 1.0.0. Commercial licenses are available from UnRobotics Inc.. Dependencies retain their own licenses and copyright notices. Read the licensing guide, license notice and third-party notices for details.

Metadata

Release files for icadkit 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for icadkit 0.1.0
File Size Uploaded Provenance
icadkit-0.1.0.tar.gz 155.8 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for icadkit 0.1.0
File Interpreter ABI Platform
icadkit-0.1.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
icadkit-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
icadkit-0.1.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 2.1 MB

Release files / icadkit-0.1.0.tar.gz

Download URL icadkit-0.1.0.tar.gz
Size 155.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d341dae07a430a0be7d6c2b277091308319f9ce143d1e6fbf9f03961d9568391
BLAKE2b-256 checksum
How to use checksums
dcc1fa51a22ec0c4fa92413c274e500d8b3ee50be351f6d70fdec6e7ac7e2a29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / icadkit-0.1.0-cp310-abi3-win_amd64.whl

Download URL icadkit-0.1.0-cp310-abi3-win_amd64.whl
Size 572.2 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
41ee611e95de737aa3652b16c8a15e2eb350f04af1b0f9549758fc1d856e8828
BLAKE2b-256 checksum
How to use checksums
5c5349ee34c25712810eefd148952b64554f59e69b7d4b3d059b7d1aa6eaa96e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / icadkit-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL icadkit-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl
Size 740.6 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
69a4f031c9247e6dfef32feb77dec054a056a0af2dcd6d659276e648f1385367
BLAKE2b-256 checksum
How to use checksums
fe3c0f4c22a6615f76fe394da3dbcecbce0b0c9fa0564a694b17068b0c388a89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / icadkit-0.1.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL icadkit-0.1.0-cp310-abi3-macosx_11_0_arm64.whl
Size 665.4 kB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4ce0ebf5bc66fb976a87a5c1e94e44bfb7aaf96b5b8468313458284397c65a77
BLAKE2b-256 checksum
How to use checksums
5e6bb7a28d063819cbceddbb8d50e10168e6765c58e1875a1273c1a85b8c983b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Security for icadkit 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 4 files in this release have been uploaded with provenance metadata.

Select from 4 files

Attestation for icadkit-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page