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 함수