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