File: r12writer2.py

package info (click to toggle)
ezdxf 1.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 104,528 kB
  • sloc: python: 182,341; makefile: 116; lisp: 20; ansic: 4
file content (68 lines) | stat: -rw-r--r-- 1,992 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Copyright (c) 2018-2022 Manfred Moitzi
# License: MIT License
from random import random
import pathlib
from ezdxf.addons import r12writer

CWD = pathlib.Path("~/Desktop/Outbox").expanduser()
if not CWD.exists():
    CWD = pathlib.Path(".")

# ------------------------------------------------------------------------------
# This example shows how to use the fast DXF R12 writer add-on.
#
# docs: https://ezdxf.mozman.at/docs/addons/r12writer.html
# ------------------------------------------------------------------------------

MAX_X_COORD = 1000.0
MAX_Y_COORD = 1000.0
CIRCLE_COUNT = 10000

with r12writer(CWD / "quick_and_dirty_dxf_r12.dxf") as dxf:
    dxf.add_line((0, 0), (17, 23))
    dxf.add_circle((0, 0), radius=2)
    dxf.add_arc((0, 0), radius=3, start=0, end=175)
    dxf.add_solid([(0, 0), (1, 0), (0, 1), (1, 1)])
    dxf.add_point((1.5, 1.5))
    dxf.add_polyline([(5, 5), (7, 3), (7, 6)])  # 2d polyline
    dxf.add_polyline([(4, 3, 2), (8, 5, 0), (2, 4, 9)])  # 3d polyline
    dxf.add_text("test the text entity", align="MIDDLE_CENTER")

with r12writer(CWD / "many_circles.dxf") as dxf:
    for i in range(CIRCLE_COUNT):
        dxf.add_circle(
            (MAX_X_COORD * random(), MAX_Y_COORD * random()), radius=2
        )

with r12writer(CWD / "many_circles_bin.dxf", fmt="bin") as dxf:
    for i in range(CIRCLE_COUNT):
        dxf.add_circle(
            (MAX_X_COORD * random(), MAX_Y_COORD * random()), radius=2
        )

LINETYPES = [
    "CONTINUOUS",
    "CENTER",
    "CENTERX2",
    "CENTER2",
    "DASHED",
    "DASHEDX2",
    "DASHED2",
    "PHANTOM",
    "PHANTOMX2",
    "PHANTOM2",
    "DASHDOT",
    "DASHDOTX2",
    "DASHDOT2",
    "DOT",
    "DOTX2",
    "DOT2",
    "DIVIDE",
    "DIVIDEX2",
    "DIVIDE2",
]

with r12writer(CWD / "r12_linetypes.dxf", fixed_tables=True) as dxf:
    for n, ltype in enumerate(LINETYPES):
        dxf.add_line((0, n), (10, n), linetype=ltype)
        dxf.add_text(ltype, (0, n + 0.1), height=0.25, style="OpenSans")