dxf2code

Translate DXF entities and structures into Python source code.

Short example:

import ezdxf
from ezdxf.addons.dxf2code import entities_to_code, block_to_code

doc = ezdxf.readfile('original.dxf')
msp = doc.modelspace()
source = entities_to_code(msp)

# create source code for a block definition
block_source = block_to_code(doc.blocks['MyBlock'])

# merge source code objects
source.merge(block_source)

with open('source.py', mode='wt') as f:
    f.write(source.import_str())
    f.write('\n\n')
    f.write(source.code_str())
    f.write('\n')
ezdxf.addons.dxf2code.entities_to_code(entities: Iterable[DXFEntity], layout: str = 'layout', ignore: Iterable[str] = None) Code

Translates DXF entities into Python source code to recreate this entities by ezdxf.

Parameters
  • entities – iterable of DXFEntity

  • layout – variable name of the layout (model space or block) as string

  • ignore – iterable of entities types to ignore as strings like ['IMAGE', 'DIMENSION']

Returns

Code

ezdxf.addons.dxf2code.block_to_code(block: BlockLayout, drawing: str = 'doc', ignore: Iterable[str] = None) Code

Translates a BLOCK into Python source code to recreate the BLOCK by ezdxf.

Parameters
  • block – block definition layout

  • drawing – variable name of the drawing as string

  • ignore – iterable of entities types to ignore as strings like [‘IMAGE’, ‘DIMENSION’]

Returns

Code

ezdxf.addons.dxf2code.table_entries_to_code(entities: Iterable[DXFEntity], drawing='doc') Code
ezdxf.addons.dxf2code.black(code: str, line_length=88, fast: bool = True) str

Returns the source code as a single string formatted by Black

Requires the installed Black formatter:

pip3 install black
Parameters
  • code – source code

  • line_length – max. source code line length

  • fastTrue for fast mode, False to check that the reformatted code is valid

Raises

ImportError – Black is not available

class ezdxf.addons.dxf2code.Code

Source code container.

code

Source code line storage, store lines without line ending \\n

imports

source code line storage for global imports, store lines without line ending \\n

layers

Layers used by the generated source code, AutoCAD accepts layer names without a LAYER table entry.

linetypes

Linetypes used by the generated source code, these linetypes require a TABLE entry or AutoCAD will crash.

styles

Text styles used by the generated source code, these text styles require a TABLE entry or AutoCAD will crash.

dimstyles

Dimension styles used by the generated source code, these dimension styles require a TABLE entry or AutoCAD will crash.

blocks

Blocks used by the generated source code, these blocks require a BLOCK definition in the BLOCKS section or AutoCAD will crash.

code_str(indent: int = 0) str

Returns the source code as a single string.

Parameters

indent – source code indentation count by spaces

black_code_str(line_length=88) str

Returns the source code as a single string formatted by Black

Parameters

line_length – max. source code line length

Raises

ImportError – Black is not available

import_str(indent: int = 0) str

Returns required imports as a single string.

Parameters

indent – source code indentation count by spaces

merge(code: ezdxf.addons.dxf2code.Code, indent: int = 0) None

Add another Code object.

add_import(statement: str) None

Add import statement, identical import statements are merged together.

add_line(code: str, indent: int = 0) None

Add a single source code line without line ending \n.

add_lines(code: Iterable[str], indent: int = 0) None

Add multiple source code lines without line ending \n.