CODEKILLER

알림 : [namoosystem.com] Codekiller 나무의사 빨간펜 인강, 재해위험성 검토의견서 QGIS 강의

반응형

DWG 변환, DXF 변환

SharkGeo는 산림·지리공간 분야 업무용 WPF(.NET 8) GIS 앱입니다. 실무에서 가장 많이 다루는 CAD 파일 형식이 DWG와 DXF인데, 이 두 형식 사이의 변환은 생각보다 까다로운 문제였습니다. 이 글은 그 구현 과정을 기록합니다.

DWG와 DXF — 무엇이 다른가

항목 DWG DXF
개발사 Autodesk (독점 바이너리) Autodesk (공개 텍스트 포맷)
형식 이진(Binary) 텍스트(ASCII / 이진 선택)
범용성 CAD 소프트웨어 전용 모든 GIS/CAD 도구에서 읽힘
활용 도면 원본 보관 데이터 교환, GIS 연동

실무에서 자주 마주치는 상황:

  • 수치지형도 → DWG(보통 설계파일) 원본을 받아서 GIS 분석에 써야 함 → DXF로 변환 필요
                          (다운받은 DXF를 보통은 많이 사용)
  • 분석 결과물 → GeoJSON/SHP 등에서 만든 레이어를 현장팀에 CAD로 전달 → DWG로 변환 필요

.NET에서 DWG를 다루는 선택지가 별로없다?

.net에서 DWG를 다루려면 총 4가지 정도를 꼽아볼 수 있겠습니다. 

1. ACadSharp (오픈소스, Nuget)

  • MIT 라이선스 — 상업 프로젝트에서 무료 사용 가능
  • DWG R2000 ~ R2018 읽기/쓰기 지원
  • DXF 읽기/쓰기 지원
  • 순수 .NET 구현 — 외부 의존성 없음
  • 단점: 복잡한 DWG 구조(3D, XREF, 일부 커스텀 엔티티)에서 누락/오류 가능성

누겟의 경우에는 이것저것 찾아보면 보이는 것들은 많은 DWG로 변환해보고, DXF로 변환해보고 하다보면 왜 사용을 안하는지를 알 수가 있을 것입니다. 그래도 ACadSharp 의 경우에는 변환 못하는 Object가 있긴 하지만, DWG 포맷의 대부분은 인식해서 변환을 해줍니다. 

 

2. ODA File Converter (이것은 무료 설치 프로그램입니다.)

이것은 수동으로 변환하시는 분들 사이에서는 최고의 툴입니다. exe프로그램으로 사용이 편합니다. 그런데 프로그램에 넣어서 상용툴로 팔수없다는 단점이 있습니다. 

  • Open Design Alliance(ODA)에서 무료 배포
  • Autodesk와 협력 관계 → 가장 높은 호환성★★
  • GUI/CLI 모두 지원 — 커맨드라인으로 자동화 가능
  • 단점: 별도 설치 필요, 앱에 번들 불가

이것도 서비스로 돌릴때는 필요할 수도 있어서, 좋은 대안은 될 수 있습니다.

 

3. Autodesk 공식 SDK (직접 개발 가능 하신 분들만??? 십수년은 개발기간 잡아야 할 수도 있습니다.^^)

  • RealDWG 라이선스 필요 → 상업 사용 시 수천만 원대 라이선스
  • 이 프로젝트에서는 사용하지 않음

SharkGeo 이중전략

첫번째, 번들넣어서 ODA 컨버터를 사용해서 사용화할 수 없다면 로컬에서 서비스로 돌리는 방법을 생각했습니다. ODA가 설치되어 있으면 ODA를 사용하고 아니면 ACadSharp으로 컨버팅을 하도록 설계들어갔습니다. ODA의 모든 버젼의 설치 위치를 소스에 하드코딩 해두는 것입니다. 해당 피씨에서 구동만 하면 되니까요. 

private static readonly string[] OdaSearchPaths =
[
    @"C:\Program Files\ODA\ODAFileConverter\ODAFileConverter.exe",
    @"C:\Program Files (x86)\ODA\ODAFileConverter\ODAFileConverter.exe",
    @"C:\Program Files\ODA\ODAFileConverter 25.12\ODAFileConverter.exe",
    @"C:\Program Files\ODA\ODAFileConverter 24.12\ODAFileConverter.exe",
    @"C:\Program Files\ODA\ODAFileConverter 27.1.0\ODAFileConverter.exe"
];

더군다는 ODA는 Parameter를 던져서 구동도 된다는 점... 굉장히 잘동작하고 훌륭합니다. 

 

두번째, ACadSharp방식

이 부분은 그냥 단순 개발입니다. DwgReader로 읽고 DxfWriter로 씁니다. 

UI 구성

DWG변환, DXF변환
ACadSharp, ODA File Converter

위와 같이 UI를 구성했고, ODA가 존재할때는 ODA로 동작하고, 없으면 ACadSharp로 구동하게 구현했습니다. 두가지 모두 정상적으로 변환이 아주 잘됩니다. 꼭 캐드를 들어가지 않고도, 꼭 QGIS를 들어가지 않고도 쉽게 파일변환이 됩니다. 

 

마치며, 

SharkGeo는 작업시간이 오래 소요되는 산림 분야 재해위험성 검토, 지형 분석, 공간정보 처리를 위한 WPF GIS 앱으로 개발 중입니다.

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band