def draw_composite_entity(self, entity: DXFGraphic, properties: Properties) -> None: def set_opaque(entities: Iterable[DXFGraphic]): for child in entities: # todo: defaults to 1.0 (fully transparent)??? child.transparency = 0.0 yield child def draw_insert(insert: Insert): self.draw_entities(insert.attribs) # draw_entities() includes the visibility check: self.draw_entities( insert.virtual_entities( skipped_entity_callback=self.skip_entity)) dxftype = entity.dxftype() if dxftype == 'INSERT': entity = cast(Insert, entity) self.ctx.push_state(properties) if entity.mcount > 1: for virtual_insert in entity.multi_insert(): draw_insert(virtual_insert) else: draw_insert(entity) self.ctx.pop_state() # DIMENSION, ARC_DIMENSION, LARGE_RADIAL_DIMENSION, LEADER # todo: ACAD_TABLE, MLINE, MLEADER elif hasattr(entity, 'virtual_entities'): # draw_entities() includes the visibility check: self.draw_entities(set_opaque(entity.virtual_entities())) else: raise TypeError(dxftype)
def draw_composite_entity(self, entity: DXFGraphic, properties: Properties) -> None: def draw_insert(insert: Insert): self.draw_entities(insert.attribs) # draw_entities() includes the visibility check: self.draw_entities( insert.virtual_entities( skipped_entity_callback=self.skip_entity)) if isinstance(entity, Insert): self.ctx.push_state(properties) if entity.mcount > 1: for virtual_insert in entity.multi_insert(): draw_insert(virtual_insert) else: draw_insert(entity) self.ctx.pop_state() elif isinstance(entity, SupportsVirtualEntities): # draw_entities() includes the visibility check: try: self.draw_entities(virtual_entities(entity)) except ProxyGraphicError as e: print(str(e)) print(POST_ISSUE_MSG) else: raise TypeError(entity.dxftype())