ACAPI_Selection_Get
선택 및 선택된 요소들에 대한 정보를 리턴합니다.
GSErrCode ACAPI_Selection_Get ( API_SelectionInfo* selectionInfo, API_Neig*** selNeigs, bool onlyEditable, bool ignorePartialSelection = true, API_SelRelativePosID relativePosToMarquee = API_InsidePartially );
파라미터
- selectionInfo
- [out] 현재 선택의 파라미터들입니다.
selectionInfo
의typeID
필드는 선택 타입을 제공합니다. - selNeigs
- [out] 선택된 요소들을 포함하는 핸들입니다. 만약 당신이 선택 정보에만 관심이 있다면
NULL
이 될 수 있습니다. 작업을 마친 후엔 이 핸들을 폐기하는 것을 잊지 마십시오. - onlyEditable
- [in] 당신이 편집가능한 요소들에만 관심이 있다고 알려줍니다.
- ignorePartialSelection
- [in] 전체로서 선택된 요소 자체만 가져오거나 부분적인 요소 선택 정보도 가져옵니다. (레거시 호환성 때문에 이 파라미터의 기본값은
true
입니다. 이것은 부분적인 선택을 무시했음을 의미합니다) 이 파라미터는 marquee 기반 선택의 경우 무시합니다. - relativePosToMarquee
- [in] Marquee에 대한 요소들을 가져옵니다. (레거시 호환성 때문에 이 파라미터의 기본값은
API_InsidePartially
입니다. 이것은 Marquee 영역과 교차하는 요소들만 리턴된다는 것을 의미합니다) 개별적으로 선택된 요소들의 경우 이 파라미터는 무시합니다.
리턴 값
NoError
- 함수가 성공적으로 완료되었습니다.
APIERR_NOPLAN
- 열린 프로젝트가 없습니다.
APIERR_NOSEL
- 선택된 것이 없습니다. 이것은 실제 오류가 아니라는 것을 참고하십시오!
다른 공통 API 오류들에 대해서는 API 오류 문서를 보십시오.
설명
이 함수는 현재 선택에 대한 정보를 얻고 선택된 요소들을 가져오는 데 사용됩니다. 정보는 selectionInfo
파라미터에 리턴됩니다.
만약 개별 요소들이 선택되면 API_SelElems
식별자가 리턴됩니다.
선택 개수, 선택된 요소들, 편집가능한 요소들 역시 리턴됩니다.
Marquee 기반 선택의 경우, 함수는 API_SelectionInfo structure 안의 현재 선택의 실제 폴리곤을 돌려줍니다; 이 핸들을 폐기하는 것을 잊지 마십시오.
selectionInfo
파라미터의 typeID
필드 안에 있는 API_SelEmpty
식별자는 ArchiCAD에서 실제로 사용되는 선택이 없음을 의미합니다.
개별적으로 선택된 요소들의 경우, ArchiCAD는 선택된 모든 요소들을 리턴합니다.
Marquee 기반 선택의 경우, relativePosToMarquee
에 의해 정의된 위치 기준에 일치하는 요소들만 리턴될 것입니다.
예제
//------------------------------------------------------------ // 함께 작동하는 치수들의 guid들을 inds 변수 안에 수집함 //------------------------------------------------------------ static GSErrCode SelectDimensions (GS::Array<API_Guid>& inds) { GSErrCode err; API_SelectionInfo selectionInfo; API_Element tElem; API_Neig **selNeigs; err = ACAPI_Selection_Get (&selectionInfo, &selNeigs, true); BMKillHandle ((GSHandle *) &selectionInfo.marquee.coords); if (err == APIERR_NOSEL) err = NoError; if (err != NoError) { BMKillHandle ((GSHandle *) &selNeigs); return err; } if (selectionInfo.typeID != API_SelEmpty) { // 선택된 치수들의 인덱스들을 수집함 UInt32 nSel = BMGetHandleSize ((GSHandle) selNeigs) / sizeof (API_Neig); for (UInt32 ii = 0; ii < nSel && err == NoError; ++ii) { tElem.header.typeID = Neig_To_ElemID ((*selNeigs)[ii].neigID); if (tElem.header.typeID != API_DimensionID) continue; if (!ACAPI_Element_Filter ((*selNeigs)[ii].guid, APIFilt_IsEditable)) continue; tElem.header.guid = (*selNeigs)[ii].guid; if (ACAPI_Element_Get (&tElem) != NoError) continue; // 배열에 치수를 추가함 inds.Push (tElem.header.guid); } } BMKillHandle ((GSHandle *) &selNeigs); return err; } // SelectDimensions
요구사항
- 버전: API 4.1 또는 이후
- 헤더: ACAPinc.h
참고사항
API_Neig, API_SelectionInfo, API_SelRelativePosID,
ACAPI_Element_Select,
선택 관리자, API 함수