Skip to main content

Minimal read-only DWG parser (Rust core + Python API)

Project description

ezdwg

PyPI version

Minimal DWG (R14-R2018 / AC1014-AC1032) reader with a Python API inspired by ezdxf. This project is DWG read-focused while providing a native AC1015 writer for basic entities.

Documentation: https://monozukuri-ai.github.io/ezdwg/

Status

  • High-level API (ezdwg.read): R14 / AC1014 (experimental), R2000 / AC1015, R2004 / AC1018, R2007 / AC1021, R2010 / AC1024, R2013 / AC1027, R2018 / AC1032
  • Raw API (ezdwg.raw): R14 / AC1014 (version detect + object headers), R2000 / AC1015, R2004 / AC1018, R2007 / AC1021, plus native AC1024/AC1027/AC1032 support for object listing and LINE/ARC/LWPOLYLINE decode
  • High-level entities: LINE, ARC, LWPOLYLINE, POINT, CIRCLE, ELLIPSE, TEXT, MTEXT, DIMENSION (linear + radius + diameter)
  • Additional raw decode: INSERT (+ low-level POLYLINE/VERTEX helpers)
  • Output units/angles: high-level API returns ARC angles in degrees

Install

Install from PyPI:

pip install ezdwg

Plotting (optional):

pip install "ezdwg[plot]"

DWG to DXF conversion (optional, ezdxf backend):

pip install "ezdwg[dxf]"

If you want to contribute or develop locally, you can install from source: Rust toolchain is required (PyO3 build).

git clone https://github.com/monozukuri-ai/ezdwg.git
cd ezdwg
maturin develop
pip install -e .

Quick Start

import ezdwg

doc = ezdwg.read("path/to/file.dwg")
msp = doc.modelspace()

for e in msp.query("LINE LWPOLYLINE ARC CIRCLE ELLIPSE POINT TEXT MTEXT DIMENSION"):
    print(e.dxftype, e.handle, e.dxf)

Plot in matplotlib:

import ezdwg

doc = ezdwg.read("path/to/file.dwg")
doc.plot()

CLI

uvx ezdwg --version
uvx ezdwg inspect examples/data/line_2000.dwg
uvx ezdwg inspect examples/data/line_2000.dwg --verbose
uvx --from "ezdwg[dxf]" ezdwg convert examples/data/line_2000.dwg /tmp/line_2000_out.dxf
uvx --from "ezdwg[dxf]" ezdwg convert examples/data/arc_2000.dwg /tmp/arc_2000_out.dxf --types "ARC" --dxf-version R2010
uvx ezdwg write examples/data/line_2000.dwg /tmp/line_2000_out.dwg --types "LINE" --dwg-version AC1015

DWG to DXF

ezdxf is used as the DXF writing backend.

import ezdwg

result = ezdwg.to_dxf(
    "examples/data/line_2000.dwg",
    "/tmp/line_2000_out.dxf",
    types="LINE ARC LWPOLYLINE",
    dxf_version="R2010",
)
print(result)

Or from an already opened document/layout:

doc = ezdwg.read("examples/data/line_2000.dwg")
doc.export_dxf("/tmp/line_2000_out.dxf")

DWG to DWG (Native AC1015 Writer)

import ezdwg

result = ezdwg.to_dwg(
    "examples/data/line_2000.dwg",
    "/tmp/line_2000_rewrite.dwg",
    version="AC1015",
)
print(result)

Or from an already opened document/layout:

doc = ezdwg.read("examples/data/line_2000.dwg")
doc.export_dwg("/tmp/line_2000_rewrite.dwg", version="AC1015")

Examples

Sample DWG files are available under examples/data/.

python examples/basic_read.py
python examples/query_types.py
python examples/plot.py
python examples/text_mtext.py
python examples/dimensions.py
python examples/raw_insert_2004.py
python examples/convert_to_dxf.py

Low-Level API

If you need raw decode access:

from ezdwg import raw

raw.decode_line_entities("path/to/file.dwg")

Limitations

  • Native DWG write currently targets AC1015 only
  • Native DWG write supports a subset of entities: LINE/RAY/XLINE/POINT/ARC/CIRCLE/LWPOLYLINE/TEXT/MTEXT
  • High-level API supports R14 (AC1014, experimental), R2000 (AC1015), R2004 (AC1018), R2007 (AC1021), R2010 (AC1024), R2013 (AC1027), and R2018 (AC1032)
  • AC1014 currently has stable version detection/object-header listing; entity geometry decoding coverage is limited
  • AC1021/AC1024/AC1027/AC1032 use native decode for LINE/ARC/LWPOLYLINE/POINT/CIRCLE/ELLIPSE and are regression-tested against paired DXF samples
  • TEXT/MTEXT/DIMENSION decoders now use version-aware common header paths internally; R2007+ dedicated sample regression coverage is still pending
  • AC1021/AC1024/AC1027/AC1032 entity style/layer color resolution is currently best-effort on some files
  • Legacy POLYLINE/VERTEX/SEQEND samples are not yet covered in AC1018 test data
  • ARC angles in raw API are radians (high‑level API converts to degrees)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ezdwg-0.6.0.tar.gz (3.3 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ezdwg-0.6.0-cp310-abi3-win_amd64.whl (656.2 kB view details)

Uploaded CPython 3.10+Windows x86-64

ezdwg-0.6.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (730.4 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

ezdwg-0.6.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (1.3 MB view details)

Uploaded CPython 3.10+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file ezdwg-0.6.0.tar.gz.

File metadata

  • Download URL: ezdwg-0.6.0.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.4

File hashes

Hashes for ezdwg-0.6.0.tar.gz
Algorithm Hash digest
SHA256 c44e3d683f81c93052ee10493279768ca055b5399c41067012d3fd2386e6e765
MD5 3318513bde2d3846aa16cdafced0a2ab
BLAKE2b-256 3bd2f8cf230752e5a94d2d2217db7f089153b7b325fd6ff2459a8162113b6fe9

See more details on using hashes here.

File details

Details for the file ezdwg-0.6.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: ezdwg-0.6.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 656.2 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.4

File hashes

Hashes for ezdwg-0.6.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c425b96225337c7974d71dc517c3bb45a2a1c5d0e28c3b8b94fc9a0f23ea18e6
MD5 5a6407200aed1bdf7322524c3ac4c258
BLAKE2b-256 c2febc19b64bd9f86be6d1e7001935bed66ed479bae268a1a49b46b011ce9b42

See more details on using hashes here.

File details

Details for the file ezdwg-0.6.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ezdwg-0.6.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c3adfe188551aa758755ef5a936ff08fbb448b4eb0b93340e8ea23b307a41b1
MD5 0427c46b61dfd1d27926e15386eb7a19
BLAKE2b-256 ed6c9cbd69966f5fc6978f929615462e95f1d0b271ebcae0db4e8417e7bfde87

See more details on using hashes here.

File details

Details for the file ezdwg-0.6.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for ezdwg-0.6.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 0c56b79ecf448851568f9b3cd76f484059bdfc21e2106689b8a5fdadb234dd7d
MD5 83e084c6658c43ebee45c08433772878
BLAKE2b-256 73861a68be9f1f302b125a26f627219eb48d7ba825731b5dbcf9b19714dda355

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page