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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
# Copyright (c) 2019 Manfred Moitzi
# License: MIT License
import ezdxf
from ezdxf.sections.classes import ClassesSection
from ezdxf.entities.dxfclass import DXFClass
from ezdxf.lldxf.tagwriter import TagCollector
from ezdxf.tools.test import load_entities
def test_init():
classes = ClassesSection()
assert len(classes.classes) == 0
def test_add_known_class():
classes = ClassesSection()
classes.add_class("SUN")
assert len(classes.classes) == 1
def test_add_required_classes():
classes = ClassesSection()
classes.add_required_classes(ezdxf.DXF2004)
assert len(classes.classes) > 10 # may change
def test_double_keys():
classes = ClassesSection()
sun1 = DXFClass()
sun1.update_dxf_attribs({"name": "SUN", "cpp_class_name": "AcDbSun1"})
sun2 = DXFClass()
sun2.update_dxf_attribs({"name": "SUN", "cpp_class_name": "AcDbSun2"})
# same class 'name' but different 'cpp class name', example: 'CADKitSamples/AEC Plan Elev Sample.dxf'
classes.register([sun1, sun2])
assert len(classes.classes) == 2
def test_export_dxf():
classes = ClassesSection()
classes.add_class("SUN")
collector = TagCollector(dxfversion=ezdxf.DXF2004)
classes.export_dxf(collector)
tags = collector.tags
assert tags[0] == (0, "SECTION")
assert tags[1] == (2, "CLASSES")
assert tags[2] == (0, "CLASS")
# writing classes is tested in 'test_113_dxfclass.py'
assert tags[-1] == (0, "ENDSEC")
def test_load_section():
doc = ezdxf.new()
entities = load_entities(TEST_CLASSES, "CLASSES")
classes = ClassesSection(doc, entities)
assert len(classes.classes) == 3
# this tests internals - use storage key is not exposed by API
assert (
"ACDBDICTIONARYWDFLT",
"AcDbDictionaryWithDefault",
) in classes.classes
assert ("DICTIONARYVAR", "AcDbDictionaryVar") in classes.classes
assert ("TABLESTYLE", "AcDbTableStyle") in classes.classes
TEST_CLASSES = """ 0
SECTION
2
CLASSES
0
CLASS
1
ACDBDICTIONARYWDFLT
2
AcDbDictionaryWithDefault
3
ObjectDBX Classes
90
0
91
1
280
0
281
0
0
CLASS
1
DICTIONARYVAR
2
AcDbDictionaryVar
3
ObjectDBX Classes
90
0
91
13
280
0
281
0
0
CLASS
1
TABLESTYLE
2
AcDbTableStyle
3
ObjectDBX Classes
90
4095
91
1
280
0
281
0
0
ENDSEC
0
EOF
"""
|