12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- # Created: 08.04.2018
- # Copyright (c) 2018, Manfred Moitzi
- # License: MIT-License
- from typing import TYPE_CHECKING, List
- from .graphics import ExtendedTags, DXFAttr, DefSubclass, DXFAttributes, XType
- from .graphics import none_subclass, entity_subclass, ModernGraphicEntity
- if TYPE_CHECKING:
- from ezdxf.eztypes import Tags, Vertex
- _SECTION_TPL = """0
- SECTION
- 5
- 0
- 330
- 0
- 100
- AcDbEntity
- 8
- 0
- 100
- AcDbSection
- 90
- 1
- 91
- 0
- 1
- NAME
- 10
- 0.0
- 11
- 0.0
- 12
- 1.0
- 40
- 1.0
- 41
- 0.0
- """
- section_subclass = DefSubclass('AcDbSection', {
- 'state': DXFAttr(90),
- 'flags': DXFAttr(91),
- 'name': DXFAttr(1),
- 'vertical_direction': DXFAttr(10, xtype=XType.point3d),
- 'top_height': DXFAttr(40),
- 'bottom_height': DXFAttr(41),
- 'indicator_transparency': DXFAttr(70),
- 'indicator_color': DXFAttr(63),
- 'indicator_true_color': DXFAttr(411),
- 'n_vertices': DXFAttr(92), # Number of vertices
- # 11: Vertex (repeats for number of vertices)
- 'n_back_line_vertices': DXFAttr(93), # Number of back line vertices
- # 12: Back line vertex (repeats for number of back line vertices)
- 'geometry_settings_id': DXFAttr(360), # Hard-pointer ID/handle to geometry settings object
- })
- class Section(ModernGraphicEntity):
- # Requires AC1021/R2007
- __slots__ = ()
- TEMPLATE = ExtendedTags.from_text(_SECTION_TPL)
- DXFATTRIBS = DXFAttributes(none_subclass, entity_subclass, section_subclass)
- @property
- def AcDbSection(self) -> 'Tags':
- return self.tags.subclasses[2]
- def get_vertices(self) -> List['Vertex']:
- return [vertex.value for vertex in self.AcDbSection.find_all(11)]
- def get_back_line_vertices(self) -> List['Vertex']:
- return [vertex.value for vertex in self.AcDbSection.find_all(12)]
|