File: mesh_transformer.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 (69 lines) | stat: -rw-r--r-- 1,921 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
69
# Copyright (c) 2020-2022, Manfred Moitzi
# License: MIT License
import pathlib
import ezdxf
from ezdxf import colors
from ezdxf.gfxattribs import GfxAttribs
from ezdxf.render import forms

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

# ------------------------------------------------------------------------------
# This example shows how to use MeshTransformer class.
#
# docs: https://ezdxf.mozman.at/docs/render/mesh.html#meshtransformer
# ------------------------------------------------------------------------------


def main():
    # cube and cylinder are MeshTransformer instances:
    cube = forms.cube().scale_uniform(10).subdivide(2)
    cylinder = forms.cylinder(12, radius=5, top_center=(0, 0, 10)).translate(
        0, 20
    )

    doc = ezdxf.new()
    msp = doc.modelspace()

    red = GfxAttribs(color=colors.RED)
    green = GfxAttribs(color=colors.GREEN)
    blue = GfxAttribs(color=colors.BLUE)

    # render the cube as MESH entity:
    cube.render_mesh(msp, dxfattribs=red)

    # translate the cube:
    cube.translate(20)

    # render the cube as POLYFACE entity, a POLYLINE entity in reality:
    cube.render_polyface(msp, dxfattribs=green)

    # translate the cube:
    cube.translate(20)

    # render the cube as 3DFACE entities:
    cube.render_3dfaces(msp, dxfattribs=blue)

    # render the cylinder as MESH entity:
    cylinder.render_mesh(msp, dxfattribs=red)

    # translate the cylinder:
    cylinder.translate(20)

    # render the cylinder as POLYFACE entity, a POLYLINE entity in reality:
    cylinder.render_polyface(msp, dxfattribs=green)

    # translate the cylinder:
    cylinder.translate(20)

    # render the cube as 3DFACE entities:
    cylinder.render_3dfaces(msp, dxfattribs=blue)

    doc.set_modelspace_vport(30, center=(30, 20))
    doc.saveas(CWD / "meshes.dxf")


if __name__ == "__main__":
    main()