def test_write(self): stream = StringIO() tagwriter = TagWriter(stream) tagwriter.write_tags(self.tags) result = stream.getvalue() stream.close() self.assertEqual(TEST_TAGREADER, result)
def write(self, stream: Union[TextIO, BinaryIO], fmt: str = 'asc') -> None: """ Write drawing as ASCII DXF to a text stream or as Binary DXF to a binary stream. For DXF R2004 (AC1018) and prior open stream with drawing :attr:`encoding` and :code:`mode='wt'`. For DXF R2007 (AC1021) and later use :code:`encoding='utf-8'`, or better use the later added :class:`Drawing` property :attr:`output_encoding` which returns the correct encoding automatically. Args: stream: output text stream or binary stream fmt: ``'asc'`` for ASCII DXF (default) or ``'bin'`` for binary DXF """ dxfversion = self.dxfversion if dxfversion == DXF12: handles = bool(self.header.get('$HANDLING', 0)) else: handles = True if dxfversion > DXF12: self.classes.add_required_classes(dxfversion) self._create_appids() self._update_header_vars() self._update_metadata() if fmt.startswith('asc'): tagwriter = TagWriter(stream, write_handles=handles, dxfversion=dxfversion) elif fmt.startswith('bin'): tagwriter = BinaryTagWriter( stream, write_handles=handles, dxfversion=dxfversion, encoding=self.output_encoding, ) tagwriter.write_signature() else: raise ValueError(f"Unknown output format: '{fmt}'.") self.export_sections(tagwriter)
def test_write(self, tags): stream = StringIO() tagwriter = TagWriter(stream) tagwriter.write_tags(tags) result = stream.getvalue() stream.close() assert TEST_TAGREADER == result
def test_dont_write_handles_for_R12(dimstyle): s = StringIO() t = TagWriter(s) t.dxfversion = DXF12 t.write_handles = False dimstyle.export_dxf(t) result = s.getvalue() assert "105\nFFFF\n" not in result
def test_dont_write_handles_for_R12(entity): from ezdxf.lldxf.tagwriter import TagWriter from io import StringIO s = StringIO() t = TagWriter(s) t.dxfversion = DXF12 t.write_handles = False entity.export_dxf(t) result = s.getvalue() assert '5\nFFFF\n' not in result
def write(self, stream: Union[TextIO, BinaryIO], fmt: str = "asc") -> None: """Write drawing as ASCII DXF to a text stream or as Binary DXF to a binary stream. For DXF R2004 (AC1018) and prior open stream with drawing :attr:`encoding` and :code:`mode='wt'`. For DXF R2007 (AC1021) and later use :code:`encoding='utf-8'`, or better use the later added :class:`Drawing` property :attr:`output_encoding` which returns the correct encoding automatically. The correct and required error handler is :code:`errors='dxfreplace'`! If writing to a :class:`StringIO` stream, use :meth:`Drawing.encode` to encode the result string from :meth:`StringIO.get_value`:: binary = doc.encode(stream.get_value()) Args: stream: output text stream or binary stream fmt: ``'asc'`` for ASCII DXF (default) or ``'bin'`` for binary DXF """ dxfversion = self.dxfversion if dxfversion == DXF12: handles = bool(self.header.get("$HANDLING", 0)) else: handles = True if dxfversion > DXF12: self.classes.add_required_classes(dxfversion) self._create_appids() self._update_header_vars() self.update_extents() self.update_limits() self._update_metadata() if fmt.startswith("asc"): tagwriter = TagWriter( stream, # type: ignore write_handles=handles, dxfversion=dxfversion, ) elif fmt.startswith("bin"): tagwriter = BinaryTagWriter( # type: ignore stream, # type: ignore write_handles=handles, dxfversion=dxfversion, encoding=self.output_encoding, ) tagwriter.write_signature() # type: ignore else: raise ValueError(f"Unknown output format: '{fmt}'.") self.export_sections(tagwriter)
def test_empty_section(ac1009): blocks = BlocksSection(load_section(EMPTYSEC, 'BLOCKS'), ac1009) stream = StringIO() blocks.write(TagWriter(stream)) result = stream.getvalue() stream.close() assert EMPTYSEC == result
def test_write(section): stream = StringIO() section.export_dxf(TagWriter(stream)) result = stream.getvalue() stream.close() t1 = list(internal_tag_compiler(TESTCLASSES)) t2 = list(internal_tag_compiler(result)) assert t1 == t2
def test_empty_section(): tags = load_section(EMPTYSEC, 'CLASSES') section = ClassesSection(tags, None) stream = StringIO() section.write(TagWriter(stream)) result = stream.getvalue() stream.close() assert EMPTYSEC == result
def test_write(blocks): stream = StringIO() blocks.write(TagWriter(stream)) result = stream.getvalue() stream.close() t1 = list(compile_tags_without_handles(TESTBLOCKS)) t2 = list(compile_tags_without_handles(result)) assert t1 == t2
def test_ac1024_write(table_ac1024): stream = StringIO() table_ac1024.write(TagWriter(stream)) result = stream.getvalue() stream.close() t1 = list(internal_tag_compiler(AC1024TABLE))[2:-1] # without section tags t2 = list(internal_tag_compiler(result)) assert t1 == t2
def test_write(tables): stream = StringIO() tables.write(TagWriter(stream)) result = stream.getvalue() stream.close() t1 = list(compile_tags_without_handles(TEST_TABLES)) t1.pop() # remove EOF tag t2 = list(compile_tags_without_handles(result)) assert t1 == t2
def test_empty_section(): ent = load_section(EMPTYSEC, 'OBJECTS') dwg = ezdxf.new('R2000') section = ObjectsSection(ent, dwg) stream = StringIO() section.write(TagWriter(stream)) result = stream.getvalue() stream.close() assert EMPTYSEC == result
def test_ac1009_write(table_ac1009): stream = StringIO() table_ac1009.write(TagWriter(stream)) result = stream.getvalue() stream.close() t1 = list(compile_tags_without_handles(AC1009TABLE))[ 2:-1] # without section tags t2 = list(compile_tags_without_handles(result)) assert t1 == t2
def test_empty_section(): ent = load_section(EMPTYSEC, 'OBJECTS') dwg = DrawingProxy('AC1015') section = ObjectsSection(ent, dwg) stream = StringIO() section.write(TagWriter(stream)) result = stream.getvalue() stream.close() assert EMPTYSEC == result
def test_group_code_1000_outside_XDATA(): tags = ExtendedTags(Tags.from_text(BLOCKBASEPOINTPARAMETER_CVIL_3D_2018)) assert tags.dxftype() == 'BLOCKBASEPOINTPARAMETER' assert len(tags.subclasses) == 6 block_base_point_parameter = tags.get_subclass('AcDbBlockBasepointParameter') assert len(block_base_point_parameter) == 3 assert block_base_point_parameter[0] == (100, 'AcDbBlockBasepointParameter') assert block_base_point_parameter[1] == (1011, (0., 0., 0.)) assert block_base_point_parameter[2] == (1012, (0., 0., 0.)) block_element = tags.get_subclass('AcDbBlockElement') assert block_element[4] == (1071, 0) stream = StringIO() tagwriter = TagWriter(stream) tagwriter.write_tags(tags) lines = stream.getvalue() stream.close() assert len(lines.split('\n')) == len(BLOCKBASEPOINTPARAMETER_CVIL_3D_2018.split('\n'))
def test_empty_section(): sec = load_section(EMPTYSEC, "CLASSES") cls_entities = [factory.load(ExtendedTags(e)) for e in sec] section = ClassesSection(None, iter(cls_entities)) stream = StringIO() section.export_dxf(TagWriter(stream)) result = stream.getvalue() stream.close() assert EMPTYSEC == result
def test_empty_section(): doc = Drawing() sec = load_section(EMPTYSEC, 'CLASSES') cls_entities = [doc.dxffactory.entity_from_tags(e) for e in sec] section = ClassesSection(None, iter(cls_entities)) stream = StringIO() section.export_dxf(TagWriter(stream)) result = stream.getvalue() stream.close() assert EMPTYSEC == result
def test_text_stream_for_resource_handles_R2000(): s = StringIO() t = TagWriter(s) doc = ezdxf.new() setup_doc(doc) dimstyle = doc.dimstyles.add("MyStyle") dimstyle.set_arrows("arrow", "left_arrow", "right_arrow", "arrow") dimstyle.dxf.dimtxsty = TEXT_STYLE dimstyle.export_dxf(t) result = s.getvalue() assert "\n340\n" in result assert "\n341\n" in result assert "\n342\n" in result assert "\n343\n" in result assert "\n344\n" in result
def test_dxf_export_xrecords_with_binary_data(doc, handle, n): def expected(): filename = os.path.join(BASEDIR, DATADIR, f"XRECORD_{n}.bin") if not os.path.exists(filename): pytest.skip(f"File {filename} not found.") with open(filename, "rb") as fp: # normalize line endings and remove spaces return fp.read().replace(b"\r\n", b"\n").replace(b" ", b"") stream = StringIO() writer = TagWriter(stream) xrecord = doc.entitydb[handle] xrecord.export_dxf(writer) # remove spaces data = doc.encode(stream.getvalue()).replace(b" ", b"") assert data == expected()
def setup_stream(): stream = StringIO() tagwriter = TagWriter(stream) return stream, tagwriter
def __init__(self, name: Filename, loader: IterDXF): self.name = str(name) self.file: BinaryIO = open(name, mode="wb") self.text = StringIO() self.entity_writer = TagWriter(self.text, loader.dxfversion) self.loader = loader
def test_copy(xtags1): stream = StringIO() tagwriter = TagWriter(stream) tagwriter.write_tags(xtags1) assert XTAGS1 == stream.getvalue() stream.close()
def test_write(section): stream = StringIO() section.write(TagWriter(stream)) result = stream.getvalue() stream.close() assert normlines(TESTOBJECTS) == normlines(result)
def setup_stream(): from io import StringIO from ezdxf.lldxf.tagwriter import TagWriter stream = StringIO() tagwriter = TagWriter(stream) return stream, tagwriter
def __init__(self, name: str, loader: IterDXF): self.name = str(name) self.file = open(name, mode='wt', encoding=loader.encoding) self.entity_writer = TagWriter(self.file, loader.dxfversion) self.loader = loader