ACAPI_LibPart_GetParams
등록된 라이브러리 파트의 기본 파라미터들을 리턴합니다.
GSErrCode ACAPI_LibPart_GetParams ( Int32 libInd, double* a, double* b, Int32* addParNum, API_AddParType*** addPars );
파라미터
- libInd
- 라이브러리 파트의 인덱스입니다.
- a
- 라이브러리 파트의
A
파라미터입니다. - b
- 라이브러리 파트의
B
파라미터입니다. - addParNum
- 추가 파라미터들의 수입니다;
A
와B
이외 - addPars
- 추가 파라미터들입니다.
리턴 값
NoError
- 함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
- 유효하지 않은
libInd
입니다. 또는
파라미터들 중NULL
인 것이 있습니다. 또는
호출한 라이브러리 파트가 매크로, 그림 파일 등입니다. APIERR_MEMFULL
- 동작을 완료하기에 메모리가 부족합니다.
다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.
설명
이 함수는 libInd
로 정의한 요청된 라이브러리 파트의 기본 파라미터들을 가져오는 데 사용합니다.
a와 b 파라미터에 A와 B 변수의 값들이 리턴됩니다; addParNum과 addPars 파라미터에 추가 파라미터 리스트가 리턴됩니다. 각각에는 파라미터들의 수와 실제 값들이 각각 할당됩니다.
라이브러리 파트 파라미터에 대한 더 많은 정보는 API_AddParType을 참조하십시오.
함수가 파라미터 리스트를 설명하기 위해 형식화된 데이터 핸들을 리턴하는 것이 매우 중요합니다.
내용은 ACAPI_LibPart_GetSection 함수를 API_SectParamDef
인자로 호출하여 리턴된 섹션 핸들과 동일하지 않습니다.
함수는 실제 라이브러리 파트에서만 작동합니다. 대상 라이브러리 파트가 아래 목록에 들어 있지 않은 경우, 함수는 오류 코드를 리턴합니다. 다른 타입의 라이브러리 파트들은 단지 활성 라이브러리 폴더로부터 열거되고 등록되는 그림 또는 텍스트 파일일 뿐입니다; 그러한 것을 그림 또는 매크로라고 합니다.
파라미터 리스트를 가진 적용 가능한 타입의 라이브러리 파트들은 다음과 같습니다:
- APILib_WindowID,
- APILib_DoorID,
- APILib_ObjectID,
- APILib_LampID,
- APILib_RoomID,
- APILib_LabelID,
- APILib_MacroObjID,
- APILib_PropertyID
더 이상 필요하지 않으면 추가 파라미터 핸들을 폐기하는 것을 잊지 마십시오. 폐기하려면 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 함수