데이터 누락 없이 DXF 파일을 JSON 파일로 안정적으로 구문 분석하는 라이브러리
dxf 파일에 대한 분석을 위해 이 복잡하고도 난해한 dxf format 파일을 도식화 하고 분류해서 체계적으로 내용물들을 관리 할 필요성이 있었음.
당연히 인지 하고 있었다.
dxf-parser 이라는 레포지토리의 존재를 알고 이미 이것을 사용하고 있었다.
이 레포지토리는 도면 분석에 있어 진짜 필요한 데이터를 모두 불러오지 않았다.
3D는 바라지도 않았지만 Leaders, objects 들을 가져오지 못했으며 entities도 2D 도면을 구성하는 엔티티들 중 많은 것을 누락시켰고 파서 구조 또한 불안정했다.
신뢰할 수 없었던 파서였다.
대부분 헤더를 로드할 수 있습니다.
도면의 각 블록 참조에 대한 항목까지 포함되어 있습니다.
그리고 개발 시 필요한 타입정의도 안전하게 지원 합니다.
예시
interface ParsedDxf {
header: DxfHeader;
blocks: Record<string, DxfBlock>;
entities: CommonDxfEntity[];
tables: {
BLOCK_RECORD?: DxfTable<BlockRecordTableEntry>;
DIMSTYLE?: DxfTable<DimStylesTableEntry>;
STYLE?: DxfTable<StyleTableEntry>;
LAYER?: DxfTable<LayerTableEntry>;
LTYPE?: DxfTable<LTypeTableEntry>;
VPORT?: DxfTable<VPortTableEntry>;
};
objects: {
byName: Record<string, CommonDXFObject[]>;
byTree?: DxfObject;
};
}
Sync, Stream, UrlFetch 세 방법을 이용해 파싱할 수 있습니다.
하지만 아직 진정한 의미의 Stream 파싱이 구현되지 않았으니 Sync 혹은 UrlFetch를 권장드립니다.
String Length 문서에 명시되어 있듯, 메모리에 dxf 데이터를 전부 올려두고 스트림 하는 방ㅇ식이라 진정한 의미의 스트림 파싱이 아닙니다. 최소 512MB, 최대 4GB 까지만 가능합니다.
npm:
npm package npm install npm run build npm run test:parser
parseSync:
const parser = new DxfParser() return parser.parseSync(buffer)
parseStream:
import fs from 'fs' const parser = new DxfParser(); const fileStream = fs.createReadStream("dxf file path", { encoding: 'utf8' }); return await parser.parseStream(fileStream);
parseUrl:
const parser = new DxfParser(); return await parser.parseFromUrl(url, encoding, RequestInit);
10달 전에 제가 만들어두고 간간히 약간의 패치만 해둔 채 오픈소스 커뮤니티가 활성화 되지 않고 스타만 늘어나는 느낌이라 활기가 없는 레포지토리 입니다.
기능요청, 버그, 풀리퀘 등 원하시면 얼마든지 요청 부탁드려요!