Graphisoft®

API Development KitVersion: 18

APIDo_ChangeWindowID

현재 (활성) 창을 변경합니다.

    GSErrCode ACAPI_Automate (
        APIDo_ChangeWindowID,
        API_WindowInfo*     windowInfo
    );

 

파라미터

windowInfo
[in] 요청된 전면 창의 식별 파라미터들입니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
windowInfoNULL입니다.
APIERR_NOPLAN
열린 프로젝트가 아무것도 없습니다.
APIERR_BADWINDOW
요청된 전면 창이 유효하지 않습니다.

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

 

설명

이 함수는 서버 애플리케이션의 전면 창을 변경하는 데 사용합니다. 이것은 Window 메뉴에서 적절한 메뉴를 클릭했을 때와 같은 동작을 수행합니다.

일반적으로 현재 창과 현재 데이터베이스의 창은 동일합니다. 그러나 반드시 조심해야 합니다; 데이터베이스 의존 함수들은 현재 창의 데이터베이스가 아닌 현재 데이터베이스 상에서 작동합니다. 인터페이스 함수들은 항상 현재 창에서 작동합니다.

이 함수는 현재 데이터베이스 역시 변경한다는 것을 참고하십시오.

만약 APIDb_ChangeCurrentDatabaseID 함수가 실패했다면 이 함수는 단면/입면 및 디테일 창의 데이터베이스에 접근하는 데 매우 유용합니다. 이것은 실제 프로젝트가 열린 이후에 단면 또는 디테일 창이 열리지 않았을 때 발생합니다; 데이터베이스는 재생성되지 않았으므로 사용할 수 없습니다. 일단 사용자가 단면 또는 디테일 창으로 전환하면 데이터베이스를 이용할 수 있게 됩니다.

 

예제

API_WindowInfo      windowInfo;
API_DatabaseInfo    origDB, planDB;
API_Element         element;
GS::Array<API_Guid> elemList;
GSErrCode           err;

BNZeroMemory (&planDB, sizeof (API_DatabaseInfo));
planDB.typeID = APIWind_FloorPlanID;

ACAPI_Database (APIDb_GetCurrentDatabaseID, &origDB, NULL);
ACAPI_Database (APIDb_ChangeCurrentDatabaseID, &planDB, NULL);

ACAPI_Element_GetElemList (API_CutPlaneID, &elemList);
for (GS::Array<API_Guid>::ConstIterator it = elemList.Enumerate (); it != NULL; ++it) {
    ACAPI_Database (APIDb_ChangeCurrentDatabaseID, &planDB, NULL);
    BNZeroMemory (&element, sizeof (API_Element));
    element.header.guid = *it;
    err =  ACAPI_Element_Get (&element);
    if (err == NoError) {
        BNZeroMemory (&windowInfo, sizeof (API_WindowInfo));
        windowInfo.typeID = APIWind_SectionID;
        windowInfo.databaseUnId = element.cutPlane.databaseID;
        err = ACAPI_Automate (APIDo_ChangeWindowID, &windowInfo, NULL);
    }
}
 

요구사항

버전: API 2.2 또는 이후
헤더: APIdefs_Automate.h

 

참고사항

API_WindowInfo,
APIDb_ChangeCurrentDatabaseID,
ACAPI_Automate, API 함수