Graphisoft®

API Development KitVersion: 18

APIDb_StartDrawingDataID

드로잉 데이터 생성을 위해 임시 데이터베이스로 요소 생성을 리다이렉트합니다.

    GSErrCode ACAPI_Database (
        APIDb_StartDrawingDataID,
        double*           dScale,
        API_PenType**     api_pens
    );

 

파라미터

dScale
[in] 선택적인 파라미터입니다. (기본값은 1.0); 페이퍼에서 모델로의 스케일을 정의합니다. 예를 들어, 1:100 스케일링의 경우, 100을 전달합니다.
api_pens
[in] 선택적인 파라미터입니다. (기본 펜 테이블은 현재 작업공간으로부터 옴 (레이아웃 또는 모델)); 이 드로잉 데이터에 대하여 사용할 펜 테이블을 정의합니다.
API 11  이것은 처음 (인덱스 0) 레코드로부터 시작하여 정확히 255개의 API_PenType 레코드들을 포함해야 합니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_NESTING
이 함수를 호출하는 것은 중첩(nested)될 수 없습니다; APIDb_StopDrawingDataID로 예전 드로잉 데이터를 마쳐야 합니다.

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

 

설명

이 함수는 드로잉 데이터에 대한 내부 스토어를 엽니다. (드로잉 요소의 내부 데이터) 이후의 요소 생성 함수들은 생성된 요소들을 이 스토어에 넣을 것입니다. 2D 요소들만 허용됩니다. (그림도 포함됨) 이 드로잉 데이터는 나중에 API_ElementMemodrawingData 멤버에서 ACAPI_Element_Create로 전달될 수 있습니다.

펜들은 api_pens 파라미터에서 앞쪽으로 전달되어야 합니다. 나중에 변경할 수 없습니다. 이러한 제한은 데이터 스토어의 내부 설정으로부터 옵니다.

 

예제

// -----------------------------------------------------------------------------
// Wraps importing data into IDF
// -----------------------------------------------------------------------------

class IDFSession {

private:
    bool    inited;

public:
    explicit IDFSession () {
        inited = (ACAPI_Database (APIDb_StartDrawingDataID, NULL, NULL) == NoError);
    }

    ~IDFSession () {
        if (inited) {
            GSPtr outIDFData = NULL;
            if (GetIDFData (&outIDFData, NULL))
                BMKillPtr (&outIDFData);
        }
    }

    bool GetIDFData (GSPtr *outIDFData, API_Box *bounds) {
        if (!inited || outIDFData == NULL)
            return false;

        bool ret = (ACAPI_Database (APIDb_StopDrawingDataID, outIDFData, bounds) == NoError);

        inited = false;
        return ret;
    }
};

GSErrCode Import::Do ()
{
    IDFSession  idfSession;                                 // 1

    GSErrCode   ret = this->ReadAction::Do ();              // 2

    if (ret == NoError) {
        API_Box bounds  = { 0.0, 0.0, 0.0, 0.0 };
        GSPtr   idfData = NULL;

        if (idfSession.GetIDFData (&idfData, &bounds)) {    // 3
            PlaceDrawing (idfData, bounds);                 // 4
        }
    }

    return ret;
}

코멘트:

  1. IDF 세션을 초기화합니다; 이후 요소 생성을 드로잉 데이터로 리다이렉트합니다.
  2. 외부 파일로부터 요소들을 읽어 드로잉 데이터로 넣습니다.
  3. IDF 세션을 중지합니다. 드로잉 데이터 및 경계들을 가져옵니다. (내부적으로 계산됨)
  4. 드로잉 요소를 현재 데이터베이스에 배치합니다. (내부적으로 ACAPI_Element_Create를 호출함)

 

요구사항

버전: API 10 또는 이후
헤더: APIdefs_Database.h

 

참고사항

API_PenType
APIDb_StopDrawingDataID
ACAPI_Element_Create, API_ElementMemo
ACAPI_Database
API 함수