ACAPI_Element_ShapePrims
요소의 도형을 가상으로 그립니다.
GSErrCode ACAPI_Element_ShapePrims ( const API_Elem_Head& elemHead, ShapePrimsProc* shapePrimsProc );
파라미터
- elemHead
- [in] 처리할 요소를 식별합니다.
- shapePrimsProc
- [in] 요소 프리미티브들을 처리하기 위해 호출되는 함수입니다.
리턴 값
NoError
- 함수가 성공적으로 완료되었습니다.
APIERR_BADPARS
- 전달된 파라미터가
NULL입니다; element
APIERR_BADDATABASE
- 동작을 위한 적절한 데이터베이스가 열리지 않았습니다. 예를 들면, 당신이 3D 창(그리고 3D 데이터베이스)이 활성화되어 있는 동안 2D 요소에 접근하려고 한 경우입니다.
APIERR_BADID
- 요소 타입이 유효하지 않습니다,
요소guid
가 유효하지 않습니다, 또는
요소 타입이 서버 애플리케이션에 의해 지원되지 않습니다. APIERR_REFUSEDCMD
- 이 오류 코드는
elemHead.guid
파라미터에 의해 지정된 요소가 현재 층에 있지 않을 때 리턴됩니다. APIERR_REFUSEDPAR
typeID
파라미터에 프리미티브로부터 그려질 수 없는 요소들을 지정했습니다. 예를 들면 ArchiCAD의API_CamSetID
가 있습니다.
다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.
- 이 함수는 ShapePrimsProc 포인터가 지정한 사용자 지정 함수에 의해 생성된 오류 코드를 리턴할 수 있습니다.
설명
이 함수는 shapePrimsProc
함수를 이용하여 드로잉 프리미티브(API_PrimElement를 보십시오)로부터 요소를 그립니다.
API_PrimElement(ShapePrimsProc의 1번째 파라미터) 또한 컨트롤 코드를 포함할 수 있습니다; 이 코드들은 서브 파트들의 드로잉의 시작과 끝을 표시합니다. 이것은 또한 연결된 요소들에 대한 정보를 포함할 수 있습니다. (예. 벽들의 경우, 당신은 그 벽에 있는 창과 문들의 인덱스들을 가져옵니다)
이 드로잉 프로시저들은 중첩(nested)될 수 없습니다.
예제
/* 다음 예제는 ACAPI_Element_ShapePrims와 샘플 ShapePrimsProc 함수들의 사용법을 보여줍니다 */ static GSErrCode __ACENV_CALL Own_DrawElementPrim (const API_PrimElement *primElem, const void *par1, const void *par2, const void *par3) { switch (primElem->header.typeID) { case API_PrimPointID: Own_DrawPrimPoint (&primElem->point); break; case API_PrimLineID: Own_DrawPrimLine (&primElem->line); break; case API_PrimArcID: Own_DrawPrimArc (&primElem->arc); break; case API_PrimTextID: Own_DrawPrimText (&primElem->text,par1); break; case API_PrimPLineID: Own_DrawPrimPLine (&primElem->pline, par1, par2); break; case API_PrimTriID: Own_DrawPrimTri (&primElem->tri); break; case API_PrimPolyID: Own_DrawPrimPoly (&primElem->poly, par1, par2, par3); break; case API_PrimCtrl_HatchBorderBegID: gHatchBrdMode = true; break; case API_PrimCtrl_HatchBorderEndID: gHatchBrdMode = false; break; case API_PrimCtrl_HatchLinesBegID: gHatchLinesMode = true; break; case API_PrimCtrl_HatchLinesEndID: gHatchLinesMode = false; break; default: break; } } /* Own_DrawElementPrim */ /* 메인 프로그램 내 */ API_Elem_Head header; for (GS::Array<API_Guid>::ConstIterator it = elemList.Enumerate (); it != NULL && !lastErr; ++it) { BNZeroMemory (&header, sizeof (API_Elem_Head)); header.guid = *it; lastErr = ACAPI_Element_ShapePrims (header, Own_DrawElementPrim); }
요구사항
- 버전: API 1.3 또는 이후
- 헤더: ACAPinc.h
참고사항
API_ElemTypeID, API_PrimElement
ShapePrimsProc, ACAPI_LibPart_ShapePrims
ACAPI_LibPart_GetHotspots, APIDb_DrawStoryControlID
요소 관리자, API 함수