Graphisoft®

API Development KitVersion: 18

ACAPI_ElementSet_Create

요소들을 요소 집합으로 그룹화합니다.

    GSErrCode  ACAPI_ElementSet_Create (
        GS::Array<API_Guid>*     guids,
        const API_UserData*      userData,
        API_Guid*                setGuid
    );

 

파라미터

guids Changed in API 12
[in] 요소 GUID들의 배열에 대한 핸들입니다.
userData
[in] 집합에 할당되는 사용자 데이터입니다. (선택사항이며 NULL일 수 있음)
setGuid Changed in API 12
[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 함수