def test_xcode_for(): assert get_xcode_for(3) == 1000 assert get_xcode_for(70) == 1070 assert get_xcode_for(71) == 1070 assert get_xcode_for(40) == 1040 assert get_xcode_for(5) == 1005 assert get_xcode_for(344) == 1005
def set_acad_dstyle(self, data: dict) -> None: tags = [] dim_style_attributes = self.dim_style_attributes() for key, value in data.items(): if key not in dim_style_attributes: # ignore unknown attributes, but log logging.debug('ignore unknown DIMSTYLE attribute: "{}"'.format(key)) continue dxf_attr = dim_style_attributes.get(key) if dxf_attr and dxf_attr.code > 0: # skip internal and virtual tags code = dxf_attr.code tags.append((1070, code)) if code == 5: # DimStyle 'dimblk' has group code 5 but is not a handle tags.append((1000, value)) else: tags.append((get_xcode_for(code), value)) if len(tags): self.set_xdata_list('ACAD', 'DSTYLE', tags)
def set_acad_dstyle(self, data: dict) -> None: """ Set XDATA section ACAD:DSTYLE, to override DIMSTYLE attributes for this DIMENSION entity. Args: data: ``dict`` with DIMSTYLE attribute names as keys. (internal API) """ if self.doc is None: raise DXFInternalEzdxfError( 'Dimension.doc attribute not initialized.') # ezdxf uses internally only resource names for arrows, line types and # text styles, but DXF 2000 and later requires handles for these # resources: actual_dxfversion = self.doc.dxfversion data = self.dim_style_attr_names_to_handles(data, actual_dxfversion) tags = [] dim_style_attributes = self.dim_style_attributes() for key, value in data.items(): if key not in dim_style_attributes: # Ignore unknown attributes logging.debug(f'Ignore unknown DIMSTYLE attribute: "{key}"') continue dxf_attr = dim_style_attributes.get(key) if dxf_attr and dxf_attr.code > 0: # skip internal and virtual tags if dxf_attr.dxfversion > actual_dxfversion: logging.debug( f'Unsupported DIMSTYLE attribute "{key}" for ' f'DXF version {self.doc.acad_release}') continue code = dxf_attr.code tags.append((1070, code)) if code == 5: # DimStyle 'dimblk' has group code 5 but is not a handle tags.append((1000, value)) else: tags.append((get_xcode_for(code), value)) if len(tags): self.set_xdata_list('ACAD', 'DSTYLE', tags)
def set_acad_dstyle(self, data: dict) -> None: """Set XDATA section ACAD:DSTYLE, to override DIMSTYLE attributes for this DIMENSION entity. Args: data: ``dict`` with DIMSTYLE attribute names as keys. (internal API) """ assert self.doc is not None, "valid DXF document required" # type: ignore # ezdxf uses internally only resource names for arrows, line types and # text styles, but DXF 2000 and later requires handles for these # resources: actual_dxfversion = self.doc.dxfversion # type: ignore data = self.dim_style_attr_names_to_handles(data, actual_dxfversion) tags = [] dim_style_attributes = self.dim_style_attributes() for key, value in data.items(): if key not in dim_style_attributes: logger.debug(f'Ignore unknown DIMSTYLE attribute: "{key}"') continue dxf_attr = dim_style_attributes.get(key) # Skip internal and virtual tags: if dxf_attr and dxf_attr.code > 0: if dxf_attr.dxfversion > actual_dxfversion: logger.debug( f'Unsupported DIMSTYLE attribute "{key}" for ' # type: ignore f"DXF version {self.doc.acad_release}" # type: ignore ) continue code = dxf_attr.code tags.append((1070, code)) if code == 5: # DimStyle 'dimblk' has group code 5 but is not a handle tags.append((1000, value)) else: tags.append((get_xcode_for(code), value)) if len(tags): self.set_xdata_list("ACAD", "DSTYLE", tags) # type: ignore