Graphisoft®

API Development KitVersion: 18

ACAPI_Register_Subtype

새로운 라이브러리 파트 서브타입을 등록합니다.

    GSErrCode  ACAPI_Register_Subtype (
        GSType              signature,
        short               templateFileResID,
        bool                transparentNode,
        short               stringResID,
        short               smallIconResID,
        short               largeIconResID,
        API_TBoxGroup       toolGroupId,
        API_TBoxEnabled     enableFlags,
        short               defaultsResID
    );

 

파라미터

signature
[in] 이 라이브러리 파트 서브타입의 4-문자 식별자입니다.
templateFileResID
[in] 애드온으로 컴파일된 서브타입 템플릿 라이브러리 파트의 'FILE' 리소스 ID입니다.
transparentNode
[in] 이 서브타입의 객체들은 더 높은 조상 레벨들에서도 보여질 수 있습니다.
stringResID
[in] 라이브러리 파트 서브타입 설명 문자열의 리소스 ID입니다.
smallIconResID 6.1
[in] 소형 툴박스 (툴바) 항목 아이콘의 리소스 ID입니다.
largeIconResID 6.1
[in] 대형 툴박스 항목 아이콘의 리소스 ID입니다.
toolGroupId
[in] 툴박스 항목 위치입니다.
enableFlags Featuring API 10
[in] 활성 창에 따라 서브타입 도구를 활성화 혹은 비활성화합니다.
defaultsResID
[in] 이 서브타입에 대한 요소 기본 값들을 포함하는 'ACP0' 리소스의 ID입니다.

 

리턴 값

APIERR_BADPARS
templateFileResID가 유효하지 않은 'FILE' 리소스 또는 서브타입 템플릿으로 허용할 수 없는 빌트인 라이브러리 파트를 참조합니다.
NoError
함수가 성공적으로 완료되었습니다.

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

 

설명

이 함수는 새로운 라이브러리 파트 서브타입을 등록합니다.

자체 요소 서브타입을 가지려면, 애드온은 반드시 리소스 모듈 안에 빌트인 라이브러리 파트를 포함해야 합니다. 이 라이브러리 파트는 활성 라이브러리들로 로드되고 조상 트리 안에 새로운 노드가 될 것입니다.

새로운 요소 타입은 애드온의 작성자가 선택한 signature 식별자로 식별될 것입니다. signature는 충돌을 피하기 위해 유일해야 합니다. 만약 새로운 요소 타입이 필요하지 않고 단일 서브타입 노드만 필요한 경우, signature 파라미터에 0을 전달할 수도 있습니다.

6.1  서브타입은 툴박스에 외부 도구로 나타날 수 있으며, Windows 툴바에도 나타날 수 있습니다. 이 경우 당신은 2개의 유효한 아이콘 리소스 ID들을 smallIconResIDlargeIconResID 파라미터들 안에 전달해야 합니다. 아이콘들의 크기는 각각 16x16, 30x21 픽셀이어야 합니다.

당신은 다음과 같이 toolGroupId 파라미터를 이용하여 툴박스에 삽입되는 서브타입 항목의 위치를 지정할 수 있습니다:

API_TBoxGroup 의미
TBoxGroup_Root 서브타입 도구 항목은 Model 요소 도구들 밑에 추가될 것입니다.
TBoxGroup_Objects 서브타입 도구 항목은 Object 도구들 밑에 추가될 것입니다.
TBoxGroup_Openings 서브타입 도구 항목은 창/문 도구들 밑에 추가될 것입니다.

Featuring API 10  enableFlags 바트들을 설정하여 툴박스 내 서브타입 도구의 가용성을 제어할 수 있습니다:

API_TBoxEnabled 서브타입 도구가 활성화됨
API_TBoxEnabled_FloorPlan 평면도 창에서
API_TBoxEnabled_ModelSection Featuring API 12 모델 타입 단면 및 입면 창에서
API_TBoxEnabled_DrawingSection Featuring API 12 드로잉 타입 단면 및 입면 창에서
API_TBoxEnabled_3D 3D 모델 창에서
API_TBoxEnabled_Detail 디테일 창에서
API_TBoxEnabled_Layout 레이아웃 및 마스터 레이아웃 창에서
API_TBoxEnabled_Worksheet Featuring API 11 워크시트 창에서
API_TBoxEnabled_ModelInteriorElevation Featuring API 12 모델 타입 실내 입면 창에서
API_TBoxEnabled_DrawingInteriorElevation Featuring API 12 드로잉 타입 실내 입면 창에서

만약 툴박스에 나타나지 않는 서브타입 도구를 등록하고 싶으면, smallIconResIDlargeIconResID 파라미터들 모두에 0을 전달하면 됩니다.

만약 서브타입 도구를 등록한다면, 'ACP0' 리소스 안에 이 요소 타입에 대한 공장 기본값들을 정의해야 합니다. 저장된 Preferences 데이터가 없으면 요소 기본값은 이 파라미터들로 초기화될 것입니다. 이 리소스의 구조는 아래 예제에서 볼 수 있습니다. 리소스 ID는 defaultsResID 파라미터에 전달되어야 합니다.

 

라이브러리 파트 서브타입의 일반적인 설명에서 이 주제에 대해 더 배워 보십시오.

 

예제

.GRC 파일 내 리소스들:

'FILE' 132    "Roof Opening.gsm" {
    "Roof Opening.gsm"
}

'STR#' 32611  "Skylight subtype" {
/* [  1] */     "Skylight"                          /* Subtype name */
/* [  2] */     "Skylight Selection Settings..."    /* Selection settings dialog title */
/* [  3] */     "Select All Skylights"              /* Select All menuitem string in Edit menu */
/* [  4] */     "Skylight Tool"                     /* Toolbox item name */
/* [  5] */     "The Skylight tool is used for placing skylight library items into roofs by clicking on the roof."
                                                    /* Toolbox item popup help text */
/* [  6] */     "Skylight Default Settings..."      /* Default settings dialog title */
/* [  7] */     "Enter First Point of Skylight."    /* Default prompt text */
}

'GICN' 32602  "Small toolbar icon for Skylight" {
        0 128 128
}

'GICN' 32603  "Large toolbox icon for Skylight" {
        0 128 128
}

'ACP0' 132    "Metric Defaults" {
/* [  1] VarName  */ "001_defObjName"
/* [  1] Value    */ "Skylight Pivot Hung"

/* [  2] VarName  */ "002_Symb_layer"
/* [  2] Value    */ "7"

/* [  3] VarName  */ "003_Symb_material"
/* [  3] Value    */ "47"

/* [  4] VarName  */ "004_Symb_info"
/* [  4] Value    */ "Sky-001"

/* [  5] VarName  */ "005_Symb_level"
/* [  5] Value    */ "0"

/* [  6] VarName  */ "006_Symb_pen"
/* [  6] Value    */ "2"

/* [  7] VarName  */ "007_Symb_onePen(0/1)"
/* [  7] Value    */ "0"

/* [  8] VarName  */ "008_Symb_showAlways"
/* [  8] Value    */ "0"

/* [  9] VarName  */ "009_Symb_showAbove"
/* [  9] Value    */ "0"

/* [ 10] VarName  */ "010_Symb_showBelow"
/* [ 10] Value    */ "0"

/* [ 11] VarName  */ "011_Symb_gravityPar"
/* [ 11] Value    */ "0"

/* [ 12] VarName  */ "012_Symb_contourPen"
/* [ 12] Value    */ "72"

/* [ 13] VarName  */ "013_Symb_fillPen"
/* [ 13] Value    */ "73"

/* [ 14] VarName  */ "014_Symb_bkgPen"
/* [ 14] Value    */ "80"

/* [ 15] VarName  */ "015_Symb_fill"
/* [ 15] Value    */ "65"

/* [ 16] VarName  */ "016_Symb_lineType"
/* [ 16] Value    */ "1"

/* [ 17] VarName  */ "017_Symb_useLineType"
/* [ 17] Value    */ "0"

/* [ 18] VarName  */ "018_Symb_useMaterial"
/* [ 18] Value    */ "1"

/* [ 19] VarName  */ "019_Symb_useSectAttrs"
/* [ 19] Value    */ "1"

/* [ 20] VarName  */ "020_Symb_LightIsOn"
/* [ 20] Value    */ "0"

/* [ 21] VarName  */ "021_Symb_IsAutoOnStoryVisibility"         
/* [ 21] Value    */ "0"
}

RegisterInterface 함수 내:

//------------------------------------------------------
// 인터페이스 정의
//------------------------------------------------------
GSErrCode __ACENV_CALL    RegisterInterface (void)

{
    GSErrCode   err = ACAPI_Register_Subtype ('SKLT', 132, true, 32611, 32602, 32603, TBoxGroup_Openings,
                                              API_TBoxEnabled_FloorPlan + API_TBoxEnabled_ModelSection + API_TBoxEnabled_3D, 132);
    return err;
}   // RegisterInterface

 

요구사항

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

 

참고사항

라이브러리 파트 서브타입
라이브러리 파트 개요
라이브러리 파트 관리자
ACAPI_Register_BuiltInLibrary
API 함수