Graphisoft®

API Development KitVersion: 18

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