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