ACAPI_ElementSet_Create
요소들을 요소 집합으로 그룹화합니다.
GSErrCode ACAPI_ElementSet_Create (
GS::Array<API_Guid>* guids,
const API_UserData* userData,
API_Guid* setGuid
);
파라미터
- guids

- [in] 요소 GUID들의 배열에 대한 핸들입니다.
- userData
- [in] 집합에 할당되는 사용자 데이터입니다. (선택사항이며
NULL일 수 있음) - setGuid

- [out] 새로 생성된 요소 집합의 유일 ID입니다.
리턴 값
NoError- 함수가 성공적으로 완료되었습니다.
APIERR_BADPARSguids또는setGuid파라미터가NULL입니다.APIERR_BADDATABASE,APIERR_NOTMINE- 함수가 현재 데이터베이스에서 작동할 수 없습니다.
APIERR_REFUSEDCMD- 함수는 반드시 undoable이어야 합니다. 열린 undoable session이 없습니다.
APIERR_BADPLATFORMSIGN- 주어진 플랫폼 기호가 유효하지 않습니다.
APIERR_MEMFULL- 동작을 완료하기에 메모리가 부족합니다.
다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.
설명
당신은 어떤 목적을 위해 요소 집합을 생성하기 위해 이 함수를 사용할 수 있습니다. ACAPI_Element_Link와 마찬가지로, 이것은 당신이 관심을 갖고 있는 요소 GUID들의 리스트를 포함하는 논리적 레코드를 생성합니다. ACAPI_Element_SetUserData 함수로 개별 요소들에게 사용자 데이터를 저장할 수 있었던 것처럼, 요소 집합에도 커스텀 정보를 추가할 수도 있습니다.
새로 생성된 요소 집합의 참조 GUID는 setGuid 파라미터에 리턴됩니다.
예제
GS::Array<API_Guid> guids;
// 처음 벽, 기둥, 보, 창의 guid들을 가져옴 (API_WallID + 4)
for (USize i = API_WallID; i < static_cast<USize> (API_WallID) + 4; i++)
{
GS::Array<API_Guid> elemList;
const API_ElemTypeID typeID = static_cast<API_ElemTypeID> (i);
if (ACAPI_Element_GetElemList (typeID, &elemList, APIFilt_OnVisLayer | APIFilt_OnActFloor) == NoError) {
if (!elemList.IsEmpty ())
guids.Push (elemList[0]);
else
guids.Push (APNULLGuid);
}
}
// 사용자 데이터에 노트를 작성함
API_UserData userData;
BNZeroMemory (&userData, sizeof (userData));
userData.dataVersion = 4;
userData.platformSign = GS::Act_Platform_Sign;
userData.dataHdl = BMAllocateHandle (1024, ALLOCATE_CLEAR, 0);
if (userData.dataHdl != NULL) {
sprintf (*userData.dataHdl, "Original element count: 4, guids [%s,%s,%s,%s]",
(const char *) APIGuid2GSGuid (guids[0]).ToUniString ().ToCStr (),
(const char *) APIGuid2GSGuid (guids[1]).ToUniString ().ToCStr (),
(const char *) APIGuid2GSGuid (guids[2]).ToUniString ().ToCStr (),
(const char *) APIGuid2GSGuid (guids[3]).ToUniString ().ToCStr ());
}
ACAPI_OpenUndoableSession ("Create Element Set");
API_Guid setGuid;
GSErrCode err = ACAPI_ElementSet_Create (&guids, &userData, &setGuid);
if (err != NoError) {
DBPRINTF ("Create Element Set error: %d/n", err);
}
ACAPI_CloseUndoableSession ();
BMKillHandle (&userData.dataHdl);
요구사항
- 버전: API 4.1 또는 이후
- 헤더: ACAPinc.h
참고사항
API_UserData
ACAPI_ElementSet_Delete
ACAPI_ElementSet_GetData
ACAPI_ElementSet_Identify
요소 집합 관리자
API 함수