1# Copyright (c) 2019 Manfred Moitzi 2# License: MIT License 3 4import ezdxf 5import pytest 6 7from ezdxf.render.dimension import LinearDimension, DimStyleOverride 8 9 10@pytest.fixture(scope='module') 11def dwg(): 12 return ezdxf.new('R2007', setup=True) 13 14 15def test_linear_dimension_with_one_tolerance(dwg): 16 msp = dwg.modelspace() 17 dimline = msp.add_linear_dim(base=(0, 10), p1=(0, 0), p2=(100, 0)) 18 override = { 19 'dimlfac': 1, 20 'dimtol': 1, 21 'dimtfac': .5, 22 'dimtolj': 0, 23 'dimtp': 0.01, 24 'dimtm': 0.01, 25 } 26 style = DimStyleOverride(dimline.dimension, override) 27 renderer = LinearDimension(dimline.dimension, override=style) 28 assert renderer.text == '100' 29 assert renderer.text_decimal_separator == '.' 30 assert renderer.tol_decimal_places == 4 # default value 31 assert renderer.tol_text == '±0.0100' 32 assert renderer.tol_valign == 0 33 assert renderer.compile_mtext() == r"\A0;100{\H0.50x;±0.0100}" 34 35 36def test_linear_dimension_with_two_tolerances(dwg): 37 msp = dwg.modelspace() 38 dimline = msp.add_linear_dim(base=(0, 10), p1=(0, 0), p2=(101, 0)) 39 override = { 40 'dimlfac': 1, 41 'dimtol': 1, 42 'dimtfac': .5, 43 'dimtolj': 1, 44 'dimtp': 0.02, 45 'dimtm': 0.03, 46 } 47 style = DimStyleOverride(dimline.dimension, override) 48 renderer = LinearDimension(dimline.dimension, override=style) 49 assert renderer.text == '101' 50 assert renderer.text_decimal_separator == '.' 51 assert renderer.tol_decimal_places == 4 # default value 52 assert renderer.tol_text_upper == '+0.0200' 53 assert renderer.tol_text_lower == '-0.0300' 54 assert renderer.tol_valign == 1 55 assert renderer.compile_mtext() == r"\A1;101{\H0.50x;\S+0.0200^ -0.0300;}" 56 57 58def test_linear_dimension_with_limits(dwg): 59 msp = dwg.modelspace() 60 dimline = msp.add_linear_dim(base=(0, 10), p1=(0, 0), p2=(101, 0)) 61 override = { 62 'dimlfac': 1, 63 'dimlim': 1, 64 'dimtfac': .5, 65 'dimtp': 0.02, 66 'dimtm': 0.03, 67 } 68 style = DimStyleOverride(dimline.dimension, override) 69 renderer = LinearDimension(dimline.dimension, override=style) 70 assert renderer.text == '101' 71 assert renderer.text_decimal_separator == '.' 72 assert renderer.tol_decimal_places == 4 # default value 73 assert renderer.tol_text_upper == '101.0200' 74 assert renderer.tol_text_lower == '100.9700' 75 assert renderer.compile_mtext() == r"{\H0.50x;\S101.0200^ 100.9700;}" 76 77 78