11/08/2014
					Преобразование цветов между RGB и AutoCAD ACI в ObjectARX
Преобразование цвета в RGB к ближайшему эквивалентному индексу в палитре индексов AutoCAD (ACI) может быть сделано при помощи методов loopUpACI и lookUpRGB, реализованных в классе AcCmEntityColor.
Следующий пример использует метод lookUpRGB() для конвертации индекса цвета 47 в соотвествующий цвет в RGB, а затем используя полученный RGB найдем ближайший индексный цвет при помощи метода lookUpACI()
А вот и код:
Код - C++: [Выделить]
- AcCmEntityColor cEntityColor;
 - Adesk::UInt8 iIndex = 47;
 - // Получаем эквивалент в RGB
 - Adesk::UInt32 nValue = cEntityColor.lookUpRGB(iIndex);
 - Adesk::UInt8 blue, green, red;
 - // Теперь выполним обратное преобразование, первые 8 бит - голубой
 - blue = nValue;
 - // сдвигаем nValue вправо и для получения зеленого
 - nValue = nValue >> 8;
 - // получаем зеленый
 - green = nValue;
 - // еще сдвигаем вправо на 8 бит для получения красного
 - nValue = nValue >> 8;
 - // получаем красный
 - red = nValue;
 - AcCmColor cColor;
 - cColor.setRGB(red, green, blue);
 - // Получаем индексный цвет (ACI) для RGB
 - Adesk::UInt8 aci = AcCmEntityColor::lookUpACI(
 - cColor.red(),
 - cColor.green(),
 - cColor.blue()
 - );
 
Обсуждение: http://adn-cis.org/forum/index.php?topic=905
Опубликовано 11.08.2014