Работа с цветом тела

Автор Sprinter500, 02.12.19, 11:36:48

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Sprinter500

Добрый день! Как через API задавать цвет тела в многотельных деталях при создании и потом редактировать на готовых телах? Ключевой момент: цвет необходимо задать и менять не на уровне операции (например выдавливание) и не на уровне корня дерева (TopPart), а именно у ТЕЛА. Вопрос не такой простой, каким кажется на первый взгляд. В интерфейсах IBody и ksBody упоминания цвета не нашел. Однако, руками же в КОМПАСе задать цвет тела можно, значит можно и как то программно задать и поменять цвет тела.

Sabahs

SDK нужно читать, а не в свойствах смотреть.
IBody7_.png
Если у Вас, есть вопросы, то их можно задать тут:
- "Оборудование: Развёртки";
- "Библиотека пакетного сохранения файлов".

Sprinter500

Большое спасибо Sabahs за подсказку.
Получилось сделать так (код работает):

                       ksBodyCollection bc = part.BodyCollection();
                        if (bc != null)
                        {
                            ksBody body = bc.Last();
                            if (body != null)
                            {
                                IBody7 body7 = (IBody7)kompas.TransferInterface(body, (int)ksAPITypeEnum.ksAPI7Dual, 0);
                                if (body7 != null)
                                {
                                    //IColorParam7 colorParam7 = (IColorParam7)kompas.GetParamStruct((short)struct)
                                    IColorParam7 colorPr = (IColorParam7)body7;
                                    if (colorPr != null)
                                    {
                                        colorPr.UseColor = ksUseColorEnum.useColorOur;
                                        colorPr.Color = 5421504;
                                        colorPr.Transparency = 0.5;
                                        colorPr.Ambient = 0.1;
                                        colorPr.Diffuse = 0.1;
                                        body7.Update();
                                    }
                                }
                            }
                        }

Конечно может я и что-то не правильно сделал, а может можно было сделать проще и лучше. По крайней мере тело Body вроде как можно получить и иначе через IFeature7, но не пробовал пока еще так. Не знаю даже какой вариант лучше, тот что выше или через IFeature7.