Graphisoft®

API Development KitVersion: 18

APIAny_InsertPolyNodeID

폴리곤에 노드 하나를 삽입합니다.

    GSErrCode ACAPI_Goodies (
        APIAny_InsertPolyNodeID,
        API_ElementMemo*     elementMemo,
        Int32*               nodeIndex,
        API_Coord*           coord
    );

 

파라미터

elementMemo
[in/out] 폴리곤 데이터입니다.
nodeIndex
[in] 다음 노드 인덱스(요소의 서브 인덱스) 이후에 새로운 노드를 삽입합니다.
coord
[in] 새로운 노드의 좌표입니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
파라미터들 중 하나 이상이 NULL입니다. 또는 유효하지 않은 nodeIndex가 전달되었습니다. 또는 memo가 초기화되지 않았습니다.
APIERR_MEMFULL
메모리가 부족합니다.
APIERR_IRREGULARPOLY
입력 폴리곤 또는 폴리라인이 불규칙적입니다.

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

 

설명

이 함수는 API_ElementMemo structure에 전달된 폴리곤에 새로운 노드를 삽입하는 데 사용합니다.

이 함수는 주어진 좌표를 올바른 위치에 삽입합니다.

폴리곤 데이터 structure에 대한 더 자세한 것은 API_Polygon structure를 참조하십시오. API_ElementMemo structure의 coords, pends, parcs, vertexIDs 핸들들은 반드시 초기화되어야 합니다.

다른 메모 핸들들은 건드리지 않는다는 것을 참고하십시오. 폴리곤이 초기화된 사이드 각도들을 가진 지붕에 속한 경우, 반드시 수동으로 정렬되어야 합니다.

 

예제

/*----------------------------------------------------------**
** Insert a new node into the clicked poly edge             **
**----------------------------------------------------------*/
static void             Do_Poly_InsertNode (void)

{   API_ElementMemo     memo;
    API_Neig            neig;
    API_ElemTypeID      idElem;
    API_Coord3D         begC;
    API_EdgeTrim        edgeTrim;
    Int32               nodeInd;
    GSErrCode           err;

    if (!ClickAnElem ("Click an edge to insert new node", API_ZombieElemID, &neig, NULL, NULL, &begC)) {
        GiveMessage ("Please click a polygon node", true);
        return;
    }

    if (neig.neigID != APINeig_CeilOn && neig.neigID != APINeig_RoofOn) {
        GiveMessage ("Please click a ceil or roof edge", true);
        return;
    }

    idElem = Neig_To_ElemID (neig.neigID);
    err = ACAPI_Element_GetMemo (neig.guid, &memo);
    if (err) {
        GiveMessage_Err ("ACAPI_Element_GetMemo", err);
        return;
    }

    nodeInd = neig.inIndex + 1;
    err = ACAPI_Goodies (APIAny_InsertPolyNodeID, &memo, &nodeInd, (API_Coord*)(&begC));
    if (!err) {
        switch (idElem) {
            case API_SlabID:
                /* 아무 것도 하지 않음 */
                break;
            case API_RoofID:
                if (memo.edgeTrims != NULL && *memo.edgeTrims != NULL) {
                    /* insert edgeTrim rec; [neig.inIndex] */
                }
                break;
            default:
                return; /* 여기에 가서는 안됨 */
        }
        err = ACAPI_Element_ChangeMemo (neig.guid, APIMemoMask_Polygon, &memo);
        if (err)
            GiveMessage_Err ("ACAPI_Element_ChangeMemo", err);
    } else
        GiveMessage_Err ("APIAny_InsertPolyNodeID", err);

    ACAPI_DisposeElemMemoHdls (&memo);

    return;
}

 

요구사항

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

 

참고사항

API_Polygon, API_ElementMemo,
APIAny_DeletePolyNodeID, APIAny_InsertSubPolyID, APIAny_DeleteSubPolyID,
ACAPI_Goodies, API 함수