Graphisoft®

API Development KitVersion: 18

ACAPI_LibPart_GetParams

등록된 라이브러리 파트의 기본 파라미터들을 리턴합니다.

    GSErrCode  ACAPI_LibPart_GetParams (
        Int32                 libInd,
        double*               a,
        double*               b,
        Int32*                addParNum,
        API_AddParType***     addPars
    );

 

파라미터

libInd
라이브러리 파트의 인덱스입니다.
a
라이브러리 파트의 A 파라미터입니다.
b
라이브러리 파트의 B 파라미터입니다.
addParNum
추가 파라미터들의 수입니다; AB 이외
addPars
추가 파라미터들입니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
유효하지 않은 libInd입니다. 또는
파라미터들 중 NULL인 것이 있습니다. 또는
호출한 라이브러리 파트가 매크로, 그림 파일 등입니다.
APIERR_MEMFULL
동작을 완료하기에 메모리가 부족합니다.

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

 

설명

이 함수는 libInd로 정의한 요청된 라이브러리 파트의 기본 파라미터들을 가져오는 데 사용합니다.

ab 파라미터에 A와 B 변수의 값들이 리턴됩니다; addParNumaddPars 파라미터에 추가 파라미터 리스트가 리턴됩니다. 각각에는 파라미터들의 수와 실제 값들이 각각 할당됩니다.

라이브러리 파트 파라미터에 대한 더 많은 정보는 API_AddParType을 참조하십시오.

함수가 파라미터 리스트를 설명하기 위해 형식화된 데이터 핸들을 리턴하는 것이 매우 중요합니다. 내용은 ACAPI_LibPart_GetSection 함수를 API_SectParamDef 인자로 호출하여 리턴된 섹션 핸들과 동일하지 않습니다.

함수는 실제 라이브러리 파트에서만 작동합니다. 대상 라이브러리 파트가 아래 목록에 들어 있지 않은 경우, 함수는 오류 코드를 리턴합니다. 다른 타입의 라이브러리 파트들은 단지 활성 라이브러리 폴더로부터 열거되고 등록되는 그림 또는 텍스트 파일일 뿐입니다; 그러한 것을 그림 또는 매크로라고 합니다.

파라미터 리스트를 가진 적용 가능한 타입의 라이브러리 파트들은 다음과 같습니다:

더 이상 필요하지 않으면 추가 파라미터 핸들을 폐기하는 것을 잊지 마십시오. 폐기하려면 ACAPI_DisposeAddParHdl 함수를 사용하십시오.

 

예제

static void  DumpParameters (Int32 libInd, API_LibTypeID typeID)

{
    API_LibPartDetails   details;
    double               a, b;
    Int32                addParNum, i, ind, i1, i2;
    API_AddParType       **addPars;
    double               value;
    char                 *valueStr;
    GSErrCode            err;

    err = ACAPI_LibPart_GetParams (libInd, &a, &b, &addParNum, &addPars);
    if (err) {
        GiveMessage_Err ("ACAPI_LibPart_GetParams", err);
        return;
    }

    GiveMessage_Val ("    a", a, false);
    GiveMessage_Val ("    b", b, false);
    for (i = 0; i < addParNum; i++) {
        if ((*addPars)[i].typeMod == API_ParSimple) {
            DumpOneParam ((*addPars)[i].typeID, (*addPars)[i].name, (*addPars)[i].flags,
                          (*addPars)[i].value.real, (*addPars)[i].value.str,
                          0,0);

        } else {
            ind = 0;
            DumpOneParam ((*addPars)[i].typeID, (*addPars)[i].name, (*addPars)[i].flags,
                          0.0, NULL,
                          -(*addPars)[i].dim1, -(*addPars)[i].dim2);
            for (i1 = 1; i1 <= (*addPars)[i].dim1; i1++) {
                for (i2 = 1; i2 <= (*addPars)[i].dim2; i2++) {
                    if ((*addPars)[i].typeID != APIParT_CString) {
                        value = (Int32) ((double *) *(*addPars)[i].value.array) [ind];
                        valueStr = NULL;
                        ind ++;
                    } else {
                        value = 0.0;
                        valueStr = *(*addPars)[i].value.array + ind;
                        ind += strlen (valueStr) + 1;
                    }
                    DumpOneParam ((*addPars)[i].typeID, NULL, 0,
                                  value, valueStr,
                                  i1, i2);
                }
            }
        }
    }
    ACAPI_DisposeAddParHdl (&addPars);

    if (typeID == APILib_ObjectID ||
        typeID == APILib_LampID ||
        typeID == APILib_LabelID ||
        typeID == APILib_RoomID) {
        err = ACAPI_LibPart_GetDetails (libInd, &details);
        if (!err) {
            GiveMessage_Num ("    fixSize", details.object.fixSize, false);
            GiveMessage_Num ("    autoHsp", details.object.autoHotspot, false);
        }
    }

    if (typeID == APILib_DoorID ||
        typeID == APILib_WindowID) {
        err = ACAPI_LibPart_GetDetails (libInd, &details);
    }

    return;
}

API_AddParType에서 DumpOneParam 함수의 구현 내용을 보십시오.

 

요구사항

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

 

참고사항

API_AddParType,
ACAPI_DisposeAddParHdl,
라이브러리 파트 관리자, API 함수