Graphisoft®

API Development KitVersion: 18

APIAny_TriangulatePolyID

폴리곤을 삼각형들로 분해합니다.

    GSErrCode ACAPI_Goodies (
        APIAny_TriangulatePolyID,
        API_ElementMemo*     memo,
        API_Coord***         coords
    );

 

파라미터

memo
[in] 폴리곤의 파라미터들입니다. 폴리곤의 좌표들과 서브 폴리곤 끝점들은 반드시 메모의 coords 핸들과 pends 핸들이어야 합니다.
coords
[out] 삼각형들의 좌표들입니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
파라미터들 중 하나 이상이 NULL입니다.
APIERR_REFUSEDPAR
폴리곤 내 호가 있습니다.
APIERR_MEMFULL
동작을 완료하기에는 메모리가 부족합니다.
APIERR_IRREGULARPOLY
입력 폴리곤이 불규칙적입니다.

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

 

설명

이 함수는 폴리곤을 삼각형들로 분해하는 데 사용합니다. 서버 애플리케이션이 coords 핸들을 할당하고 좌표들로 채울 것입니다. 생성된 삼각형들의 개수는 리턴된 핸들 크기를 기반으로 결정되어야 합니다.

이 함수는 호 세그먼트들을 갖고 있지 않은 폴리곤들만 허용합니다.

더 이상 필요하지 않으면 coords 핸들을 폐기하는 것을 잊지 마십시오.

 

예제

#include  "GSBase.h"      /* BMhKill */

GSErrCode TriangulateSlab (const API_Guid& slabGuid)
{
    API_Element       element;
    API_ElementMemo   memo;
    API_Coord         **coords;
    Int32             nTriangles;
    GSErrCode         err;

    BNZeroMemory (&memo, sizeof (API_ElementMemo));
    BNZeroMemory (&element, sizeof (API_Element));
    element.header.guid = slabGuid;

    err = ACAPI_Element_Get (&element);
    if (!err) {
        if (element.slab.poly.nArcs > 0)
            return APIERR_REFUSEDPAR;
            err = ACAPI_Element_GetMemo (element.header.guid, &memo);
            if (!err) {
            err = ACAPI_Goodies (APIAny_TriangulatePolyID, &memo, &coords);
            if (!err) {
                nTriangles = BMGetHandleSize ((GSHandle) coords) / (3 * sizeof (API_Coord));
                /* ... */
                BMKillHandle ((GSHandle *) &coords);
            }
            ACAPI_DisposeElemMemoHdls (&memo);
        }
    }

    return err;
}

 

요구사항

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

 

참고사항

API_ElementMemo, API_Coord,
ACAPI_Goodies, API 함수