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#에서 마쉘링으로 호출해서 해결 했습니다.








덧글

  • LSP27 2022/12/01 12:44 # 삭제 답글

    안녕하세요 설계일을 하는 중에 자동화에 관심을 가지게되어 이것 저것 배우고 있는 사람입니다. 오토캐드 에서 작동시키지않고 단독으로 운영할수 없을까 하면서 웹서핑을 하다가 이곳을 우연히 발견하게 되었습니다. 윗 글에서 ApplicationServices 구현해야된다고 하는데 혹시 방향성 좀 알려주실수 있으신지요. 자그마한 힌트라도 얻고자 글남겨봅니다 감사합니다.
  • arx119 2022/12/02 10:34 #

    안녕하세요. LSP27 님,

    어떻게 말씀을 드려야 도움이 될지는 모르겠습니다.

    ODA 툴킷을 사용해서 자신만의 캐드 프로그램을 개발하는 데는 부족함이 있습니다. 주로 사용자 인터페이스 부분이라 말씀드릴 수 있고 특히 마우스 및 키보드, 명령어 실행 방식, 인쇄 등의 기능을 제공하기 위해서는 추가적인 개발을 필요로 하게 됩니다.

    따라서 ApplicationServices 라고 표현한 것은 기술적인 특별함 보다는 위에서 언급한 기능들을 제공할 수 있도록 오토캐드와 최대한 비슷하게 클래스와 매소드를 구현해야 한다는 의미입니다.

    참고적으로 DWG 파일의 서비스를 제공하는 많은 솔루션은 대부분 ODA를 사용하고 있다고 보셔도 무방합니다. 전체적인 캐드 기능을 제공한다기 보다는 특화된 서비스를 제공하는 것으로 알고 있습니다.

    LSP27님이 어떤 방식의 서비스를 고민하고 계신지는 모르겠지만, 어떤 서비스를 제공할 것 인가에 따라서 개발의 방향과 필요한 요소 기술이 구분될 것 같습니다.

    두서없는 글 읽어주셔서 감사합니다.

    즐거운 하루되세요.^^

댓글 입력 영역



구글번역

통계 위젯 (화이트)

413
266
646308

국가접속Flag

free counters