• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

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

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

« назад - далее »

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

Sprinter500

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

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.