Graphisoft®

API Development KitVersion: 18

ACAPI_LibPart_GetHotspots

등록된 라이브러리 파트의 핫스팟들을 가져옵니다.

    GSErrCode  ACAPI_LibPart_GetHotspots (
        Int32                  libInd,
        const API_Guid&        instanceElemGuid,
        Int32*                 nHotspots,
        API_PrimHotspot***     hotspots
    );

 

파라미터

libInd
[in] 라이브러리 파트의 인덱스입니다.
instanceElemGuid 17
[in] 인스턴스 요소 GUID입니다; 만약 APINULLGuid이면, 드로잉 파라미터들은 라이브러리 파트의 기본 파라미터들이 됩니다. (변환 없음, 기타) 그 외에는 이 GUID로 정의된 라이브러리 파트의 인스턴스로부터 가져옵니다.
nHotspots
[out] 핫스팟들의 개수입니다.
hotspots
[out] 리턴시 핫스팟 데이터를 포함하는 핸들입니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
nHotspots 또는 hotspots 파라미터가 NULL입니다. 또는 유효하지 않은 libInd가 전달되었습니다.
APIERR_BADINDEX
libInd가 암시하는 요소 타입에 대하여 유효하지 않은 instanceElemGuid입니다.

 

설명

이 함수는 라이브러리 파트의 핫스팟들을 가져오는 데 사용합니다.
라이브러리 파트는 ACAPI_LibPart_ShapePrims와 같은 방식으로 식별됩니다.

핫스팟들은 API_PrimHotspot structure들의 배열에 리턴됩니다. loc 필드의 좌표 값들은 라이브러리 파트의 로컬 좌표계로 통역됩니다. 그러나 만약 참조된 요소 인스턴스가 리사이즈되었다면, 좌표들은 스케일을 따릅니다.
만약 당신이 지정한 요소 인스턴스의 핫스팟의 실제 위치를 가져오고 싶으면, 좌표들을 변환하기 위해 neig 필드를 사용하십시오.

동작 후에 hotspots 핸들을 폐기하는 것을 잊지 마십시오.

이 함수는 평면도에 배치할 수 있는 라이브러리 파트들에서만 동작합니다. 적용 가능한 라이브러리 파트들은 다음과 같습니다:

 

예제

API_PrimHotspot**   hotspots = NULL;
Int32       nHotspots = 0;
Int32       libInd = 1990;          /* 주어진 라이브러리 파트 인덱스 */
API_Guid    instanceElemGuid = element.header.guid;    /* 해당 라이브러리 파트 레퍼런스와 함께 평면도에 배치된 요소의 GUID */

GSErrCode err = ACAPI_LibPart_GetHotspots (libInd, instanceElemGuid, &nHotspots, &hotspots);
if (err == NoError && hotspots != NULL) {
    API_Element element;
    BNZeroMemory (&element, sizeof (API_Element));
    element.header.typeID = API_HotspotID;
    err = ACAPI_Element_GetDefaults (&element, NULL);
    if (err == NoError) {
        short ind;
        for (ind = 0; ind < nHotspots; ind++) {     // 로컬 좌표에 핫스팟들 그리기
            element.hotspot.pen = ind;
            element.hotspot.pos = (*hotspots)[ind].loc;
            ACAPI_Element_Create (&element, NULL);
        }

        for (ind = 0; ind < nHotspots; ind++) {     // neig들을 따라 핫스팟들 그리기
            element.hotspot.pen = ind;
            err = ACAPI_Goodies (APIAny_NeigToCoordID, &(*hotspots)[ind].neig, &element.hotspot.pos);
            if (err == NoError)
                ACAPI_Element_Create (&element, NULL);
        }
    }
}

BMKillHandle ((GSHandle*) &hotspots);

 

요구사항

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

 

참고사항

API_LibTypeID
ACAPI_LibPart_ShapePrims
ACAPI_Element_ShapePrims
라이브러리 파트 관리자
API 함수