def test_rotate_local_x(): ucs = UCS() assert ucs.ux == (1, 0, 0) # WCS x-axis assert ucs.uy == (0, 1, 0) # WCS y-axis assert ucs.uz == (0, 0, 1) # WCS z-axis ucs = ucs.rotate_local_x(pi / 2) assert ucs.ux.isclose((1, 0, 0)) # WCS x-axis assert ucs.uy.isclose((0, 0, 1)) # WCS z-axis assert ucs.uz.isclose((0, -1, 0)) # WCS -y-axis
# Copyright (c) 2020 Manfred Moitzi # License: MIT License from pathlib import Path OUT_DIR = Path('~/Desktop/Outbox').expanduser() import math import ezdxf from ezdxf.math import UCS doc = ezdxf.new('R2010') msp = doc.modelspace() ucs = UCS() # New default UCS # All rotation angles in radians, and rotation # methods always return a new UCS. ucs = ucs.rotate_local_x(math.radians(-45)) circle = msp.add_circle( # Use UCS coordinates to place the 2d circle in 3d space center=(0, 0, 2), radius=1, dxfattribs={'color': 1}) circle.transform(ucs.matrix) # mark center point of circle in WCS msp.add_point((0, 0, 2), dxfattribs={'color': 1}).transform(ucs.matrix) ucs.render_axis(msp) doc.saveas(OUT_DIR / 'ucs_circle.dxf')