Graphisoft®

API Development KitVersion: 18

ACAPI_Element_Merge_Elements

주어진 요소들을 배열에 병합합니다.

    GSErrCode  ACAPI_Element_Merge_Elements (
        const GS::Array<API_Guid>&     guid_ElementsToMerge
    );

 

파라미터

guid_ElementsToMerge
[in] 병합할 요소들의 GUID들의 배열입니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_REFUSEDCMD
함수는 undoable이어야 합니다. 열린 undoable session이 없습니다.
APIERR_BADDATABASE, APIERR_NOTMINE
함수가 현재 데이터베이스에서 작동할 수 없습니다.
APIERR_BADINDEX
전달된 ID들 중 1개 이상이 유효하지 않습니다.
APIERR_BADPARS
유효하지 않은 값이 guid_ElementsToMerge 파라미터에서 전달되었습니다.
APIERR_BADELEMENTTYPE
배열 안에 건설 요소 타입이 아닌 요소가 있습니다.

다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.

 

설명

이 함수는 주어진 요소들을 배열에 병합합니다.

 

예제

void Do_Merge_Elements (void)
{
    API_SelectionInfo   selectionInfo;
    API_Neig**          selNeig;
    API_Element         element;

    // 선택(Selection)을 가져옴
    GSErrCode err = ACAPI_Selection_Get (&selectionInfo, &selNeig, true);
    if (err != NoError && err != APIERR_NOSEL) {
        ErrorBeep ("ACAPI_Selection_GetInfo", err);
        return;
    }
    BMKillHandle ((GSHandle *) &selectionInfo.marquee.coords);

    GS::Array<API_Guid> guid_ElementsToMerge;

    for (Int32 i = 0; i < selectionInfo.sel_nElemEdit; i++) {
        // 선택한 요소를 가져옴
        BNZeroMemory (&element, sizeof(element));
        element.header.guid = (*selNeig)[i].guid;
        if (ACAPI_Element_Get (&element) != NoError)
            continue;
        API_ElemTypeID  tmpTypeID = element.header.typeID;
        API_Guid        tmpGuid = element.header.guid;
        if (tmpTypeID == API_SectElemID) {
            tmpTypeID = element.sectElem.parentID;
            tmpGuid = element.sectElem.parentGuid;
        }

        guid_ElementsToMerge.Push (tmpGuid);
    }

    BMKillHandle ((GSHandle *) &selNeig);

    if (!guid_ElementsToMerge.IsEmpty ()) {
        GSErrCode err = ACAPI_Element_Merge_Elements (guid_ElementsToMerge);
        if (err != NoError) {
            if (err == APIERR_NO3D)
                WriteReport_Alert ("Elements To Merge can be construction elements only.");
            else
                WriteReport_Alert ("ACAPI_Element_Merge_Elements failed: %d", err);
        }
    } else {
        WriteReport_Alert ("There are no selected construction elements!\n");
    }

    return;
}

 

요구사항

버전: API 18 또는 이후
헤더: ACAPinc.h

 

참고사항

ACAPI_Element_Merge_Remove
ACAPI_Element_Merge_GetMergedElements
API 함수