Graphisoft®

API Development KitVersion: 18

APIAny_OpenParametersID

편집할 라이브러리 파트 파라미터 리스트를 엽니다.

    GSErrCode ACAPI_Goodies (
        APIAny_OpenParametersID,
        API_ParamOwnerType*     paramOwner
    );

 

파라미터

paramOwner
[in] 편집해야 할 파라미터 핸들의 소유자에 대한 레퍼런스입니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
paramOwner가 NULL입니다. 또는 유효하지 않은 파라미터들이 전달되었습니다.
APIERR_GENERAL
라이브러리 파트가 파라미터들을 갖고 있지 않습니다.

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

 

설명

이 함수는 편집할 파라미터 리스트를 준비하는 데 사용합니다.

일반적으로 파라미터 리스트의 하나의 파라미터를 변경하는 것은 매우 복잡한 작업입니다. 왜냐하면 API_AddParType structure가 매우 복잡하기 때문입니다. 특히 배열 파라미터들의 경우는 더더욱 어렵습니다. 그러나 이 문제를 처리하는 것이 가능합니다. 또다른 이슈는 파라미터 스크립트입니다. 이 스크립트는 편집하는 동안 일관된 파라미터 집합을 제공하기 위해 규칙들과 링크들을 설정합니다. 애드온에서 이번 이슈에 대해 다룰 가능성은 없습니다.

라이브러리 파트 파라미터의 하나의 값을 변경하는 동안 전체 파라미터 일관성을 보장하는 유일한 방법은 이 동작을 위해 제공된 함수들을 사용하는 것입니다. 만약 당신이 API_AddParType 핸들을 직접 조작하면, 파라미터 리스트는 유효성을 잃게 될 것입니다.

함수 집합은 다음과 같습니다:

일단 파라미터 하나를 변경하고 싶으면 APIAny_OpenParametersID 함수로 파라미터 리스트를 열어야 합니다. 작업하고자 하는 다양한 대상들을 여기서 지정할 수 있습니다:

동작의 요구되는 대상을 지정하는 방법은 API_ParamOwnerType structure를 참조하십시오.

편집하기 위해 파라미터 리스트를 연 후에, 파라미터의 값을 변경하기 위해 APIAny_ChangeAParameterID 함수를 사용할 수 있습니다. 변수에 대한 레퍼런스는 변수의 이름 또는 변수의 인덱스가 될 수 있습니다.

APIAny_GetActParametersID 함수를 호출하여 언제라도 API 형태(API_AddParType 핸들)로 현재 (변경된) 파라미터 리스트를 가져올 수 있습니다.

APIAny_GetParamValuesID 함수를 호출하여 언제라도 API 형태(API_GetParamValuesType 핸들)로 한 파라미터의 (라이브러리 파트의 파라미터 스크립트에서 정의한 대로) 가능한 값들을 확인할 수 있습니다.

파라미터 리스트에서의 작업을 마치면 서버 애플리케이션이 할당한 관련 리소스들을 해제하기 위해 APIAny_CloseParametersID 함수를 호출해야 합니다.

 

예제

/* 기본 객체의 파라미터 'zzyzx'를 변경함 */

API_ParamOwnerType   paramOwner;
API_ChangeParamType  chgParam;
API_GetParamsType    getParams;
API_Element          element, mask;
API_ElementMemo      memo;
GSErrCode            err;

BNZeroMemory (&paramOwner, sizeof (API_ParamOwnerType));
paramOwner.libInd = 0;                 /* 라이브러리 파트 없음 */
paramOwner.typeID = API_ObjectID;      /* 객체 요소 */
paramOwner.guid   = APINULLGuid;       /* 요소 기본값 */

BNZeroMemory (&getParams, sizeof (API_GetParamsType));

err = ACAPI_Goodies (APIAny_OpenParametersID, &paramOwner, NULL);
if (err == NoError) {
    BNZeroMemory (&chgParam, sizeof (API_ChangeParamType));

    err = ACAPI_Goodies (APIAny_GetActParametersID, &getParams, NULL);
    if (err == NoError) {
        chgParam.index = 0;
        CHCopyC ("zzyzx", chgParam.name);
        chgParam.realValue = 2.0;
        err = ACAPI_Goodies (APIAny_ChangeAParameterID, &chgParam, NULL);
        if (err == NoError)
            err = ACAPI_Goodies (APIAny_GetActParametersID, &getParams, NULL);
    }
    ACAPI_Goodies (APIAny_CloseParametersID, NULL, NULL);
}

if (err == NoError) {
    BNZeroMemory (&element, sizeof (API_Element));
    BNZeroMemory (&memo, sizeof (API_ElementMemo));
    element.header.typeID = API_ObjectID;
    element.object.xRatio = getParams.a;
    element.object.yRatio = getParams.b;
    ACAPI_ELEMENT_MASK_CLEAR (mask);
    ACAPI_ELEMENT_MASK_SET (mask, API_ObjectType, xRatio);
    ACAPI_ELEMENT_MASK_SET (mask, API_ObjectType, yRatio);
    memo.params = getParams.params;
    err = ACAPI_Element_ChangeDefaults (&element, &memo, &mask);
}

ACAPI_DisposeAddParHdl (&getParams.params);

 

요구사항

버전: API 4.1 또는 이후
헤더: APIdefs_Goodies.h

 

참고사항

API_ParamOwnerType, API_AddParType, API_GetParamValuesType,
APIAny_GetParamValuesID, APIAny_ChangeAParameterID, APIAny_GetActParametersID, APIAny_CloseParametersID,
ACAPI_Goodies, API 함수