Graphisoft®

API Development KitVersion: 18

ACAPI_LibPart_Create

무에서부터 새로운 라이브러리 파트를 생성하기 시작합니다.

    GSErrCode  ACAPI_LibPart_Create (
        const API_LibPart*     libPart
    );

 

파라미터

libPart
[in] 생성할 라이브러리 파트의 파라미터들입니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_NESTING
재귀적 호출, ACAPI_LibPart_Save는 예전 호출 이후에 호출되지 않습니다.
APIERR_BADPARS
libPart 파라미터가 NULL입니다. 또는 유효하지 않은 데이터를 갖고 있습니다.
APIERR_BADID
전달된 parentUnID와 일치하지 않습니다.
APIERR_NOLIB
유효하지 않은 location이 전달되었습니다. 그리고 거기에 활성 라이브러리 역시 없습니다.
APIERR_READONLY
지정한 location이 읽기-전용입니다.

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

 

설명

이 함수는 무에서부터 새로운 빈 라이브러리 파트를 생성하는 데 사용합니다.

당신은 라이브러리 파트를 조상 계층 내 적절한 노드 밑에 두기 위해 라이브러리 파트의 서브타입을 지정해야 합니다. 서브타입에 대한 더 많은 정보는 Library Part Subtypes 섹션을 보십시오.

기본적으로 모든 새로운 라이브러리 파트들은 활성 라이브러리 폴더 안에 생성됩니다. 그러나 당신이 원하는 디렉토리를 지정할 수도 있습니다. 만약 location 필드가 파일 시스템 내 유효한 폴더를 가리키고 있다면, 라이브러리 파트가 거기에 생성될 것입니다. 라이브러리 파트의 이름은 docu_UName로 결정된다는 것을 참고하십시오. 그래서 file_Namelocation 필드 양쪽에 있는 파일명 자체는 무시합니다.

이 함수는 빈 라이브러리 파트를 생성합니다. 섹션들은 차후 함수 호출을 통해 정의되어야 합니다; 기본적으로 섹션을 만드는 방법은 2가지가 있습니다:

라이브러리 자체는 ACAPI_LibPart_Save 함수를 호출하자마자 생성되고 등록됩니다. 스크래치 파일을 닫기 위해 이 함수를 호출하는 것을 잊지 마십시오; 다른 함수 호출에서 오류가 발생하는 경우에도 말입니다.

매크로들과 그림들은 이런 방식으로 만들 수 없습니다. 더 자세한 것은 함수 ACAPI_LibPart_Register를 참조하십시오.

만약 함수가 성공적으로 완료되면 새로 생성된 라이브러리 파트의 인덱스는 API_LibPart structure의 index 필드에 의해 주어집니다.

사용한 섹션 핸들들을 폐기하는 것을 잊지 마십시오.

 

예제

API_LibPartDetails    details;
API_LibPart           libPart;
GSHandle              paramsHdl, draw2DHdl;
API_LibPartSection    section;
double                a, b;
char                  buffer[256];
GSErrCode             err;

BNZeroMemory (&libPart, sizeof (API_LibPart));

CHCopyC ("{57B7C584-5C0D-11D6-A0D8-036F034B6792}-{00000000-0000-0000-0000-000000000000}", libPart.parentUnID);  // 일반 Stair 서브타입
GS::ucscpy (libPart.docu_UName, L("Test LibPart"));

err = ACAPI_LibPart_Search (&libPart, false);
if (libPart.location != NULL)
    delete libPart.location;

if (libPart.index != 0) {
    ACAPI_WriteReport ("Test LibPart already exists", true);
    return;
}

paramsHdl = NULL;
draw2DHdl = NULL;

a = 2.0;                                          /* 파라미터 섹션 생성 */
b = 3.0;
if (err == NoError)
    err = ACAPI_LibPart_GetSect_ParamDef (&libPart, NULL, &a, &b, NULL, &paramsHdl);
    if (err == NoError) {
        BNZeroMemory (&details, sizeof (API_LibPartDetails));
        details.object.fixSize = false;
        details.object.autoHotspot = true;
        err = ACAPI_LibPart_SetDetails_ParamDef (&libPart, paramsHdl, &details);
    }
}

err = ACAPI_LibPart_SetUpSect_2DDrawHdl ();       /* 2D 바이너리 섹션 생성 */
if (err == NoError) {
    /* ... */
    /* ... ACAPI_Element_Create ... */
    /* ... ACAPI_Element_Create ... */
    /* ... ACAPI_Element_Create ... */
    /* ... */
    err = ACAPI_LibPart_GetSect_2DDrawHdl (&draw2DHdl);
}

if (err == NoError)
    err = ACAPI_LibPart_Create (&libPart);        /* 무에서부터 라이브러리 파트 생성 */
if (err == NoError) {
    BNZeroMemory (&section, sizeof (API_LibPartSection));
    section.sectType = API_SectParamDef;
    err = ACAPI_LibPart_AddSection (&section, paramsHdl, NULL);   /* 파라미터 섹션 추가 */
}
if (err == NoError) {
    BNZeroMemory (&section, sizeof (API_LibPartSection));
    section.sectType = API_Sect2DDraw;
    err = ACAPI_LibPart_AddSection (&section, draw2DHdl, NULL);   /* 2D 바이너리 섹션 추가 */
}
if (err == NoError) {
    BNZeroMemory (&section, sizeof (API_LibPartSection));
    section.sectType = API_Sect2DScript;
    err = ACAPI_LibPart_NewSection (&section);              /* 2D 스크립트 섹션 열기 */
    if (err == NoError) {
        CHCopyC ("rect2 0,0,a,b\n", buffer);                /*         ...기록 */
        err = ACAPI_LibPart_WriteSection (strlen (buffer), buffer);
    }
    err = ACAPI_LibPart_EndSection ();                      /*         ...닫기 */
}

err = ACAPI_LibPart_Save (&libPart);              /* 라이브러리 파트를 저장하고 등록함 */

BMKillHandle (&paramsHdl);
BMKillHandle (&draw2DHdl)

 

요구사항

버전: API 1.3 또는 이후
헤더: ACAPinc.h

 

참고사항

API_LibPart
ACAPI_LibPart_NewSection
ACAPI_LibPart_WriteSection
ACAPI_LibPart_EndSection
ACAPI_LibPart_AddSection
ACAPI_LibPart_Save
ACAPI_LibPart_Register
ACAPI_LibPart_RegisterAll
라이브러리 파트 관리자
라이브러리 파트 서브타입
API 함수