* 이전 블로그 백업글 : 이 게시물은 2008~2013년 사이에 작성된 것으로, 2024년 현재의 환경과는 맞지 않을 수 있습니다.
회사에서 스케치업 데이터를 변환하는 API 분석 업무를 맡았다. 팔아먹는 솔루션의 특성상 캐드에서 스케치업까지 온갖 종류의 데이터를 다 다루는데, 그동안 Sketch-up은 전혀 안 쓰다가 관련업체 중에 쓰는 곳이 늘어나다보니 손을 대게 된 것.
스케치업 API는 C/C++로 된 SDK의 API와 RubyScript API 두 종류가 있다. 일반적으로 스케치업의 플러그인을 만들 때는 루비스크립트를 쓰고, C++ SDK를 다루는 경우는 드물다. (구글까지 뒤져봐도 거의 없다)
하지만 회사에서 필요하다니 어쨌든 받아서 써봤는데..
.
..
…
뭥미?
당당하게 SDK Beta 버전이라고 되어 있다.
받아보니 SDK를 사용한 예제가 3개 들어가 있다. 하나는 정체불명의 Reader, 하나는 역시 정체불명의 Skp 파일 생성 예제, 나머지 하나는 그나마 정체는 대강 추정되는 Skp->XML 변환 프로그램이다.
문제는, 이 셋이 전부 별도의 라이브러리를 쓴다.
SDK라고 하면 보통 통일된 API 함수와 라이브러리가 있고, 그걸 이용한 예제 코드가 있어야 하는데, 이건 베타 버전이라고 통일된 라이브러리가 없다.
3개의 예제 각각이 자기 전용의 라이브러리를 가지고 있고, 사용법이나 함수명, 기능이 다 미묘하게 다르다. 하나는 API를 한 덩어리로 모아서 구현해둔 소스 파일(.c) 하나를 프로젝트에 바로 첨부해서 쓰고, 하나는 인터페이스/함수별로 나뉘어진 소스 파일 다수를 불러다 쓴다.
마지막 하나는 dll을 끌어다 쓰는데, 이 dll은 이 예제 프로그램에서만 사용한다.
더 중요한 것은, API 도큐먼트와 라이브러리의 함수들도 약간씩 안 맞다. 아무리 베타 버전이라지만 이건 좀 매너…-_-;
아, 더 중요한 게 있다.
그나마 뭔지 대충 알아먹을만 하고 코드도 제대로 구현되어 있는 Skp->XML 익스포터 예제(DLL이며, 스케치업 설치 폴더 아래 /Exporter에 복사하면 자동으로 스케치업 익스포트 메뉴에 등록된다)는, 스케치업 6.0 Pro서 테스트해보면 에러를 내면서 다운되어버린다.
님들 정말 이래도 되는 거심? 설마 VS 2005로 만들어진 소스를 2008에서 컴파일했다고 이러는 건 아니겠지?
결국 한나절 내내 고민한 끝에 dll을 가져와서 쓰는 쪽으로 낙찰. 문제는 이게 QueryInterface()를 제대로 지원하지 않는다는 건데, 뭐 같은 API 내에서 쓰는 거니 버전 충돌 문제는 없을 듯.