воскресенье, 6 марта 2016 г.

Сборный железобетон в Revit. Часть 4

          Итак предварительно после 3 частей можно подвести уже некий предварительный итог , напомню до этого мы решали три предварительные задачи:
1. Создание семейства
2. Связь с Revit и изъятие нужных параметров
3. Запись в файл и чтение нужной нам информации , сортировка информации
             Теперь нам осталось отсортировать , точнее выполнить исключающие выборки уникальных элементов , добавить их в базу (если их нету в ней) и возвращение из главного хранилища в Revit нужной нам информации, а конкретно марки элементов.
           Нам необходимо  для начала сформировать базу уникальных типоразмеров , то есть базу в которой нету повторяющихся экземпляров , все должны быть разные , иначе будет сбой при нумерации и поиске:



            Тут я  создал общую базу VSEH_VSEGO, в нее включил существующую базу и новые элементы из проекта. Далее в цикле я беру первый элемент из списка VSEH_VSEGO и удаляю все его экземпляры в этом же списке и одновременно заношу это значение в другой список который и содержит в себе все не повторяющиеся элементы namedetaley. Так образом перебрав все элементы в списке   VSEH_VSEGO я удаляю в нем все повторяющиеся элементы и формирую список уникальных элементов namedetaley. Но данный алгоритм не собирает в частных случаях все элементы из списка VSEH_VSEGO, поэтому я решил добавить дублированный блок кода, 2 части блока кода братья близнецы.
           Далее я немного поколдовал с индексацией позиций , долго думал как это сделать более или менее удобно , решил сделать так:


           Более подробно про этот алгоритм читаем эту тему. Вкратце , программа смотрит 
 на существующий список в базе , смотрит на новый , и методом перебора определяет есть ли в базе элементы которые в данный момент присутствую в проекте и присваивает всем элементам порядковый номер соответствующий его нахождения в базе.
            Далее полученные порядковые номера из базы занесем обратно в Revit:

            Тут мы опять создали ,фильтр , коллектор и передали нужному нам семейству (по имени) в нужный нам параметр (по имени) нужную информацию. И собственно закрыли транзакцию.....и окно :). 

 Ну и собственно кино :




Полный исходный код:


 

Комментариев нет:

Отправить комментарий

Поиск по этому блогу