티스토리 뷰

반응형

dxf파일에 대해서 아는게 아무 것도 없이 일했던 기억이 있습니다. 캐드로 만든 파일을 dxf로 다른이름 저장해서  레이져 가공집에 파일을 보내라?...?

이런 지시를 받고 아무 생각없이 이 파일을 만들어서 보냈던 과거일 말이죠. dxf파일이 무슨 파일인지 궁금하지 않았던 시절이 있었는데, 사실 dxf파일에 대해 알면 정말 큰 정보가 된다는 것을 요즘 많이 느끼고 있습니다.

그래서 dxf파일에 대해서 알아보기 시작했죠~

보통, 구글이나 네이버 검색을 통해서 알 수 있는 정보에 답이 있겠지만, 좀 더 첨언을 해서 설명한다면 처음 접하는 분들에게 도움이 되지 않을까 싶은 마음에....

우선 <dxf파일의 정의> 얘는 뭘하는 파일일까요?

DXF는 미국 오토데스크(autodesk, 캐드의 시조새 같은 회사죠....) 사의 오토캐드와 다른 수많은 캐드 소프트웨어(캐디안부터 여러가지 프로그램들이 사실 있습니다. 우린 보통 오토캐드만 알고 있죠^^)들 간의 파일 교환을 위한 포맷(파일을 서로 호환되게 사용하고자 하는 것이 가장 큰 목적임을 알 수 있습니다.)이며, 이것이 곧 표준이 되었다....

-> 결국 CAD프로그램간 호환성을 확보하기 위해서 탄생한 것이 바로 'dxf'파일의 포멧이란 것이네요~~

우리나라의 경우는 캐디안(CADian)를 비롯하여 (오픈소스 캐드인) 큐캐드(Qcad)등 많은 캐드(CAD) 개발사들이 오토캐드(AutoCAD)와의 호환성을 유지하기 위하여 이 포맷을 지원하고 있다. -> 개발자들에겐 좋은 정보네요~


그럼, dxf파일의 구조는 과연 어떻게 생겨먹었을 까요???

파일의 구조에 대해서 알아보자구요~~


HEADER 섹션

도면에 대한 일반 정보를 포함한다. 이 섹션은 AutoCAD 데이터베이스의 버전 번호와 다양한 시스템 변수로 구성된다. 각 매개변수는 변수 이름과 연관된 값을 포함하고 있다.


CLASSES 섹션

데이터베이스의 BLOCKS, ENTITIES 및 OBJECTS 섹션에서 인스턴스가 사용되는 응용프로그램 정의 클래스에 대한 정보를 보유하고 있다. 클래스 정의는 클래스 계층에 고정된다.

-> 캐드파일(일반적으로 *.dwg)에는 여러정보들이 기록되어있는데, 이런 구조로 저장이 된다는 뜻입니다.


TABLES 섹션

다음의 기호 테이블에 대한 정의를 포함한다.
APPID(응용프로그램 식별 테이블)
BLOCK_RECORD(블록 참조 테이블)
DIMSTYLE(치수 스타일 테이블)
LAYER(도면층 테이블)
LTYPE(선종류 테이블)
STYLE(텍스트 스타일 테이블)
UCS(사용자 좌표계 테이블)
VIEW(View table,테이블 보기)
VPORT(뷰포트 구성 테이블)


BLOCKS 섹션

도면의 각 블록 참조를 구성하는 블록 정의 및 도면요소(entity- 점, 선, 면, 원, 텍스트 등 도면을 형성하는 각 그림 요소를 의미한다)를 포함한다.


ENTITIES 섹션

블록 참조(삽입 도면요소)와 함께 도면의 그래픽 객체(도면요소)를 포함한다.


OBJECTS 섹션


도면의 비그래픽 객체를 포함한다. 도면요소 또는 기호 테이블 레코드 또는 기호 테이블이 아닌 객체는 모두 이 섹션에 저장된다. OBJECTS 섹션에 표시되는 항목의 예로는 다중선 스타일 및 그룹이 포함된 라이브러리를 들 수 있다.


THUMBNAILIMAGE 섹션

도면의 미리보기 이미지 데이터를 포함한다. 이 섹션은 선택 사항이다.
END OF FILE


dxf 파일형식
DXF는 오토데스크사의 오토캐드를 포함해서 CAD 프로그램들이 자사의 캐드파일을 가독성이 가능한 텍스트 파일(ASCII)로 변환하는 파일 포맷이다.  (메모장에서 볼 수 있다는 말이죠...)


소스가 공개된 캐드 형식(파일 포맷)으로 되어 있어서 사실상 산업표준으로 널리 유용하게 사용되고 있다.  이래서 레이져 편집할때 dxf파일로 저장해서 사용하는 것입니다. 그래서 알았지요~~ 이거 무지 중요한 것입니다. 이런 원리라면 어떤 식으로도 파일을 변환해서 우리가 만들 수 있는 프로그램의 영역이 무한대로 넓어진다는 사실이니까요~

무서운 확장성을 가진 'dxf파일'이라고 할 수 있겠네요~


DXF 파일 형식 (위의 내용을 실제 저장하는 형식이라고 볼 수 있습니다.

0 (헤더 섹션의 시작)
SECTION
2
HEADER
<헤더 변수 항목들 >
0
ENDSEC (헤더 섹션의 끝)

0 (테이블 섹션의 시작)
SECTION
2
TABLES
0
TABLE
2
VPORT
70
(viewport테이블 최대항목수)

0
ENDTAB
0
TABLE
2
APPID, DIMSTYLE, LTYPE, LAYER, STYLE, UCS, VIEW, VPORT
70
(테이블 최대 항목수)
<테이블 항목들 >
0
ENDTAB
0
ENDSEC (테이블 섹션의 끝)

0 (블럭섹션의 시작)
SECTION
2
BLOCKS
<정의 도면요소들 >
0
ENDSEC (블럭섹션의 끝)

0 (엔티티섹션의 시작)
SECTION
2
ENTITIES
<도면 요소들 >
0
ENDSEC (엔티티섹션의 끝)

0
EOF (파일의 끝)

 

실제 dxf파일을 메모장에서 열었을 경우....

dxf파일을 메모장에서 열었을 때 볼 수 있는 수치들

 

DXF (Drawing Exchange Format) 파일은 Autodesk사가 개발한 CAD 데이터 교환 표준 형식입니다. 2D 및 3D 그래픽 데이터를 담는 데 주로 사용되며, 텍스트 형태로 저장됩니다.

DXF 파일을 생성하는 원리는 다음과 같습니다:

정보의 구조화: DXF 파일은 섹션(Section)으로 구분되며, 각 섹션은 특정 정보를 담고 있습니다.
주요 섹션에는 HEADER, CLASSES, TABLES, BLOCKS, ENTITIES, OBJECTS 등이 있습니다.
각 섹션은 그룹 코드와 데이터 값의 쌍으로 구성된 엔트리들로 이루어져 있습니다.
그룹 코드와 데이터 값: DXF 파일의 각 엔트리는 그룹 코드와 데이터 값을 가지며, 이것이 파일의 핵심 정보를 담습니다.
그룹 코드는 데이터의 유형과 의미를 정의합니다.
예를 들어, 그룹 코드 0은 엔티티 타입을 정의하고, 그룹 코드 1은 텍스트를 정의합니다.
테이블: 테이블 섹션은 여러 가지 데이터의 컬렉션을 담고 있습니다.
예를 들어, LAYER 테이블은 레이어 정보를, LINETYPE 테이블은 선 유형 정보를 담고 있습니다.
엔티티: 엔티티 섹션은 실제 도면 정보를 담습니다.
이 섹션에는 선, 원, 호, 텍스트 등의 그래픽 객체가 포함됩니다.
이러한 구조를 통해, DXF 파일은 다양한 그래픽 정보를 효과적으로 저장하고 전달할 수 있습니다.
DXF 파일을 생성하는 코드는 이러한 구조를 바탕으로 그룹 코드와 데이터 값의 쌍을 올바르게 출력하는 기능을 수행해야 합니다.
JavaScript나 다른 언어에서 DXF 파일을 생성하는 라이브러리를 사용하면, 이러한 복잡한 과정을 단순화하여 DXF 파일을 쉽게 생성할 수 있습니다.

 

반응형
댓글