123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- # Created: 08.04.2018
- # Copyright (c) 2018, Manfred Moitzi
- # License: MIT-License
- from typing import TYPE_CHECKING
- from .graphics import ExtendedTags, DXFAttr, DefSubclass, DXFAttributes
- from .graphics import none_subclass, entity_subclass, ModernGraphicEntity
- from .dxfobjects import DXFObject
- from .object_manager import ObjectManager
- if TYPE_CHECKING:
- from ezdxf.eztypes import Drawing
- # DXF Examples:
- # D:\source\dxftest\CADKitSamples\house design for two family with common staircasedwg.dxf
- # D:\source\dxftest\CADKitSamples\house design.dxf
- _MLEADER_CLS = """0
- CLASS
- 1
- MLEADER
- 2
- AcDbMLeader
- 3
- ACDB_MLEADER_CLASS
- 90
- 1025
- 91
- 0
- 280
- 0
- 281
- 1
- """
- _MLEADER_TPL = """0
- MLEADER
- 5
- 0
- 330
- 0
- 100
- AcDbEntity
- 8
- 0
- 100
- AcDbMLeader
- 340
- 0
- """
- mleader_subclass = DefSubclass('AcDbMLeader', {
- 'leader_style_id': DXFAttr(340), # handle of MLEADERSTYLE?
- })
- class MLeader(ModernGraphicEntity):
- # Requires AC1021/R2007
- __slots__ = ()
- TEMPLATE = ExtendedTags.from_text(_MLEADER_TPL)
- DXFATTRIBS = DXFAttributes(none_subclass, entity_subclass, mleader_subclass)
- CLASS = ExtendedTags.from_text(_MLEADER_CLS)
- _MLEADER_STYLE_CLS = """0
- CLASS
- 1
- MLEADERSTYLE
- 2
- AcDbMLeaderStyle
- 3
- ACDB_MLEADERSTYLE_CLASS
- 90
- 4095
- 91
- 0
- 280
- 0
- 281
- 0
- """
- _MLEADER_STYLE_TPL = """ 0
- MLEADERSTYLE
- 5
- 0
- 102
- {ACAD_REACTORS
- 102
- }
- 330
- 0
- 100
- AcDbMLeaderStyle
- 179
- 2
- 170
- 2
- 171
- 1
- 172
- 0
- 90
- 2
- 40
- 0.0
- 41
- 0.0
- 173
- 1
- 91
- -1056964608
- 340
- 14
- 92
- -2
- 290
- 1
- 42
- 2.0
- 291
- 1
- 43
- 8.0
- 3
- Standard
- 341
- 0
- 44
- 4.0
- 300
- 342
- 11
- 174
- 1
- 178
- 1
- 175
- 1
- 176
- 0
- 93
- -1056964608
- 45
- 4.0
- 292
- 0
- 297
- 0
- 46
- 4.0
- 343
- 0
- 94
- -1056964608
- 47
- 1.0
- 49
- 1.0
- 140
- 1.0
- 293
- 1
- 141
- 0.0
- 294
- 1
- 177
- 0
- 142
- 1.0
- 295
- 0
- 296
- 0
- 143
- 3.75
- 271
- 0
- 272
- 9
- 273
- 9
- """
- mleader_style_subclass = DefSubclass('AcDbMLeaderStyle', {
- 'content_type': DXFAttr(170),
- 'draw_mleader_order_type': DXFAttr(171),
- 'draw_leader_order_type': DXFAttr(172),
- 'max_leader_segments_points': DXFAttr(90), # MaxLeader Segments Points
- 'first_segment_angle_constraint': DXFAttr(40), # First Segment Angle Constraint
- 'second_segment_angle_constraint': DXFAttr(41), # Second Segment Angle Constraint
- 'leader_line_type': DXFAttr(173),
- 'leader_line_color': DXFAttr(91),
- 'leader_line_type_id': DXFAttr(340), # handle
- 'leader_line_weight': DXFAttr(92),
- 'enable_landing': DXFAttr(290),
- 'landing_gap': DXFAttr(42),
- 'enable_dog_leg': DXFAttr(291),
- 'dog_leg_length': DXFAttr(43),
- 'name': DXFAttr(3),
- 'arrow_head_id': DXFAttr(341),
- 'arrow_head_size': DXFAttr(44),
- 'default_mtext_contents': DXFAttr(300),
- 'mtext_style_id': DXFAttr(342),
- 'text_left_attachment_type': DXFAttr(174),
- 'text_angle_type': DXFAttr(175),
- 'text_right_attachment_type': DXFAttr(178),
- 'text_color': DXFAttr(93),
- 'text_height': DXFAttr(45),
- 'enable_frame_text': DXFAttr(292),
- 'text_align_always_left': DXFAttr(297),
- 'align_space': DXFAttr(46),
- 'enable_block_content_scale': DXFAttr(293),
- 'block_content_id': DXFAttr(343),
- 'block_content_color': DXFAttr(94),
- 'block_content_scale_x': DXFAttr(47),
- 'block_content_scale_y': DXFAttr(49),
- 'block_content_scale_z': DXFAttr(140),
- 'enable_block_content_rotation': DXFAttr(294),
- 'block_content_rotation': DXFAttr(141),
- 'block_content_connection_type': DXFAttr(177),
- 'scale': DXFAttr(142),
- 'overwrite_property_value': DXFAttr(295),
- 'is_annotative': DXFAttr(296),
- 'break_gap_size': DXFAttr(143),
- 'mtext_attachment_direction': DXFAttr(271), # 0 = Horizontal; 1 = Vertical
- 'bottom_text_attachment_direction': DXFAttr(272), # 9 = Center; 10 = Underline and Center
- 'top_text_attachment_direction': DXFAttr(272), # 9 = Center; 10 = Overline and Center
- })
- class MLeaderStyle(DXFObject):
- # Requires AC1021/R2007
- __slots__ = ()
- TEMPLATE = ExtendedTags.from_text(_MLEADER_STYLE_TPL)
- DXFATTRIBS = DXFAttributes(none_subclass, mleader_style_subclass)
- CLASS = ExtendedTags.from_text(_MLEADER_STYLE_CLS)
- class MLeaderStyleManager(ObjectManager):
- def __init__(self, drawing: 'Drawing'):
- super().__init__(drawing, dict_name='ACAD_MLEADERSTYLE', object_type='MLEADERSTYLE')
- self.create_required_entries()
- def create_required_entries(self) -> None:
- for name in ('Standard', ):
- if name not in self.object_dict:
- self.new(name)
|