ARX119의 BIM/CAD 연구소

arx119.egloos.com

포토로그 방명록 업그레이드/기능 요청



ODA Drawings 닷넷 API 로 출력 기능 개발시 고려할 사항 ==- AutoCAD 유틸리티 -==

코로나가 급속하게 확산하고 있습니다. 모두들 조심하시길 바라겠습니다.

최근 진행중인 프로젝트의 경험을 공유하려고 합니다. 관련 업체 및 분야는 생략하고 ODA API를 중심으로 이야기 하겠습니다.

프로젝트의 주요 요구사항은 웹서버에서 관리하고 있는 데이타를 도면화하고 이것을 분할 배치 플롯하는 기능 입니다.

상용 CAD 프로그램을 사용하지 않는 독립 실행으로 개발 요청을 받아서 ODA Drawings 툴킷을 검토하고 개발을 진행 했습니다.
ODA 툴킷은 많이 알고 계실것 같아서 별도로 언급 하지 않겠습니다. 최근 출시된 기능이 너무 좋아져서 이 툴킷을 사용하지 않는 대안 캐드들이 없습니다. 인텔리캐드,마이다스 캐드, ZWCAD, 지스타캐드, 브릭스캐드 등, 거의 모든 상용 제품들이 사용하고 있습니다.

저는 주로 AutoCAD없이 DWG 도면 정보를 읽고 생성하는데 사용했고 주로 C/C++ 개발 언어를 사용 했었습니다. 하지만 ODA에서도 닷넷 API를 지원하고 있어서 이번 개발 프로젝트에는 닷넷으로 개발을 계획하게 되었습니다.

Drawing 윈도우 폼은 윈폼으로 진행했고 레이어 관리 및 필터 대화상자는 C# 도킹 상자(Open Source)를 사용 했습니다.
주요 기능 구현은 닷넷 DLL을 만들어서 Netload로 로딩하는 방식으로 기능을 확장했습니다. 의외로 AutoCAD와 같이 닷넷 모듈이 안정적으로 동작하는 것을 확인할 수 있었습니다.

하지만 AutoCAD의 ApplicationServices 모듈의 클래스 API는 지원하지 않으므로 이 부분은 개발자가 직접 구현해야 합니다. 예를 들어 DocumentManager 는 Form이 생성될때 관리하는 Dictionary<IntPtr, Document>로 필요한 부분을 직접 구현할 수 있습니다.

그리고 닷넷 API로 출력 기능을 개발하려 하시는 분들은 ODA 닷넷 샘플의 출력 소스 코드를 사용하지 마시고 C++의 샘플 소스 코드를 사용하여야 원하시는 출력 기능을 얻을 수 있을 것입니다. 저의 경우는 출력 부분을 C/C++모듈로 함수를 Extern시키고 C#에서 마쉘링으로 호출해서 해결 했습니다.








덧글

댓글 입력 영역



구글번역

통계 위젯 (화이트)

059
359
605842

국가접속Flag

free counters