Graphisoft®

API Development KitVersion: 18

API 백서

 

  1. 기본 질문
    1. API Development Kit란 무엇인가?
    2. 왜 애드온이 필요한가?
    3. 무슨 종류의 애드온이 필요한가?
    4. API가 유일한 대안인가?
    5. 누가 API 개발을 할 수 있는가?
  2. 기술 설명
    1. 데이터베이스 도구
    2. 인터페이스 도구
    3. 통합 도구
    4. 개발 도구
  3. 예제
  4. 요약

 


기본 질문

 

API Development Kit란 무엇인가?

API는 "Application Programming Interface"란 뜻입니다; 프로그래머가 ArchiCAD의 기능을 개선하는 도구(또는 애드온)를 만들기 위해 사용할 수 있는 소프트웨어 환경입니다.

 

왜 애드온이 필요한가?

ArchiCAD의 버전이 올라갈 때마다 기능이 급격히 증가하는 동안, 단일 솔루션으로는 A/E/C 시장의 다양한 요구를 모두 만족시킬 수 없습니다. 일부 지역이나 특수 시장의 필요가 광범위하고 (때로는 모순되며) 비록 우리가 그것을 관리한다 할지라도 혼란스런 결과를 가져오고 대부분 쓸모없는 기능을 가진 거대한 소프트웨어가 될 것입니다.

Graphisoft의 개발 정책은 가능한 필사적으로 ArchiCAD를 유지하는 것입니다; 즉 전세계에서 필요로 하는 코어 ArchiCAD만 제공하는 것입니다. 코어 A/E/C 기능만 제공하겠다는 것입니다. API Development Kit는 애드온 형태로 필수 커스텀 기능을 만들 수 있는 가능성을 제공합니다. 애드온은 반드시 사용자가 한 조각씩 조립해서 솔루션을 만들어야 한다는 뜻은 아닙니다. 이 점을 명심하시기 바랍니다. 애드온은 ArchiCAD 인스톨러의 일부가 될 수 있고 사용자가 "내장된" 핵심 기능으로부터 완전히 구분하기 힘듭니다. 사실 ArchiCAD 안에 이미 API를 이용해 만든 기능들이 있습니다. (예. DXF/DWG I/O 또는 건설 그리드 기능) 그리고 표준 설치 일부에도 있습니다. ("예제"에서 더보기)

 

무슨 종류의 애드온이 필요한가?

추가 기능이 필요한 3가지 주요 영역이 있습니다.

로컬 기능 만들기

명확한 건축/건설 공업 측면 외에도, 실질적으로 모든 국가나 지역에서는 설계, 구조, 지역 규제 등 고유의 특징들을 가지고 있습니다. 이러한 요구들은 반드시 충족되어야 합니다. 그러나 그것을 필요로 하지 않는 사용자들에게는 부담을 주어서는 안 됩니다. 저희 Graphisoft는 이 "로컬" 기능을 만들기 위해 지역 파트너와 긴밀하게 작업하기를 원합니다. - 만약 특정 조건들이 충족되면 - ArchiCAD 인스톨러의 로컬화된 버전에 이 기능을 포함시킬 수 있습니다.

특수 기능 만들기

특수 분야에서 ArchiCAD 기반의 "수직적" 솔루션에 대한 필요성이 증가하고 있습니다. (가령 통나무 하우스 설계, 2X4 하우징 등) 이는 반드시 로컬일 필요는 없습니다. 가령 통나무 하우스 설계의 경우 스칸디나비아와 미국에서는 매우 비슷한 요구사항을 가지고 있습니다. 일반적으로 이러한 솔루션은 축소 포장된 "특수 솔루션"(예. 통나무 하우스 설계를 위한 ArchiCAD)에 포함된 경우 시장에서 매우 잘 받아들여집니다. 이러한 ArchiCAD 기반 수직적 솔루션을 개발하는 것이 Graphisoft의 전략적 목표입니다. 또한 개발자 파트너는 독립적으로 혹은 당사와 협력하여 이러한 솔루션을 시작하고 만들 수 있습니다.

커스텀화

ArchiCAD를 사용하는 대기업의 수가 늘어감에 따라, 커스텀화의 필요성이 증가하고 있습니다. Graphisoft의 API 기술을 이용하여 이러한 요청들을 신속하게 만족시킬 수 있으며 개발자 파트너를 통해 지역적인 요청들을 대응할 수 있습니다. 지역 유통업자 및 판매업자를 위한 추가적인, 잠재적으로 수지 맞는 소득원을 만들 수도 있습니다.

 

API가 유일한 대안인가?

API 개발은 ArchiCAD에 추가 기능을 제공하거나 커스텀화 할 수 있는 유일한 방법은 아닙니다. 초창기부터 ArchiCAD는 GDL 프로그래밍을 통해 커스텀화 기능을 제공하였습니다. 그리고 GDL은 여전히 커스텀화를 위한 매우 중요한 도구로 남아 있습니다. GDL 객체는 API 애드온에 의해 자연스럽게 접근 가능합니다. 그리고 사실 - 예제에서 설명한 대로 - GDL 객체와 API 애드온을 함께 사용하는 것은 ArchiCAD의 기능을 개선하는 가장 강력한 방법 중 하나입니다. 게다가 ArchiCAD 6.0부터 리스팅 함수들 역시 커스텀화될 수 있습니다. 이러한 3가지 프로그래밍 환경은 광범위한 도구들을 제공함으로써 A/E/C 시장에서의 다양한 문제들을 성공적으로 해결할 수 있습니다. 그러나 GDL과 리스팅 프로그래밍은 현재 논의할 내용은 아닙니다. 해당 내용을 학습하려면 적절한 매뉴얼(ArchiCAD 패키지 일부)을 참조하시기 바랍니다.

 

누가 API 개발을 할 수 있는가?

API 개발자들은 C나 C++ 프로그래밍 언어 경험이 있어야 합니다. 절차적 측면을 위해 개발자 웹사이트의 Policy 섹션을 방문하시기 바랍니다. 당연히 어떻게 해야 할지 아는 데 충분하지는 하지만 무엇을 개발해야 할지는 알 수 있습니다. 그러므로 ArchiCAD 기능에 대한 완전한 지식을 갖추는 것이 전제 조건입니다.

 


기술 설명

 

API Development Kit의 목표는 저희 개발 파트너들에게 애드온 개발 방법을 제공하는 것입니다. 구체적으로 Virtual Building의 데이터베이스에 접근하고 수정할 수 있게 해줍니다. API 소프트웨어 도구들은 기능에 따라 크게 4가지 그룹으로 나뉩니다:

데이터베이스 도구

이 함수들은 Virtual Building의 데이터베이스에 접근/수정할 수 있게 해줍니다. 좋은 예시는 Modify Wall 애드온이 있습니다. 이것은 벽에 대한 다양한 동작을 수행할 수 있습니다. (예. 벽의 레퍼런스 라인을 다른 사이드로 이동시킴)

인터페이스 도구

이 함수들은 API 애드온에 GUI를 만들 수 있게 해줍니다. 좋은 예시는 Profiler 애드온이 있습니다. 이것은 사용자가 회전/관형 객체를 만들 수 있게 해줍니다. 이 애드온은 플랫폼 독립적인 Dialog Manager와 API 입력 서비스 둘 다 이용합니다.

통합 도구

이 함수들은 ArchiCAD "이벤트" 캐치를 통해 ArchiCAD 환경에 API 애드온을 견고히 통합할 수 있도록 다양한 가능성을 제공합니다. 단순한 예시로는 Selections 애드온이 있는데 이것은 사용자의 Favorite 섹션을 보관/복원할 수 있습니다. 이것은 선택(select, deselect)에 대한 모든 변화를 캐치합니다. 그리고 그에 따른 인터페이스 요소들의 상태를 수정합니다.

개발 도구

이것은 개발을 용이하게 해주는 다양한 소프트웨어 도구들입니다. 좋은 예시로는 라이브러리 개발자를 위한 Modify Library Parts 애드온이 있습니다. 이것을 이용하여 라이브러리 파트를 일괄적으로 수정할 수 있습니다.

  

데이터베이스 도구

애드온을 만드는 주된 이유는 대부분 Virtual Building의 데이터베이스를 수정하는 것입니다. 이러한 함수들은 실질적으로 Virtual Building 데이터베이스 요소들에 무제한 접근을 제공합니다. 특히:

API v4.1 개발자부터 Virtual Building 데이터베이스와 관련된 기타 정보에 접근할 수 있습니다. 예:

이 도구들을 이용하여 ArchiCAD 데이터베이스에 있는 어떤 요소에 대해 정보를 가져오거나, 변경, 생성, 삭제가 가능합니다. 즉, API를 이용하면 다음과 같은 도구를 작성할 수 있습니다. 예. 사용자가 벽을 선택한 뒤에 API 커맨드를 활성화합니다. 벽의 기하 파라미터들을 체크하고 - 계산하고 필요한 파라미터를 기존에 작성된 GDL 객체에 할당하여 - 커튼 월의 상세 기하 데이터를 포함하는 라이브러리 항목으로 대체합니다.

 

인터페이스 도구

Virtual Building 데이터베이스 안에서 변경을 수행하려면 사용자는 반드시 자신의 의도를 애드온에게 전달할 수 있어야 합니다. 즉, GUI가 필요합니다. API는 매우 향상된 도구들을 제공합니다. 이것들을 이용하여 개발자들은 주어진 문제에 대해 가장 적합한 인터페이스 솔루션을 선택하게 할 수 있습니다. 다음 기능들은 개발자들이 정리해 놓은 것들입니다:

새로운 메뉴 항목 만들기

API를 이용하는 개발자들은 표준 ArchiCAD 메뉴 구조 안에 새로운 메뉴 항목을 만들 수 있습니다. (15개 이상 삽입 포인트 가능) 게다가 API v2.1부터 완전히 새로운 메뉴를 만드는 것이 가능합니다. 표준 메뉴 개선 방법은 다음과 같습니다:

다이얼로그 박스

API 커맨드는 다이얼로그 박스를 열 수 있습니다. (모달 다이얼로그와 팔레트) 다음은 개발자들이 정리해 놓은 표준 ArchiCAD 인터페이스 요소들입니다. 이 기능은 개발자들이 (DG 라이브러리라고 하는) 표준 ArchiCAD Interface Toolbox에 접근할 수 있게 해주고 표준 인터페이스 컴포넌트를 이용하여 "ArhiCAD 룩앤필" 인터페이스를 제공해줍니다. (펜 팔레트, 레이어 팝업 등)

팔레트

API 커맨드는 필요할 경우 동작하는 동안 열려 있는 채로 유지되는 팔레트도 열 수 있습니다. 마찬가지로 개발자들은 모달 다이얼로그 박스를 위해 DG 라이브러리에 접근/사용할 수 있습니다.

참고: 이 기능을 사용하여 API 도구에 대해서도 새 도구 상자를 만들 수 있습니다.

ArchiCAD로부터 그래픽 입력

API 커맨드를 진행하는 동안 다양한 방법들이 ArchiCAD 프로젝트로부터 그래픽 입력을 지원합니다. 사용자에게 점, 선, 호, 폴리곤의 기하 정보를 달라고 강요할 수도 있습니다. API v4.1부터는 당신만의 고유한 펫 팔레트를 만들 수도 있습니다.

커서 제어

그래픽 입력 서비스가 실행되는 동안 개발자는 다양한 커서 속성들을 제어할 수 있습니다. (모양, 민감도, 평면)

새로운 윈도우

API v2.1 이후, 개발자들은 새로운 텍스트를 자유롭게 열 수 있고 창을 그릴 수 있으며 ArchiCAD의 모든 2D 드래프트 엔진을 이용하여 아무 종류의 도면이나 다이어그램을 작성할 수 있습니다.

참고: 표준 ArchiCAD 인터페이스의 일부를 변경하거나 숨길 수 없습니다. 새로운 API 애드온을 통해 추가만 할 수 있습니다.

 

통합 도구

일부 API 애드온은 GUI를 통한 사용자 액션에 의해 완전히 제어되지만, 일부의 경우 개발자들이 사용자 상호작용 없이 자동으로 이벤트를 시작하도록 원할 때도 있습니다. 자연스럽게 2가지 방법이 결합될 수 있습니다. 따라서 표준 ArchiCAD 이벤트와 API 애드온 액션을 연결함으로써 API 애드온은 ArchiCAD의 작업 환경에 견고하게 결합될 수 있습니다.

이 함수들을 이용하여 다양한 사용자 액션을 모니터링하고 다른 애드온 액션을 위한 "트리거"로 사용할 수도 있습니다. API v4.x부터는 개발자들이 다음 이벤트에 대한 정보를 가져올 수 있습니다:

데이터베이스 변경

프로젝트 내 변경은 API 애드온으로부터 액션을 트리거시키는 이벤트입니다. 예. 만약 지붕 window가 움직이면 애드온은 - 이벤트를 캐치하고 - 자동으로 지붕의 구멍을 조정합니다. (벽에 연결된 창과 마찬가지입니다)

새로운 요소 만들기

Virtual Building 데이터베이스에 추가되는 새로운 요소는 API 애드온 액션을 유발할 수도 있습니다. 예. 만약 특정 유형의 벽이 생성되면, API 애드온은 자동으로 벽에 대한 footing을 생성합니다.

파라미터 셋팅 변경

프로젝트 데이터베이스 내에 변경 사항이 없는 동안, 파라미터 셋팅의 변경 사항이 발생합니다. 예. 만약 사용자가 Wall 도구의 특정 벽 파라미터 셋팅을 선택하면, "Using this width is against the office standards"라는 경고 메시지를 트리거할 수도 있습니다.

프로젝트 변경

전체 프로젝트에 애드온의 액션을 트리거하는 무슨 일이 발생할 경우가 있습니다. 예. "Save as…" 또는 "Send and receive…"를 활성화하는 것은 API 애드온이 자동으로 백업을 만들거나 액션에 대한 알림을 보내도록 트리거 할 수도 있습니다.

라이브러리 변경

로드된 라이브러리의 상태가 변경될 경우가 있습니다. 예. 애드온에 사용되는 필수 요소를 포함하는 라이브러리를 사용자가 언로드하면, 이 경우 애드온은 사용자에게 "Please reload the xxx library."라는 경고를 보여줍니다.

선택 변경

요소 선택이 변경될 경우가 있습니다. 예. 사용자가 Floor Plan에 다른 요소를 선택합니다. 그러면 애드온은 정보 팔레트를 업데이트합니다. (Element Information 애드온을 보십시오)

 

개발 도구

이 도구들의 유일한 목적은 개발을 용이하게, 더 빠르게, 오류에 덜 취약하게 해주는 것입니다.

 


예제

다음은 Graphisoft에서 개발한 3가지 API 애드온 예시를 소개합니다. 이 도구들은 기능적으로 매우 다르고 (I/O 확장, 건축적 세부화, 일반 모델링), 패키징에서 다르고 (일반적으로 번들 애드온, 대부분 지역적으로 다른 내용을 가진 무료 번들 "goodie"는 Graphisoft의 웹사이트에서 다운로드 가능함), 당연히 외형적으로도 다릅니다. 그것들은 ArchiCAD의 API가 제공하는 다재다능함을 의미하며 우리는 개발자 파트너들이 작업할 때에 영감을 받기를 원합니다.

DWG/DXF I/O 애드온

이 애드온은 ArchiCAD의 DWG와 DXF 읽기/쓰기 기능을 담당합니다. 모든 ArchiCAD 패키지의 표준 파트입니다. 그러므로 애드온으로 구현하는 것이 비논리적으로 들릴 수 있습니다. 그러나 DWG와 DXF 포맷은 종종 변경되며 일반적으로 이러한 변경 사항은 일반적인 업그레이드 주기와 일치하지 않습니다. 그럼에도 불구하고, 우리는 사용자들의 편의를 위해 가능한 한 빨리 이러한 변화를 따라갈 수 있어야 한다. DWG/DXF I/O 애드온은 ArchiCAD의 소스 코드(더 많은 시간이 걸리는 프로세스)를 변경하지 않고 DWG 또는 DXF 출력을 조정할 수 있는 기회를 제공한다.

애드온 인터페이스는 상당히 간단하지만, 그 뒤에 있는 기술은 다소 복잡하다.

마찬가지로 필요한 정보를 이용할 수 있는 경우 API 개발자는 CAD 또는 CG 소프트웨어에 I/O 애드온을 만들 수 있습니다.

RoofMaker

RoofMaker는 이름에서 알 수 있듯이 ArchiCAD 프로젝트를 위한 지붕을 만듭니다. 건축가는 먼저 ArchiCAD의 지붕 도구로 지붕을 설계한 다음, RoofMaker의 파라메트릭 기능을 사용하여 몇 번만 클릭하면 보, 서까래 등으로 복잡한 지붕 구조를 만들 수 있습니다. (API에 의해 배치되는) 새로운 지붕 객체는 파라메트릭 GDL 라이브러리 부품이므로 나중에 쉽게 수정할 수 있습니다.

그러나 문제는 유럽과 미국의 지붕 구조가 다르다는 것입니다. (복잡한 일본 지붕에 대해서는 말할 것도 없습니다!) 그리고 모든 것을 하나의 도구에 수용하는 것은 매우 어려울 것입니다. (그리고 인터페이스를 단순하게 유지하는 것도 어렵습니다) 이러한 이유로 우리는 지붕 제작 도구를 ArchiCAD로 하드 코딩하는 대신 RoofMaker가 주요 지역 시장에 맞춤형 애드온이 되어야 한다고 결정했습니다. 따라서 API의 플러그인 아키텍처 덕분에 핵심 애플리케이션의 통합을 손상시키지 않고 지역 요구를 충족시킬 수 있었습니다.

GDL 객체를 배치하는 API 애드온 외에도 RoofMaker 개발에 관련된 GDL 프로그래밍이 상당량 있다는 점에 유의해야 합니다. 실제로, 이전에 로드된 GDL 객체를 배치하고 정의하는 API 애드온인 이 패턴은 GDL과 API의 강도를 결합한 가장 전형적인 강력한 애드온 솔루션 중 하나입니다.

Profiler

ArchiCAD는 GDL이 실제로 복잡한 기하학을 위한 매우 다재다능한 도구이지만 평균 사용자들에게는 GDL 스크립팅을 배우기가 어렵다는 비판을 자주 받습니다. 프로파일러는 GDL의 유연한 기하학과 ArchiCAD 인터페이스의 사용 편의성을 결합한 애드온 도구입니다. 프로파일러를 사용하면 GDL 편집기를 열지도 않고 GDL의 "Rotate" 및 "Sweep" 커맨드의 힘을 활용할 수 있습니다. 그러나 이 경우 API는 단순히 이전에 로드된 GDL 객체에 파라미터를 제공하는 것이 아니라 즉시 이를 생성합니다. (물론 사용자들은 이름을 붙여야 합니다) 이렇게 하면 프로파일러는 자유형 요소를 만드는 데 있어 더 높은 유연성을 유지할 수 있다.

장기적으로 우리는 ArchiCAD가 핵심 애플리케이션에서도 그러한 기능을 수용하는 것이 필요할 수도 있다고 느꼈습니다. 그러나 현재 우리는 프로파일러를 패키지의 일부로 만들지 않고 "goodie"으로 유지하기로 결정했습니다; 이것은 Graphisoft의 웹사이트에서 자유롭게 다운로드할 수 있는 애드온 도구입니다.

 


요약

API v12는 Graphisoft와 그 파트너가 사용자의 이익을 위해 광범위한 추가 기능을 만들 수 있는 성숙하고 현대적인 개발 환경입니다. 개발자일 뿐만 아니라 동시에 API 기술의 사용자인 Graphisoft는 ArchiCAD의 후속 릴리스와 함께 API Development Kit를 지속적으로 업그레이드하는 데 전념하고 있습니다.

우리는 가능한 버그의 리포트나 API의 기능을 향상시키는 방법에 대한 제안을 환영합니다. Graphisoft는 API Development Kit의 향후 릴리스에 이러한 요청을 통합하기 위해 최선을 다할 것입니다.