Graphisoft®

API Development KitVersion: 18

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 12
[in] 테스트된 요소의 GUID입니다.
filterBits
[in] 필터링하기 위해 사용된 flag들입니다. (아래 표를 보십시오)
variationID Featuring API 12
[in] 객체들에 대한 선택적인 variation ID입니다. APIFilt_IsOfVariation와 조합해서 사용됩니다. 기본 값은 APIVarId_Generic입니다.
renovationFilterGuid Featuring API 17
[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  Featuring API 10 활성 레이아웃 위에 있음 드로잉 타입 요소들
APIFilt_InCroppedView  Featuring API 10 드로잉 데이터베이스의 잘려진 영역 안쪽에서 보임 드로잉 타입 요소들
APIFilt_IsOfVariation  Featuring API 12 주어진 요소가 variation ID를 variationID 파라미터로 전달했는지 여부를 알려줌 객체 타입 요소들
APIFilt_FromFloorplan  Featuring API 12 추가 flag; floor plan 데이터베이스에서 요소를 가져오도록 함수에게 지시함 모든 요소 타입들
APIFilt_HasAccessRight  API 14 추가 flag; 요소가 현재 사용자에 대하여 접근할 수 있는지 여부를 확인함 모든 요소 타입들
APIFilt_IsVisibleByRenovation  API 15 추가 flag; renovationFilterGuid 파라미터에 전달된 리노베이션 필터에 의해 요소가 보여지는지 여부를 확인함, 기본값은 현재 리노베이션 필터입니다. 모든 요소 타입들
APIFilt_IsOverriddenByRenovation  API 15 추가 flag; 요소의 속성이 현재 리노베이션 필터에 의해 오버라이드 되었는지 확인함 모든 요소 타입들
APIFilt_IsInStructureDisplay  API 18 추가 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 함수