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")
|