Всем привет!
Думаю, что это будет одна из самых моих полезных статей для бимов. Здесь я расскажу о том, что такое задвоенные, а иногда даже и затроенные параметры, в общем и целом давайте дадим им термин дублированные параметры, почему они мешают автоматизации и как с ними бороться.
Дублированные параметры: что это такое и с чем их едят?
В один прекрасный день вы загрузили какое-то семейство из интернета к себе в проект, а может быть и сотню, после чего обнаружили в спецификациях вот такую магию:
Действительно откуда две длины? И хорошо если вы добавите их в спецификацию и увидите, что один из столбцов пустой:
Но может быть и так :)
Какой в этом случае параметр правильный? С первого взгляда и не понять. Самое интересное, что даже если вы удалите семейства, которые были загружены из интернета, то параметры никуда не исчезнут. Теперь они будут жить с тобой навечно... на веки вечные... Шучу, читай дальше :)
Проблемы из-за дублированных параметров
Я привела лишь маленький пример дублированных параметров. Представьте, что их будет 1,2,3...20 и т.д. и в каждой спецификации начинается поле чудес, угадай какой параметр правильный и позволит изменить габариты семейства, ух, задача не из лёгких.
А если речь дойдёт до автоматизации в Dynamo, плагине или самое классное, когда модель экспортируется в сметные программы? Тут варианта два, либо автоматизация ткнув пальцем в небо угадает какой параметр верный, либо нет и не будет работать. Конец BIM :)
Подробнее откуда берутся дублированные параметры
Дублированные параметры - это результат одинакового имя, но разного GUID параметра в ФОП.
Подробнее про то, что такое GUID и как с ним работать в ФОП вы можете прочитать в моей статье в стандарте Devolopment systems.
Если вкратце: вы создали в ФОП параметр с именем Длина и уникальным GUID, затем скачали чужое семейство из интернета, в котором тоже присутствует параметр Длина. И не думая, загрузили его в проект. Но кто сказал, что в вашем ФОП и чужом семействе GUID параметра Длина будет одинаковым? Ну вот никто и не сказал, получайте дублирование.
Увидеть дублирование параметров можно через Revit LookUp. Кто не знает, это бесплатная надстройка на Revit, которая помогает увидеть машинный язык Revit.
Как увидеть дублированные параметры?
Заходим в Revit LookUp в Snoop Objects, ищем категорию SharedParameterElement. Здесь мы можем увидеть все общие параметры, которые привязались к модели. Рассмотрим на примере параметра Длина. Если выделить параметр и пролистать вниз можно увидеть GuidValue. Этот GUID, который соответствует ФОП или не соответствует, как повезет, смотри ниже пример:
Теперь мы разобрались с тем, что такое дублированные параметры. Приступим к способам решения проблемы, их два:
Способ 1. Костыльный метод.
Всё так же находясь в Revit LookUp находим гадкие параметры. Выделяем первый параметр - смотрим его GUID, выделяем второй - смотрим его GUID, открываем ФОП через блокнот или Excel, ищем нашего золотого ребёнка и видим его истинный GUID.
Таким образом, мы поняли, что параметр Длина 21556 является ложным. Что такое 21556? Всё просто - это его ID. Прокручиваем Revit LookUp наверх и находим ID, нажинаем ПКМ и копируем ID.
Дальше открываем какой-нибудь вид, только не спеку, иначе не получится выбрать по коду. Управление - Блок Сведения - Выбрать по коду:
Вставляем код, нажимаем ОК и в окне Свойства видно, что выбралась категория Прочее с рабочим набором Общие параметры.
Нажимаем Del и видим что что-то удаляется... Очень даже подозрительно, что он там удаляет?
Что на самом деле происходит в этот момент? Параметр удаляется не только из модели, но и из семейств, которые были загружены в модель с косячными параметрами.
Что из этого следует? Семейства сломались и их нужно починить, но это уже другой разговор :)
Заходим снова в Revit LookUp. И видим, что параметр Длина остался один. Ура, мы победили дублирование параметров!
Способ костыльный, потому что придётся удалять вручную каждый дублированный параметр.
Можно немножко схитрить: выписать все косячные ID, вставить их в Выбор по коду через запятую и удалить скопом. Вот так сиди и развлекайся на 20 моделях по всему проекту, ломая семейства и создавая кучу проблем. Тебе очень повезёт, если таких параметров не больше 2-3, но вот когда их штук 10-20, я тебе очень сочувствую... Не спиши расстраиваться, есть второй способ!
Способ 2. Слава автоматизации.
Я начала свой путь бима в сентябре 2020, а столкнулась с дублированными параметрами в декабре 2020. Представляете мой ужас? Я тогда ещё не знающий ничего бимщик потратила 4 месяца на разработку этого скрипта. Почему так долго? Да я впервые в жизни работала со списками в Dynamo :D. А потом ещё год я потратила на разработку идеального метода, при котором не сломается работа проектировщиков.
Есть два скрипта, один с пиками...
В общем, суть:
Скрипт 1: DB_03.01_Получить или удалить все общие параметры в модели, которых нет в ФОП
Удаляет вообще все общие параметры, которых нет в ФОП. Быстро, дерзко и стабильно!
Принцип работы скрипта: Сверяет общие параметры проекта с общими параметрами ФОП по GUID, что не совпало, то идёт в мусор!
Алгоритм Скрипта 1:
1. Запустить скрипт через проигрыватель Dynamo. Указать всё, как на скрине ниже, для удобства в описании нодов добавлено, что нужно выбирать:
2. В Excel файле "Все параметры модели не из ФОП" запишутся все параметры, которые не прошли проверку и которые будут удалены. Для удобства в таблицу записывается ID, NAME и GUID параметров.
3. Дальше вы сами решаете, что делать с этими параметрами, внести их в ФОП, удалить вручную, предварительно спасая их значения в модели(подробнее смотри пункт "Метод удаления дублированных параметров") или просто удалить их всех.
4. По умолчанию внутри скрипта нод, отвечающий за удаление заморожен. Поэтому, если вы решили удалить эти параметры основательно, заходите в скрипт через Dynamo и размораживайте этот нод.
5. После отработки скрипта 1-5 мин, в зависимости от количества левых параметров и состояния модели, прогоните скрипт ещё раз. Excel файл "Все параметры модели не из ФОП" должен быть пустым.
Скрипт 2: DB_03.02_Получить или удалить все дублированные общие параметры в модели, сверив их с ФОП
Способ 1 можно автоматизировать этим скриптом, пожалуйста пользуйтесь, мне не жалко. Для этого вам потребуется ваш ФОП в формате Excel ну и парочка пакетов для адекватной работы скрипта.
Что делает этот скрипт: он берёт все общие параметры из проекта и каждый из них сверяет сначала по NAME, отсеивая только те параметры, которые дублируются, а потом сверяет их по GUID с общими параметрами из ФОП. В результате сортировки скрипт получает список гадких параметров и удаляет их.
Алгоритм Скрипта 2:
1. Запустить скрипт через проигрыватель Dynamo. Указать всё, как на скрине ниже, для удобства в описании нодов добавлено, что нужно выбирать:
2. В Excel файле "Дублированные параметры" на лист "ДП из ФОП", запишутся все общие параметры, которые есть ФОП, но которые дублируются. Для удобства в таблицу записывается ID, NAME и GUID параметров, а так же какой именно из дублированных параметров является истинным, то есть присутствует в ФОП. Все параметры с значением ЛОЖЬ отправятся на удаление.
А на лист "ДП не из ФОП", запишутся все общие параметры, которых нет ФОП, но которые так же дублируются в модели.
3. Дальше вы сами решаете, что делать с этими параметрами, внести их в ФОП, удалить вручную, предварительно спасая их значения в модели(подробнее смотри пункт "Метод удаления дублированных параметров") или просто удалить их всех.
4. По умолчанию внутри скрипта два нода, отвечающих за удаление заморожены. Поэтому, если вы решили удалить эти параметры основательно, заходите в скрипт через Dynamo и размораживайте эти ноды.
Требования к скриптам
Разработка происходила на:
Версия Dynamo: 2.6.1
Revit: 2020, 2021
Пакеты используемые в скриптах:
Modelical version: 2.2.19
Clockwork for Dynamo 2.X version: 2.4.0
Ссылка на скрипты на гугл-диске:
Метод удаления дублированных параметров
1. Первое, что вам стоит учесть в работе: НИКОГДА НЕ ПОЗВОЛЯТЬ ПРОЕКТИРОВЩИКАМ ЗАГРУЖАТЬ СЕМЕЙСТВА ИЗ ИНТЕРНЕТА БЕЗ ВАШЕЙ ПРОВЕРКИ!
Всё, что вам нужно при запросе на загрузку семейства - это отследить косячные параметры сразу с помощью Revit LookUp, тогда вы не столкнётесь с дублированием параметров.
2. Теперь, после того как вы запретили загружать мусор. Вам нужно очистить вашу Библиотеку семейств от косячных параметров. Если у вас вообще такая есть :) Если хотите узнать, что такое Библиотека семейств и как её лучше организовать, то пишите в комментарии, сделаю статью.
Примерный алгоритм: Открываете семейство, смотрите через Revit LookUp параметры, удаляете косячные с помощью Скрипта 1, исправляете геометрию, сохраняете и так по всем семействам.
Если интересен полу-автоматизированный способ очистки Библиотеки семейств или в принципе интересен алгоритм очистки внешних семейств, пишите - сделаю отдельную статью об этом :)
3. После того, как вы удостоверились, что Библиотека семейств чистая и все общие параметры, которые есть в семействах, есть так же и в ФОП, можно приступить к чистке проектов от дублирования параметров.
4. В очищаемой модели заменяем все семейства на правильные из Библиотеки семейств, с хорошими параметрами, тогда при удалении параметров из модели ничего не сломается.
НО! Это работает с параметрами типоразмера, но вот с параметрами экземпляра не всегда. Что делать, если значения параметров экземпляра забиты в неправильный параметр? А если их миллион? Весь проект сломается? А вы угадайте...
Конечно же мой любимый плагин DiRoots спешит на помощь! Серьёзно, разработчиков этого плагина я бы расцеловала. Сделать такую вещь для Revit, да ещё и бесплатной. Красота!
Ниже я очень вкратце расскажу про DiRoots SheetLink. Вы знаете что нужно делать для подробной статьи! В качестве примера взят один типоразмер.
Идём в плагин SheetLink на вкладку Schedules, проверяем что спецификация по всей модели(чек-бокс Whole Model), ищем нужную спецификацию, в которую мы предварительно добавили два дублирующих параметра. Видим, что параметр зелёный - это значит, что он по экземпляру и нажимаем экспорт в Excel. Можно экспортировать в гугл, можно на рабочий стол, без разницы.
В файле Excel растягиваем первую строку, чтобы увидеть GUID параметров. Ищем наш хороший параметр и работаем дальше с этим столбцом.
Теперь находим в Excel значения, которые нужно перенести из гадкого параметра в хороший.
Дальше удаляем столбец с гадким параметром и сохраняем Excel.
5. Дальше вы выбираете какой скрипт использовать, в зависимости от цели:
Скрипт 1 - Для очистки только дублированных общих параметров;
Скрипт 2 - Для полной очистки модели от чужих общих параметров, в том числе и дублированных.
6. Загружаем значения из Excel. Идём в плагин SheetLink на вкладку Schedules, жамкаем кнопку Import, выбираем Excel файл и загружаем в модель и ждём успешного завершения.
А теперь можно радоваться :)
Итог
Из-за дублированных параметров очень важно, чтобы все работали на одних и тех же параметрах и разговаривали друг с другом на одном языке, но к сожалению - это утопия. Каждая компания хочет свои уникальный параметры с префиксом компании или наоборот идёт по пути универсальных параметров без префиксов. Кто-то умудряется даже создавать параметры ADSK, а не брать их из ФОП. Тяжко вздыхаю. Приходится работать с тем, что есть...
Лично я, призываю вас работать с ФОП ADSK. Более универсального языка пока что в рашке нет.
Всем лучей добра!
Пишите в комментариях о своей боли, я постараюсь чем-нибудь помочь :)
P.S.
1. В скрипте присутствует регулярная ошибка на ноде String.Contains. Это нормально. Не обращайте внимания. Если знаете что нужно сделать, чтобы её не было сообщите пожалуйста.
2. Я очень надеюсь, что всё будет работать безошибочно на ваших ПК и моделях. При возникновении каких-то ошибок или предложений обращайтесь. Я готова получить вашу обратную связь в телеграмм чате BIM_HelpDesk_Daria Babaeva.