Files
stepanalyser/.venv/lib/python3.12/site-packages/ezdxf/comments.py
Christian Anetzberger a197de9456 initial
2026-01-22 20:23:51 +01:00

44 lines
1.5 KiB
Python

# Copyright (c) 2019-2022, Manfred Moitzi
# License: MIT License
from __future__ import annotations
from typing import TYPE_CHECKING, TextIO, Iterable, Optional
from ezdxf.lldxf.validator import is_dxf_file
from ezdxf.filemanagement import dxf_file_info
from ezdxf.lldxf.tagger import ascii_tags_loader
if TYPE_CHECKING:
from ezdxf.lldxf.types import DXFTag
def from_stream(stream: TextIO, codes: Optional[set[int]] = None) -> Iterable[DXFTag]:
"""
Yields comment tags from text `stream` as :class:`~ezdxf.lldxf.types.DXFTag` objects.
Args:
stream: input text stream
codes: set of group codes to yield additional DXF tags e.g. {5, 0} to also yield handle and structure tags
"""
codes = codes or set()
codes.add(999)
return (tag for tag in ascii_tags_loader(stream, skip_comments=False) if tag.code in codes)
def from_file(filename: str, codes: Optional[set[int]] = None) -> Iterable[DXFTag]:
"""
Yields comment tags from file `filename` as :class:`~ezdxf.lldxf.types.DXFTag` objects.
Args:
filename: filename as string
codes: yields also additional tags with specified group codes e.g. {5, 0} to also yield handle and
structure tags
"""
if is_dxf_file(filename):
info = dxf_file_info(filename)
with open(filename, mode='rt', encoding=info.encoding) as fp:
yield from from_stream(fp, codes=codes)
else:
raise IOError(f'File "{filename}" is not a DXF file.')