Graphisoft®

API Development KitVersion: 18

APIEnv_Change3DProjectionSetsID

3D 투영의 파라미터들을 변경합니다.

    GSErrCode ACAPI_Environment (
        APIEnv_Change3DProjectionSetsID,
        API_3DProjectionInfo*     proj3DInfo,
        bool*                     switchOnlyAxonoOrPersp
    );

 

파라미터

proj3DInfo
[in] '3D Projection Settings...' 다이얼로그의 파라미터들입니다.
switchOnlyAxonoOrPersp
[in] 선택적인 파라미터입니다. 만약 이것이 NULL이 아니며 이 값이 true이면, proj3DInfoisPersp 필드만 고려합니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
proj3DInfoNULL입니다.
APIERR_NOPLAN
열린 프로젝트가 없습니다.

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

 

설명

이 함수는 3D 투영을 변경하는 데 사용합니다.

만약 switchOnlyAxoOrPersp 파라미터에 true를 전달하면, 투영의 종류(평행 또는 퍼스펙티브)만 변경되고 다른 모든 파라미터들은 무시할 것입니다.
만약 API_3DProjectionInfocamGuid 또는 actCamSet 필드의 값이 0이 아니라면, camGuid로 식별되는 카메라에 따라 퍼스펙티브 투영이 정의될 것입니다. 만약 camGuid가 유효하지 않으면, actCamSet 필드에 의해 정의된 카메라 집합의 1번째 카메라를 사용할 것입니다. 그 외의 경우, 퍼스펙티브 설정들은 어떤 평면도 카메라 요소와도 관련이 없으며 API_PerspPars 데이터에 의해 정의될 것입니다. 이 필드들은 액소노메트릭 투영 파라미터들을 변경할 때에는 관련이 없습니다.

 

예제

/* 다음 퍼스펙티브 카메라로 변경함 */
API_Element           element;
API_3DProjectionInfo  proj3DInfo;
GSErrCode             err;

BNZeroMemory (&proj3DInfo, sizeof (API_3DProjectionInfo));
err = ACAPI_Environment (APIEnv_Get3DProjectionSetsID, &proj3DInfo, NULL, NULL);
if (err == NoError && proj3DInfo.isPersp && proj3DInfo.camGuid != APINULLGuid) {
    BNZeroMemory (&element, sizeof (API_Element));
    element.header.guid = proj3DInfo.camGuid;
    err = ACAPI_Element_Get (&element);
    if (err == NoError && element.camera.perspCam.nextCam != APINULLGuid) {
        proj3DInfo.camGuid = element.camera.perspCam.nextCam;
        err = ACAPI_Environment (APIEnv_Change3DProjectionSetsID, &proj3DInfo, NULL, NULL);
    }
}

요구사항

버전: API 3.1 또는 이후
헤더: APIdefs_Environment.h

 

참고사항

APIEnv_Get3DProjectionSetsID, ACAPI_Environment, API_3DProjectionInfo, API 함수