Graphisoft®

API Development KitVersion: 18

APIAny_GetSkylightHolePolygonID

스카이라이트 구멍 외곽의 폴리곤 데이터를 리턴합니다.

    GSErrCode ACAPI_Goodies (
        APIAny_GetSkylightHolePolygonID,
        const API_Guid*        skylightGuid,
        Geometry::Polygon2D*     holePoly
    );

 

파라미터

skylightGuid
[in] 스카이라이트 요소의 식별자입니다.
holePoly
[out] 구멍 외곽의 폴리곤 데이터입니다.

 

리턴 값

NoError
함수가 성공적으로 완료되었습니다.
APIERR_NOPLAN
활성 도면 데이터베이스가 없습니다.
APIERR_BADPARS
skylightGuid 또는 holePoly가 NULL입니다.
APIERR_BADINDEX
skylightGuid가 데이터베이스의 유효한 요소를 참조하지 않습니다.
APIERR_REFUSEDPAR
skylightGuid로 지정한 요소가 스카이라이트 타입이 아닙니다.

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

 

설명

이 함수는 수평면에 투영되는 절대 좌표값 형태의 스카이라이트 구멍의 외곽 폴리곤을 가져오는 데 사용합니다.
(현재 이것은 실제 구멍 외곽이 아닌 스카이라이트 요소의 4개 코너 포인트들의 좌표라는 것을 참고하십시오)

Geometry::Polygon2D 또는 Geometry::MultiPolygon2D의 할당된 데이터는 폐기할 필요가 없습니다.

ArchiCAD 18 이전에 이 함수는 APIAny_GetSkylightHolePoly2DDataID라고 불렸습니다.

 

예제

void AddSkylightHolesToRoofPolygon (Geometry::Polygon2DData& polygon2DData, const GS::Array<API_Guid>& skylights)
{
    Geometry::MultiPolygon2D multi;
    Geometry::ConvertPolygon2DDataToPolygon2D (multi, polygon2DData);
    Geometry::Polygon2D polygon2D = multi.PopLargest ();

    for (UIndex i = 0; i < skylights.GetSize (); i++) {
        Geometry::Polygon2D holePoly;
        if (ACAPI_Goodies (APIAny_GetSkylightHolePolygonID, (void*) &skylights[i], &holePoly) == NoError) {
            Geometry::MultiPolygon2D resultPolys;
            polygon2D.Substract (holePoly, resultPolys);
            if (!resultPolys.IsEmpty ()) {
                polygon2D = resultPolys.PopLargest ();
            }
        }
    }
    Geometry::FreePolygon2DData (&Polygon2DData);
    Geometry::ConvertPolygon2DToPolygon2DData (polygon2DData, polygon2D);
}

 

요구사항

버전: API 15 또는 이후
헤더: APIdefs_Goodies.h

 

참고사항

Geometry::Polygon2DData, Polygon2DData 함수
API_SkylightType, ACAPI_Element_GetConnectedElements
ACAPI_Goodies, API 함수