def read(stream: TextIO, legacy_mode: bool = False, filter_stack=None) -> 'Drawing': """ Read DXF drawing from a text-stream. Open stream in text mode (``mode='rt'``) and the correct encoding has to be set at the open function, the stream requires at least a :meth:`readline` method. Since DXF version R2007 (AC1021) file encoding is always ``'utf-8'``. Use the helper function :func:`dxf_stream_info` to detect required encoding. If argument `legacy_mode` is ``True``, `ezdxf` tries to reorder the coordinates of the LINE entity in files from CAD applications which wrote the coordinates in the order: x1, x2, y1, y2. Additional fixes may be added later. The legacy mode has a speed penalty of around 5%. Args: stream: input text stream opened with correct encoding, requires only a :meth:`readline` method. legacy_mode: adds an extra trouble shooting import layer if ``True`` filter_stack: interface to put filters between reading layers Raises: DXFStructureError: for invalid DXF structure """ from ezdxf.drawing import Drawing return Drawing.read(stream, legacy_mode=legacy_mode, filter_stack=filter_stack)
def read(stream, legacy_mode=True, dxfversion=None): """ Read DXF drawing from a text stream, which only needs a readline() method. Supported DXF versions: - pre AC1009 DXF versions will be upgraded to AC1009, requires encoding set by header var $DWGCODEPAGE - AC1009: AutoCAD R12 (DXF R12), requires encoding set by header var $DWGCODEPAGE - AC1012: AutoCAD R13 upgraded to AC1015, requires encoding set by header var $DWGCODEPAGE - AC1014: AutoCAD R14 upgraded to AC1015, requires encoding set by header var $DWGCODEPAGE - AC1015: AutoCAD 2000, requires encoding set by header var $DWGCODEPAGE - AC1018: AutoCAD 2004, requires encoding set by header var $DWGCODEPAGE - AC1021: AutoCAD 2007, requires encoding='utf-8' - AC1024: AutoCAD 2010, requires encoding='utf-8' - AC1027: AutoCAD 2013, requires encoding='utf-8' - AC1032: AutoCAD 2018, requires encoding='utf-8' To detect the required encoding, use the helper function info=dxf_stream_info(stream) and reopen the stream with the detected info.encoding. Args: stream: input text stream opened with correct encoding, requires only a readline() method. legacy_mode: True - adds an extra trouble shooting import layer; False - requires DXF file from modern CAD apps dxfversion: DXF version, None = auto detect, just important for legacy mode. """ return Drawing.read(stream, legacy_mode=legacy_mode, dxfversion=dxfversion)