ACAPI_Element_Filter
요소를 몇 가지 주어진 기준으로 테스트합니다.
bool ACAPI_Element_Filter ( const API_Guid& guid, API_ElemFilterFlags filterBits, API_ElemVariationID variationID = APIVarId_Generic const API_Guid& renovationFilterGuid = APINULLGuid );
파라미터
- guid
- [in] 테스트된 요소의 GUID입니다.
- filterBits
- [in] 필터링하기 위해 사용된 flag들입니다. (아래 표를 보십시오)
- variationID
- [in] 객체들에 대한 선택적인 variation ID입니다.
APIFilt_IsOfVariation
와 조합해서 사용됩니다. 기본 값은APIVarId_Generic
입니다. - renovationFilterGuid
- [in] 리노베이션 필터의 선택적 글로벌 유일 ID입니다.
APIFilt_IsVisibleByRenovation
와 함께 조합해서 사용됩니다. 기본 값은APINULLGuid
입니다.
리턴 값
true
- (
guid
로 정의된) 주어진 요소가filterbits
로 정의된 기준에 일치합니다. false
-
참조된 요소가 기준을 통과하지 못했습니다.
설명
만약 주어진 요소가 filterbits
로 정의된 기준과 일치하면 true
입니다:
filterbits 값 |
요소가 ... | 관심 요소들 |
---|---|---|
APIFilt_None |
필터링되지 않음 | |
APIFilt_IsEditable |
잠긴/삭제된/보이지 않는 레이어 위에 있지 않음 | 전부 (창, 문, 스카이라이트의 경우 이것은 소유자 요소의 레이어를 테스트함) |
APIFilt_OnVisLayer |
보이는 레이어 위에 있음 | 전부 (창, 문, 스카이라이트의 경우 이것은 소유자 요소의 레이어를 테스트함) |
APIFilt_OnActFloor |
활성 층 위에 있음 | 전부 (절단 면들 및 그룹들의 경우 항상 true ) |
APIFilt_In3D |
3D 표현을 갖고 있음 | API_WallID , API_ColumnID , API_BeamID , API_WindowID , API_DoorID , API_SkylightID , API_ObjectID , API_LampID , API_SlabID , API_RoofID , API_MeshID , API_ShellID , API_CurtainWallID , API_MorphID |
APIFilt_InMyWorkspace |
내 작업공간 안에 있음 (팀워크 모드에서) | 모든 요소 타입들 |
APIFilt_IsIndependent |
독립적임 (서브 요소가 아님) | API_ObjectID , API_TextID |
APIFilt_OnActLayout ![]() |
활성 레이아웃 위에 있음 | 드로잉 타입 요소들 |
APIFilt_InCroppedView ![]() |
드로잉 데이터베이스의 잘려진 영역 안쪽에서 보임 | 드로잉 타입 요소들 |
APIFilt_IsOfVariation ![]() |
주어진 요소가 variation ID를 variationID 파라미터로 전달했는지 여부를 알려줌 |
객체 타입 요소들 |
APIFilt_FromFloorplan ![]() |
추가 flag; floor plan 데이터베이스에서 요소를 가져오도록 함수에게 지시함 | 모든 요소 타입들 |
APIFilt_HasAccessRight ![]() |
추가 flag; 요소가 현재 사용자에 대하여 접근할 수 있는지 여부를 확인함 | 모든 요소 타입들 |
APIFilt_IsVisibleByRenovation ![]() |
추가 flag; renovationFilterGuid 파라미터에 전달된 리노베이션 필터에 의해 요소가 보여지는지 여부를 확인함, 기본값은 현재 리노베이션 필터입니다. |
모든 요소 타입들 |
APIFilt_IsOverriddenByRenovation ![]() |
추가 flag; 요소의 속성이 현재 리노베이션 필터에 의해 오버라이드 되었는지 확인함 | 모든 요소 타입들 |
APIFilt_IsInStructureDisplay ![]() |
추가 flag; 현재 Structure Display 설정을 고려하여 요소가 보여지는지 확인함 | 모든 요소 타입들 |
만약 filterBits
값이 0이면, 요소의 존재만 확인됩니다.
이 루틴은 예를 들어, 모든 요소를 통과할 때 전체 모델을 변환하지 않고 다른 속성들을 신속하게 테스트하고 요소의 3D 표현의 존재를 테스트하는 데 도움이 됩니다.
예제
GS::Array<API_Guid> elemList; ACAPI_Element_GetElemList (API_LineID, &elemList); DBPrintf ("number of lines = %ld,", elemList.GetSize ()); short visible = 0; short onStory = 0; short inView = 0; for (GS::Array<API_Guid>::ConstIterator it = elemList.Enumerate (); it != NULL; ++it) { if (ACAPI_Element_Filter (*it, APIFilt_OnVisLayer)) ++visible; if (ACAPI_Element_Filter (*it, APIFilt_OnActFloor)) ++onStory; if (ACAPI_Element_Filter (*it, APIFilt_InCroppedView)) ++inView; } DBPrintf ("%d visible, %d on the view\'s floor, %d in the cropped view\n", visible, onStory, inView);
요구사항
- 버전: API 1.3 또는 이후
- 헤더: ACAPinc.h
참고사항
API_Guid
ACAPI_Element_GetElemList
APIDb_DrawOrderGetNextID
APIDb_CreationOrderGetNextID
API_ElemSearchPars
요소 관리자, API 함수