def test_rotate_local_y(): 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_y(pi / 2) assert ucs.ux.isclose((0, 0, -1)) # WCS -z-axis assert ucs.uy.isclose((0, 1, 0)) # WCS y-axis assert ucs.uz.isclose((1, 0, 0)) # WCS x-axis
ucs = UCS(origin=(1, 2, 0)).rotate_local_x(math.radians(15)) blockref = msp.add_blockref('CSYS', insert=(0, 0, 0)) blockref.transform_to_wcs(ucs) doc.saveas(OUT_DIR / 'ucs_insert_02.dxf') # New UCS at the translated location, axis aligned to the WCS ucs = UCS((-3, -1, 1)) # Transform an already placed block reference, including # the transformation of the established OCS. blockref.transform_to_wcs(ucs) doc.saveas(OUT_DIR / 'ucs_insert_03.dxf') # Rotate a block references with an established OCS around the # block y-axis about 90 degree # Get UCS at the block reference insert location, UCS axis aligned # to the block axis. ucs = blockref.ucs() # Rotate UCS around the local y-axis. ucs = ucs.rotate_local_y(math.radians(-90)) # Reset block reference parameters to place block reference in # UCS origin, without any rotation and OCS. blockref.reset_transformation() # Transform block reference from UCS to WCS blockref.transform_to_wcs(ucs) doc.saveas(OUT_DIR / 'ucs_insert_04.dxf')