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 함수