Graphisoft®

API Development KitVersion: 18

ModulData 관리자


ModulData 관리자는 API v3.1에서 도입된 매우 강력한 서비스입니다.

각 애드온은 ArchiCAD 프로젝트 파일들 안에서 커스텀 데이터 섹션들을 소유할 수 있습니다. 구조나 내용, 심지어 저장 크기에 대한 제한도 없습니다. ArchiCAD는 내부 포맷에 대해 아무것도 알지 못합니다. 그저 프로젝트 파일 안에 보관하고 요청할 때 리턴할 뿐입니다.

데이터 섹션들은 애드온의 modul ID ('MDID')와 선택적인 modul 이름 문자열에 의해 유일하게 식별됩니다. 이것은 애드온 당 1개의 데이터만 있어야 한다는 예전 버전의 제한이 해결된 것입니다.  API 13 feature

 

함수

모든 ModulData 관리자 함수들은 ACAPI_ModulData_ 접두사로 시작합니다. 다음과 같습니다:

ACAPI_ModulData_Store
ACAPI_ModulData_GetInfo
ACAPI_ModulData_Get
ACAPI_ModulData_GetList  API 13 feature
ACAPI_ModulData_Delete  API 13 feature

이 함수들을 사용하는 자세한 예제들을 보려면 ModulData Manager 예제 프로젝트를 참고하십시오.

 

커스텀 데이터 섹션 합병하기

특정 상황에서는 동일 애드온 안에 있는 모듈들이 서로 충돌할 수도 있습니다. 또 다른 도면을 프로젝트에 병합할 때, 원본과 들어오는 modul 데이터를 모두 유지하고 함께 결합해야 할 수도 있습니다. 호스트 애플리케이션이 모듈의 내용을 모르기 때문에, 소유자 애드온은 충돌을 해결하도록 요청 받습니다.

이를 위해 애드온은 APIModulDataMergeHandlerProc 콜백 핸들러 함수를 구현하고 Initialize 루틴에서 ACAPI_Install_ModulDataMergeHandler 함수로 ArchiCAD에게 함수 포인터를 전달해야 합니다. 또한 애드온이 모듈 데이터를 병합할 준비가 되었다고 ArchiCAD에게 알려주어야 합니다: 이것은 RegisterInterface에서 ACAPI_Register_ModulDataHandler 함수를 호출하면 됩니다.

팀워크 모드에서 소유자나 다른 팀원이 동일한 모듈 데이터를 변경할 수도 있습니다. 이 경우 데이터의 로컬 및 서버 버전이 동기화 시 충돌하게 되고, 적절한 데이터를 조정하기 위해 애드온의 APIModulDataMergeHandlerProc를 호출됩니다.

ArchiCAD가 핸들러 함수를 호출할 때, API_MDSetCmd moduldata 이벤트 코드가 당신에게 실제 동작의 타입에 대해 알려줍니다:

APIMDSetMerge_TW

팀워크 동작 때문에 데이터 섹션들이 합병되어야 합니다. (예. 변경사항 수신)

APIMDSetMerge_HLM

핫링크된 모듈의 데이터 섹션은 메인 데이터베이스에 병합되어야 합니다.

APIMDSetMerge_Merge

파일, 또는 붙여넣기, 또는 드래그 & 드롭 동작의 데이터 섹션은 메인 프로젝트에 병합되어야 합니다.

 

Moduldata 버전

API_ModulData structure는 버전 번호를 포함합니다. 만약 당신의 데이터 structure가 변경되어야 한다면, 버전 번호를 증가시키십시오. 데이터 섹션을 수신할 때, 버전 정보를 확인하고 만약 가능하다면 역호환성을 제공하십시오.

더 자세한 것은 API_ModulData structure를 참고하십시오.

 

Moduldata 플랫폼

ArchiCAD는 멀티-플랫폼 애플리케이션이기 때문에 프로젝트 파일에 기록되는 모든 데이터는 반대편 플랫폼에서도 읽을 수 있어야 합니다. Windows와 Macintosh의 바이트 오더가 다르기 때문에 올바른 통역을 위해 애드온은 데이터가 생성되는 플랫폼에 대해 알아야 합니다. 만약 플랫폼 코드가 실제 플랫폼과 다르다면, GSRoot 모듈을 이용하여 필요한 바이트 스와핑 동작을 수행하거나, 커스텀 데이터를 읽고 쓰기 위한 Memory Channel을 사용하십시오.

더 자세한 것은 API_ModulData structure를 참고하십시오.

 

API 13 feature  예전 포맷 프로잭트로 데이터 저장하기

만약 커스텀 데이터의 구조가 예전 버전에서 변경되었다면, 예전 포맷 프로젝트로 저장할 때 당신의 모듈들을 변환하기 위해 APIModulDataSaveOldFormatHandlerProc 콜백 함수를 구현해야 합니다. 이 핸들러가 호출되려면, ACAPI_Install_ModulDataMergeHandler로 함수 포인터가 전달되고, modul 데이터 처리 기능을 ACAPI_Register_ModulDataHandler로 등록해야 합니다.

ArchiCAD가 이 함수를 호출할 때, 애드온은 주어진 도면 파일 포맷에 따라 변환된 데이터를 생성하고 그것을 애플리케이션에게 돌려주어야 합니다. 예전 포맷 데이터는 ACAPI_ModulData_Store로 저장해서는 안 되며, 프로젝트 저장 동작 중에 현재 데이터를 삭제하거나 변경해야 합니다.

만약 애드온이 이 컨버터(converter) 콜백 루틴을 설치하지 않으면, 사용 가능한 현재 포맷 모듈 데이터도 예전 버전 프로젝트에 저장됩니다.

 

그외 코멘트

모듈 데이터에 ArchiCAD 요소들에 대한 유일 ID-타입 레퍼런스들을 저장하는 것을 권장하지 않습니다; 이를 위해 요소 집합 관리자 서비스를 대신 사용하십시오.