Graphisoft®

API Development KitVersion: 18

APIAny_DeletePolyNodeID

폴리곤으로부터 노드 하나를 제거합니다.

    GSErrCode ACAPI_Goodies (
        APIAny_DeletePolyNodeID,
        API_ElementMemo*     memo,
        Int32*               inIndex
    );

 

파라미터

memo
[in/out] 폴리곤 데이터입니다.
inIndex
[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_DeleteNode (void)

{   API_ElementMemo      memo;
    API_Neig             neig;
    API_ElemTypeID       idElem;
    Int32                nodeInd;
    Int32                nSubPolys, i, begInd, endInd;
    GSErrCode            err;

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

    if (neig.neigID != APINeig_Ceil && neig.neigID != APINeig_Roof) {
        GiveMessage ("Please click a ceil or roof node", 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;
    err = ACAPI_Goodies (APIAny_DeletePolyNodeID, &memo, &nodeInd);
    if (!err) {
        switch (idElem) {
            case API_SlabID:
                /* nothing to do */
                break;
            case API_RoofID:
                if (memo.roofSides != NULL && *memo.roofSides != NULL) {
                    /* delete roofSide rec; [nodeInd] */
                }

            default:
                return; /* never got there */
        }
        err = ACAPI_Element_ChangeMemo (neig.guid, APIMemoMask_Polygon, &memo);
        if (err)
            GiveMessage_Err ("ACAPI_Element_ChangeMemo", err);
    } else
        GiveMessage_Err ("APIAny_DeletePolyNodeID", err);

    ACAPI_DisposeElemMemoHdls (&memo);

    return;
}

 

요구사항

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

 

참고사항

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