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