Ошибка при получении цветов.

Автор Тема: Ошибка при получении цветов.  (Прочитано 2850 раз)

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

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Добрый день!
С чем может быть связана такая ошибка в получении цветов объекта? (см. приложение)
Спасибо.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Ошибка при получении цветов.
« Ответ #1 : 19-06-2020, 13:06:14 »
Дак, а как мы вам поможем, если на вашей картинке только набор сигнатур вашей программы.
Ну написано что параметр был задан неверно, дак их параметров то может быть много и разных

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Ошибка при получении цветов.
« Ответ #2 : 19-06-2020, 13:37:37 »
Код такой
Код - C# [Выбрать]
  1. System.Collections.IEnumerator ColEn = surfaceBody.GetFaceColors().GetEnumerator();
Никаких параметров не передаю.
Сигнатура метода следующая:
Код - C# [Выбрать]
  1. ObjectCollection SurfaceBody.GetFcaeColors([object Faces])

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Ошибка при получении цветов.
« Ответ #3 : 19-06-2020, 13:51:06 »
Код - Visual Basic [Выбрать]
  1. Public Sub GetColor()
  2.  Dim pd As PartDocument: Set pd = ThisApplication.ActiveEditDocument
  3.  Dim sb As SurfaceBody: Set sb = pd.ComponentDefinition.SurfaceBodies(1)
  4.  
  5.  Dim fc As FaceCollection: Set fc = ThisApplication.TransientObjects.CreateFaceCollection()
  6.  Call fc.Add(sb.Faces(1))
  7.  Call fc.Add(sb.Faces(2))
  8.  Call fc.Add(sb.Faces(3))
  9.  
  10.  
  11.  Dim cc As ObjectCollection
  12.  Set cc = pd.ComponentDefinition.SurfaceBodies(1).GetFaceColors(fc)
  13.  
  14. End Sub
  15.  

Оффлайн VladislavАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 210
  • Карма: 0
Re: Ошибка при получении цветов.
« Ответ #4 : 19-06-2020, 13:57:54 »
А если SurfaceBody берутся из уже существующих в модели объектов?
Просто для большинства моделей этот мой код хорошо работатет.
Только в одной огромной модели столкнулся с ошибкой...
Корректно ли будет сделать так?
Код - C# [Выбрать]
  1. FaceCollection faces = surfaceBody.Faces();            
  2. System.Collections.IEnumerator ColEn = surfaceBody.GetFaceColors(faces).GetEnumerator();

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Ошибка при получении цветов.
« Ответ #5 : 19-06-2020, 14:44:55 »
Vladislav,
Видимо какой-то face в faces ненормальный и из-за него происходит сбой.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Ошибка при получении цветов.
« Ответ #6 : 19-06-2020, 19:01:11 »
FaceCollection faces = surfaceBody.Faces();
Это не правильно