ACAPI_ModulData_Get
프로젝트 데이터베이스에 저장된 데이터 섹션을 리턴합니다.
GSErrCode ACAPI_ModulData_Get ( API_ModulData* info, const GS::UniString& modulName = "" );
파라미터
- info
- [out] 리턴시 프로젝트 파일에 저장된 커스텀 데이터를 포함하게 됩니다.
- modulName
- [in] modul 데이터의 식별자 이름입니다. (선택사항)
리턴 값
NoError
- 함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
info
파라미터가NULL
입니다.APIERR_NOMODULEDATA
- 애드온의 유일 modul ID와 modulName 파라미터에 의해 식별되는 프로젝트 파일에 저장된 커스텀 데이터 섹션이 없습니다.
다른 공통 API 오류들에 대해서는 오류 코드들의 리스트를 보십시오.
설명
이 함수는 주어진 modulName로 식별되는 프로젝트 데이터베이스에 내장된 커스텀 데이터 섹션의 데이터 바이트들을 가져오는 데 사용합니다.
- 항상 API_ModulData structure에 리턴된
platformSign
을 확인하십시오. 올바른 데이터 포맷을 보장하기 위해 필수 바이트 교환(swapping) 메서드들을 호출하십시오. 바이트 교환(swapping) 메서드들에 대한 더 자세한 내용은 GSRoot 문서를 참조하십시오. - 항상 API_ModulData structure에 리턴된
dataVersion
을 확인하십시오.. 예전 데이터 포맷들은 역 호환성을 유지하기 위해 반드시 처리되어야 합니다. (APIModulDataSaveOldFormatHandlerProc도 보십시오)
ArchiCAD는 info
의 dataHdl
필드에 대상 버퍼를 할당합니다; 호출자 애드온은 BMKillHandle
로 그것을 폐기할 책임이 있습니다.
지정된 식별자를 가진 moduldata가 현재 프로젝트 안에 저장되어 있는지 여부를 확인하기 위해 ACAPI_ModulData_GetInfo 함수를 사용하는 것을 권장합니다. 이것은 데이터 자체를 가져오지는 않지만 버전 및 플랫폼 정보를 가져옵니다.
예제
GSErrCode MyDataClass::LoadFromModulData (void) { API_ModulData info; GSErrCode err; BNZeroMemory (&info, sizeof (API_ModulData)); err = ACAPI_ModulData_GetInfo (&info, "MyFirstDataBlock"); if (err != NoError) { if (err == APIERR_NOMODULEDATA) err = NoError; return err; } err = ACAPI_ModulData_Get (&info, "MyFirstDataBlock"); if (err == NoError && info.dataVersion == 1) { myDataClassIntMember = *(reinterpret_cast<Int32*> (*info.dataHdl)); if (info.platformSign != GS::Act_Platform_Sign) { // 데이터 바이트들을 교환(swap) IVLong ((GS::PlatformSign) info.platformSign, &myDataClassIntMember); } } BMKillHandle (&info.dataHdl); return err; }
요구사항
- 버전: API 4.1 또는 이후
- 헤더: ACAPinc.h
참고사항
API_ModulData
ACAPI_ModulData_GetInfo
ACAPI_ModulData_GetList
ACAPI_ModulData_Store
ModulData 관리자
API 함수