Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 50092.doc
Скачиваний:
17
Добавлен:
30.04.2022
Размер:
4.95 Mб
Скачать

6.3. Построение объектов в цвете

В сборочных единицах и в деталях твердотельные модели имеют свойства поверхности (поверхностей), определенные системой как базовые. Изменить опции отображения модели можно в дереве построения активного документа Компас 3D, выбрав в дереве построения детали по правому клику мыши раздела «Свойства» и указав ряд параметров цветопередачи для 3D объекта. Программным путем данная задача выполняется посредством вызова функции SetAdvancedColor, унаследованной от интерфейса IEntityPtr. На листинге приводится программная реализация указанной функции для изменения параметров цвета и визуальных свойств объекта.

void WorkWithColour ( IPartPtr& part )

{IEntityPtr entitySketch( part->NewEntity(o3d_sketch), false );

if ( entitySketch )

{ ISketchDefinitionPtr sketchDefinition( IUnknownPtr( entitySketch->GetDefinition(), false) );

if ( sketchDefinition )

{

IEntityPtr basePlane( part->GetDefaultEntity( o3d_planeYOZ ), false );

sketchDefinition->SetPlane( basePlane );

// Создадим эскиз

entitySketch->Create();

// Войти в режим редактирования эскиза

if ( sketchDefinition->BeginEdit() )

{

reference p;

//Определение контура

Contour(1);

LineSeg(119,15,171,-92,1);

LineSeg(171,-92,321,-92,1);

LineSeg(321,-92,321,-87,1);

LineSeg(321,-87,219,15,1);

LineSeg(219,15,119,15,1);

p = EndObj();

Circle(219,-15,10,1);

//Выйти из режима редактирования эскиза

sketchDefinition->EndEdit();

}

//Оперция выдавливани

IEntityPtr entityExtrusion( part->NewEntity( o3d_baseExtrusion ), false );

if (entityExtrusion)

{

// Интерфейс базовой операции выдавливания

IBaseExtrusionDefinitionPtr extrusionDefinition( IUnknownPtr( entityExtrusion->GetDefinition(), false ) );

if ( extrusionDefinition )

{

// Установка параметров операции выдавливания

extrusionDefinition->SetDirectionType( dtBoth );

// Параметры выдавливания

extrusionDefinition->SetSideParam( true,

etBlind,

20,

0,

false );

extrusionDefinition->SetSketch( entitySketch );

entityExtrusion->SetAdvancedColor(

RGB(171,219,228), //Цветовая составляющая значений от 0 до 255

//красного, зеленого и синего цветов

0.5, // Общий свет

0.5, // Диффузия

0.3, // Зеркальность

0.5, // Блеск

1, // Прозрачность

0.5 ); //Излучение

entityExtrusion->Create();

}

}

}

}

}

Применить функцию можно и к поверхности модели, указав заданную грань, а не только к объекту в целом. Результат работы прикладной библиотеки по изменению визуальных свойств объекта показан на рисунке 38.

Рис. 38. Изменение цвета с помощью функции SetAdvancedColor