Управление именем вхождений в дереве конструирования.

Автор Тема: Управление именем вхождений в дереве конструирования.  (Прочитано 6054 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Доброго времени суток, уважаемые форумчане. Прошу вашей помощи в решении такой вот задачи:
Я программно строю силовой каркас стены, т.е. вставляю большое количество проката (уголки, швеллеры и т.п.). Алгоритм вставки всегда один и тот же, зависит лишь от вводимых геометрических параметров. Т.е. когда пользователь перестраивает каркас по новым данным, удаляются старые вхождения и повторно вставляются новые. Проблема заключается в том, что при повторной вставке идет сквозной подсчет деталей в сборке, т.е. к имени вставляемой детали добавляется все больший и больший индекс. Например "Уголок_1:1188". "Швеллер:771". Я понимаю что эти индексы будут стремиться к бесконечности, и с этим надо что-то делать. Не подскажете, как можно программно обнулять вот этот подсчет внутри сборки, или быть может какое-то другое решение можете посоветовать?
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
и с этим надо что-то делать.
А зачем если в конце разработки все и так будет переименовано в Дизайн Асистенте или Ваульте?

Там видимо встроенный генератор индексов, но если уж шибко нужно можно самому переименовывать через ComponentOccurrence.Name

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
и с этим надо что-то делать.
А зачем если в конце разработки все и так будет переименовано в Дизайн Асистенте или Ваульте?
Ну будут переименованы имена деталей в папках, а не их имена в браузере.

Там видимо встроенный генератор индексов, но если уж шибко нужно можно самому переименовывать через ComponentOccurrence.Name
Я уже пытался так делать, только через раз вылетает ошибка, и я не могу понять почему. Чтобы избавиться от нее я пробовал использовать "try catch" и выходит, что имена вхождений то переименовываются, то нет. :( Не могу найти причину.

В программировании я новичок...но ненадолго! ;)

Отмечено как Решение R.I.Chernov 27-07-2016, 11:45:12

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
только через раз вылетает ошибка
Какая? Не совпадает новое имя с уже существующим именем?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн filat

  • ADN Club
  • ****
  • Сообщений: 265
  • Карма: 2
только через раз вылетает ошибка
Какая? Не совпадает новое имя с уже существующим именем?
Кстати, я тоже сталкивлся с этой фигней... Процедура присвоения нового имени, в некоторых случаях, завершается ошибкой - не знаю почему...
P.S. Но мне в этой ситуации легче - у меня наименование и обозначение генерируются при создании элемента...

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Какая? Не совпадает новое имя с уже существующим именем?

В итоге получилось, что да. Отдохнул пару дней, свежим взглядом окинул программу, и обнаружил ошибку. Если в двух словах, то не всегда старые вхождения полностью удалялись, в связи с чем при присваивании имен новым  деталям по тому же алгоритму, происходило пересечение имен. Если подытожить, то причина проблемы - то что я накосячил! :) Спасибо за помощь!
В программировании я новичок...но ненадолго! ;)