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_Name
과 location
필드 양쪽에 있는 파일명 자체는 무시합니다.
이 함수는 빈 라이브러리 파트를 생성합니다. 섹션들은 차후 함수 호출을 통해 정의되어야 합니다; 기본적으로 섹션을 만드는 방법은 2가지가 있습니다:
- 함수 ACAPI_LibPart_NewSection, ACAPI_LibPart_WriteSection, ACAPI_LibPart_EndSection을 사용하여 스트림으로 섹션을 작성하십시오.
- ACAPI_LibPart_AddSection 함수를 호출하여 한 번에 섹션을 만드십시오.
라이브러리 자체는 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, ¶msHdl); 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 (§ion, sizeof (API_LibPartSection)); section.sectType = API_SectParamDef; err = ACAPI_LibPart_AddSection (§ion, paramsHdl, NULL); /* 파라미터 섹션 추가 */ } if (err == NoError) { BNZeroMemory (§ion, sizeof (API_LibPartSection)); section.sectType = API_Sect2DDraw; err = ACAPI_LibPart_AddSection (§ion, draw2DHdl, NULL); /* 2D 바이너리 섹션 추가 */ } if (err == NoError) { BNZeroMemory (§ion, sizeof (API_LibPartSection)); section.sectType = API_Sect2DScript; err = ACAPI_LibPart_NewSection (§ion); /* 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 (¶msHdl); 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 함수