1# Copyright (c) 2019 Manfred Moitzi 2# License: MIT License 3# created 2019-02-15 4import pytest 5import ezdxf 6from ezdxf.entities.helix import Helix 7from ezdxf.lldxf.tagwriter import TagCollector, basic_tags_from_text 8 9HELIX = """0 10HELIX 115 120 13330 140 15100 16AcDbEntity 178 180 19100 20AcDbSpline 2170 220 2371 243 2572 260 2773 280 2974 300 31100 32AcDbHelix 3390 3429 3591 3663 3710 380.0 3920 400.0 4130 420.0 4311 441.0 4521 460.0 4731 480.0 4912 500.0 5122 520.0 5332 541.0 5540 561.0 5741 581.0 5942 601.0 61290 621 63280 641 65""" 66 67 68@pytest.fixture 69def entity(): 70 return Helix.from_text(HELIX) 71 72 73def test_registered(): 74 from ezdxf.entities.factory import ENTITY_CLASSES 75 assert 'HELIX' in ENTITY_CLASSES 76 77 78def test_default_init(): 79 entity = Helix() 80 assert entity.dxftype() == 'HELIX' 81 assert entity.dxf.handle is None 82 assert entity.dxf.owner is None 83 84 85def test_default_new(): 86 entity = Helix.new(handle='ABBA', owner='0', dxfattribs={ 87 'color': 7, 88 'axis_base_point': (1, 2, 3), 89 'start_point': (4, 5, 6), 90 'axis_vector': (7, 7, 7), 91 'radius': 20, 92 'turns': 5, 93 'handedness': 0, 94 'constrain': 2, 95 }) 96 assert entity.dxf.layer == '0' 97 assert entity.dxf.color == 7 98 assert entity.dxf.major_release_number == 29 99 assert entity.dxf.maintenance_release_number == 63 100 assert entity.dxf.axis_base_point == (1, 2, 3) 101 assert entity.dxf.start_point == (4, 5, 6) 102 assert entity.dxf.axis_vector == (7, 7, 7) 103 assert entity.dxf.radius == 20 104 assert entity.dxf.turns == 5 105 assert entity.dxf.handedness == 0 106 assert entity.dxf.constrain == 2 107 108 109def test_load_from_text(entity): 110 assert entity.dxf.layer == '0' 111 assert entity.dxf.color == 256, 'default color is 256 (by layer)' 112 assert entity.dxf.major_release_number == 29 113 assert entity.dxf.maintenance_release_number == 63 114 assert entity.dxf.axis_base_point == (0, 0, 0) 115 assert entity.dxf.start_point == (1, 0, 0) 116 assert entity.dxf.axis_vector == (0, 0, 1) 117 assert entity.dxf.radius == 1 118 assert entity.dxf.turns == 1 119 assert entity.dxf.handedness == 1 120 assert entity.dxf.constrain == 1 121 122 123def test_write_dxf(): 124 entity = Helix.from_text(HELIX) 125 result = TagCollector.dxftags(entity) 126 expected = basic_tags_from_text(HELIX) 127 assert result == expected 128 129 130def test_generic_helix(): 131 doc = ezdxf.new() 132 msp = doc.modelspace() 133 helix = msp.new_entity('HELIX', {}) 134 assert helix.dxftype() == 'HELIX' 135 assert helix.dxf.major_release_number == 29 136 assert helix.dxf.degree == 3 137