08/06/2016
Как получить цвет солнца
Цвет солнца вычисляется по географическому положению, дате и времени дня.Начиная с ObjectARX 2017 у нас есть API для получения цвета солнца как из палитры свойств солнца:
Код - C++: [Выделить]
- static void sunColor(void)
- {
- /* Убеждаемся, что Солнце включено */
- /* Устанавливаем SUNSTATUS в 1*/
- AcDbObjectId curVportId = AcDbObjectId::kNull;
- curVportId = acedActiveViewportId();
- struct resbuf rb;
- int rt = acedGetVar(_T("CVPORT"), &rb);
- if (rt != RTNORM)
- {
- acutPrintf(_T("\nОшибка при получении значения \"CVPORT\"."));
- return;
- }
- int vportNum = rb.resval.rint;
- AcDbObjectPointer<AcDbViewportTableRecord> curVTR(curVportId, AcDb::kForWrite);
- if (curVTR.openStatus() == Acad::eOk)
- {
- if (curVTR->sunId() != AcDbObjectId::kNull)
- {
- /* Солнце есть, попробуем получить цвет Солнца в AutoCAD*/
- AcDbObjectPointer<AcDbSun> pSun(curVTR->sunId(), AcDb::kForRead);
- if (pSun.openStatus() == Acad::eOk)
- {
- const AcGiColorRGB& sunColor = pSun->sunColorPhotometric(1.0);
- double factor = 255.0;
- double r = sunColor.red * factor;
- double g = sunColor.green * factor;
- double b = sunColor.blue * factor;
- acutPrintf(_T("R[%f],G[%f],B[%f]"), r, g, b);
- }
- }
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2016/06/how-to-get-colors-of-sun.html
Автор перевода: Александр Ривилис
Обсуждение: http://adn-cis.org/forum/index.php?topic=
Опубликовано 08.06.2016