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_BADPARS
guids
또는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 함수