Graphisoft®

API Development KitVersion: 18

API_Polygon

2차원 폴리곤을 의미합니다.

    typedef struct {
        Int32          nCoords;
        Int32          nSubPolys;
        Int32          nArcs;
        GS::IntPtr     filler_1;
    } API_Polygon;

 

멤버

nCoords
좌표 배열 내 요소들의 개수입니다. 외곽선의 시작점은 중복됩니다.
nSubPolys
메인 폴리곤을 포함하는 폐쇄 서브 폴리곤의 개수입니다. 폴리라인의 경우 항상 1입니다.
nArcs
폴리곤/폴리라인 내 아치형 세그먼트들의 개수입니다.

 

설명

이 structure는 해당 기하 도형의 크기만 갖고 있습니다. 즉, 폴리곤 도형의 노드의 개수, 서브 폴리곤의 개수, 호 세그먼트의 개수를 의미합니다. 기하 데이터는 항상 API_ElementMemo structure를 통해 전달됩니다.

구성요소는 무엇이 있습니까:

규칙 리스트와 함께 예제를 보도록 하겠습니다.

 

좌표:

외곽선 끝점들:

호 세그먼트:

정점(Vertex) ID:

 

폴리곤의 도형을 편집하는 것은 다음과 같이 처리해야 할 많은 어려움들을 부담해야 합니다:

폴리곤의 도형을 변경하려면 제공되는 함수들을 사용하십시오. 이 함수들은 다음과 같습니다:

 

예제

Int32 FindArc (const API_PolyArc *parcs, Int32 nArcs, Int32 node)
{
    Int32        i;

    if (parcs == NULL)
        return (-1);
    for (i = 0; i < nArcs; i++)
        if (parcs [i].begIndex == node)
            return (i);
    return (-1);
}

void TrackPoly (const API_Polygon *poly, const API_ElementMemo *memo)
{
    int         j, i, begInd, endInd;
    API_Coord   begC, endC;

    for (j = 1; j <= poly->nSubPolys; j++) {
        begInd = (*memo->pends) [j-1] + 1;
        endInd = (*memo->pends) [j];
        for (i = begInd; i < endInd; i++) {
            begC = (*memo->coords) [i];
            endC = (*memo->coords) [i+1];
            arcInd = FindArc (*memo->parcs, poly->nArcs, i);
        }
    }
}

위의 예제는 서브 외곽선 레퍼런스들을 기반으로 폴리곤 노드들을 횡단합니다.

 

요구사항

버전: API 2.1 또는 이후
헤더: APIdefs_Base.h

 

참고사항

API_PolyArc, API_ElementMemo,
APIAny_InsertPolyNodeID, APIAny_DeletePolyNodeID, APIAny_InsertSubPolyID, APIAny_DeleteSubPolyID,
API 타입