APIIOCommandProc
I/O 동작들을 처리하기 위한 사용자 지원 콜백 프로시저입니다.
typedef GSErrCode APIIOCommandProc ( const API_IOParams* ioParams );
파라미터
- ioParams
- [in] 이 structure는 열거나 저장할 파일을 식별하는 다양한 파라미터들을 포함합니다.
리턴 값
NoError
- 함수가 성공적으로 완료되었습니다.
다른 공통 API 오류들에 대해서는 API Errors 문서를 보십시오.
설명
애드온이 ACAPI_Install_FileTypeHandler로 그것을 설치할 때 이 함수가 호출될 것입니다.
ArchiCAD 8.1부터 병합 파일 동작을 하는 동안 요소들을 생성하기 위해 undoable session을 열어야 합니다.
ACAPI_OpenUndoableSession에 빈 문자열 파라미터를 전달하는 경우, ArchiCAD는 그것을 기본 "Paste" undo 문자열로 대체하게 됩니다.
ArchiCAD 9부터 병합 및 열기 동작들은 드래그 & 드롭으로도 시작될 수 있습니다:
- 등록된 타입의 파일을 (Windows의 경우) 프레임 창 위에 떨어뜨리면
IO_OPEN
메서드 호출을 하게 됩니다. - 등록된 타입의 파일을 도면(평면도, 단면, 입면) 창의 보이는 클라이언트 영역 위에 떨어뜨리면
IO_MERGE
동작을 생성하게 됩니다. 이 경우 API_IOParams의fromDragDrop
flag가 세트되고,dropOffset
필드가 원점으로부터 떨어뜨린 위치를 가리키는 벡터를 포함하게 됩니다.
noDialog
파라미터의false
값은 오른쪽 마우스 버튼과 함께, 혹은 수식어(modifier) 키를 누르면서 드래그 & 드롭 동작을 수행했음을 의미합니다. (수식어 키는 Windows의 경우 Ctrl, Macintosh의 경우 Alt)
예제
// ----------------------------------------------------------------------------- // I/O 커맨드 콜백 함수 // ----------------------------------------------------------------------------- GSErrCode __ACENV_CALL APIIOCommand (const API_IOParams *ioParams) { IO::Path path; ioParams->fileLoc.ToPath (&path); switch (ioParams->method) { case IO_OPEN: DBPrintf ("Opening file \"%s\"\n", (const char *) path); // ... ACAPI_Element_Create ... break; case IO_MERGE: DBPrintf ("Merging file \"%s\"\n", (const char *) path); if (fromDragDrop) ACAPI_OpenUndoableSession ("Drop file"); else ACAPI_OpenUndoableSession ("Merge file"); // element.pos.x += ioParams->dropOffset.x; // element.pos.y += ioParams->dropOffset.y; // ... ACAPI_Element_Create ... ACAPI_CloseUndoableSession (); break; case IO_SAVEAS: DBPrintf ("Saving file \"%s\"\n", (const char *) path); // ... ACAPI_Element_Get ... ACAPI_Element_ShapePrims ... break; } return NoError; } // APIIOCommand
요구사항
- 버전: API 4.1 또는 이후
- 헤더: APIdefs_Callback.h