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 함수