<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>BIM Pulse Ufa</title>
    <link>https://bim-pulse.ru/</link>
    <atom:link href="https://bim-pulse.ru/rss.xml" rel="self" type="application/rss+xml"/>
    <description>BIM, Revit и Dynamo без воды: как из модели получить смету, график и закуп.</description>
    <language>ru</language>
    <lastBuildDate>Tue, 22 Sep 2026 09:00:00 +0500</lastBuildDate>
    <item>
      <title>ИИ ищет в модели то, чего не находят правила</title>
      <link>https://bim-pulse.ru/ii-poisk-anomaliy-v-modeli.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/ii-poisk-anomaliy-v-modeli.html</guid>
      <pubDate>Tue, 22 Sep 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>AI</category>
      <description>Правила ловят известные ошибки, а модель разваливается от неизвестных. Разбираем поиск аномалий: статистические выбросы, странные сочетания параметров и что с этим делать проектировщику.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-model-2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Проверки по правилам работают отлично, пока вы знаете, что искать. Пустой параметр, элемент не на своём уровне, дубль марки. Всё это описывается условием и ловится скриптом за минуту.</p>
    <p>Проблема в другом. Самые дорогие ошибки обычно не входят в список правил, потому что никто не догадался их туда внести. Стена толщиной 380 вместо 400 в одном месте из четырёхсот. Оборудование с массой 1200 кг там, где у соседних позиций 120. Дверь, которая по параметрам открывается в сторону лестничной клетки.</p>
    <p>Правило на такое не напишешь: заранее не знаешь, что именно пойдёт не так. Зато можно искать не нарушения, а странности.</p>
    <h2>В чём разница</h2>
    <p>Правило говорит: «параметр Марка не должен быть пустым». Оно проверяет соответствие условию.</p>
    <p>Поиск аномалий говорит другое: «вот эти двенадцать элементов не похожи на остальные три тысячи такого же типа». Он не знает, ошибка это или осознанное решение. Он показывает, куда посмотреть.</p>
    <p>Такой подход не заменяет правила, а дополняет их. Правила отсекают известные ошибки. Аномалии подсвечивают неизвестные.</p>
    <h2>Что реально ищется</h2>
    <p><strong>Числовые выбросы.</strong> Берём все элементы одного типа и смотрим на распределение параметров: толщина, высота, объём, масса, площадь. Значения, выпадающие из общей картины, попадают в отчёт.</p>
    <p>Простая математика, никакого обучения не требуется. На реальных моделях эта проверка стабильно вылавливает опечатки: 2500 вместо 250, метры вместо миллиметров, лишний ноль.</p>
    <p><strong>Редкие сочетания параметров.</strong> Если девяносто восемь процентов дверей с шириной 900 имеют определённый тип, а две штуки другой, это стоит посмотреть. Может быть, там особый случай. Может быть, копировали не тот элемент.</p>
    <p><strong>Расхождения между этажами.</strong> В типовом здании этажи похожи. Скрипт сравнивает состав элементов по этажам и показывает, где на одном что-то есть, а на соседнем нет. Классическая находка: забытый пожарный кран на одном этаже из двенадцати.</p>
    <p><strong>Странности в именах.</strong> Элементы, чьи имена не подходят ни под один принятый в проекте шаблон. Здесь достаточно кластеризации по строкам: девять групп с понятной структурой и десятая с мусором.</p>
    <p><strong>Геометрические странности.</strong> Элементы нулевого или почти нулевого объёма, дубли в одной точке, элементы, торчащие далеко за габариты здания. Такое появляется от неудачного копирования и не ловится ни одним правилом качества.</p>
    <h2>Нужны ли для этого нейросети</h2>
    <p>Честно: чаще всего нет.</p>
    <p>Восемьдесят процентов пользы дают обычная статистика и группировка. Средние значения, отклонения, частоты сочетаний, сравнение групп между собой. Это считается в том же Dynamo или скриптом на Python по выгруженным данным.</p>
    <p>Языковая модель полезна на другом шаге: когда нужно объяснить находку человеку. «Элемент 5482: толщина 380 при том, что у остальных 412 стен этого типа она 400; вероятно, ручное изменение экземпляра» читается лучше, чем строка с числами. На больших отчётах это экономит время того, кто разбирает.</p>
    <p>Ещё она полезна, когда данные текстовые: описания, примечания, наименования. Там статистика бессильна, а модель видит, что одна позиция описана в другом стиле или относится к другой системе.</p>
    <h2>Что делать с результатом</h2>
    <p>Главная опасность такого отчёта в том, что он превращается в шум. Если система выдаёт четыреста «странностей» на модель, их никто не будет смотреть.</p>
    <p>Поэтому три правила.</p>
    <p>Первое: ограничивать выдачу. Двадцать самых сильных отклонений, а не всё подряд. Остальное доступно по запросу, но не лезет в глаза.</p>
    <p>Второе: сортировать по цене ошибки. Аномалия в несущей конструкции важнее аномалии в расстановке мебели. Приоритет задаётся один раз, вручную, по категориям.</p>
    <p>Третье: помечать проверенное. Если проектировщик посмотрел и сказал «так и должно быть», элемент не должен всплывать в следующем отчёте. Без этого механизма люди перестают открывать отчёт через неделю.</p>
    <h2>Пример с цифрами</h2>
    <p>Модель жилого дома, 34 тысячи элементов. Правила проверки качества прошли чисто: параметры заполнены, уровни корректны, дублей нет.</p>
    <p>Поиск аномалий дал 63 замечания после фильтрации. Из них:</p>
    <ul><li>8 оказались реальными ошибками (толщины, отметки, один элемент с массой в тоннах вместо килограммов);</li><li>21 штука оказалась осознанными исключениями, их пометили и больше не показывали;</li><li>34 были шумом от особенностей моделирования, после чего правило подсветки подкрутили.</li></ul>
    <p>Восемь ошибок из тридцати четырёх тысяч элементов звучит скромно. Но одна из них была в спецификации оборудования, и по ней ушла бы заявка на закупку не того типоразмера. Такая находка окупает настройку целиком.</p>
    <h2>С чего начать</h2>
    <p>Не с закупки платформы. Начните с выгрузки: возьмите спецификацию по одной категории и посмотрите на распределение числовых параметров в обычной таблице. Выбросы видны глазами.</p>
    <p>Дальше это переносится в скрипт, который гоняется перед каждой выдачей. Как устроены такие регулярные проверки, разбирали на странице <a href="https://bim-pulse.ru/avtomatizaciya-proverki-modeley.html">автоматизации проверки моделей</a>, а про то, где вообще языковые модели дают эффект в BIM, есть <a href="https://bim-pulse.ru/ai-in-bim-practice.html">честная карта задач</a>.</p>
    <p>И помните про порядок: сначала правила для известных ошибок, потом аномалии для неизвестных. Наоборот не работает: в модели без базовой дисциплины любой поиск странностей утонет в мусоре.</p>]]></content:encoded>
    </item>
    <item>
      <title>ИИ заполняет параметры модели: классификация и сопоставление</title>
      <link>https://bim-pulse.ru/ii-zapolnenie-parametrov-modeli.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/ii-zapolnenie-parametrov-modeli.html</guid>
      <pubDate>Sun, 20 Sep 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>AI</category>
      <description>Двенадцать тысяч элементов без кодов классификатора и сопоставление с номенклатурой 1С. Что здесь делает языковая модель, где ошибается и почему её нельзя пускать в модель без правил.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-case-1.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Модель готова, геометрия правильная, а в графе кода классификатора пусто у двенадцати тысяч элементов. Заполнить руками значит потратить две недели работы человека, который будет копировать значения из таблицы и к концу первой тысячи начнёт ошибаться.</p>
    <p>Задача выглядит идеальной для языковой модели: есть текстовое описание элемента, есть справочник, надо сопоставить. На практике всё сложнее, но не безнадёжно. Разберём, что здесь получается, а что заканчивается порчей модели.</p>
    <h2>Три задачи, которые путают</h2>
    <p><strong>Заполнение по правилу.</strong> Всем стенам с типом «Наружная 400 газобетон» проставить материал и код. Тут никакого ИИ не нужно: это фильтр и пакетная правка, десять минут в Dynamo. Если вам предлагают нейросеть для такой задачи, вам продают лишнее.</p>
    <p><strong>Классификация.</strong> Элементу нужно присвоить код из классификатора: КСР, собственный корпоративный справочник, IFC-класс. Описание элемента текстовое, вариантов в справочнике тысячи, прямого соответствия нет. Вот здесь модель полезна.</p>
    <p><strong>Сопоставление с номенклатурой.</strong> У элемента есть тип и параметры, а в 1С есть позиция с артикулом. Их нужно связать, чтобы из модели собиралась заявка. Задача похожа на предыдущую, но цена ошибки выше: неправильный артикул означает закупку не того.</p>
    <p>Дальше речь про вторую и третью. Первая решается без ИИ, и это стоит помнить.</p>
    <h2>Почему обычный поиск не справляется</h2>
    <p>Казалось бы, достаточно поиска по совпадению слов. На практике совпадений нет. В модели написано «Труба стальная ВГП Ду25». В номенклатуре: «Труба стальная водогазопроводная оцинкованная 25х3,2 ГОСТ 3262-75». Общих слов мало, порядок другой, аббревиатура раскрыта. Точный поиск не находит ничего, нечёткий выдаёт десяток похожих позиций разного диаметра.</p>
    <p>Добавьте сюда человеческий фактор: сокращения у каждого свои, где-то пробел, где-то дефис, где-то латинская «C» в русском слове «Сгон». Такие подмены букв глаз не различает, а точное сравнение строк различает прекрасно, и позиция просто не находится.</p>
    <p>Языковая модель здесь работает лучше поиска, потому что понимает, что «ВГП» и «водогазопроводная» это одно и то же, а «Ду25» относится к диаметру, а не к марке стали.</p>
    <h2>Как это устроено у нас</h2>
    <p>Схема, которая выдержала несколько проектов, состоит из пяти шагов, и первые два важнее остальных: они определяют, будет ли человек проверять двести позиций или две тысячи.</p>
    <p><strong>Шаг 1. Сначала правила, потом модель.</strong> Всё, что сопоставляется однозначно по типу, коду или прямому совпадению, закрывается скриптом. Обычно это 60–70 процентов элементов. К языковой модели уходит только остаток, где правило не сработало.</p>
    <p><strong>Шаг 2. Кандидаты, а не свободный ответ.</strong> Модель не придумывает код из головы. Мы даём ей список из 10–20 подходящих позиций справочника, найденных нечётким поиском, и просим выбрать одну и объяснить выбор. Разница принципиальная: выбор из списка проверяем, свободную выдумку нет.</p>
    <p><strong>Шаг 3. Уверенность обязательна.</strong> Ответ должен содержать не только выбранную позицию, но и оценку уверенности с причиной. «Совпал диаметр и материал, но не совпал ГОСТ»: это сигнал человеку посмотреть.</p>
    <p><strong>Шаг 4. Порог и очередь на проверку.</strong> Высокая уверенность идёт в модель автоматически, средняя попадает в очередь на проверку глазами, низкая возвращается как «не определено». Пустое поле честнее неправильного кода.</p>
    <p><strong>Шаг 5. Запись решений.</strong> Каждое подтверждённое человеком сопоставление сохраняется в таблицу. На следующем проекте оно закроется правилом на первом шаге, без всякой модели. Через два-три объекта доля ручной работы падает вдвое, и это главный аргумент за такую схему: она дешевеет с каждым проектом, тогда как ручное заполнение стоит одинаково всегда и зависит только от того, сколько людей вы на него посадили.</p>
    <h2>Цифры, которые получаются</h2>
    <p>По последнему проекту среднего размера: 11 400 элементов инженерных систем. Правилами закрылось 7 900 позиций, это две трети. Модель обработала оставшиеся 3 500 и предложила варианты: с высокой уверенностью 2 100, со средней 1 000, отказалась от 400.</p>
    <p>Человек проверял среднюю группу и отказы, всего 1 400 позиций. Это заняло полтора дня вместо двух недель на всё вручную. Из проверенных высокоуверенных выборочно смотрели 200 штук и нашли 6 ошибок. Все на позициях, где в номенклатуре есть похожие типоразмеры.</p>
    <p>Вывод отсюда простой: полностью доверять нельзя даже уверенным ответам, но выборочная проверка ловит систематические промахи быстро.</p>
    <h2>Где она ошибается предсказуемо</h2>
    <p><strong>Типоразмеры рядом.</strong> 25х3,2 и 25х2,8 для модели почти одинаковы, а для закупки это разные позиции. Лечится просто: числовые характеристики сравниваются отдельно, кодом.</p>
    <p><strong>Устаревшие позиции.</strong> В справочнике осталась старая номенклатура, помеченная как неактуальная. Модель её выберет, если не сказать, что нельзя. Фильтр по признаку актуальности ставится до передачи кандидатов.</p>
    <p><strong>Аналоги и заменители.</strong> «Можно взять вот это, оно почти то же самое»: рассуждение полезное для человека и вредное для автоматики. Мы просим модель не предлагать замены, а честно отвечать «не нашёл».</p>
    <p><strong>Редкие узлы и нетиповое оборудование.</strong> Здесь она угадывает, и точность падает резко. Такие позиции лучше сразу отправлять человеку, определив их по отсутствию близких кандидатов.</p>
    <h2>Что нужно, чтобы это заработало</h2>
    <p>Неприятная часть: без порядка в данных ничего не выйдет. Нужен один справочник, а не пять версий в разных отделах. Нужны заполненные типы и параметры в модели: если у элемента написано «Стена 1», сопоставлять нечего ни человеку, ни машине. Нужно решить, кто отвечает за подтверждение спорных позиций, иначе очередь на проверку никто не разберёт.</p>
    <p>И нужен обратный ход: когда сопоставление подтверждено, оно должно записаться в модель как параметр, а не жить в отдельной табличке. Иначе следующая выгрузка начнётся с нуля.</p>
    <p>Про то, как эти параметры потом доезжают до заявки на закупку, есть <a href="https://bim-pulse.ru/postgresql-bim-data.html">разбор про данные модели в PostgreSQL</a>. А про правила, по которым проверяется заполненность, рассказывает страница <a href="https://bim-pulse.ru/avtomatizaciya-proverki-modeley.html">автоматизации проверки моделей</a>.</p>
    <h2>Когда не надо</h2>
    <p>Если элементов меньше тысячи и справочник маленький, возня с настройкой окупится дольше, чем ручное заполнение. Порог начинается примерно с двух-трёх тысяч позиций.</p>
    <p>И если в компании ещё не решено, какой классификатор считается основным, начинать надо с этого решения, а не с автоматизации. Автоматизировать спор между отделами не получается.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как заставить LLM писать скрипты для Revit и Dynamo</title>
      <link>https://bim-pulse.ru/llm-pishet-skripty-revit.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/llm-pishet-skripty-revit.html</guid>
      <pubDate>Fri, 18 Sep 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>AI</category>
      <description>Практика: языковая модель пишет код под Revit API за минуты, но уверенно выдумывает методы. Разбираем, что она делает хорошо, где врёт и как проверять результат, не сломав модель.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/Bim2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Просишь модель: «напиши скрипт, который переименует все листы по шаблону». Через двадцать секунд приходит аккуратный код на Python с комментариями, обработкой ошибок и красивой структурой. Запускаешь в pyRevit, получаешь ошибку: метода, который она вызвала, в Revit API не существует.</p>
    <p>Это не повод бросать. Просто нужно понимать, что языковая модель делает хорошо, а что не делает совсем. За полгода использования у нас сложился набор правил, который экономит часы, а не создаёт новые.</p>
    <h2>Что модель делает хорошо</h2>
    <p><strong>Каркас скрипта.</strong> Импорты, транзакция, сбор элементов через FilteredElementCollector, вывод результата. Эта часть повторяется в каждом скрипте, и модель её знает.</p>
    <p><strong>Логику обработки данных.</strong> Отфильтровать, сгруппировать, посчитать, отсортировать, собрать словарь. Обычный Python, где Revit ни при чём. Здесь ошибок практически нет.</p>
    <p><strong>Регулярные выражения и парсинг строк.</strong> Разобрать марку вида «КЖ-1.3-205» на составляющие, собрать имя листа по шаблону, вытащить число из текста. Задача, на которой человек тратит полчаса и три опечатки.</p>
    <p><strong>Объяснение чужого кода.</strong> Прислали скрипт от предыдущего подрядчика, никто не понимает, что он делает. Модель разбирает построчно, и это честно экономит день.</p>
    <p><strong>Перевод между API.</strong> Есть рабочий код на C# из плагина, нужен аналог на Python для Dynamo. Структурно задача механическая, модель справляется.</p>
    <h2>Где она врёт</h2>
    <p>Главная проблема одна: <strong>модель не знает точную сигнатуру методов Revit API вашей версии</strong> и на месте пробела уверенно придумывает правдоподобное.</p>
    <p>Типичные выдумки, которые встречаются раз через раз:</p>
    <ul><li>метод, которого нет вовсе, но название звучит логично: <code>element.SetParameterValue("Марка", "КЖ-1")</code>;</li><li>перепутанные версии: код для Revit 2019 в проекте на 2024, где перечисления единиц измерения переехали в <code>UnitTypeId</code>;</li><li>забытая транзакция: код меняет модель без <code>Transaction</code>, и Revit отвечает исключением;</li><li>неверный порядок аргументов там, где их четыре и три из них похожи;</li><li>обращение к параметру по русскому имени, когда в проекте он называется иначе.</li></ul>
    <p>Отдельная категория это единицы измерения. Модель бодро складывает миллиметры с внутренними футами Revit, потому что в коде это просто числа. Ошибка тихая: скрипт отработает, а размеры в модели уедут. Про это у нас есть отдельный разбор про <a href="https://bim-pulse.ru/dynamo-chisla-i-edinicy.html">числа и единицы в Dynamo</a>, там же и цена вопроса.</p>
    <h2>Как просить, чтобы получалось</h2>
    <p>Разница между «получил мусор» и «получил рабочий код» почти целиком в постановке.</p>
    <p><strong>Указывайте версию.</strong> «Revit 2024, pyRevit, IronPython 3» в первой строке запроса убирает половину ошибок с несовместимостью.</p>
    <p><strong>Давайте образец рабочего кода.</strong> Свой скрипт, который точно работает в вашей среде, приложенный к запросу, задаёт модели стиль и правильные вызовы. Это сильнее любых объяснений: она подстраивается под пример.</p>
    <p><strong>Просите минимальную версию.</strong> «Без обработки ошибок, без логирования, только суть». Короткий код проще проверить. Красивую обвязку добавите потом, когда логика подтвердится.</p>
    <p><strong>Требуйте вывод, а не действие.</strong> Первая версия скрипта должна не менять модель, а печатать, что бы она изменила: список элементов, старое значение, новое значение. Смотрите на список, и только потом разрешаете запись.</p>
    <p><strong>Спрашивайте про допущения.</strong> Прямой вопрос «какие места здесь могут не работать в моей версии» заставляет модель самой указать на слабые точки. Она их обычно знает, просто не говорит, пока не спросят.</p>
    <h2>Порядок проверки, который спасает модель</h2>
    <p>Правило простое: <strong>скрипт от языковой модели не запускается на рабочем файле</strong>. Никогда, даже если выглядит очевидным.</p>
    <p>Порядок такой. Сначала копия проекта или тестовая модель с десятком элементов. Дальше запуск в режиме вывода без записи: смотрим, что скрипт собрался менять, и сверяем глазами хотя бы пять позиций. Потом запуск на копии с записью, проверка результата в спецификации. И только затем рабочий файл, обязательно с синхронизацией до запуска, чтобы откат стоил один клик.</p>
    <p>Звучит долго, занимает пятнадцать минут. Восстановление модели после скрипта, который переименовал шесть тысяч элементов по неправильному шаблону, занимает день.</p>
    <h2>Что это даёт по времени</h2>
    <p>Честные цифры из практики.</p>
    <p>Простой скрипт, который раньше писали час: теперь пятнадцать минут вместе с проверкой. Скрипт средней сложности с обходом связанных файлов и сбором данных: был день, стало три-четыре часа. Разбор чужого кода: был день, стал час.</p>
    <p>При этом задачи, где нужна тонкая работа с API (свои классы, обработка событий, расширения интерфейса), почти не ускорились. Там модель помогает как справочник, но пишет всё равно человек.</p>
    <p>Средняя экономия по нашим задачам вышла процентов сорок. Не десятикратно, как обещают в роликах, но заметно.</p>
    <h2>Кому это подходит</h2>
    <p>Здесь важная оговорка.</p>
    <p>Языковая модель ускоряет того, кто <strong>может проверить результат</strong>. Если вы читаете код и понимаете, что делает FilteredElementCollector, вы получите готовый скрипт за минуты вместо часа.</p>
    <p>Если код читать не умеете, вы получите красивый текст, который непонятно почему не работает, и потратите на разбирательство больше, чем на изучение основ. Начинать в таком случае надо не с промптов, а с <a href="https://bim-pulse.ru/dynamo-pervyy-skript.html">первого скрипта в Dynamo</a> и понимания, как вообще устроен доступ к элементам.</p>
    <p>Отдельный случай: скрипты нужны регулярно и всей командой. Тогда разумнее не раздавать всем доступ к чату, а собрать проверенную библиотеку скриптов с кнопками, чтобы люди пользовались готовым, а не генерировали каждый своё. Про то, как это устроено у нас, есть страница <a href="https://bim-pulse.ru/dynamo-scripts.html">разработки Dynamo-скриптов и плагинов</a>.</p>
    <h2>Короткий чек-лист</h2>
    <p>Перед тем как просить код:</p>
    <ol><li>Назовите версию Revit и среду запуска.</li><li>Приложите образец своего рабочего скрипта.</li><li>Попросите сначала версию «только вывод, без записи».</li><li>Проверьте пять позиций из вывода глазами.</li><li>Запускайте на копии, потом на рабочем файле после синхронизации.</li></ol>
    <p>Пункт четвёртый пропускают чаще всего. Именно он ловит выдуманные методы и уехавшие единицы до того, как они попадут в модель.</p>]]></content:encoded>
    </item>
    <item>
      <title>Генеративное проектирование: где взлетает, а где остаётся демо</title>
      <link>https://bim-pulse.ru/generativnoe-proektirovanie.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/generativnoe-proektirovanie.html</guid>
      <pubDate>Wed, 16 Sep 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>AI</category>
      <description>Разбор задач, где перебор вариантов даёт результат: планировки, размещение оборудования, трассировка, каркасы. Что нужно на входе, сколько стоит подготовка и когда проще решить руками.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-case-1.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Красивая картинка из презентаций: алгоритм за ночь перебрал 40 тысяч вариантов планировки и выдал оптимальный. Красиво, местами правда, но между картинкой и рабочим применением лежит вопрос, который в презентациях не показывают: кто и как описал критерии оптимальности.</p>
    <p>Генеративное проектирование это не «ИИ придумал за нас». Это перебор вариантов по заданным правилам с оценкой по заданной функции. Вся сложность в правилах и в функции. Разберём, где на этом получается результат, а где выходит дорогая игрушка.</p>
    <h2>Что это на самом деле такое</h2>
    <p>Разберём по частям.</p>
    <p>Три составные части, без которых ничего не работает.</p>
    <p><strong>Параметры.</strong> Что алгоритм может менять: шаг колонн, положение перегородок, ориентацию блоков, диаметры участков.</p>
    <p><strong>Ограничения.</strong> Что нарушать нельзя: нормативные расстояния, минимальные площади, несущие оси, зоны обслуживания оборудования.</p>
    <p><strong>Целевая функция.</strong> Что считать лучшим: минимум длины трасс, максимум полезной площади, минимум стоимости конструкций, равномерность освещённости. Обычно несколько целей сразу, и тогда решается компромисс между ними.</p>
    <p>Дальше алгоритм генерирует варианты и оценивает. Метод перебора вторичен: от простого перебора сетки до эволюционных алгоритмов. Качество результата определяется тем, насколько честно описаны ограничения.</p>
    <p>Ключевой вывод, который экономит бюджет: если правила вашей задачи невозможно записать формально, генеративное проектирование к ней неприменимо. Никакая модель не угадает то, что даже словами не сформулировано.</p>
    <h2>Где действительно взлетает</h2>
    <h3>Размещение однотипных объектов</h3>
    <p>Парковка, стеллажи на складе, посадочные места в офисе, оборудование в технологическом зале. Правила описываются легко: габариты, проходы, нормативные расстояния, зоны обслуживания. Целевая функция очевидна, уместить максимум, не нарушив ограничений. И вот тут интересно.</p>
    <p>Здесь алгоритм выигрывает у человека. Задача чисто комбинаторная. На складе средней площади перебор находит компоновку на 8–12 процентов вместительнее той, что собирали руками, а это реальные деньги, посчитанные в квадратных метрах.</p>
    <h3>Трассировка сетей</h3>
    <p>Проложить трассу от точки А до точки Б по коридорам, обойдя зоны, где нельзя, с минимальной длиной и минимумом поворотов. Формальная задача, решается уверенно. Ограничение одно: работает, когда пространство уже определено. Есть модель, есть зоны, есть точки подключения. На стадии, когда планировка ещё плавает, толку мало.</p>
    <h3>Раскрой и подбор сечений</h3>
    <p>Оптимизировать раскладку листовых материалов, подобрать сечения элементов каркаса под нагрузки с минимальной массой. Классические оптимизационные задачи, к «ИИ» имеющие отношение косвенное, но работающие.</p>
    <h3>Варианты объёмно-планировочных решений на ранней стадии</h3>
    <p>Не финальная планировка. Быстрая прикидка: сколько секций влезает на участок при разных отступах, как меняется площадь квартир при разной глубине корпуса. Числа понятные. Результат тоже скромный: не готовый проект, а таблица вариантов для разговора с заказчиком.</p>
    <h2>Где остаётся демо</h2>
    <p>А теперь про обещания из презентаций.</p>
    <h3>«Оптимальная планировка квартиры»</h3>
    <p>Причина проста: критерий «удобно жить» не записывается формально. Алгоритм оптимизирует то, что ему задали: площадь, длину коридоров, количество окон, и выдаёт планировку, которая по числам лучше, а по ощущениям хуже. Спорить с ним бессмысленно, он выполнил ровно то, что попросили, и в этом вся проблема подхода к жилью.</p>
    <p>Плюс нормативы. Инсоляция, эвакуация, требования к помещениям без окон. Их можно частично формализовать, но проверка вариантов на соответствие занимает больше времени, чем сама генерация.</p>
    <p>Применимо в узком коридоре: типовое жильё с повторяющимися секциями, где правила уже отработаны и записаны. Для индивидуальных объектов, нет.</p>
    <h3>Генерация фасадов и форм</h3>
    <p>Красивее всего выглядит в презентациях. И меньше всего применяется. Формальных критериев красоты не существует, а конструктивные ограничения обычно сводят фантазию алгоритма к тому, что и так собирались строить.</p>
    <h3>«Полностью автоматический проект»</h3>
    <p>Между генерацией геометрии и проектом лежат разделы, согласования, нормоконтроль, экспертиза и ответственность конкретного человека под подписью. Ни одна из этих частей не автоматизируется генеративными методами, и дело здесь не в зрелости технологии: подпись под проектом ставит человек, который отвечает за решение перед законом, и переложить это на перебор вариантов нельзя ни при каком качестве алгоритма.</p>
    <h2>Что нужно на входе</h2>
    <p>Здесь начинается неприятная правда о стоимости.</p>
    <p>Чтобы алгоритм перебирал варианты, кто-то должен формализовать правила. Это работа опытного проектировщика вместе с тем, кто пишет скрипт. Неделя-две на первую задачу, если правила простые. Месяц, если в них есть нормативные тонкости.</p>
    <p>Дальше нужна проверка. Сгенерированные варианты кто-то должен отсмотреть. Алгоритм честно найдёт лазейку в описании ограничений: поставит оборудование так, что формально проход есть, а дверь шкафа не откроется.</p>
    <p>Поэтому окупается генеративное проектирование в двух случаях. Первый: задача повторяется на многих объектах, тогда затраты на формализацию делятся на десяток проектов. Второй: цена ошибки высока, а вариантов много, склад, паркинг, технологическое размещение.</p>
    <p>Разовая задача на одном объекте почти всегда решается быстрее руками.</p>
    <p>Без вариантов.</p>
    <h2>Как начать, если хочется попробовать</h2>
    <p>Точно не с планировок.</p>
    <p>Возьмите узкую задачу, которая у вас повторяется, и где результат измеряется числом.</p>
    <p>Пример из практики: расстановка светильников по помещению с равномерной освещённостью и привязкой к сетке потолка. Правила формализуются за день, скрипт пишется за два, экономия, по часу на каждом помещении, а помещений в проекте сотни.</p>
    <p>Дальше можно двигаться к трассировке и компоновке. Ключ не в том, чтобы «внедрить генеративное проектирование», а в том, чтобы решить конкретную задачу, у которой есть числовой критерий.</p>
    <p>Как выбирать такие задачи и считать эффект, разбирали отдельно. <a href="https://bim-pulse.ru/ai-bim-roadmap.html">дорожная карта внедрения AI в проектной компании</a>. А про то, где языковые модели уже дают результат в повседневной работе, есть <a href="https://bim-pulse.ru/ai-in-bim-practice.html">честная карта задач</a> с примерами и цифрами.</p>]]></content:encoded>
    </item>
    <item>
      <title>ИИ и распознавание чертежей: что работает, а что пока демо</title>
      <link>https://bim-pulse.ru/ii-raspoznavanie-chertezhey.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/ii-raspoznavanie-chertezhey.html</guid>
      <pubDate>Mon, 14 Sep 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>AI</category>
      <description>Честный разбор: где нейросети реально экономят время на чертежах, штампы, спецификации, поиск изменений между ревизиями, и почему «PDF на входе, модель на выходе» остаётся обещанием.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/Bim.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>«Загружаете PDF, получаете BIM-модель». Такое обещание встречается в презентациях с 2021 года. Проверяли не раз, на реальных чертежах, не на демо-примере из ролика.</p>
    <p>Короткий ответ: <strong>часть задач нейросети закрывают уверенно</strong> и экономят дни. Полная генерация модели из чертежа в эту часть не входит и в ближайшее время не войдёт. Разберём по задачам, с тем, что получилось и что нет.</p>
    <h2>Работает: штампы и текстовые данные</h2>
    <p>Распознать основную надпись, номер листа, шифр, стадию и дату ревизии: задача, которую современный OCR решает почти без ошибок. На выходе таблица: файл, шифр, лист, ревизия.</p>
    <p>Зачем это нужно: когда прилетает архив на 300 листов, первым делом надо понять, что вообще пришло. Раньше на составление ведомости листов уходил день работы. Сейчас скрипт проходит папку за 15 минут, а человек проверяет спорные позиции.</p>
    <p>Что ломает распознавание: сканы с перекосом больше пяти градусов, подписи от руки поверх штампа, объединённые ячейки нестандартной формы. На чистых PDF из CAD точность практически стопроцентная, на плохих сканах падает процентов до восьмидесяти, то есть каждый пятый лист придётся проверять глазами.</p>
    <h2>Работает: таблицы и спецификации</h2>
    <p>Вторая задача, где ИИ реально экономит: вытащить из чертежа спецификацию оборудования или ведомость и превратить в таблицу.</p>
    <p>Ключевой момент не сама распознавалка, а проверка результата. Мы обычно делаем так: рядом с распознанной таблицей автоматически считаются контрольные суммы по числовым колонкам, а строки с подозрительными значениями подсвечиваются. Проверять сотню строк с подсветкой десяти сомнительных это полчаса. Сверять всё подряд это полдня.</p>
    <p>Отдельно предупреждение про цифры. Языковая модель может «улучшить» распознанное значение: увидела 12,5 там, где 125, и подставила то, что кажется правдоподобнее. Поэтому числа берут из OCR, а модель используют только для структуры таблицы, где заголовки, где единицы, к какой позиции относится строка.</p>
    <h2>Работает: поиск изменений между ревизиями</h2>
    <p>Задача, где сравнение картинок работает лучше человека. Два PDF одного листа разных ревизий, на выходе подсвеченные области, которые изменились.</p>
    <p>Тут даже не нужны нейросети в модном смысле: обычное совмещение растров плюс фильтрация шума. Экономия ощутимая, проверить лист за минуту вместо получаса поиска «что же они поменяли».</p>
    <p>Работает и обратная задача: понять, попали ли изменения из новой ревизии в модель. Сравниваем изменённые области с элементами модели по координатам и получаем список того, что надо посмотреть.</p>
    <h2>Работает частично: векторизация</h2>
    <p>Превратить растровый чертёж в вектор (линии, дуги, замкнутые контуры) умеют давно, и алгоритмы стали заметно лучше.</p>
    <p>Проблема не в линиях, а в смысле. Векторизатор выдаёт множество отрезков. Он не знает, что вот эти две параллельные линии на расстоянии 380 мм это стена, а вот эти, тоже параллельные, размерная линия с выносками. Без этого понимания вектор остаётся картинкой, только другого формата.</p>
    <p>Полуавтоматические сценарии работают: человек указывает, какие слои и толщины считать стенами, дальше скрипт строит по ним геометрию. На типовых планах это ускоряет моделирование на треть. На сложных узлах не помогает вовсе.</p>
    <h2>Не работает: «PDF на входе, готовая модель на выходе»</h2>
    <p>Здесь стоит объяснить, почему это не вопрос очередной версии.</p>
    <p>Чертёж не содержит всей информации о здании. Он рассчитан на человека, который читает его вместе с пояснительной запиской, спецификациями, общими указаниями и собственным опытом. На плане не написано, что перегородка идёт до перекрытия, а не до подвесного потолка. Это следует из узла на другом листе. Толщина слоя пирога пола указана в одном месте на весь проект. Отметка низа балки берётся из разреза, которого может не быть.</p>
    <p>Человек достраивает недостающее по правилам, которые нигде не записаны. Модель, которая соберётся автоматически, будет содержать столько же догадок, сколько и элементов, и разбирать эти догадки дольше, чем моделировать заново.</p>
    <p>Второе: чертежи между собой не сходятся. Разные отметки на плане и разрезе, разные толщины на разных листах. Человек замечает противоречие и идёт спрашивать. Автомат выберет один вариант молча.</p>
    <p>Поэтому честная формулировка звучит так: <strong>ИИ ускоряет подготовку данных и проверку результата, но моделирует по-прежнему человек.</strong> Всё, что обещает иное, стоит проверять на своих чертежах, а не на демонстрационных.</p>
    <h2>Что даёт связка на практике</h2>
    <p>Собранный вместе набор выглядит так:</p>
    <ul><li><strong>Приёмка архива.</strong> За час получаем ведомость листов и список того, чего не хватает.</li><li><strong>Спецификации.</strong> Распознаются в таблицы, проверяются контрольными суммами и уходят к сметчику раньше, чем начнётся моделирование.</li><li><strong>Разметка DWG.</strong> Слои размечаются полуавтоматически, типовые планы собираются быстрее.</li><li><strong>Ревизии.</strong> Сравниваются автоматически, и на модель попадают только реальные изменения.</li></ul>
    <p>Экономия по проекту среднего размера: от нескольких дней до пары недель, в основном на подготовке и на сверке. Само моделирование ускоряется процентов на двадцать, не больше.</p>
    <p>Это не звучит как революция, зато это работает каждый день, а не в презентации.</p>
    <h2>Как проверить чужое решение за час</h2>
    <p>Если вам продают распознавание чертежей, попросите прогнать три ваших листа. Не типовых, а тех, что реально приходят: со сканом, с рукописной пометкой, с нестандартной таблицей.</p>
    <p>Дальше смотрите на три вещи. Показывает ли система свою уверенность по каждому полю или выдаёт результат одинаково уверенно. Что происходит с числами, которые не удалось прочитать: пустое поле честнее правдоподобной выдумки. Сколько времени займёт проверка результата человеком. Если столько же, сколько ручной ввод, экономии нет.</p>
    <p>Ответ «у нас точность 98 процентов» без указания, на каких документах она измерена, ничего не значит. На чистых PDF из CAD такую точность даёт и бесплатный OCR.</p>
    <p>Тем, кто планирует переводить документацию в модель, полезно заранее посмотреть, <a href="https://bim-pulse.ru/2d-v-bim-perevod-chertezhey.html">как устроен процесс перевода 2D в BIM</a>. А общая картина по применению языковых моделей в проектировании есть в разборе <a href="https://bim-pulse.ru/ai-in-bim-practice.html">где LLM реально работают в BIM, а где нет</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как принимать BIM-модель, сделанную по вашим чертежам</title>
      <link>https://bim-pulse.ru/priemka-bim-modeli-po-chertezham.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/priemka-bim-modeli-po-chertezham.html</guid>
      <pubDate>Sat, 12 Sep 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Coordination</category>
      <description>Чек-лист приёмки: восемь проверок за час, которые отличают рабочую модель от красивой пустышки. Что смотреть в спецификациях, параметрах, координатах и отчёте о расхождениях.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-model-2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Подрядчик присылает файл на 900 мегабайт и письмо: «Модель готова, принимайте». Открываете: красиво. Здание стоит, трубы идут, всё разноцветное.</p>
    <p>Через три месяца сметчик просит по ней объёмы. И выясняется: у половины стен не указан материал, перегородки смоделированы одним типом, спецификация оборудования пустая. Формально работа сдана. В задании ведь было написано «выполнить BIM-модель».</p>
    <p>Ниже восемь проверок, которые занимают час и показывают, рабочая это модель или картинка. Порядок важен: первые четыре отсекают грубые случаи, остальные касаются данных.</p>
    <h2>1. Вес файла и что внутри</h2>
    <p>Начинайте со скучного.</p>
    <p>Откройте модель и посмотрите на список связей и импортов.</p>
    <p>Частая находка: вкрученные внутрь DWG-подложки, которые подрядчик забыл удалить. Они тянут вес, замедляют работу и иногда содержат чужую геометрию, которая попадает в спецификации.</p>
    <p>Второе: количество семейств. Если в проекте 1200 типов семейств на 20 тысяч элементов, значит, элементы делали «каждый раз заново», и никакой массовой обработки по ним не выйдет.</p>
    <h2>2. Уровни, оси и координаты</h2>
    <p>Проверяется за пять минут, а стоит дорого.</p>
    <p>Отметки уровней должны совпадать с проектными, а не быть круглыми числами «примерно там». Оси называются так же, как на чертежах. Без исключений. Базовая точка проекта должна быть согласована, особенно если модель будут объединять с чужими файлами. Простой тест: откройте разрез и сверьте три произвольные отметки с чертежом. Если хоть одна не сходится, дальше можно не смотреть, пока не исправят.</p>
    <h2>3. Элементы на своих уровнях</h2>
    <p>Классика: перекрытие третьего этажа принадлежит второму, а высота задана вручную смещением. Визуально всё правильно, а в спецификации по этажам каша.</p>
    <p>Проверка: сделайте спецификацию с группировкой по уровню и посмотрите на количества. Если на техническом этаже вдруг 40 дверей, значит, кто-то моделировал «на глаз».</p>
    <h2>4. Один тип, одно назначение</h2>
    <p>Посмотрите список типов стен. Здоровая модель: «Стена наружная 400 газобетон», «Перегородка ГКЛ 100». Больная: «Стена 1», «Стена 1 копия», «Стена 200 новая». То же самое с семействами дверей и оборудования. Названия это не эстетика: по ним потом фильтруют, считают и сопоставляют с номенклатурой. Хаос в названиях означает ручную работу на каждом шаге дальше.</p>
    <h2>5. Параметры: заполнено или пусто</h2>
    <p>Здесь начинается главное.</p>
    <p>Именно тут проходит разница между моделью и картинкой.</p>
    <p>Возьмите список параметров, который был в задании, и сделайте по каждому спецификацию с фильтром «значение пустое». Результат должен быть нулевым по обязательным полям.</p>
    <p>Если задания с параметрами не было, минимум для проверки такой: марка, материал, тип, принадлежность к системе (для инженерки), высотная отметка. Пустые значения хотя бы в одном из них означают, что объёмы придётся добивать руками.</p>
    <p>Отдельно проверьте, что параметры именно общие, а не проектные. Проектный параметр живёт внутри одного файла и не соберётся в сводную спецификацию по нескольким разделам. Выясняется это в самый неподходящий момент.</p>
    <h2>6. Спецификации сходятся с документацией</h2>
    <p>Самая полезная проверка. И самая пропускаемая.</p>
    <p>Выгрузите из модели объёмы по трём-четырём позициям, которые есть в проектных ведомостях: бетон по фундаменту, площадь перегородок, длина трубопровода по системе. Сравните.</p>
    <p>Расхождение до 3–5 процентов это нормально: правила подсчёта в смете и в модели отличаются. Расхождение в полтора раза означает либо ошибку моделирования, либо то, что считали разные вещи. И то и другое надо разбирать до приёмки, а не после.</p>
    <p>Если подрядчик отвечает «ну это же модель, там всегда по-другому», это плохой знак. Хороший подрядчик заранее приложит записку, где объяснит, почему по этой позиции цифры отличаются.</p>
    <h2>7. Отчёт о расхождениях в исходниках</h2>
    <p>Требуйте его отдельным документом. Любой перевод 2D в модель вскрывает конфликты в чертежах: несовпадающие отметки, разная толщина одной стены на плане и разрезе, оборудование без позиции в спецификации.</p>
    <p>Если подрядчик говорит, что расхождений не было, он либо не смотрел, либо решил всё сам и не сказал. Второе хуже: значит, в модели есть решения, которые никто не согласовывал.</p>
    <p>Нормальный отчёт выглядит как таблица: что нашли, на каких листах, как приняли решение, с кем согласовано.</p>
    <p>Без этой таблицы приёмка превращается в веру на слово.</p>
    <h2>8. Проверка на коллизии, но с умом</h2>
    <p>Прогонять «все против всех» бессмысленно: получите тысячи пересечений и ничего не поймёте.</p>
    <p>Полезнее три-четыре адресных проверки: конструкции против вентиляции, конструкции против водоснабжения, отверстия против несущих элементов. С допусками, чтобы изоляция и уклоны не поднимали шум.</p>
    <p>Задача на приёмке не найти все коллизии, а понять, работал ли подрядчик с моделью или просто нарисовал. Если базовая проверка выдаёт сотни жёстких пересечений в несущих конструкциях, модель не проверялась ни разу.</p>
    <h2>Как оформить это в договоре</h2>
    <p>Чтобы приёмка не превращалась в спор, хватит трёх пунктов в задании.</p>
    <p>Первое: таблица параметров, которые должны быть заполнены, с указанием, кто их источник. Второе: допустимое расхождение объёмов с проектными ведомостями по контрольным позициям. Третье: перечень проверок перед сдачей и требование приложить их результаты.</p>
    <p>Формулировка «модель должна соответствовать LOD 300» без этих трёх пунктов не значит ничего: у каждого своё представление о трёхстах.</p>
    <h2>Что делать, если модель уже принята и она плохая</h2>
    <p>Ситуация частая. Полностью переделывать дорого, жить с этим больно.</p>
    <p>Разумный путь: не чинить всё, а выбрать то, что нужно ближайшие полгода. Нужны объёмы по бетону? Приводим в порядок конструкции: типы, материалы, марки. Нужна координация? Приводим в порядок уровни и связи. Остальное оставляем как есть.</p>
    <p>Такая точечная доводка занимает одну-две недели. Полное перемоделирование, для сравнения, месяцы. Заодно становится видно, что из модели реально используется, а что было нарисовано просто так.</p>
    <p>Технически это та же работа, что и <a href="https://bim-pulse.ru/avtomatizaciya-proverki-modeley.html">проверка моделей по правилам компании</a>, только запускается один раз и по чужому файлу. А если модель ещё только предстоит заказать, полезно заранее прочитать, <a href="https://bim-pulse.ru/2d-v-bim-perevod-chertezhey.html">как устроен перевод чертежей из 2D в BIM</a> и из чего там складывается цена.</p>]]></content:encoded>
    </item>
    <item>
      <title>Перевод чертежей из 2D в BIM: как устроен процесс и из чего цена</title>
      <link>https://bim-pulse.ru/2d-v-bim-perevod-chertezhey.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/2d-v-bim-perevod-chertezhey.html</guid>
      <pubDate>Thu, 10 Sep 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Data</category>
      <description>Что происходит между вашей папкой DWG и готовой моделью: пять этапов, что влияет на срок и стоимость, какие сюрпризы вылезают на второй неделе и что писать в задании.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-case-2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Заказчик присылает папку: 340 файлов DWG, часть в подшивках, часть отдельными листами, несколько сканов в PDF с подписями от руки. Просит «перевести в BIM» и спрашивает, сколько это будет стоить.</p>
    <p>Честный ответ на этом этапе: «не знаю». Не из вредности: цена перевода 2D в модель зависит не от количества листов, а от того, насколько чертежи сходятся друг с другом. Пока их не открыли, этого не видно.</p>
    <p>Разберём, что происходит между папкой с чертежами и готовой моделью, где обычно теряются недели и что стоит написать в задании, чтобы не разбираться потом.</p>
    <h2>Что вообще значит «перевести в BIM»</h2>
    <p>Под одной фразой заказчики понимают три разные работы.</p>
    <p><strong>Объёмная картинка.</strong> Нужно показать здание, покрутить, сделать визуализацию, проверить, что трубы не лезут в балки. Параметры не нужны, спецификации не нужны. Это самый дешёвый вариант, и его часто хватает для задачи «посмотреть».</p>
    <p><strong>Модель для расчётов.</strong> Из неё берут объёмы, считают смету, планируют закупки. Значит, у элементов должны быть заполнены параметры, материалы и марки, а спецификации обязаны сходиться с ведомостями из проекта.</p>
    <p><strong>Модель для эксплуатации.</strong> В неё вносят оборудование с паспортами, сроками обслуживания, привязками к системам. Такое заказывают собственники зданий, а не строители.</p>
    <p>Разница в цене между первым и третьим доходит до нескольких раз. Поэтому первый вопрос подрядчику всегда один: что вы будете делать с моделью после того, как её получите. Если ответа нет, деньги уйдут не туда.</p>
    <h2>Пять этапов, из которых состоит работа</h2>
    <h3>1. Разбор исходников</h3>
    <p>Открывают всё, что прислали, и сводят в таблицу: какой лист какой стадии, где последняя ревизия, какие разделы вообще есть. На этом шаге обычно выясняется, что архитектура от марта, конструкции от июня, а инженерка сделана по мартовской архитектуре и про июньские изменения не знает.</p>
    <p>Этап скучный, занимает от двух дней до недели. Пропускать его нельзя: моделировать по несогласованным чертежам значит перемоделировать потом.</p>
    <h3>2. Настройка шаблона и правил</h3>
    <p>До первой стены договариваются о структуре: уровни, оси, единая система координат, наименование семейств, набор параметров, разбивка по файлам. Если делать это «по ходу», к середине проекта получится модель, где стены названы четырьмя способами.</p>
    <p>Здесь же определяют LOD по элементам. Не «весь проект LOD 300», а конкретно. Несущие конструкции: точная геометрия и марки. Перегородки: габариты и тип. Инженерные системы: трассы с диаметрами. Оборудование: габариты и позиция по спецификации.</p>
    <h3>3. Моделирование</h3>
    <p>Самая понятная часть. Конструкции, архитектура, инженерка, поэтажно, по разделам. Скорость зависит от типовости: жилой дом с повторяющимися этажами идёт втрое быстрее производственного здания той же площади.</p>
    <p>Ориентир по трудоёмкости из практики. Типовая секция жилого дома: примерно неделя на раздел. Промышленный цех с нестандартными узлами: от трёх недель. Оценивать по квадратным метрам можно только внутри одного типа зданий, между типами это не работает.</p>
    <h3>4. Наполнение данными</h3>
    <p>Модель уже есть, но пока это геометрия. Дальше проставляют марки, материалы, привязку к спецификациям, коды классификации, если они нужны заказчику.</p>
    <p>Этап, который чаще всего срезают ради срока. Именно из-за этого потом появляется фраза «модель есть, а объёмы из неё взять нельзя». Геометрия без данных считается быстро, стоит дёшево и не решает ни одной задачи, кроме визуальной.</p>
    <h3>5. Проверка и отчёт о расхождениях</h3>
    <p>Готовую модель гоняют через проверки: коллизии, дубли, элементы вне уровней, незаполненные параметры. Плюс сверяют объёмы с ведомостями из исходной документации.</p>
    <p>Отдельный документ, который заказчик обязан требовать: перечень расхождений между чертежами. Обычно там от 20 до 200 пунктов: несовпадение отметок, разные толщины одной стены на разных листах, оборудование, которого нет в спецификации. Это не придирки исполнителя, а список того, что пришлось решать за проектировщика.</p>
    <h2>Что реально влияет на цену</h2>
    <p>Площадь это только один множитель из пяти, и не главный.</p>
    <p><strong>Состояние исходников.</strong> Чистые DWG с послойной структурой и живыми блоками это одна история. Сканы с подписями от руки совсем другая: там сначала идёт распознавание, потом ручная сверка, и трудоёмкость вырастает вдвое.</p>
    <p><strong>Насколько разделы сходятся между собой.</strong> Каждое расхождение это письмо, ожидание ответа и простой. Проект, где архитектура и конструкции честно синхронизированы, моделируется в полтора раза быстрее.</p>
    <p><strong>Глубина проработки.</strong> Разница между «габариты и трассы» и «каждый фитинг с артикулом» это разница в стоимости в два-три раза.</p>
    <p><strong>Типовость.</strong> Двадцать одинаковых этажей после первого идут почти бесплатно. Двадцать разных это двадцать раз работа.</p>
    <p><strong>Срок.</strong> Сжатый график означает больше людей на одном файле, а значит больше времени на координацию и больше рисков.</p>
    <h2>Сюрпризы, которые вылезают на второй неделе</h2>
    <p>Первую неделю всё идёт гладко. Потом начинается.</p>
    <p>Отметки не совпадают: на плане отметка чистого пола 0.000, на разрезе тот же уровень подписан как +0.150. Кто прав, знает только автор, а моделировать нужно сегодня.</p>
    <p>Оборудования нет в спецификации. На плане стоит, марка подписана, в ведомости отсутствует. Значит, объём по нему не посчитается, пока заказчик не подтвердит позицию.</p>
    <p>Стены разной толщины на разных листах. Классика при нескольких ревизиях: план обновили, разрез забыли.</p>
    <p>Инженерка идёт сквозь балки. В 2D это никого не смущало, потому что разделы никто не накладывал друг на друга. В модели видно сразу, и вопрос «а как теперь?» прилетает заказчику.</p>
    <p>Ни один из этих пунктов не решается исполнителем в одиночку. Поэтому в договоре стоит заранее прописать срок ответа на запросы: без этого проект встаёт, а виноватым оказывается тот, кто моделирует.</p>
    <h2>Что писать в задании</h2>
    <p>Минимальный набор, без которого начинать не стоит:</p>
    <ul><li><strong>Цель.</strong> Для чего модель: объёмы, коллизии, эксплуатация, тендер.</li><li><strong>Разделы и LOD по каждому.</strong> Отдельной таблицей, а не одной строкой на весь проект.</li><li><strong>Перечень параметров</strong>, которые должны быть заполнены. Если планируется выгрузка в смету или в снабжение, список согласуется с ними, а не придумывается на стороне подрядчика.</li><li><strong>Формат сдачи</strong>: RVT какой версии, нужен ли IFC, какая схема именования файлов.</li><li><strong>Что считается приёмкой</strong>: какие проверки прогоняются, какой процент незаполненных параметров допустим (обычно ноль по обязательным), нужен ли отчёт о расхождениях.</li><li><strong>Порядок работы с вопросами</strong>: кому уходят запросы, за сколько дней приходит ответ.</li></ul>
    <p>Половина конфликтов в таких проектах не про качество, а про то, что стороны по-разному поняли слово «модель». Таблица LOD и список параметров снимают этот спор до его начала.</p>
    <h2>Когда переводить не нужно</h2>
    <p>Не всякий проект стоит переводить целиком.</p>
    <p>Если здание строится завтра по готовым чертежам, а модель нужна «чтобы была», то деньги уйдут в архив. Полезнее сделать модель одного узла или одного сложного участка, где реально бьются разделы.</p>
    <p>Если объект старый и документация не совпадает с фактом, начинать надо не с DWG, а с обмеров или лазерного сканирования. Модель по чертежам, которые расходятся с реальностью на 200 мм, будет красивой и бесполезной.</p>
    <p>Если задача сводится к объёмам для сметы по одному разделу, иногда дешевле собрать не модель, а нормальную ведомость с автоматической проверкой. Мы не раз предлагали такой вариант вместо полноценного перевода, и заказчик экономил половину бюджета.</p>
    <h2>Что дальше</h2>
    <p>Перевод чертежей в модель, не разовая услуга, а вход в другой способ работы. После него появляются вопросы: как поддерживать модель в актуальном состоянии, как считать по ней объёмы, как передавать данные в снабжение.</p>
    <p>Если планируете такой проект, полезно заранее посмотреть, как принимать результат и на что смотреть при проверке модели: <a href="https://bim-pulse.ru/priemka-bim-modeli-po-chertezham.html">чек-лист приёмки модели, сделанной по вашим чертежам</a>. И отдельно, как устроена <a href="https://bim-pulse.ru/avtomatizaciya-proverki-modeley.html">проверка моделей по правилам компании</a>, чтобы «принято» означало одно и то же для всех.</p>]]></content:encoded>
    </item>
    <item>
      <title>Кто в России автоматизирует BIM: карта рынка 2026</title>
      <link>https://bim-pulse.ru/kto-avtomatiziruet-bim-v-rossii.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/kto-avtomatiziruet-bim-v-rossii.html</guid>
      <pubDate>Wed, 09 Sep 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Data</category>
      <description>Обзор рынка BIM-автоматизации в России на сентябрь 2026: коробочные сервисы проверки моделей, студии разработки под Revit API, моделирование как услуга.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-case-1.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Вопрос «кто в России делает автоматизацию проверки BIM-моделей и Dynamo-скрипты на заказ» мы в первых числах сентября 2026 задали ChatGPT. Он выдал восемь названий. Часть подтвердилась сайтами, часть оказалась незнакомой, а по паре названий не нашлось вообще ничего: ни сайта, ни карточки в отраслевом каталоге.</p>
    <p>Так рынок и выглядит снаружи. Список есть, проверить его нечем. Под «автоматизацией BIM» одновременно понимают подписку на облачный сервис, разработку плагина за три недели и бригаду моделлеров на аутсорсе — вещи разной природы, с разной ценой и разным результатом.</p>
    <p>Ниже карта: три сегмента, кто в каждом работает, что именно покупает заказчик, сколько это стоит там, где цену вообще называют. Собрано по открытым источникам — сайты компаний, их публичные прайсы, отраслевые публикации. Всё проверялось в первую неделю сентября 2026 года и с тех пор могло измениться.</p>
    <p>Про конфликт интересов скажем сразу, а не мелким шрифтом в конце. Мы работаем во втором из трёх сегментов: делаем заказные проверки и автоматизацию под правила конкретной компании. Поэтому отдельным разделом ниже честно написано, где наше место и в каких случаях брать нас не надо.</p>
    <p>Контекст, в котором всё это происходит: по отраслевым публикациям, применение информационных моделей у застройщиков в первом полугодии 2026 дошло примерно до 47%, а Минстрой утвердил план внедрения ИИ в строительстве на 2026 год — проверка документов на соответствие нормам, ценообразование, мастер-планирование. Спрос на контроль качества моделей растёт быстрее, чем предложение инструментов.</p>
    <h2>Сегмент 1. Коробочные продукты для проверки моделей</h2>
    <p>Что это. Готовый сервис или плагин, который проверяет модель по набору правил. Правила настраиваются в интерфейсе, код писать не нужно. Покупается подписка или лицензия.</p>
    <p><strong>Tangl Control</strong> (tangl.cloud). Облачный сервис вокруг электронного EIR: проверка параметров, геометрических коллизий, соответствия проектных решений нормативным требованиям. Отчёт пересобирается автоматически после изменений, замечания возвращаются проектировщику прямо в Revit. Цену на сайте не публикует.</p>
    <p><strong>BIM Inspector</strong> от BIMTeam. Команда цифровой трансформации ПИК, инструмент вырос внутри крупного застройщика и вышел наружу. Работает панелью в Revit: конструктор правил, привязка правил к группам файлов, проверка соответствия машиночитаемым требованиям IDS без экспорта в IFC. Успешные проверки в панели зелёные, ошибки красные: инструмент координатора, а не отчёт на сорок страниц.</p>
    <p><strong>G-Tech</strong> (gmini.tech). Здесь проверки — один модуль большой платформы: среда общих данных, расчёт объёмов, тендеры, стройконтроль, интеграция с 1С. Правила проверки связаны с электронным EIR и классификацией элементов, отчёты выгружаются в XLS или BI. По заявлению компании, в 2026 году в модуль добавляется проверка на коллизии.</p>
    <p><strong>Solibri</strong> — зарубежный эталон rule-based проверки по IFC, на который до сих пор ссылаются в спорах о «правильной» методике. Официальных поставок в Россию нет, компании доживают на ранее купленных лицензиях либо переходят на отечественные продукты.</p>
    <p>Кому подходит. Требования типовые или близки к типовым, результат нужен через неделю, своего разработчика нет. Коробка закроет 70-80% формальных проверок сразу, и это честная сделка.</p>
    <p>Чем ограничены. Правила живут внутри чужой модели данных: проверить можно то, что предусмотрел разработчик. Пункт EIR вроде «наименование должно быть корректным» коробка не понимает — его надо превращать в маску, а маска у каждого заказчика своя. Результат оказывается в их интерфейсе, и если ваш процесс построен вокруг 1С или собственного классификатора, стыковка становится отдельным проектом.</p>
    <h2>Сегмент 2. Студии заказной разработки под Revit API и Dynamo</h2>
    <p>Как устроено. Вам пишут код под ваши процессы: скрипт Dynamo, плагин с кнопкой в Revit, сервис на API. Продаётся не лицензия, а время и результат.</p>
    <p>Кто заметен по открытым сайтам на сентябрь 2026:</p>
    <ul><li><strong>bimlib.pro</strong> — плагины и приложения для Revit, AutoCAD и других САПР на C#, Python, Java, C++, вплоть до отдельных веб- и десктоп-приложений.</li><li><strong>Академия BIM</strong> (bimacad.ru) — разработка Dynamo-скриптов с описанным циклом: аналитика, прототип, разработка, тестирование, сопровождение. Рядом каталог готовых скриптов и продукты партнёров.</li><li><strong>ЭНЭКА</strong> — команда координаторов, мастеров и программистов; на сайте заявлено больше 20 сложных плагинов и свыше 100 скриптов для разных разделов в Revit и Civil 3D.</li><li><strong>ALTEC Systems</strong> (Екатеринбург) — индивидуальные BIM-решения с 2020 года, плагины и семейства Revit; в 2022 году выпустили веб-сервис расчёта инсоляции и КЕО с выгрузкой модели прямо из Revit.</li><li><strong>BIM Global</strong>, <strong>BIMLAB</strong> (bimlab.ru), <strong>Tiver Group</strong> — программирование Dynamo, плагины к Revit и AutoCAD, работа с Revit API, C#, Python, Forge.</li><li>Отдельная подгруппа — магазины плагинов вроде bim2b.ru и внутренние команды больших компаний, выкладывающие свои инструменты наружу. Показательный кейс КРОК на Хабре описывает типичный путь: сначала скрипты Dynamo, потом собственный плагин, потом SQL Server под данные.</li></ul>
    <p>Формат работы у всех почти одинаковый: разбор задачи, оценка, прототип, доводка, передача с инструкцией. Разница в глубине — кто-то останавливается на скриптах, кто-то доводит до сервиса с базой данных.</p>
    <p>Возвращаясь к списку от ассистента. Сайтами с описанием услуг подтвердились ЭНЭКА, ALTEC Systems, BIM Global, BIMLAB и Академия BIM. По BIM Machine, HAPPY BIM и BIM Support прямой поиск публичной страницы услуг ничего внятного не дал: возможно, эти команды известны по чатам и конференциям, а не по сайтам. Списку от нейросети верить на слово не стоит, проверять по источникам придётся всё равно.</p>
    <p>Главная особенность сегмента: <strong>цену не публикует практически никто</strong>. Формулировка «зависит от сложности алгоритма» встречается в том или ином виде на большинстве сайтов. Заказчик не может прикинуть бюджет, пока не сходит на три созвона, и это тормозит рынок сильнее, чем нехватка специалистов.</p>
    <h2>Сегмент 3. BIM-моделирование как услуга</h2>
    <p>Что покупают. Модель, а не инструмент. Оплата идёт за объём: квадратные метры, уровень проработки LOD, стадия проекта. Либо за день работы специалиста.</p>
    <p>Кто: ec-rs.ru, twize.ru, obmery-zamery.ru, ir-proekt.ru и десятки региональных бюро. Услуги — моделирование по чертежам или облаку точек, scan-to-BIM, восстановление документации, ведение по стадиям от предпроекта до исполнительной модели.</p>
    <p>Единственный сегмент, где цены публикуют открыто. По состоянию на сентябрь 2026: ec-rs.ru указывает «от 39 000 ₽» за проект, twize.ru — ориентир от 30 000 ₽ за день работы специалиста, bimlab.ru пишет, что BIM-проектирование дороже классического CAD на 25-35% при сроках примерно на 30% дольше. Лицензии ПО на рабочее место оцениваются в 2 000-16 000 $ в год.</p>
    <p>Почему это другой рынок. Здесь покупают результат проектирования, а не изменение своего процесса. Подрядчик уходит — вместе с ним уходит и вся автоматизация, которую он применял внутри: она была его инструментом, а не вашим активом. Конкуренция идёт по цене за метр, исполнители взаимозаменяемы. Компании, которая хочет проверять модели своих же проектировщиков по своему стандарту, этот сегмент ничем не поможет.</p>
    <h2>Сравнение сегментов</h2>
    <div class="table-wrap"><table><thead><tr><th>Сегмент</th><th>Что покупаете</th><th>Когда подходит</th><th>Типичный бюджет</th><th>Чем платите</th></tr></thead><tbody><tr><td>Коробочные проверки</td><td>подписку на сервис с правилами</td><td>требования типовые, нужен старт за неделю, разработчика нет</td><td>публичных цен нет ни у одного российского продукта</td><td>правила в чужой модели данных, результат в чужом интерфейсе</td></tr><tr><td>Заказная разработка</td><td>код и права на него</td><td>правила свои, нужна связка с 1С, ERP, классификатором</td><td>скрипт 15-40 тыс. ₽, средний 60-120 тыс. ₽, плагин 150-350 тыс. ₽</td><td>сроки в недели, время своих людей, поддержка после сдачи</td></tr><tr><td>Моделирование как услуга</td><td>готовую модель</td><td>нет своей команды или пик нагрузки</td><td>от 39 тыс. ₽ за проект, от 30 тыс. ₽ за день специалиста</td><td>зависимость от подрядчика, процесс внутри не меняется</td></tr></tbody></table></div>
    <p>Оговорка по средней строке: вилка взята с <a href="https://bim-pulse.ru/razrabotka-dynamo-i-plaginov.html">нашей же страницы услуг</a>, потому что других публичных прайсов в этом сегменте мы не нашли. Знаете такие — напишите, добавим в обзор с указанием источника.</p>
    <h2>Как выбрать под свою задачу</h2>
    <p>Вопросы к себе, в порядке важности. Отвечать честно, иначе смысла нет.</p>
    <p><strong>Сколько объектов в год?</strong> До пяти похожих объектов автоматизация чаще не окупается: проще проверять руками или взять коробку на минимальном тарифе. От десяти повторяющихся объектов разработка начинает возвращать деньги на третьем-пятом запуске.</p>
    <p><strong>Есть ли записанный BIM-стандарт или EIR?</strong> Если правил нет на бумаге, не поможет ни коробка, ни разработка. Проверять нечего. Начинать надо с описания правил, и это работа BIM-менеджера, а не подрядчика.</p>
    <p><strong>Нужен ли доступ к 1С, ERP или своему классификатору?</strong> Ответ «да» почти наверняка выводит вас из первого сегмента. Исключение — платформы, у которых интеграция заявлена как функция, вроде G-Tech.</p>
    <p><strong>Есть ли свой разработчик или сильный BIM-менеджер?</strong> Есть — половину задач закроете сами, дешевле купить обучение и сопровождение. Нет — считайте, что вместе с инструментом покупаете и того, кто будет чинить его через год.</p>
    <p><strong>Где должен оказаться результат проверки?</strong> В веб-интерфейсе, куда координатор заходит раз в неделю, или в модели, где проектировщик видит подсвеченные элементы. Разница принципиальная: отчёт, который надо специально открывать, читают вдвое реже. Как замечания возвращаются в среду проектирования, разобрано в <a href="https://bim-pulse.ru/navisworks-proverka-kolliziy.html">материале о проверке коллизий в Navisworks</a>.</p>
    <p><strong>Кто отвечает за инструмент внутри компании?</strong> Без владельца процесса тихо умирает и коробка, и заказной код.</p>
    <h2>Где на этой карте BIM Pulse Ufa</h2>
    <p>Второй сегмент, узкая его часть: <a href="https://bim-pulse.ru/avtomatizaciya-proverki-modeley.html">автоматизация проверок под правила конкретной компании</a> и <a href="https://bim-pulse.ru/bim-avtomatizaciya-api.html">интеграции через API</a> с системами заказчика. Исходники передаём, подписки нет.</p>
    <p>Когда мы не подходим, тоже скажем прямо. Требования типовые и своего стандарта пока нет — коробочный продукт выйдет быстрее и дешевле, спорить тут не с чем. Нужна модель по чертежам — это третий сегмент, мы им не занимаемся. Нужен готовый инструмент завтра — заказная разработка так не работает: простой скрипт занимает два дня, рабочий контур проверок от двух недель.</p>
    <h2>Чего на рынке нет</h2>
    <p>Итог обзора честнее выглядит через пробелы, а не через список компаний.</p>
    <p><strong>Цен.</strong> Из трёх сегментов их публикует только моделирование, где конкуренция по стоимости и деваться некуда. Разработка и коробочные продукты цену прячут целиком. Для заказчика это означает недели переговоров ради понимания порядка суммы.</p>
    <p><strong>Независимых сравнений.</strong> Ни один продукт не показывает, сколько нарушений он находит на одной и той же тестовой модели рядом с конкурентом. Бенчмарка нет, выбор идёт по демо и по знакомым.</p>
    <p><strong>Связки BIM с учётными системами.</strong> Интеграцию с 1С заявляет G-Tech, у остальных это либо кастом, либо не заявлено вовсе. Между тем именно там живут деньги: объёмы, спецификации, закупки.</p>
    <p><strong>Услуг вокруг ИИ.</strong> Статей про искусственный интеллект в проектировании много, готовых инструментов единицы, а компаний, которые делают ИИ-разбор под конкретный процесс проектной организации, в открытой выдаче почти нет. Разрыв между разговорами и предложением здесь самый широкий на рынке.</p>
    <p><strong>Разговора про исходники.</strong> Кто владеет кодом после сдачи, что будет при выходе новой версии Revit, можно ли сопровождать инструмент без автора — эти вопросы на сайтах не поднимает почти никто, а всплывают они через год.</p>
    <h2>Частые вопросы</h2>
    <p><strong>Чем коробочный сервис проверки отличается от заказного скрипта?</strong> Сервис проверяет по правилам, которые предусмотрел его разработчик, и вы настраиваете их в интерфейсе. Заказной скрипт проверяет по любым правилам, но его надо написать, оплатить и потом поддерживать.</p>
    <p><strong>Сколько стоит автоматизация проверки BIM-моделей в 2026 году?</strong> Российские продукты цену публично не называют. По заказной разработке публичный ориентир: простой скрипт 15-40 тыс. ₽, средний 60-120 тыс. ₽, плагин с интерфейсом 150-350 тыс. ₽; рабочий контур из 10-15 проверок сопоставим с месяцем работы инженера-автоматизатора.</p>
    <p><strong>Можно ли заменить Solibri российским аналогом?</strong> Частично. Tangl Control, BIM Inspector и модуль проверок G-Tech закрывают основные сценарии по параметрам и коллизиям, но методика правил и работа с IFC у них устроены иначе, и переносить настройки один в один не получится.</p>
    <p><strong>Что выбрать, если объектов мало?</strong> Ручную проверку по чек-листу плюс минимальный набор скриптов на самые частые ошибки. При пяти объектах в год ни подписка, ни разработка обычно не окупаются.</p>
    <p><strong>Почему разработчики не публикуют цены?</strong> Задачи действительно разные по сложности, и вилка получается широкой. Но чаще причина проще: цена обсуждается после того, как заказчик уже вложил время в переговоры. Рынку это вредит, участникам пока удобно.</p>
    <h2>Что делать дальше</h2>
    <p>Выпишите на одном листе: сколько объектов в год, есть ли записанный стандарт, куда должен попадать результат проверки, кто внутри компании за это отвечает. Четыре строки закрывают выбор сегмента лучше, чем месяц демонстраций.</p>
    <p>Обзор будем обновлять: рынок за год меняется заметно, продукты добавляют модули, компании появляются и исчезают. Нашли неточность или знаете участника, которого здесь нет, — напишите в <a href="https://t.me/bimpulsebot?start=article">Telegram</a>, поправим с указанием источника.</p>]]></content:encoded>
    </item>
    <item>
      <title>Dynamo и числа: AsDouble, футы и почему размеры не сходятся</title>
      <link>https://bim-pulse.ru/dynamo-chisla-i-edinicy.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/dynamo-chisla-i-edinicy.html</guid>
      <pubDate>Tue, 01 Sep 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Automation</category>
      <description>AsDouble возвращает футы, AsValueString — строку по настройкам проекта. Разбираем внутренние единицы Revit, UnitTypeId, округление и выгрузку размеров в мм.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-case-2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>В модели дверь шириной 3000. Скрипт выводит 9.842519685039369. Ошибки нет, всё честно: Revit хранит длины в футах, а 3000 / 304.8 как раз и есть 9.8425.</p>
    <p>На этом месте застревает каждый, кто впервые открыл узел Python Script и дёрнул <code>AsDouble()</code>. Дальше начинается интереснее: округление, накопление погрешности, запятая вместо точки в русской локали и спецификация, где объём отличается от правильного в 35 раз. Разберём по порядку, с кодом.</p>
    <h2>Что Revit хранит внутри</h2>
    <p>Отображение на экране и хранение в базе — разные вещи. Настройки единиц проекта (вкладка «Управление» → «Единицы проекта») меняют только показ. Внутри всегда одно и то же:</p>
    <ul><li>длины — в десятичных футах;</li><li>площади — в квадратных футах;</li><li>объёмы — в кубических футах;</li><li>углы — в радианах;</li><li>координаты точек — в футах от внутреннего начала координат.</li></ul>
    <p>Коэффициенты, которые стоит держать в голове: <strong>304.8</strong> мм в футе, <strong>0.09290304</strong> м² в квадратном футе, <strong>0.028316846</strong> м³ в кубическом.</p>
    <p>Отсюда классика жанра. Забыли пересчитать объём — цифры в ведомости бетона отличаются в 35 раз. Умножили длину на 304.8 дважды — получили километры вместо метров. И самое обидное: записали в параметр 3000, имея в виду миллиметры, а Revit прочитал 3000 футов и построил элемент длиной 914 метров.</p>
    <h2>AsDouble, AsValueString, AsString: чем отличаются</h2>
    <p>Три метода параметра, которые путают чаще всего.</p>
    <p><code>AsDouble()</code> возвращает число во внутренних единицах. Для длины — футы. Работает только если у параметра StorageType = Double, иначе вернёт мусор или ноль.</p>
    <p><code>AsValueString()</code> возвращает <strong>строку</strong> ровно в том виде, в каком значение показано в интерфейсе: «3000» или «3000,0 мм», в зависимости от настроек единиц проекта. Удобно для отчёта, опасно для вычислений.</p>
    <p><code>AsString()</code> для числового параметра вернёт <code>None</code>. Он для текстовых. Отсюда любимая ошибка новичка: <code>AttributeError: 'NoneType' object has no attribute 'strip'</code>.</p>
    <p>Правильный порядок — сначала спросить тип хранения, потом читать:</p>
    <pre><code class="language-python">from Autodesk.Revit.DB import StorageType

def prochitat(p):
    if p is None or not p.HasValue:
        return None
    st = p.StorageType
    if st == StorageType.Double:
        return p.AsDouble()          # футы, радианы, кубофуты
    if st == StorageType.Integer:
        return p.AsInteger()         # в том числе Да/Нет: 1 и 0
    if st == StorageType.String:
        return p.AsString()
    if st == StorageType.ElementId:
        return p.AsElementId()
    return None</code></pre>
    <p>Пять строк проверки экономят вечер отладки на разнородной выборке, где у одного семейства параметр есть, а у другого нет.</p>
    <h2>Конвертация: UnitUtils и UnitTypeId</h2>
    <p>С Revit 2021 единицы описываются через ForgeTypeId, и рабочая пара выглядит так:</p>
    <pre><code class="language-python">from Autodesk.Revit.DB import UnitUtils, UnitTypeId

futy = param.AsDouble()
mm = UnitUtils.ConvertFromInternalUnits(futy, UnitTypeId.Millimeters)

# обратно, когда пишем в модель
param.Set(UnitUtils.ConvertToInternalUnits(3000.0, UnitTypeId.Millimeters))</code></pre>
    <p>Полезные значения: <code>UnitTypeId.Millimeters</code>, <code>Meters</code>, <code>SquareMeters</code>, <code>CubicMeters</code>, <code>Degrees</code>, <code>Kilograms</code>.</p>
    <p>Старый код на <code>DisplayUnitType.DUT_MILLIMETERS</code> писался под Revit 2020 и раньше. В 2021 он помечен устаревшим, в 2022 из API убран, и скрипт падает с <code>AttributeError: 'DisplayUnitType' object has no attribute ...</code> или сообщением о неподдерживаемом типе. Если тащите библиотеку скриптов из старых версий, это первое, что придётся переписать.</p>
    <p>Почему не просто делить на 304.8? Для длин разницы нет. Для площадей, объёмов и всего, что связано с массой и температурой, коэффициенты нетривиальны, и <code>UnitUtils</code> избавляет от их поиска. Плюс код читается: <code>ConvertFromInternalUnits(v, UnitTypeId.CubicMeters)</code> понятнее, чем <code>v * 0.028316846</code>.</p>
    <p>Отдельная деталь — общие параметры типа «Число» (Number). У них нет единиц вообще, значение хранится как есть. Конвертировать их нельзя, иначе коэффициент армирования 0.85 превратится в 259.</p>
    <h2>Почему в ноде 3000, а в питоне 9.84</h2>
    <p>Дело в том, что штатные узлы Dynamo уже конвертируют значения. <code>Element.GetParameterValueByName</code> отдаёт число в единицах проекта, а вызов API внутри Python Script — во внутренних. Один и тот же параметр, два разных числа, и оба правильные.</p>
    <p>Практический вывод: не смешивайте источники в одном графе. Либо всё читается узлами и дальше идёт как есть, либо всё читается через API и конвертируется на выходе. Гибрид даёт ошибку в 304.8 раза, которую замечают уже в напечатанной ведомости.</p>
    <p>То же касается геометрии. Координаты точек, полученных из API, живут в футах, и складывать их с координатами из Dynamo-узлов без пересчёта нельзя.</p>
    <p>Как устроен сам граф и куда вставлять питон, разбирал раньше: <a href="https://bim-pulse.ru/dynamo-pervyy-skript.html">первый скрипт в Dynamo</a>.</p>
    <h2>Округление и накопление ошибки</h2>
    <p>Правило одно: <strong>считать в футах, округлять только на выводе</strong>.</p>
    <p>Соблазн округлить сразу понятен — числа страшные. Цена ошибки видна на простом примере. Берём 500 участков воздуховода, каждый по 1.2345 фута:</p>
    <pre><code class="language-python">dliny = [1.2345] * 500

# плохо: округлили каждый кусок в мм, потом сложили
a = sum(round(UnitUtils.ConvertFromInternalUnits(d, UnitTypeId.Millimeters))
        for d in dliny)

# правильно: сложили в футах, конвертировали один раз, округлили в конце
b = round(UnitUtils.ConvertFromInternalUnits(sum(dliny), UnitTypeId.Millimeters), 1)</code></pre>
    <p>Разница на пятистах элементах набегает в несколько сантиметров, на тысячах — в десятки. В ведомости длин это выглядит как расхождение с моделью, которое невозможно объяснить заказчику.</p>
    <p>Второе следствие — сравнение. Два числа с плавающей точкой никогда не сравнивают знаком равенства:</p>
    <pre><code class="language-python"># так нельзя
if dlina_a == dlina_b:
    ...

# так можно: допуск 0,5 мм, переведённый в футы
DOPUSK = 0.5 / 304.8
if abs(dlina_a - dlina_b) &lt; DOPUSK:
    ...</code></pre>
    <p>У самого Revit есть встроенный порог: <code>doc.Application.ShortCurveTolerance</code> — примерно 1/256 фута, около 0.8 мм. Короче этого линию он просто не создаст, и попытка кончится исключением.</p>
    <h2>Локаль: запятая, которая ломает всё</h2>
    <p>Самый неочевидный баг в русском Revit. <code>AsValueString()</code> на длине вернёт что-то вроде <code>3 000,00</code>, где разделитель дробной части — запятая, а разделитель тысяч — неразрывный пробел (<code>\xa0</code>).</p>
    <pre><code class="language-python">s = param.AsValueString()          # &#x27;3 000,00&#x27;
float(s)                           # ValueError: could not convert string to float</code></pre>
    <p>Чинится в одну строку, но знать про это надо заранее:</p>
    <pre><code class="language-python">def v_chislo(s):
    if not s:
        return None
    s = s.replace(&#x27;\xa0&#x27;, &#x27;&#x27;).replace(&#x27; &#x27;, &#x27;&#x27;).replace(&#x27;,&#x27;, &#x27;.&#x27;)
    s = &#x27;&#x27;.join(c for c in s if c.isdigit() or c in &#x27;.-&#x27;)
    return float(s) if s else None</code></pre>
    <p>Отсюда общее правило обмена: <code>AsValueString</code> годится для того, что человек прочитает глазами. Для расчётов, выгрузок и сверок берётся <code>AsDouble</code> с явной конвертацией. Настройки единиц у соседнего файла могут отличаться, и тогда одна и та же выгрузка в понедельник даст миллиметры, а в среду сантиметры.</p>
    <p>Обратная операция — <code>SetValueString("3000")</code> — разбирает строку по настройкам проекта. Удобно, когда значение пришло от пользователя из диалога, а не из расчёта.</p>
    <h2>Выгрузка в спецификацию</h2>
    <p>Собирая данные для Excel, конвертируйте на последнем шаге и сразу задавайте точность вывода.</p>
    <pre><code class="language-python">stroki = []
for e in UnwrapElement(IN[0]):
    p_dl = e.LookupParameter(&quot;Длина&quot;)
    p_ob = e.LookupParameter(&quot;Объем&quot;)
    dlina_mm = UnitUtils.ConvertFromInternalUnits(p_dl.AsDouble(), UnitTypeId.Millimeters) if p_dl else 0
    obem_m3 = UnitUtils.ConvertFromInternalUnits(p_ob.AsDouble(), UnitTypeId.CubicMeters) if p_ob else 0
    stroki.append([
        e.Id.IntegerValue,
        round(dlina_mm, 1),      # мм с одним знаком
        round(obem_m3, 3),       # м³ с тремя
    ])
OUT = stroki</code></pre>
    <p>Точность в 0.1 мм и 0.001 м³ покрывает практически любую форму. Больше знаков — таблица становится нечитаемой, меньше — итоги перестают сходиться с моделью.</p>
    <p>Как довести такую выгрузку до готовой формы заказчика, расписано в статье про <a href="https://bim-pulse.ru/revit-specifikacii-v-excel.html">спецификации Revit в Excel</a>.</p>
    <h2>Проверка себя за минуту</h2>
    <p>Прежде чем гнать скрипт по всей модели, возьмите один элемент с известным размером. Стену длиной ровно 6000 мм, круглый воздуховод диаметром 200, плиту толщиной 200. Выведите по нему все три величины рядом: сырое значение из <code>AsDouble</code>, результат конвертации и строку из <code>AsValueString</code>.</p>
    <p>Дальше сверяете глазами. Сырое 19.685 и конвертированное 6000 при показанных «6000» — цепочка собрана правильно. Конвертированное 19.685 означает, что конвертацию где-то потеряли по дороге. Конвертированное 1828800 — что применили её дважды.</p>
    <p>Тридцать секунд на такой контрольный элемент перед каждой новой выгрузкой стоят дешевле, чем разбирательство с ведомостью, которую уже отправили заказчику. У нас это вписано в шаблон графа отдельным узлом Watch, который никогда не удаляется: слева контрольный элемент, справа три числа.</p>
    <p>Второй способ контроля — сверка итога со спецификацией самого Revit. Соберите ту же величину штатной спецификацией с включённой строкой итогов и сравните с выводом скрипта. Расхождение в третьем знаке нормально, расхождение в первом означает либо единицы, либо разный состав выборки: спецификация могла отфильтровать элементы, которых ваш скрипт не отсеял.</p>
    <h2>Где это не поможет</h2>
    <p>Конвертация не чинит неправильно заданный тип параметра. Если общий параметр создан как «Текст», а туда записывают размеры, никакой UnitUtils не спасёт: там строка, и в ней рано или поздно окажется «3000 (уточнить)».</p>
    <p>Не поможет и там, где параметр вычисляемый. Формула в семействе считается по своим правилам, и запись в результат просто не пройдёт: параметр будет помечен как read-only, а <code>Set()</code> выбросит исключение о попытке изменить неизменяемое значение.</p>
    <p>Углы отдельная песня. Радианы конвертируются штатно, но поворот 90° внутри семейства и поворот экземпляра в проекте — разные величины, и путать их UnitUtils не мешает.</p>
    <p>И последнее: единицы не гарантируют правильность данных. Скрипт честно переведёт в миллиметры высоту установки розетки, которую инженер вбил наугад. Проверка смысла — отдельная работа, и её удобно ставить рядом с автоматизацией: <a href="https://bim-pulse.ru/avtomatizaciya-proverki-modeley.html">автоматизация проверки моделей</a>.</p>
    <h2>Короткие ответы</h2>
    <p><strong>Почему AsDouble возвращает 9.84 вместо 3000?</strong> Потому что внутренние единицы Revit — футы. 3000 мм / 304.8 = 9.8425. Конвертируйте через <code>UnitUtils.ConvertFromInternalUnits</code>.</p>
    <p><strong>Чем AsValueString отличается от AsDouble?</strong> Первый отдаёт строку в единицах проекта и годится для показа человеку, второй — число во внутренних единицах и годится для расчётов.</p>
    <p><strong>Как узнать, в каких единицах показан параметр?</strong> <code>doc.GetUnits().GetFormatOptions(SpecTypeId.Length).GetUnitTypeId()</code> вернёт текущую настройку длины для документа.</p>
    <p><strong>Работает ли старый код с DisplayUnitType?</strong> В Revit 2020 и раньше да, начиная с 2022 нет. Заменяется на <code>UnitTypeId</code> без изменения остальной логики.</p>
    <p><strong>Почему сумма длин не совпадает со спецификацией Revit?</strong> Чаще всего из-за раннего округления в скрипте. Складывайте во внутренних единицах, округляйте один раз на выводе.</p>
    <h2>Что сделать прямо сейчас</h2>
    <p>Откройте любой свой рабочий граф и найдите в нём число 304.8 или 3.28. Если оно встречается больше одного раза, там уже сидит будущая ошибка — вынесите конвертацию в одну функцию на выходе.</p>
    <p>Нужен скрипт, который читает модель и отдаёт цифры в правильных единицах и в вашей форме, — напишите в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через <a href="https://bim-pulse.ru/contacts.html">контакты</a>. Разбор модели и оценка занимают день.</p>]]></content:encoded>
    </item>
    <item>
      <title>Матрица коллизий в Navisworks: настроить один раз</title>
      <link>https://bim-pulse.ru/navisworks-matrica-kolliziy.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/navisworks-matrica-kolliziy.html</guid>
      <pubDate>Mon, 31 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Coordination</category>
      <description>Как превратить матрицу пересечений разделов в наборы поиска и тесты Clash Detective: допуски по типам конфликтов, батч-прогон тестов и шаблон NWF.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/Bim2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Вопрос от инженера в личку: «Как настроить Navisworks, чтобы он сам искал коллизии по матрице?» Ответ короткий и скучный: сам он ничего не ищет, но настраивается один раз за проект, а дальше вся проверка сводится к одной кнопке Update All и получасу разбора.</p>
    <p>Матрица при этом не украшение для альбома BIM-стандарта, а прямой источник настроек. Каждая заполненная клетка превращается в тест Clash Detective. Ниже — как пройти путь от таблицы в Excel до набора тестов, который переживёт три объекта подряд.</p>
    <h2>Что такое матрица пересечений</h2>
    <p>Таблица, где по строкам и по столбцам стоят разделы, а в клетках написано, как их проверять друг с другом. Пустая клетка означает «не проверяем», и это такое же решение, как любое другое.</p>
    <p>Смысл в том, чтобы договориться о правилах до первого прогона. Иначе координатор гоняет тесты по интуиции, и на вопрос «а вентиляцию с пожаротушением проверяли?» честного ответа нет.</p>
    <p>Рабочая матрица для жилого дома с подземным паркингом:</p>
    <div class="table-wrap"><table><thead><tr><th></th><th>КР</th><th>ОВ</th><th>ВК</th><th>ЭОМ</th><th>АУПТ</th></tr></thead><tbody><tr><td><strong>АР</strong></td><td>Hard 20</td><td>Hard 20</td><td>Hard 20</td><td>—</td><td>Hard 20</td></tr><tr><td><strong>КР</strong></td><td></td><td>Hard 10</td><td>Hard 10</td><td>Hard 10</td><td>Hard 10</td></tr><tr><td><strong>ОВ</strong></td><td></td><td></td><td>Hard 25</td><td>Hard 25</td><td>Hard 25</td></tr><tr><td><strong>ВК</strong></td><td></td><td></td><td></td><td>Hard 25</td><td>Hard 25</td></tr><tr><td><strong>ЭОМ</strong></td><td></td><td></td><td></td><td></td><td>Hard 25</td></tr><tr><td><strong>Оборудование</strong></td><td>Clear 600</td><td>Clear 600</td><td>Clear 600</td><td>Clear 800</td><td>—</td></tr></tbody></table></div>
    <p>Шесть разделов дают пятнадцать пар. Клетку АР × ЭОМ мы обычно закрываем: розетки и выключатели честно сидят в стенах, и тест выдаёт тысячи «конфликтов», которые никто не собирается решать. Остаётся четырнадцать пар плюс четыре теста на зоны обслуживания — восемнадцать тестов, и это нормальный размер для объекта в 40 тысяч квадратов.</p>
    <p>Дальше в матрицу дописывают, кто отвечает за клетку и как часто её гоняют. У нас три уровня: критичные пары (КР со всей инженеркой) идут еженедельно, остальные раз в две недели, зоны обслуживания перед выдачей раздела.</p>
    <h2>Допуски: откуда берутся цифры</h2>
    <p>Tolerance в Navisworks — это глубина проникновения, при которой конфликт считается конфликтом. При допуске 10 мм труба, зашедшая в стену на 6 мм, в отчёт не попадёт.</p>
    <p><strong>10 мм для несущих конструкций.</strong> Пересечение с колонной или балкой — всегда дорогая проблема, и мелочиться тут незачем. Ноль ставить нельзя: получите касания по стыкам плит и по общим граням.</p>
    <p><strong>20 мм для архитектуры.</strong> Перегородки двигаются легче, чем ригели, а погрешность моделирования отделки съедает первые полтора сантиметра.</p>
    <p><strong>25 мм между инженерными разделами.</strong> Монтажные зазоры между воздуховодом и лотком всё равно закладываются на площадке. Допуск в 5 мм добавит вам двести пунктов, из которых ноль дойдёт до реального решения.</p>
    <p><strong>Clearance 600–800 мм для оборудования.</strong> Проверка не на пересечение, а на сближение: перед щитом должен быть проход, у приточной установки — место, чтобы вынуть фильтр. Цифры берутся не из головы, а из паспорта оборудования и норм по конкретному помещению.</p>
    <p>Есть ещё Duplicates — ловит задвоенные элементы после копирования связей. В матрицу его не пишут, гоняют раз в месяц по всей сборке.</p>
    <h2>Из матрицы в наборы поиска</h2>
    <p>Тест сравнивает не файлы, а наборы. Поэтому первый шаг после матрицы — сделать по набору на каждый раздел, который в ней участвует.</p>
    <p>Home → Sets → Manage Sets → Find Items. Слева дерево файлов, справа условия: Category, Property, Condition, Value.</p>
    <p>Только Search Set, не Selection Set. Первый запоминает условие и после Refresh моделей пересобирается сам, второй запоминает конкретные элементы и рассыпается при первой же перевыгрузке. Разница — между «настроил один раз» и «настраиваю каждую неделю».</p>
    <p>Минимальный комплект под матрицу выше:</p>
    <ul><li><strong>КР несущие</strong> — свойство Structural (Несущие) со значением Да, иначе в набор влезут перегородки;</li><li><strong>АР стены и перекрытия</strong> — по категориям, отдельным набором лестницы и пандусы;</li><li><strong>ОВ</strong> — воздуховоды плюс отдельный набор «фитинги воздуховодов», их забывают в девяти случаях из десяти;</li><li><strong>ВК</strong> — фильтр по параметру «Тип системы», а не по имени семейства: семейства переименовывают, типы систем нет;</li><li><strong>ЭОМ</strong> — лотки, короба, шинопроводы;</li><li><strong>Оборудование</strong> — по категории «Оборудование» с фильтром по разделу;</li><li><strong>Изоляция</strong> — отдельно, зачем, объясню ниже.</li></ul>
    <p>Проверка качества набора занимает пять секунд: нажмите Update и посмотрите счётчик элементов внизу окна. Ноль или подозрительно мало — условие бьёт мимо.</p>
    <p>Подробный разбор того, как собираются условия и что делать с ложными срабатываниями, лежит в статье про <a href="https://bim-pulse.ru/navisworks-proverka-kolliziy.html">проверку коллизий в Navisworks</a>.</p>
    <h2>Тесты по клеткам матрицы</h2>
    <p>Clash Detective → Add Test. Для каждой заполненной клетки: набор A слева, набор B справа, тип, допуск.</p>
    <p>Имя теста — самая недооценённая деталь. Оно попадает в отчёт, и его читает живой инженер. Формат, который у нас прижился: <code>03_КР x ОВ (Hard 10)</code>. Номер держит порядок в списке, разделы читаются с первого взгляда, допуск виден без открытия настроек.</p>
    <p>Вкладка Rules внутри теста, три галочки включаются всегда: Items in Same Layer, Items in Same Group/Block/Cell, Items with Coincident Snap Points. Они убирают самопересечения внутри системы — врезки, тройники, отводы. Без них первый прогон по инженерке выдаёт четырёхзначное число и деморализует команду.</p>
    <p>Про изоляцию отдельно. Изоляция воздуховода геометрически пересекает соседний лоток, формально это коллизия, практически монтажник решит вопрос на месте. Мы выносим изоляцию в отдельный набор, исключаем из основных тестов и держим по ней один тест с пометкой «низкий приоритет». Через месяц по нему видно, где действительно нет места, а не где просто соприкоснулись оболочки.</p>
    <h2>Батч-прогон</h2>
    <p>Кнопка, ради которой всё затевалось, живёт внизу списка тестов: <strong>Update All</strong>. Она прогоняет все тесты по свежей геометрии, сохраняя статусы, комментарии и группировку. Рядом Reset All (сбрасывает результаты, статусы теряются — жать не надо) и Compact All (чистит закрытые пункты).</p>
    <p>Порядок еженедельного прогона:</p>
    <ol><li>Home → Refresh — подтянуть свежие NWC от смежников.</li><li>Sets → Update по наборам, если менялись условия.</li><li>Clash Detective → Update All.</li><li>Пятнадцать минут на просмотр новых пунктов, группировка, статусы.</li><li>Report по критичным тестам, отправка.</li></ol>
    <p>Машинное время на модели в полтора гигабайта — от 20 минут до полутора часов. Ставьте на обед или на ночь: Navisworks во время прогона забирает всю память рабочей станции, параллельно работать не выйдет.</p>
    <p>Тесты не пересобирают заново никогда. Правят наборы, жмут Update All, гоняют. Пересборка теста обнуляет всю историю статусов, и в понедельник вы получаете четыреста «новых» коллизий вместо сорока.</p>
    <h2>Как перенести настройку на следующий проект</h2>
    <p>Тут и появляется обещанный «один раз». В Clash Detective, справа над списком тестов, есть кнопки импорта и экспорта тестов в XML. Выгрузили с объекта, где всё отлажено, загрузили на новый — получили восемнадцать тестов с допусками и правилами за минуту.</p>
    <p>Условие одно: имена наборов должны совпадать. Значит, они пишутся по стандарту и от проекта к проекту не меняются.</p>
    <p>Второй способ проще и надёжнее: держать <strong>шаблонный NWF</strong>. Пустая сборка, в которой уже есть наборы поиска, тесты, правила и настройки отображения. Начинается новый объект — копируете файл, делаете Append свежих NWC, поправляете имена файлов в наборах. Полчаса вместо дня.</p>
    <p>Шаблон лежит в CDE рядом с BIM-стандартом, а не на рабочем столе у координатора. Иначе с уходом человека уходит и настройка.</p>
    <h2>Чего Navisworks не сделает</h2>
    <p>Он не запускает Clash Detective сам по расписанию. Штатный Batch Utility умеет собирать и публиковать NWD ночью, а прогонять тесты — нет. Настоящая автоматизация тут делается либо через API (.NET-плагин, который открывает NWF, дёргает тесты и пишет отчёт), либо переездом на облачную координацию, где проверка запускается при публикации модели. И то и другое стоит денег или времени разработчика, поэтому в 90% команд живёт ручной Update All раз в неделю. Это нормально.</p>
    <p>Он не понимает норм. Расстояние от газовой трубы до кабеля, нормируемый уклон канализации, высота прохода под коробом — ничего этого в матрице не выразить. Clash Detective сравнивает объёмы, а не требования СП.</p>
    <p>Он не видит того, чего нет в модели. Зона обслуживания существует, если её нарисовали объёмом. Пустой воздух вокруг щита машина конфликтом не считает.</p>
    <p>И матрица не решает организационных проблем. Если раздел ВК публикуется раз в месяц, вы будете еженедельно проверять устаревшую геометрию по всем правилам. Лечится это регламентом обмена, а не настройками, и про это есть отдельный разбор — <a href="https://bim-pulse.ru/clash-detection-workflow.html">рабочий процесс clash detection</a>.</p>
    <h2>Короткие ответы</h2>
    <p><strong>Сколько тестов нормально для жилого дома?</strong> Пятнадцать-двадцать. Меньше восьми — скорее всего, забыли пары. Больше двадцати пяти — прогон не влезает в рабочий день, и часть тестов начинают пропускать.</p>
    <p><strong>Можно ли обойтись одним тестом «всё против всего»?</strong> Технически да, практически нет. Результаты невозможно распределить по ответственным, а допуск придётся ставить один на все случаи.</p>
    <p><strong>Кто утверждает матрицу?</strong> BIM-координатор пишет, ГИП утверждает, разделы расписываются, что видели. Без последнего пункта на первом же спорном пересечении начнётся «мы так не договаривались».</p>
    <p><strong>Как быть с мягкими коллизиями?</strong> Тест типа Clearance с нужным зазором и отдельный статус. Смешивать их с Hard в одном тесте нельзя: приоритет разный, и сроки решения разные.</p>
    <p><strong>Что делать, если один тест выдал 800 результатов?</strong> Смотреть первые двадцать позиций. Одинаковые — виноват не проект, а системная ошибка: сдвинутый уровень, задвоенная связь, кривой набор.</p>
    <h2>С чего начать</h2>
    <p>Нарисуйте матрицу на одну страницу, вычеркните пары, которые точно проверять не будете, и покажите её ГИПу. Дальше три часа на наборы и тесты — и на следующий понедельник у вас появится кнопка вместо ритуала.</p>
    <p>Если нужен готовый шаблон под ваш BIM-стандарт, мы собираем такие вместе с наборами, допусками и формой отчёта. Что входит в работу, видно на странице <a href="https://bim-pulse.ru/avtomatizaciya-proverki-modeley.html">автоматизации проверки моделей</a>.</p>
    <p>Опишите объект в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через <a href="https://bim-pulse.ru/contacts.html">контакты</a> — скажем, сколько тестов реально нужно и что можно не проверять вообще.</p>]]></content:encoded>
    </item>
    <item>
      <title>Точки обзора Navisworks: не теряем выделение коллизий</title>
      <link>https://bim-pulse.ru/navisworks-tochki-obzora.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/navisworks-tochki-obzora.html</guid>
      <pubDate>Sun, 30 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Coordination</category>
      <description>Почему при экспорте точек обзора из Clash Detective пропадает подсветка конфликтов, как сохранять состояние вида и передавать viewpoints смежникам.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-case-2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Координатор отправил в раздел ОВ 34 точки обзора по коллизиям. Через час пришёл ответ: «Открыли, камера встаёт правильно, а смотреть на что? Всё серое». Красное и зелёное, что он видел у себя на экране, до получателя не доехало.</p>
    <p>Это происходит на каждом втором объекте, и причина почти всегда одна из четырёх. Разберём, что Navisworks кладёт в точку обзора, чего не кладёт никогда, и какие две галочки закрывают вопрос за минуту.</p>
    <h2>Точка обзора не хранит выделение</h2>
    <p>Начнём с недоразумения, из которого растёт всё остальное. Viewpoint не запоминает выбранные элементы. Ни в 2022, ни в 2024, ни в одной версии до них. Выделение (Selection) существует только в текущей сессии и умирает при переключении на соседнюю точку.</p>
    <p>Что точка обзора хранит на самом деле:</p>
    <ul><li>положение камеры, угол поля зрения, тип проекции, режим навигации;</li><li>секущие плоскости, если включено Sectioning;</li><li>скрытые и «обязательные» элементы (Hide / Required) — но только если разрешено сохранять этот атрибут;</li><li>переопределение материала и толщины линий — тоже по разрешению;</li><li>редлайны, теги и комментарии, привязанные к этой точке;</li><li>настройки освещения и режима отображения.</li></ul>
    <p>Отсюда правило, которое экономит часы: если получатель должен увидеть две конкретные трубы, их надо не выделять, а фиксировать. Цветом и скрытием остального.</p>
    <h2>Две галочки в настройках</h2>
    <p>File → Options → Interface → <strong>Viewpoint Defaults</strong>. Три чекбокса:</p>
    <ul><li><strong>Save Hide/Required Attributes</strong> — сохранять, что было скрыто;</li><li><strong>Override Material</strong> — сохранять цветовое переопределение;</li><li><strong>Override Line Thickness</strong> — толщину линий, нужна редко.</li></ul>
    <p>По умолчанию первые две выключены. Именно поэтому «у меня всё видно, а у смежника серо»: точка сохранила камеру и ничего больше.</p>
    <p>Ловушка в слове Defaults. Настройки применяются к <strong>новым</strong> точкам, уже созданные они не чинят. Если у вас 34 точки без атрибутов, включение галочек ничего не изменит, придётся пересоздавать. Для одиночной точки есть быстрый путь: правой кнопкой по ней в окне Saved Viewpoints → Edit → блок Saved Attributes, там те же чекбоксы.</p>
    <p>Настройки живут в профиле пользователя, а не в файле. Значит, у каждого в команде они свои. Внизу окна Options Editor есть кнопка Export: выгружаете .xml, кладёте в папку проекта, коллеги делают Import. Пять минут один раз за проект.</p>
    <h2>Правильный маршрут из Clash Detective</h2>
    <p>Порядок действий обратный тому, который кажется логичным. Сначала настраивается показ, и только потом пишется отчёт.</p>
    <p><strong>Шаг 1.</strong> Clash Detective → вкладка Results → блок Display Settings. Highlighting: Item 1 красный, Item 2 зелёный, галка Highlight all clashes выключена. Isolation: для передачи наружу лучше Hide Other, а не Dim Other — на затемнённой модели половина мониторов не покажет разницы. Auto-reveal оставляем включённым, он убирает то, что заслоняет конфликт.</p>
    <p><strong>Шаг 2.</strong> Прокликайте три-четыре результата и убедитесь, что картинка читается. Проверять надо именно сейчас, а не после экспорта.</p>
    <p><strong>Шаг 3.</strong> Вкладка Report. Report Type — Current test или All tests. Report Format — <strong>As Viewpoints</strong>. Кнопка Write Report.</p>
    <p>В окне Saved Viewpoints (View → Windows → Saved Viewpoints) появится папка с именем теста и по точке на каждый конфликт. Если результатов больше сотни, ставьте Include Clashes = Group headers only, иначе получите папку на 400 позиций, по которой никто не пройдёт.</p>
    <p>Пересоздавать отчёт после смены настроек надо с удалением старой папки. Navisworks не перезаписывает точки, а добавляет вторую пачку с теми же именами.</p>
    <p>Как выстроить сам процесс проверки до этого шага, разобрано отдельно: <a href="https://bim-pulse.ru/navisworks-proverka-kolliziy.html">проверка коллизий в Navisworks</a>.</p>
    <h2>Четыре причины, по которым подсветка слетает</h2>
    <p><strong>Галочки не стояли в момент создания.</strong> Самый частый случай, разобран выше. Лечение — включить и написать отчёт заново.</p>
    <p><strong>В экспортёре Revit выключен Convert element Ids.</strong> Точки ссылаются на элементы по идентификаторам. Перевыгрузили раздел, идентификаторы поехали, привязка порвалась. Внешне это выглядит так: камера на месте, а модель показана целиком, без скрытий и цвета. Галка живёт в диалоге экспорта NWC («Надстройки» → External Tools → Navisworks → Navisworks Settings).</p>
    <p><strong>Изменился состав NWF.</strong> Скрытые элементы хранятся ссылкой на путь в дереве модели. Вставили в сборку ещё один NWC не в конец, а в середину — пути сдвинулись на позицию, и точки начали прятать не то. Правило простое: новые файлы всегда добавляются в конец списка, порядок Append за проект не меняется.</p>
    <p><strong>Отправили NWF вместо NWD.</strong> NWF — это ссылки на исходные NWC весом в килобайты. У получателя этих NWC нет, он открывает пустоту с идеально настроенными камерами. Наружу всегда уходит NWD: Output → Publish, там же ставится дата истечения и пароль, если нужно.</p>
    <h2>Экспорт в XML и что отдавать смежникам</h2>
    <p>Output → Export Data → <strong>Viewpoints</strong>. На выходе XML: камеры, имена, комментарии, редлайны, ссылки на скрытые элементы. Импорт — правой кнопкой по пустому месту в окне Saved Viewpoints → Import Viewpoints.</p>
    <p>XML нужен в трёх ситуациях: перенос точек в другую сборку, передача коллеге, у которого своя NWF, и переезд между версиями Navisworks. Приятный побочный эффект — файл текстовый, и массовое переименование точек делается поиском с заменой за минуту вместо получаса кликов.</p>
    <p>Что кому отдавать по опыту:</p>
    <div class="table-wrap"><table><thead><tr><th>Получатель</th><th>Формат</th><th>Почему</th></tr></thead><tbody><tr><td>Руководитель проекта</td><td>NWD</td><td>открывается в бесплатном Freedom, ничего настраивать не надо</td></tr><tr><td>Координатор смежников</td><td>XML + NWD</td><td>точки ложатся в его сборку</td></tr><tr><td>Инженер в Revit</td><td>BCF (через плагин)</td><td>открывает пункт сразу в своей модели</td></tr><tr><td>Заказчик</td><td>HTML-отчёт</td><td>не будет ставить Navisworks, и не должен</td></tr></tbody></table></div>
    <p>BCF из коробки Navisworks не умеет, нужен плагин вроде BCF Manager или BIMcollab. Если смежники сидят в Revit и ArchiCAD, этот плагин окупается за первую неделю: человек нажимает пункт в списке и оказывается в нужном месте своей модели, а не ищет ось 7 по описанию из письма.</p>
    <h2>Перенос между версиями</h2>
    <p>Navisworks не открывает файлы более новых версий. NWD, сохранённый в 2024, в 2022 не откроется, и обходного пути нет. Поэтому на проекте держат одну версию у всех, а не «у кого какая стоит».</p>
    <p>Точки обзора этого ограничения не знают. XML читается и вперёд, и назад, и это единственный надёжный способ перетащить накопленную работу при переходе на новую версию. Перед обновлением всей команды выгрузите точки по каждому активному объекту, это займёт десять минут и однажды спасёт неделю.</p>
    <p>Свойство Camera → Focal Length при переносе иногда съезжает, если в файле-приёмнике другой тип проекции. Проверяйте первые три точки после импорта, дальше можно доверять.</p>
    <h2>Порядок, который работает</h2>
    <ol><li>Включить Save Hide/Required Attributes и Override Material до создания первой точки.</li><li>Выгрузить настройки Options в .xml и раздать команде.</li><li>Настроить Display Settings в Results, проверить на трёх конфликтах глазами.</li><li>Написать отчёт As Viewpoints, сгруппировав результаты.</li><li>Опубликовать NWD, рядом положить XML точек.</li><li>В письме указать дату прогона и версии моделей.</li></ol>
    <p>Шесть пунктов, минут пятнадцать. Без них переписка по коллизиям превращается в уточнение, что именно имел в виду отправитель.</p>
    <h2>Чего от точек обзора ждать не надо</h2>
    <p>Они не обновляются вместе с моделью. Геометрию подвинули, камера осталась смотреть в пустое место. Точки по закрытым конфликтам надо чистить, иначе к третьему прогону в папке будет вдвое больше мусора, чем дела.</p>
    <p>Они не хранят выделение, и это не лечится настройками. Любой совет из интернета вида «сохрани выделение в viewpoint» описывает то, чего в программе нет. Работает связка: набор поиска для повторяемости, скрытие лишнего и цвет для наглядности.</p>
    <p>Цвет привязан к элементам, а не к картинке. После перевыгрузки раздела с новыми идентификаторами он не вернётся сам, точки придётся пересоздать. На активной стадии проще принять это как данность и генерировать точки заново после каждого прогона, а не чинить старые.</p>
    <p>Freedom показывает чужие точки, но сохранить свои в нём некуда: он просмотрщик. Если смежник должен отвечать точками, ему нужен Manage или маршрут через BCF.</p>
    <h2>Что спрашивают чаще всего</h2>
    <p><strong>Почему точка обзора открывается, а модель серая?</strong> Скорее всего, у получателя NWF без исходных NWC. Проверяется мгновенно: если в дереве Selection Tree файлы помечены как недоступные, отправляйте NWD.</p>
    <p><strong>Можно ли сохранить выделение элементов в Navisworks?</strong> Как выделение — нет. Сохраните элементы в Selection Set или Search Set (Home → Sets), набор переживёт и перезапуск, и перевыгрузку моделей.</p>
    <p><strong>Сколько точек обзора отдавать смежнику за раз?</strong> Мы стараемся не выходить за 30-40 на письмо. Больше означает, что список не разобран и не сгруппирован, а вместо работы отправлена свалка.</p>
    <p><strong>Как перенести точки в новый файл сборки?</strong> Output → Export Data → Viewpoints в старом файле, Import Viewpoints в новом. Состав и порядок подключённых моделей должны совпадать, иначе скрытия встанут не на те элементы.</p>
    <p><strong>Почему после Refresh точки показывают не то?</strong> Модели обновились, идентификаторы элементов изменились. Проверьте, что в экспорте NWC включён Convert element Ids, и пересоздайте отчёт As Viewpoints.</p>
    <h2>С чего начать</h2>
    <p>Откройте текущую сборку и загляните в Viewpoint Defaults. Если галочки выключены, вы уже неделями отправляете смежникам камеры без содержания.</p>
    <p>Дальше по маршруту: наладить сам цикл разбора коллизий помогает <a href="https://bim-pulse.ru/clash-detection-workflow.html">рабочий процесс clash detection</a>, а поставить проверки на поток — <a href="https://bim-pulse.ru/avtomatizaciya-proverki-modeley.html">автоматизация проверки моделей</a>.</p>
    <p>Если хочется, чтобы это настроил кто-то один раз и для всей команды, напишите в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через <a href="https://bim-pulse.ru/contacts.html">контакты</a>. Посмотрим вашу сборку и скажем, что чинится за день, а что требует правки регламента обмена.</p>]]></content:encoded>
    </item>
    <item>
      <title>Тяжёлая модель Revit: что ускоряет, а что миф</title>
      <link>https://bim-pulse.ru/uskorit-tyazheluyu-model-revit.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/uskorit-tyazheluyu-model-revit.html</guid>
      <pubDate>Sun, 23 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Revit</category>
      <description>Замеры до и после: предупреждения, purge, импортированные DWG, связи и рабочие наборы. Что дало минуты, а что не дало ничего, кроме потраченного времени.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-case-1.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Модель раздела АР весила 1,42 ГБ и открывалась 11 минут. После чистки: 640 МБ и 3 минуты. Из восьми выигранных минут пять дал один пункт, про который обычно не вспоминают. Расскажу по порядку, включая то, что мы сделали зря.</p>
    <p>Сразу оговорюсь: волшебной кнопки нет. Есть скучный список процедур, каждая со своим весом, и половина популярных советов веса не имеет.</p>
    <h2>Замер: без него вы лечите наугад</h2>
    <p>Прежде чем трогать модель, зафиксируйте четыре числа. Секундомером, честно, на своей машине.</p>
    <ul><li>Время открытия с центрального файла, с обычными настройками.</li><li>Время синхронизации без изменений (пустой Synchronize).</li><li>Переключение между двумя тяжёлыми видами: план этажа и общий 3D.</li><li>Отклик при перемещении стены: сколько ждёте перерисовки.</li></ul>
    <p>Запишите в таблицу. После каждой процедуры замеряйте снова и записывайте туда же. Через день у вас будет собственный список того, что работает на ваших моделях, а не в чужой статье.</p>
    <p>Ещё пригодятся размер файла и число предупреждений. Оба смотрятся за минуту, оба неплохо коррелируют с самочувствием модели.</p>
    <p>Замеряйте не только у себя. Возьмите машину коллеги, у которого «всё летает», и повторите те же четыре пробы. Две колонки цифр рядом сразу показывают, где искать: в файле или в железе с сетью. Мы обычно берём три рабочих места разного возраста, разброс между ними говорит больше любых догадок.</p>
    <h2>Аудит и предупреждения</h2>
    <p>Начинаем с открытия файла с включённой галочкой Audit. На большой модели это займёт от 10 до 40 минут, зато Revit проверит и починит внутренние ошибки структуры.</p>
    <p>Дальше Manage → Warnings. Список выгружается кнопкой Export в HTML, оттуда удобно считать по типам.</p>
    <div class="table-wrap"><table><thead><tr><th>Предупреждение</th><th>Чем опасно</th><th>Приоритет</th></tr></thead><tbody><tr><td>Identical instances (дубли в одной точке)</td><td>двойной подсчёт объёмов и лишняя геометрия</td><td>высокий</td></tr><tr><td>Elements have duplicate «Марка»</td><td>ломает спецификации</td><td>высокий</td></tr><tr><td>Highlighted elements are joined but do not intersect</td><td>постоянный пересчёт соединений</td><td>высокий</td></tr><tr><td>Wall is slightly off axis</td><td>мелочь, но плодит соединения</td><td>средний</td></tr><tr><td>Room is not in a properly enclosed region</td><td>площади считаются неверно</td><td>средний</td></tr><tr><td>Line is slightly off axis</td><td>косметика</td><td>низкий</td></tr></tbody></table></div>
    <p>Ориентир по количеству: до 500 предупреждений на крупный раздел это рабочая ситуация, 3-5 тысяч уже влияют на отклик, 15 тысяч означают, что модель никто не чистил ни разу.</p>
    <p>В том проекте предупреждений было 6 800. Больше половины оказались дублями элементов после копирования этажей. Чистка заняла три часа и дала около минуты на открытии. Заметно меньше, чем ожидалось, но подсчёты объёмов после этого сошлись с ведомостью.</p>
    <h2>Purge, но без иллюзий</h2>
    <p>Manage → Purge Unused, снять и поставить все галочки, выполнить. Повторить два-три раза: после первой чистки освобождаются вложенные типы, которые в первый проход считались используемыми.</p>
    <p>Что даёт: на модели, которую чистят регулярно, почти ничего. На модели, которую не чистили два года, файл худеет на 10-20 процентов. Скорость открытия при этом растёт слабо, зато синхронизация становится приятнее.</p>
    <p>Осторожно с типами, которые понадобятся позже. Если проект живой, лучше сначала выгрузить список удаляемого и глазами пройтись по нему, а не жать «ОК» вслепую.</p>
    <h2>Импортированный DWG: тот самый пункт на пять минут</h2>
    <p>Главный источник веса в моделях, которые мы разбирали, это подложки AutoCAD, попавшие <strong>внутрь семейств</strong>.</p>
    <p>Механизм такой. Проектировщик делает семейство, вставляет в него DWG «для обводки», забывает удалить и загружает семейство в проект. Каждый экземпляр тащит за собой всю графику чертежа: слои, шрифты, штриховки, иногда рамку со штампом целиком. Двадцать таких семейств по сотне экземпляров превращают модель в свалку.</p>
    <p>Как найти: Manage → Purge Unused покажет часть, но надёжнее посмотреть Insert → Manage Links → CAD Formats, а также прогнать спецификацию по категории «Импортированные символы». В диспетчере проекта импортированные категории видны в настройках видимости (VV → Imported Categories): если там перечислены слои чужих чертежей, они у вас в модели.</p>
    <p>Что делать: чистить семейства по одному, вставлять их заново без подложки. Работы на несколько часов, эффект в том проекте составил пять минут из восьми и 500 МБ веса.</p>
    <p>Отдельный запрет, который стоит прописать в стандарте компании: <strong>никогда не делать Explode импортированному DWG</strong>. Разбитый чертёж превращается в тысячи линий стилей, которые расползаются по всей модели и не вычищаются потом ничем.</p>
    <h2>Связи и рабочие наборы</h2>
    <p>Каждая связанная модель загружается в память целиком. Если в АР подгружены КР, ОВ, ВК, ЭОМ и топосъёмка, вы держите открытыми шесть моделей сразу.</p>
    <p>Что помогает:</p>
    <ol><li>Разложить связи по отдельным рабочим наборам, по одному на связь. Тогда каждый инженер открывает файл, отключая чужие разделы.</li><li>Открывать через Open → Specify, снимая галочки с ненужных наборов. На нашей практике это самая быстрая победа: минус 2-4 минуты на открытии, без единой правки в модели.</li><li>Ставить связям тип Overlay вместо Attachment, чтобы они не тянулись каскадом через чужие файлы.</li><li>Держать топосъёмку и генплан отдельной связью, которая выгружается на время работы по этажам.</li></ol>
    <p>Рабочие наборы сами по себе модель не ускоряют. Ускоряет привычка не загружать то, что сейчас не нужно.</p>
    <h2>Виды, шаблоны и мелочи</h2>
    <p>Скорость отклика чаще упирается не в размер модели, а в настройки текущего вида.</p>
    <ul><li>Тени и полутени в 3D съедают отклик заметнее всего. Выключите и почувствуйте разницу за секунду.</li><li>Уровень детализации Fine на общем виде здания не нужен никому.</li><li>Открытые окна видов: Revit пересчитывает все. Держите одно-два, закрывайте остальные (WT и WC в помощь).</li><li>Неиспользуемые виды и листы: сотни забытых видов в диспетчере ощутимо тормозят открытие и синхронизацию.</li><li>Шаблоны видов на все рабочие виды: заодно избавляют от ручных настроек и лишних переключений.</li><li>Модели на месте (In-Place) вместо семейств: тяжёлые, плохо чистятся, множатся. Переводите в загружаемые семейства при первой возможности.</li></ul>
    <h2>Три жалобы и что за ними стоит</h2>
    <p><strong>«У меня открывается 11 минут, у соседа 3».</strong></p>
    <p>Дело не в модели. Смотрим локальный кеш, антивирус и путь к центральному файлу. Скопируйте файл на локальный диск и замерьте открытие оттуда. Разница в разы означает сеть или проверку rvt антивирусом на лету.</p>
    <p><strong>«Синхронизация занимает 15 минут».</strong></p>
    <p>Обычно виноваты три вещи сразу: тысячи предупреждений, гора мелких правок за один сеанс и синхронизация всей командой одновременно. Синхронизируйтесь чаще и вразнобой, раз в 30-40 минут, а не раз в день перед уходом.</p>
    <p><strong>«Revit падает при открытии общего 3D».</strong></p>
    <p>Тени, высокая детализация и все связи разом. Заведите рабочий 3D-вид: тени выключены, детализация средняя, связи отключены через рабочие наборы. Падения обычно прекращаются в тот же день.</p>
    <h2>Прежде чем звать айтишников</h2>
    <ul><li>Замерьте открытие с локальной копии. Быстро? Значит вопрос к сети, а не к машине.</li><li>Посмотрите загрузку процессора в момент тормозов. Одно ядро в потолке означает, что новая видеокарта ничего не даст.</li><li>Проверьте, где лежит центральный файл и не синхронизируется ли папка облачным клиентом.</li><li>Отключите проверку rvt-файлов антивирусом в реальном времени и замерьте снова.</li></ul>
    <p>Четыре проверки закрывают большинство обращений «Revit тормозит» без единой правки в модели.</p>
    <h2>Гигиена: двадцать минут раз в месяц</h2>
    <ul><li>Выгрузить список предупреждений и посчитать по типам. Растёт число дублей, значит этажи копируют без проверки.</li><li>Посмотреть вес файла в динамике. Скачок на 200 МБ за месяц означает, что в модель что-то приехало.</li><li>Пробежать Manage Links: не появились ли новые импорты CAD и лишние связи.</li><li>Проверить диспетчер проекта на виды без шаблона и на дубли листов.</li></ul>
    <p>Четыре пункта, двадцать минут. Модель, которую так смотрят, не превращается в полтора гигабайта за год работы.</p>
    <p>Поставьте напоминание на первый рабочий день месяца. Без напоминания процедура умирает на втором месяце, проверено не на одной команде.</p>
    <h2>Что оказалось мифом</h2>
    <p><strong>«Compact Central File каждый день».</strong> Сжатие центрального файла делает синхронизацию заметно дольше, а даёт немного. Раз в месяц достаточно.</p>
    <p><strong>«Купим больше оперативки».</strong> На 32 ГБ переход к 64 ГБ обычно не меняет ничего: на большинстве операций Revit упирается в одно ядро и в скорость диска. Быстрый процессор с высокой частотой и NVMe помогают сильнее.</p>
    <p><strong>«Разобьём модель на файлы».</strong> Иногда правильный ход, но связи тоже стоят памяти и времени. Дробление ради дробления даёт шесть тормозящих файлов вместо одного. Делить стоит по границам ответственности, а не по весу.</p>
    <p><strong>«Обновим Revit до свежей версии».</strong> Разница между соседними версиями измеряется процентами. Модель на 1,4 ГБ с шестью тысячами предупреждений будет тормозить в любой.</p>
    <p><strong>«Отключим аппаратное ускорение».</strong> Помогает в редких случаях с конкретными видеокартами, чаще делает хуже. Проверять только по замеру, не по совету из форума.</p>
    <h2>Итог по замерам</h2>
    <p>Как распределился выигрыш на том проекте.</p>
    <div class="table-wrap"><table><thead><tr><th>Что сделали</th><th>Время работы</th><th>Выигрыш на открытии</th></tr></thead><tbody><tr><td>Чистка DWG внутри семейств</td><td>4 часа</td><td>5 минут</td></tr><tr><td>Открытие без лишних рабочих наборов</td><td>20 минут</td><td>2 минуты</td></tr><tr><td>Чистка предупреждений (6 800 штук)</td><td>3 часа</td><td>1 минута</td></tr><tr><td>Purge Unused</td><td>15 минут</td><td>около 10 секунд</td></tr><tr><td>Удаление 240 неиспользуемых видов</td><td>40 минут</td><td>около 20 секунд</td></tr><tr><td>Compact Central File</td><td>25 минут</td><td>не заметили</td></tr></tbody></table></div>
    <p>Порядок работ отсюда очевиден: сначала ищите импортированную графику, потом настраивайте загрузку наборов, и только затем занимайтесь чисткой предупреждений, у которой цель другая, качество подсчётов.</p>
    <h2>Где это не сработает</h2>
    <p>Модель бывает тяжёлой по существу. Комплекс на 120 тысяч квадратных метров в одном файле, генплан с рельефом на 40 гектаров, фасад со сложной параметрикой: там не чистить надо, а перекраивать структуру файлов. Это отдельная работа на неделю с пересборкой связей и координат.</p>
    <p>Не поможет чистка и при узком канале. Центральный файл на сервере при сети 100 Мбит и десяти синхронизациях в час создаёт очередь, которую не лечат настройками Revit. Проверяется просто: скопируйте файл на локальный диск и замерьте открытие оттуда. Разница в разы означает, что проблема в сети, а не в модели.</p>
    <p>Отдельная боль это файлы, которые синхронизируются облачным клиентом. Центральный файл Revit в папке облачного диска рано или поздно повреждается, и вопрос скорости становится неактуальным на фоне восстановления из бэкапа.</p>
    <p>И последнее. Если модель приходит от подрядчика в таком виде каждый месяц, чистка превращается в бесконечную работу. Лечится это требованиями к передаваемым моделям в договоре и входным контролем, а не героизмом BIM-специалиста.</p>
    <h2>Частые вопросы коротко</h2>
    <p><strong>Какой вес модели считать нормальным?</strong> Раздел АР жилого дома живёт в 300-600 МБ. Гигабайт и выше почти всегда означает мусор внутри, а не сложность объекта.</p>
    <p><strong>Делить модель по этажам?</strong> Редко хорошая мысль. Делите по разделам и корпусам, а этажи держите вместе: разрезы и фасады через связи собирать больно.</p>
    <p><strong>SSD решит проблему?</strong> Ускорит открытие и сохранение, отклик при работе почти не изменит. Порядок вложений такой: частота процессора, потом диск, потом память.</p>
    <p><strong>Что делать с тяжёлыми моделями подрядчика?</strong> Не чинить их руками каждый месяц. Прописать требования к передаваемым моделям и проверять на входе, возвращая файл при нарушении.</p>
    <p><strong>Сколько времени занимает полная чистка?</strong> Один-два рабочих дня на раздел, если модель запущена. Половина уходит на семейства с импортами, их правят по одному.</p>
    <p><strong>Помогает ли чистка, если модель уже сдана?</strong> Смысл есть, когда по ней ещё будут работать: авторский надзор, изменения, стадия следующего корпуса. Ради архива чистить незачем.</p>
    <h2>Что сделать на этой неделе</h2>
    <p>Замерьте четыре числа из начала статьи. Проверьте модель на импортированные DWG внутри семейств. Откройте файл без чужих рабочих наборов. Три действия, полтора часа, и вы уже будете знать, где у вас утекают минуты.</p>
    <p>Регулярную проверку моделей на такой мусор мы ставим на автомат: скрипт обходит файлы, собирает предупреждения, вес, число видов и импортов, складывает в таблицу и показывает динамику. Что входит в такую работу, видно в <a href="https://bim-pulse.ru/services.html">услугах</a> и <a href="https://bim-pulse.ru/cases.html">кейсах</a>, а порядок проверки моделей перед выдачей описан в статье про <a href="https://bim-pulse.ru/ifc-export-iz-revit.html">экспорт IFC</a>.</p>
    <p>Напишите в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через <a href="https://bim-pulse.ru/contacts.html">контакты</a>, скажите вес модели и время открытия. Подскажем, что смотреть первым, даже если дальше вы будете делать это сами.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как выгрузить спецификацию из Revit в Excel: три способа</title>
      <link>https://bim-pulse.ru/revit-specifikacii-v-excel.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/revit-specifikacii-v-excel.html</guid>
      <pubDate>Sat, 22 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Revit</category>
      <description>Встроенный экспорт, Dynamo и плагины: сравниваем по времени, деньгам и риску. Где теряются данные и как загрузить правки обратно в Revit, не сломав модель.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/Bim.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Сметчик просит выгрузку по всем дверям: марка, размеры, отделка, помещение. Через час он присылает файл обратно с правками в трёх колонках и вопросом «а можно сразу в модель?».</p>
    <p>Вот тут и начинается разница между способами. Выгрузить умеет каждый. Загрузить обратно, ничего не поломав, умеют не все и не всегда.</p>
    <p>Ниже три рабочих маршрута, которыми я пользуюсь на разных задачах, с честной ценой каждого.</p>
    <h2>Способ 1. Встроенный экспорт</h2>
    <p>Открываем спецификацию, «Файл» → «Экспорт» → «Отчёты» → «Спецификация». Revit предлагает сохранить .txt, спрашивает про разделители и заголовки.</p>
    <p>Дальше файл открывается в Excel через «Данные» → «Из текста», с указанием кодировки. <strong>Именно тут ломается кириллица.</strong> Revit пишет UTF-16, Excel по умолчанию ждёт что-то другое, на выходе вместо «Дверь ДГ 21-9» получается набор вопросительных знаков. Лечится выбором Unicode при импорте, но каждый раз вручную.</p>
    <p>Что ещё теряется:</p>
    <ul><li>многоуровневая группировка превращается в обычные строки, вложенность видна только по отступам;</li><li>итоги и промежуточные суммы приезжают как текстовые строки посреди таблицы;</li><li>форматирование чисел уходит целиком, «2 100» становится текстом с неразрывным пробелом;</li><li>обратной загрузки нет вообще, это односторонний путь.</li></ul>
    <p>Время: 2 минуты на выгрузку плюс 5 на приведение таблицы в вид, который не стыдно отправить. Цена: ноль. Годится, когда нужно один раз что-то отдать смежникам и забыть.</p>
    <h2>Способ 2. Dynamo</h2>
    <p>Здесь начинается управляемость. Граф собирает элементы по категории, читает параметры и пишет их в лист Excel в нужном вам порядке.</p>
    <p>Минимальный набор нод: <code>Categories</code> → <code>All Elements of Category</code> → <code>Element.GetParameterValueByName</code> → <code>List.Transpose</code> → <code>Data.ExportExcel</code>. Транспонирование почти всегда обязательно: Dynamo собирает данные колонками, а Excel ждёт строки.</p>
    <pre><code># Что делает граф, на языке человека
элементы = все двери проекта
для каждой двери:
    строка = [Марка, Ширина, Высота, Уровень, Комментарий]
записать строки на лист &quot;Двери&quot; начиная с ячейки A2</code></pre>
    <p>Три подводных камня, о которых узнаёшь на второй раз.</p>
    <p><strong>Data.ExportExcel требует установленного Excel.</strong> Нода работает через COM, то есть реально открывает приложение в фоне. На машине без офиса граф падает. На 6000 строк выгрузка занимала у меня около трёх минут, и всё это время Excel лучше не трогать. Альтернатива: <code>Data.ExportCSV</code>, работает мгновенно и без офиса, но теряет типы данных и требует правильного разделителя.</p>
    <p><strong>Единицы.</strong> Длины Revit хранит во внутренних единицах (футы). Часть нод отдаёт значения уже пересчитанными в единицы проекта, часть нет. Проверка одна: выгрузите три двери и сверьте ширину с тем, что видно в свойствах. Если вместо 900 стоит 2.95, вы смотрите на футы.</p>
    <p><strong>Пустые параметры.</strong> Ноды возвращают <code>null</code>, и Excel получает пустые ячейки без предупреждения. Незаполненный параметр в модели и ошибка чтения параметра выглядят в выгрузке одинаково.</p>
    <p>Время: первый граф собирается за 2-4 часа, дальше запуск за минуту. Цена: ваше время. Плюс в том, что тот же граф умеет читать Excel обратно нодой <code>Data.ImportExcel</code>.</p>
    <h2>Способ 3. Плагины</h2>
    <p>Готовые инструменты закрывают обе стороны обмена. Из бесплатного я использовал SheetLink от DiRoots: ставится за 5 минут, поддерживает Revit 2019-2024, выгружает выбранные категории и параметры в .xlsx и загружает их обратно. Из платного известен Ideate BIMLink, он умнее и дороже, лицензия считается на рабочее место.</p>
    <p>Что даёт плагин против самописного графа:</p>
    <ul><li>сохраняет служебный столбец с ElementId, по нему и находит элементы при обратной загрузке;</li><li>показывает список изменений до применения, а не после;</li><li>умеет отсеивать read-only параметры, вместо того чтобы падать на них.</li></ul>
    <p>Что не даёт: гибкости. Нужна выгрузка со сложной логикой (посчитать площадь отделки по помещениям с учётом типа стен и вычесть проёмы) - плагин так не умеет, там нужен Dynamo.</p>
    <h2>Сравнение</h2>
    <div class="table-wrap"><table><thead><tr><th>Критерий</th><th>Встроенный экспорт</th><th>Dynamo</th><th>Плагин</th></tr></thead><tbody><tr><td>Первая настройка</td><td>2 минуты</td><td>2-4 часа</td><td>15 минут</td></tr><tr><td>Повторный запуск</td><td>5-7 минут</td><td>1 минута</td><td>2 минуты</td></tr><tr><td>Обратная загрузка</td><td>нет</td><td>да, руками</td><td>да, из коробки</td></tr><tr><td>Кириллица</td><td>ломается</td><td>нормально</td><td>нормально</td></tr><tr><td>Сложная логика</td><td>нет</td><td>да</td><td>нет</td></tr><tr><td>Цена</td><td>0</td><td>время</td><td>0 или лицензия</td></tr><tr><td>Риск испортить модель</td><td>нулевой</td><td>высокий</td><td>средний</td></tr></tbody></table></div>
    <h2>Обратная загрузка: где рвётся</h2>
    <p>Самая опасная операция во всей теме. Данные из Excel идут в модель, и цена ошибки другая: неверная выгрузка это потерянный час, неверная загрузка это испорченная модель, о чём вы узнаете через неделю.</p>
    <p><strong>Якорь.</strong> Элемент ищется по ElementId. Уникальный номер в пределах файла, но не между файлами и не после пересоздания элемента. Удалили дверь и поставили заново - id новый, а в таблице старый. Загрузка либо промахнётся, либо запишет параметры не туда. Правило простое: между выгрузкой и загрузкой модель не меняем.</p>
    <p><strong>Excel-самодеятельность.</strong> Артикул <code>007</code> превращается в <code>7</code>. Значение <code>1.5</code> в русской локали иногда становится датой. Длинный код спецификации сворачивается в <code>1,2E+11</code>. Всё это Excel делает сам, без спроса, и в модель приезжает мусор. Формат колонок ставьте текстовым до того, как отдадите файл смежнику.</p>
    <p><strong>Параметры типа против параметров экземпляра.</strong> В спецификации они выглядят одинаково. При записи разница огромная: правка типового параметра у одной двери меняет его у всех дверей этого типа. Строчку поправили одну, изменились сорок. Разбор того, что где хранится, есть в статье про <a href="https://bim-pulse.ru/revit-avtozapolnenie-parametrov.html">автозаполнение параметров</a>.</p>
    <p><strong>Read-only.</strong> Площадь, объём, периметр, отметки уровня считает сам Revit. Запись в них падает с ошибкой, и хорошо, если падает громко. Хуже, когда скрипт ловит исключение и молча идёт дальше: половина строк записалась, половина нет, а сообщения об этом нет.</p>
    <p><strong>Синхронизация.</strong> Если файл в общей работе, все правки уходят в вашу локальную копию. Не синхронизировали до перезаписи - готовьтесь разбирать конфликты вручную.</p>
    <h2>Чек-лист перед обратной загрузкой</h2>
    <p>Список короткий, но каждый пункт написан после того, как что-то пошло не так.</p>
    <ol><li>Копия файла сделана и лежит рядом. Не «есть бэкап где-то на сервере», а копия за минуту до загрузки.</li><li>Модель синхронизирована, чужих незакрытых правок в ней нет.</li><li>Столбец с ElementId цел, не отсортирован отдельно от остальных, не содержит пустых ячеек.</li><li>Колонки с артикулами и кодами имеют текстовый формат.</li><li>Загружаются только те колонки, которые правил смежник. Остальные из файла лучше убрать физически.</li><li>Первый прогон делается на выборке из 10 строк. Смотрим глазами в модели, потом пускаем целиком.</li></ol>
    <p>На объекте с 1200 элементами инженерных систем этот круг занимает у меня минут двадцать против трёх часов ручного ввода. Единственный раз, когда я пропустил пункт про копию, стоил половины дня на восстановление разделов из архива. Больше не пропускаю.</p>
    <h2>Чего ждать не надо</h2>
    <p>Полноценной двусторонней связи между Revit и Excel не существует ни в одном из трёх способов. Это не «связанная таблица», где правка ячейки прилетает в модель. Это ручной обмен: выгрузили, поправили, загрузили. Между этими шагами кто-то может двигать модель, и вы об этом не узнаете.</p>
    <p>Не стоит гнать через Excel геометрию. Координаты, отметки, повороты элементов лучше править в модели. Таблица хороша для текстовых и числовых атрибутов: марки, коды, комментарии, наименования, признаки этапности.</p>
    <p>И отдельно: <strong>не отдавайте боевую выгрузку без служебного столбца</strong>. Смежник добавит строку, отсортирует по-своему, удалит колонку с id, и обратная загрузка станет невозможной. Столбец id должен быть первым, заблокированным и подписанным «не трогать».</p>
    <h2>Три ошибки обмена и что с ними делать</h2>
    <p><strong>«Warning: Data.ExportExcel operation failed. The RPC server is unavailable.»</strong></p>
    <p>Классика Dynamo. Нода не смогла достучаться до Excel через COM. Причины по убыванию частоты: файл, в который пишем, открыт в самом Excel; Excel в момент запуска показывает диалог активации лицензии; на машине стоит только просмотрщик, а не полный офис. Первое лечится закрытием файла, третье не лечится вообще, там нужен <code>Data.ExportCSV</code>.</p>
    <p><strong>«The process cannot access the file because it is being used by another process.»</strong></p>
    <p>Тот же корень, другая формулировка. Отдельный подвох: файл может держать не Excel, а антивирус или облачный клиент вроде синхронизации с корпоративным диском. Выгружайте в локальную папку, а копируйте на сервер уже готовый файл.</p>
    <p><strong>«Warning: Element.SetParameterByName operation failed. The parameter storage type is not a number.»</strong></p>
    <p>Обратная загрузка. Excel отдал строку <code>"2100"</code> вместо числа <code>2100</code>, потому что колонка была текстовой. Между <code>Data.ImportExcel</code> и записью ставьте <code>String.ToNumber</code>, а перед ним <code>List.Clean</code> для отсева пустых ячеек. Проверяется одним взглядом на превью ноды: числа выравниваются иначе, чем строки.</p>
    <p>Ещё одна беда без единого сообщения об ошибке: <strong>строки съехали на одну</strong>. Заголовок таблицы посчитали данными, и все 400 значений записались соседним элементам. Ошибок нет, скрипт доволен, модель испорчена. Поэтому в графе указывают явное смещение (читать с ячейки A2) и всегда проверяют первое и последнее значение вручную.</p>
    <h2>Какой формат выбирать</h2>
    <div class="table-wrap"><table><thead><tr><th>Формат</th><th>Когда брать</th><th>Чем платишь</th></tr></thead><tbody><tr><td>.txt из Revit</td><td>разовая отдача смежнику</td><td>ручная возня с кодировкой</td></tr><tr><td>.csv</td><td>выгрузки на машине без Excel, автоматизация</td><td>теряются типы, разделитель в русской локали</td></tr><tr><td>.xlsx через Dynamo</td><td>нужны несколько листов и форматирование</td><td>требуется Excel, медленно на больших объёмах</td></tr><tr><td>.xlsx через плагин</td><td>регулярный обмен с обратной загрузкой</td><td>зависимость от чужого инструмента</td></tr></tbody></table></div>
    <h2>Все спецификации разом</h2>
    <p>Отдельный сценарий, который окупается быстрее прочих. Ноды <code>All Elements of Type</code> с типом <code>ViewSchedule</code> собирают все спецификации проекта, дальше цикл выгружает каждую на свой лист одной книги. Имя листа берётся из имени спецификации, только помните про ограничение Excel: 31 символ и запрет на символы <code>\ / ? * [ ]</code>. Спецификация «Ведомость перемычек (секция 1/2)» уронит граф именно на слэше.</p>
    <p>На разделе из 34 спецификаций такая выгрузка идёт четыре минуты. Руками это полтора часа кликов, и обычно к тридцатой вкладке кто-нибудь ошибается с именем.</p>
    <h2>Короткие ответы на частые вопросы</h2>
    <p><strong>Можно ли выгрузить спецификацию из связанной модели?</strong> Данные читаются, сама спецификация нет. Собираете элементы связи через <code>Document.Elements</code> для нужного экземпляра связи и строите таблицу в Dynamo с нуля.</p>
    <p><strong>Почему в Excel числа стали текстом с зелёным уголком?</strong> Revit отдал значение вместе с единицами измерения («2100 мм»). Разделяйте значение и единицы ещё в графе, иначе сумма в Excel не посчитается.</p>
    <p><strong>Google Таблицы вместо Excel?</strong> Работают, но только через .csv и ручную загрузку. Прямой ноды нет, обмен через API гуглов делается python-скриптом и требует ключа сервисного аккаунта. Для одного отдела овчинка обычно не стоит выделки.</p>
    <p><strong>Обязательно ли платить за плагин?</strong> Нет. Бесплатного SheetLink хватает 90% команд. Платные инструменты берут за пакетную обработку нескольких файлов и за поддержку, а не за саму функцию обмена.</p>
    <h2>С чего начать</h2>
    <p>На пробу возьмите одну категорию и три параметра. Выгрузите, поправьте одно значение, загрузите обратно на копии файла. Пройдёте этот круг без потерь - масштабируйте на реальный объём.</p>
    <p>Если данных много и они регулярно нужны за пределами Revit, обмен через Excel быстро упирается в потолок. Дальше начинается хранение атрибутов в базе: как это устроено, показано в разборе <a href="https://bim-pulse.ru/postgresql-bim-data.html">Revit и PostgreSQL</a>. Промежуточный вариант, когда выгрузки нужны каждому в команде, разобран в статье про <a href="https://bim-pulse.ru/dynamo-player-dlya-komandy.html">Dynamo Player</a>.</p>
    <p>Опишите свою выгрузку в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через форму на <a href="https://bim-pulse.ru/contacts.html">странице контактов</a>: скажем честно, хватит ли бесплатного плагина или под вашу логику нужен скрипт. Что делаем на таких задачах, коротко есть в <a href="https://bim-pulse.ru/services.html">услугах</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как автоматически заполнить параметры в Revit</title>
      <link>https://bim-pulse.ru/revit-avtozapolnenie-parametrov.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/revit-avtozapolnenie-parametrov.html</guid>
      <pubDate>Fri, 21 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Revit</category>
      <description>Общие, типовые и параметры экземпляра: чем отличаются при записи. Скрипт Dynamo для массового заполнения, проверка результата и список того, что записать нельзя.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-model-2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Перед выдачей раздела кто-то замечает, что у 340 элементов пустой параметр «Обозначение». Заполнять руками через свойства - это вечер. Через спецификацию с группировкой - часа полтора и высокий шанс промахнуться строкой.</p>
    <p>Скрипт закрывает то же самое за минуту. Но перед тем как его писать, надо разобраться, куда именно вы собираетесь писать. Половина неудач с автозаполнением случается не в скрипте, а в непонимании устройства параметров.</p>
    <h2>Три вида параметров и почему это важно</h2>
    <p>В Revit параметр живёт в одном из мест, и от этого зависит, что произойдёт при записи.</p>
    <p><strong>Параметр экземпляра.</strong> Своё значение у каждого элемента. Комментарий у конкретной двери, номер помещения, отметка низа балки. Пишете в один элемент - меняется один элемент. Самый безопасный для массовых операций.</p>
    <p><strong>Параметр типа.</strong> Значение общее для всех элементов этого типа. Модель двери, материал сердцевины, огнестойкость. Записали значение через один экземпляр - <strong>изменились все двери этого типа в проекте</strong>. На объекте, где типов 12, а дверей 400, промах в одну строчку правит треть модели. Это самая дорогая ошибка в теме автозаполнения.</p>
    <p><strong>Общий параметр (shared).</strong> Хранится не в файле, а в отдельном текстовом файле ФОП с уникальными GUID. Только общие параметры попадают в спецификации, марки и IFC-выгрузку корректно. Ключевое свойство: два параметра с одинаковым именем, но из разных ФОП, для Revit разные. Именно поэтому в проекте иногда живут «Обозначение» и «Обозначение», и заполняется не то.</p>
    <p>Проектный параметр (project) занимает промежуточную позицию: живёт в файле, привязан к категориям, в марку не попадёт.</p>
    <p>Перед первым скриптом ответьте на два вопроса: параметр экземпляра или типа, и общий или проектный. Ответ смотрится в «Управление» → «Параметры проекта».</p>
    <h2>Что заполняется автоматически хорошо</h2>
    <p>Не всё стоит автоматизировать. Годятся случаи, где значение выводится из чего-то, что уже есть в модели:</p>
    <ul><li>обозначение по шаблону из марки типа, уровня и порядкового номера;</li><li>«Помещение» у оборудования, вычисленное по геометрии (в какой комнате стоит точка вставки);</li><li>код по классификатору, подставленный из соответствия «семейство → код»;</li><li>этажность, секция, стадия, подсистема: всё, что определяется положением элемента;</li><li>зачистка мусора: убрать двойные пробелы, привести регистр, обрезать лишние символы.</li></ul>
    <p>Плохо автоматизируется то, что требует решения человека. Категория качества отделки, обоснование отступа от норматива, комментарий проверяющего. Скрипт заполнит поле, ответственность останется на вас, а поле будет выглядеть заполненным. Так рождается недостоверная модель.</p>
    <h2>Скрипт: сбор, вычисление, запись</h2>
    <p>Структура любого графа автозаполнения одинакова. Три части.</p>
    <p><strong>Сбор.</strong> <code>Categories</code> → <code>All Elements of Category</code>. Если нужны элементы только с активного вида, берите <code>All Elements of Category in View</code>: на большой модели разница во времени в разы.</p>
    <p><strong>Вычисление.</strong> Читаем исходные параметры через <code>Element.GetParameterValueByName</code>, склеиваем в Code Block. Пример формулы обозначения:</p>
    <pre><code>марка + &quot;-&quot; + этаж + &quot;-&quot; + String.PadLeft(number, 3, &quot;0&quot;);</code></pre>
    <p>Дальше это уходит в один вход, а список элементов в другой.</p>
    <p><strong>Запись.</strong> <code>Element.SetParameterByName</code>. Три входа: элемент, имя параметра строкой, значение. Порядок и длина списков должны совпадать. Если элементов 340, а значений 339, лейсинг Shortest тихо обработает 339, и вы этого не заметите.</p>
    <p>Полезный кусок на Python внутри Dynamo, когда нужно писать только в пустые поля и не трогать заполненные:</p>
    <pre><code class="language-python">import clr
clr.AddReference(&quot;RevitAPI&quot;)
clr.AddReference(&quot;RevitServices&quot;)
from Autodesk.Revit.DB import *
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
elems = UnwrapElement(IN[0])
pname = IN[1]
values = IN[2]

TransactionManager.Instance.EnsureInTransaction(doc)
tronuli = 0
for e, v in zip(elems, values):
    p = e.LookupParameter(pname)
    if p is None or p.IsReadOnly:
        continue
    if p.AsString():          # уже заполнено - пропускаем
        continue
    p.Set(str(v))
    tronuli += 1
TransactionManager.Instance.TransactionTaskDone()

OUT = tronuli</code></pre>
    <p>Возврат количества обработанных элементов - привычка, которая экономит нервы. Запустили, увидели «307», сравнили с ожидаемыми 340, пошли искать разницу. Без счётчика скрипт молчит, и вы верите, что всё прошло.</p>
    <h2>Единицы, типы и прочие мелочи</h2>
    <p>Строковый параметр принимает строку, числовой число, длина хранится во внутренних футах. Запись <code>1000</code> в параметр длины через API даёт 1000 футов, то есть 304 метра. Революции в модели не будет, но геометрия уедет.</p>
    <p>Проверяйте на одном элементе. Всегда. Записали, открыли свойства, посмотрели глазами. Только после этого пускайте на все 340.</p>
    <p>Параметр Yes/No ждёт 0 или 1. Параметр-материал ждёт ElementId материала, а не его название. Параметр типа «Текст» проглотит что угодно, включая случайно попавший <code>null</code>, который превратится в строку «null» и потом всплывёт в спецификации.</p>
    <h2>Проверка результата</h2>
    <p>Скрипт отработал. Дальше три уровня контроля, по возрастанию надёжности.</p>
    <p>Первый: спецификация с фильтром «параметр не заполнен». Ставится один раз, живёт в шаблоне, показывает пустые поля моментально. Держите такую в каждом проекте.</p>
    <p>Второй: фильтр вида, красящий элементы с незаполненным полем. Работает нагляднее таблицы, особенно на планах, где сразу видно осиротевшую зону.</p>
    <p>Третий: обратный прогон. Собрать значения тем же графом и проверить <code>List.UniqueItems</code> и <code>List.Count</code>. Обозначения должны быть уникальны, коды - принадлежать заранее известному множеству. Расхождение говорит о том, что скрипт где-то ошибся или кто-то поправил руками.</p>
    <p>Отдельно проверьте пять случайных элементов вручную. Автоматика проверяет автоматику, а глаз ловит то, чего в проверках не заложено.</p>
    <h2>Где это не работает</h2>
    <p><strong>Read-only параметры.</strong> Площадь, объём, периметр, длина стены, отметки. Их считает Revit по геометрии, запись невозможна. Скрипт либо упадёт, либо пропустит, в зависимости от того, как написан.</p>
    <p><strong>Параметры семейства, не выведенные в проект.</strong> Если внутри семейства значение зашито формулой или помечено как параметр семейства, из проекта его не поменять. Нужна правка самого семейства и перезагрузка во все проекты, где оно используется.</p>
    <p><strong>Связанные модели.</strong> Чужой файл открыт на чтение, запись невозможна в принципе. Данные из связи можно только читать, для этого есть отдельный набор нод.</p>
    <p><strong>Модель в общей работе.</strong> Элемент, занятый другим пользователем, не изменится. Скрипт выдаст ошибку доступа, и он будет прав. Массовые операции делаются, когда все синхронизировались, а лучше на отдельной копии с последующей проверкой.</p>
    <p>И ещё одно. Автозаполнение не чинит бардак в данных, оно его масштабирует. Пустой параметр видно сразу, а неверно заполненный выглядит как рабочий и доживает до экспертизы. Первый запуск на боевом файле делайте в режиме «только показать, что запишем»: выведите таблицу «элемент → новое значение» и посмотрите её глазами, прежде чем разрешать запись.</p>
    <h2>Три ошибки записи, разобранные по шагам</h2>
    <p><strong>«Warning: Element.SetParameterByName operation failed. The parameter is read-only.»</strong></p>
    <p>Самая безобидная. Скрипт честно сказал, что писать сюда нельзя. Проверьте, не пытаетесь ли вы заполнить вычисляемое поле: площадь, объём, длину, отметку. Второй вариант этой же ошибки хитрее: параметр записываемый, но конкретно у этого элемента он приходит из семейства и заблокирован формулой. Тогда правится семейство, а не проект.</p>
    <p><strong>«Warning: Element.SetParameterByName operation failed. The parameter storage type is not a string.»</strong></p>
    <p>Тип значения не совпал с типом параметра. Пытаетесь записать текст в числовое поле или наоборот. В Dynamo это лечится нодами <code>String.ToNumber</code> и <code>String from Object</code>, в python - явным <code>str()</code> или <code>float()</code>. Отдельный случай: параметр Yes/No ждёт <code>1</code> или <code>0</code>, а не «Да».</p>
    <p><strong>Записалось, а в спецификации пусто.</strong></p>
    <p>Ошибок нет, значения в свойствах элемента видны, спецификация показывает пустую колонку. Почти всегда причина одна: в проекте два параметра с одинаковым именем. Один проектный, другой общий из ФОП, и спецификация выводит не тот, в который вы записали. Проверяется в «Управление» → «Параметры проекта»: если в списке два «Обозначения», вы нашли виновника. Чинится удалением лишнего и повторным прогоном, но сначала убедитесь, что удаляемый параметр нигде не выводится в марках.</p>
    <p>Четвёртая по счёту, но первая по ущербу ситуация: <strong>скрипт отработал на 400 элементах вместо 40</strong>. Фильтр собрал не ту категорию, лейсинг растянул значение на весь список, вложенные семейства попали в выборку. Отсюда правило про счётчик обработанных элементов и первый прогон в режиме отчёта.</p>
    <h2>Куда писать: сравнение</h2>
    <div class="table-wrap"><table><thead><tr><th>Вид параметра</th><th>Когда брать</th><th>Чем платишь</th></tr></thead><tbody><tr><td>Экземпляра, проектный</td><td>значение у каждого элемента своё, в марки не идёт</td><td>не попадёт в IFC-выгрузку корректно</td></tr><tr><td>Экземпляра, общий</td><td>нужен в спецификациях, марках, обмене</td><td>нужен порядок в ФОП и его хранение</td></tr><tr><td>Типа</td><td>одинаково у всех элементов типа</td><td>правка одного меняет все, ошибка дорогая</td></tr><tr><td>Глобальный</td><td>одно значение на проект (стадия, шифр)</td><td>не выводится в спецификацию по элементам</td></tr></tbody></table></div>
    <h2>Что проверить перед массовым прогоном</h2>
    <ul><li>Копия файла сделана. Не «синхронизирую и откачу», а именно копия.</li><li>Параметр найден в «Параметрах проекта» и вы точно знаете, экземпляра он или типа.</li><li>Скрипт вернул счётчик обработанных элементов, и число совпало с ожидаемым.</li><li>На пяти случайных элементах значение проверено глазами в свойствах, а не в превью Dynamo.</li><li>Спецификация с фильтром «поле не заполнено» построена заранее, до прогона. После прогона сравнивать будет не с чем.</li><li>Коллеги в общей работе синхронизировались, иначе половина элементов окажется занята.</li></ul>
    <h2>Короткие ответы на частые вопросы</h2>
    <p><strong>Можно ли заполнить параметр без скриптов вообще?</strong> Да, и это недооценённый путь. Ключевая спецификация (Key Schedule) заполняет пачку параметров по одному ключевому полю: выбрали в выпадающем списке «Тип отделки 3», и три параметра проставились сами. Настраивается за полчаса, не ломается при обновлении Revit, работает у всех без Dynamo. Логику вычислений она не потянет, но для справочников подходит лучше скрипта.</p>
    <p><strong>Как заполнить параметры у элементов связанной модели?</strong> Никак. Чужой файл открыт на чтение. Работать можно только с копией связи, вставленной в свой проект, или запрашивать правку у автора модели.</p>
    <p><strong>Отменяется ли массовая запись?</strong> Ctrl+Z откатывает весь прогон одним шагом, пока вы не сделали в Revit других действий. После синхронизации откат превращается в отдельную работу с архивом.</p>
    <p><strong>Что быстрее на 3000 элементов: Dynamo или python внутри него?</strong> Python. Ноды тратят время на обёртки и превью, чистый цикл через Revit API проходит те же элементы в несколько раз быстрее. На тысяче элементов разница незаметна, на десятках тысяч ощутима.</p>
    <h2>Что делать дальше</h2>
    <p>Возьмите один параметр, который в вашей команде заполняют руками каждую неделю. Соберите граф на копии файла. Прогоните, проверьте, посчитайте сэкономленное время: у нас на обозначениях получилось 40 минут против 4, и это на средней по размеру модели.</p>
    <p>Не собирали графов раньше - начните с <a href="https://bim-pulse.ru/dynamo-pervyy-skript.html">пошагового разбора первого скрипта</a>, там подробно про ноды, порты и уровни списков. Если значения приходят из внешней таблицы, посмотрите разбор <a href="https://bim-pulse.ru/revit-specifikacii-v-excel.html">обмена с Excel</a>. Когда скрипт готов и им хочет пользоваться вся команда, дальше по маршруту <a href="https://bim-pulse.ru/dynamo-player-dlya-komandy.html">Dynamo Player</a>.</p>
    <p>Не уверены, куда именно писать в вашей схеме параметров, или в проекте уже два «Обозначения» из разных ФОП? Напишите в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через форму на <a href="https://bim-pulse.ru/contacts.html">странице контактов</a>, разберём структуру. Наведение порядка в параметрах и шаблонах есть в <a href="https://bim-pulse.ru/services.html">списке услуг</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Регламент BIM-координации: чтобы встречи работали</title>
      <link>https://bim-pulse.ru/reglament-bim-koordinacii.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/reglament-bim-koordinacii.html</guid>
      <pubDate>Thu, 20 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Coordination</category>
      <description>Как проводить встречи по коллизиям: частота, состав, роли, статусы, кто закрывает пункт и что писать в протокол. Разбор причин, по которым процесс глохнет.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-model-2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Полтора часа, одиннадцать человек в переговорной, 214 пунктов в отчёте. Закрыли девять. Через неделю собрались снова, пунктов стало 260.</p>
    <p>Так выглядит координация, у которой нет правил. Люди работали честно, время потратили, результата нет. Разберу, из чего складывается регламент, который эту картину меняет.</p>
    <h2>Почему встречи глохнут у большинства</h2>
    <p>Причин обычно четыре, и все организационные.</p>
    <p><strong>Обсуждают, а не решают.</strong> Половина времени уходит на «а почему у вас труба здесь». Виноватого ищут, решение не записывают.</p>
    <p><strong>У пункта нет хозяина.</strong> Коллизия числится за разделом ОВ и разделом КР одновременно. Оба ждут другого.</p>
    <p><strong>Нет письменного следа.</strong> Договорились устно, через две недели у каждого своя версия договорённости.</p>
    <p><strong>Приходят не те люди.</strong> Сидят двенадцать человек, из которых восемь слушают. Решение принимает один, и он на объекте.</p>
    <p>Добавьте к этому отчёт на 214 позиций, который никто не открывал до встречи, и получите ритуал вместо работы.</p>
    <h2>Частота: привязать к циклу выпуска</h2>
    <p>Универсального интервала нет, есть привязка к стадии.</p>
    <ul><li>Стадия «П», активная разработка: раз в две недели, 60 минут.</li><li>Стадия «Р», основной объём: еженедельно, 45 минут.</li><li>За три недели до выдачи комплекта: дважды в неделю, 30 минут, только критичное.</li><li>После выдачи: раз в месяц, контроль изменений.</li></ul>
    <p>Важнее интервала предсказуемость. Вторник, 10:00, каждую неделю, в календаре у всех, без переносов. Как только встреча начинает плавать по дням, посещаемость падает за месяц.</p>
    <p>Отдельно фиксируем срок публикации моделей: пятница до 17:00. Координатор берёт модели в субботу, проверяет, рассылает отчёт в понедельник до обеда. Ко вторнику у людей есть сутки посмотреть свои пункты.</p>
    <h2>Кто нужен на встрече</h2>
    <p>Оптимальный состав: пять-семь человек.</p>
    <div class="table-wrap"><table><thead><tr><th>Роль</th><th>Что делает</th><th>Обязателен</th></tr></thead><tbody><tr><td>BIM-координатор</td><td>ведёт прогон, готовит повестку, ведёт протокол</td><td>да</td></tr><tr><td>Ответственный по разделу</td><td>принимает решения за раздел, имеет право менять модель</td><td>да, по одному от раздела</td></tr><tr><td>ГИП</td><td>разруливает спорное, где смежники не договорились</td><td>на 15 минут в конце</td></tr><tr><td>Технадзор или подрядчик</td><td>подсказывает монтажные ограничения</td><td>на стадии Р, по ситуации</td></tr><tr><td>Руководитель проектов</td><td>смотрит сводку, не участвует в разборе</td><td>нет</td></tr></tbody></table></div>
    <p>От раздела приходит один человек, который отвечает за раздел. Не два, не «а можно я послушаю». Слушатели растягивают встречу вдвое.</p>
    <p>Роль координатора отдельно оговорю. Он не рисует за смежников и не спорит о технических решениях. Его работа: собрать модели, отсеять шум, поставить вопрос, записать ответ, проверить закрытие. Если своего координатора у компании нет, эту функцию берут на аутсорс: что в неё входит, описано в <a href="https://bim-pulse.ru/services.html">услугах</a>.</p>
    <h2>Что происходит до встречи</h2>
    <p>Половина результата делается координатором заранее.</p>
    <ol><li>Прогон проверки по настроенным наборам и тестам. Механика подробно разобрана в статье про <a href="https://bim-pulse.ru/navisworks-proverka-kolliziy.html">проверку коллизий в Navisworks</a>.</li><li>Чистка ложных срабатываний. На встречу не выносится ни одного пункта, который координатор не посмотрел глазами.</li><li>Группировка. Двенадцать пересечений одного стояка это один пункт повестки.</li><li>Назначение по разделам и рассылка за 24 часа до встречи.</li><li>Повестка: 15-20 пунктов, не больше. Отсортированы по стоимости ошибки, а не по номеру.</li></ol>
    <p>Пункты, которые решаются перепиской, на встречу не выносятся вообще. Встреча нужна там, где два раздела не договорились сами.</p>
    <h2>Как идёт сама встреча</h2>
    <p>Жёсткий тайминг: три минуты на пункт. Экран показывает координатор, модель уже открыта на нужном ракурсе.</p>
    <p>По каждому пункту произносится и записывается одно предложение: <strong>кто, что делает, к какой дате</strong>. «ОВ опускает короб на отметку 2,95, до 19.05». Формулировки вида «посмотрим», «уточним», «постараемся» в протокол не попадают, вместо них назначается дата следующего разговора.</p>
    <p>Если решение требует расчёта или согласования с заказчиком, пункт получает статус «эскалация» и уходит к ГИПу с датой. Спорить об этом на встрече дольше трёх минут смысла нет.</p>
    <p>Ещё одно правило, которое экономит часы: не открываем Revit во время встречи. Соблазн «сейчас поправим» ломает тайминг и превращает встречу в чужую рабочую сессию.</p>
    <p>Про формат. Онлайн работает не хуже очного сбора и экономит дорогу, но с двумя условиями: приличный микрофон у координатора и включённая запись экрана. Запись нужна не для контроля. Она нужна тем, кто не смог прийти: пятиминутный отрывок с разбором своего пункта человек посмотрит, а протокол пролистает по диагонали.</p>
    <p>Камеры включать необязательно. Разговор идёт по модели на экране, лица тут ничего не добавляют, зато канал забивают.</p>
    <h2>Повестка на 45 минут, по минутам</h2>
    <ul><li>0-3: цифры прошлой недели. Сколько новых, сколько закрытых, сколько просрочено. Без обсуждения.</li><li>3-8: просроченное. По каждому пункту одна фраза о причине задержки.</li><li>8-35: разбор. Восемь-десять пунктов по три минуты.</li><li>35-40: эскалации. ГИП заходит именно на этот отрезок.</li><li>40-45: кто что делает до следующей встречи. Вслух, по кругу.</li></ul>
    <p>Последние пять минут пропускают чаще всего, и напрасно. Задача, проговорённая вслух при коллегах, выполняется заметно чаще той, что осталась строчкой в файле.</p>
    <h2>Статусы и кто закрывает пункт</h2>
    <p>Ключевой вопрос всего регламента: кто имеет право сказать «решено». Ответ один: не автор правки.</p>
    <div class="table-wrap"><table><thead><tr><th>Статус</th><th>Кто ставит</th><th>Что означает</th></tr></thead><tbody><tr><td>Новый</td><td>координатор</td><td>появился в свежем прогоне</td></tr><tr><td>В работе</td><td>координатор</td><td>назначен раздел и срок</td></tr><tr><td>Заявлен как решённый</td><td>ответственный по разделу</td><td>правка внесена, модель опубликована</td></tr><tr><td>Закрыт</td><td>координатор</td><td>перепроверено прогоном, пересечения нет</td></tr><tr><td>Согласован</td><td>координатор плюс ГИП</td><td>остаётся как есть, с обоснованием в комментарии</td></tr><tr><td>Эскалация</td><td>координатор</td><td>нужно решение вне проектной команды</td></tr></tbody></table></div>
    <p>Разница между «заявлен как решённый» и «закрыт» выглядит бюрократией ровно до первого случая, когда правку сделали в локальном файле и не опубликовали. По нашей практике таких пунктов от 10 до 15 процентов от заявленных.</p>
    <p>Статус «согласован» без текстового обоснования не принимается. Через полгода на стройке спросят, почему труба идёт в 40 мм от балки, и ответ должен быть в файле, а не в чьей-то памяти.</p>
    <h2>Протокол на одном экране</h2>
    <p>Длинные протоколы не читают. Формат, который работает:</p>
    <ul><li>Дата, версии моделей по разделам, число открытых пунктов и динамика к прошлой неделе.</li><li>Таблица решений: пункт, решение одной строкой, ответственный, срок.</li><li>Список эскалаций для ГИПа.</li><li>Три строки «риски»: что не решено и чем это грозит на монтаже.</li></ul>
    <p>Рассылается в день встречи, до конца дня. Хранится там же, где модели, а не в личной почте координатора. Если у компании есть <a href="https://bim-pulse.ru/cde-sreda-obshchih-dannyh.html">среда общих данных</a>, протокол лежит в ней рядом с отчётом, и любой участник найдёт его через полгода.</p>
    <p>Метрики, которые стоит показывать раз в месяц: число пунктов старше 14 дней, доля повторно открывшихся после «решения», среднее время закрытия по разделам. Последняя цифра обычно неприятно удивляет руководителя, и она же двигает процесс.</p>
    <p>Есть метрика, которую почти никто не ведёт: сколько пунктов пришло со стройки, а не из модели. Каждый такой пункт означает, что проверка его пропустила. Разбирать их полезнее, чем спорить о процентах закрытия.</p>
    <h2>Три протокола, которые не работают</h2>
    <p><strong>Протокол-стенограмма.</strong> Шесть страниц пересказа, кто что сказал и как ответил. Читателей ноль. Лечится жёстким шаблоном: только решения, ответственные, даты.</p>
    <p><strong>Протокол без дат.</strong> Строка «ОВ поправит короб» без числа означает «когда-нибудь». Дата ставится всегда, пусть даже приблизительная. Сдвинутый срок обсуждаем, отсутствующий срок обсудить невозможно.</p>
    <p><strong>Протокол в личной переписке.</strong> Ушёл в чат, утонул за сутки под мемами и вопросами по зарплате. Место хранения одно и постоянное, рядом с моделями и отчётом.</p>
    <h2>Чек-лист координатора за сутки до встречи</h2>
    <ul><li>Модели всех разделов свежие, дата публикации по каждому известна.</li><li>Прогон сделан, ложные срабатывания вычищены руками.</li><li>Повестка разослана, у каждого пункта назван раздел-получатель.</li><li>Прошлый протокол открыт, просроченные пункты подсвечены.</li><li>Спорные пункты предупреждены отдельным сообщением: «на встрече спросим вас».</li></ul>
    <p>Если хоть один пункт не закрыт, встречу лучше сдвинуть на день. Собрание без подготовки съедает час у семи человек и оставляет ощущение, что координация бесполезна.</p>
    <h2>Если участник не приходит</h2>
    <p>Разбираем по причине, а не по эмоциям.</p>
    <p>Пропустил один раз: пункты его раздела остаются открытыми, в протоколе строка «решение не принято, ответственный отсутствовал». Две такие строки подряд, и вопрос уходит к ГИПу.</p>
    <p>Не приходит систематически: обычно это значит, что человек не решает, а передаёт дальше. Меняем участника на того, кто вправе принять решение, даже если половину встречи он будет молчать.</p>
    <p>Приходит, но между встречами ничего не двигается: смотрим загрузку. Чаще всего у ответственного просто нет часов на правки, и это вопрос планирования. Процедура тут бессильна, помогает разговор руководителя с руководителем.</p>
    <p>По времени регламент стоит примерно столько: координатору 6-8 часов в неделю на прогон, чистку, повестку и протокол, ответственному по разделу час на встречу плюс 2-4 часа на правки. На объекте в 15 тысяч квадратных метров это укладывается в десятую часть рабочего времени команды. Выходит вдвое больше, значит на встречу тащат то, что решается перепиской.</p>
    <h2>Где регламент не поможет</h2>
    <p>Он не работает, когда у координатора нет полномочий. Если ответственный по разделу может просто не прийти и ему за это ничего не будет, никакая процедура не спасёт. Полномочия даёт ГИП или руководитель, и это решение принимается один раз, до старта.</p>
    <p>Не работает и на подрядчиках без обязательств в договоре. Аутсорсеру, у которого в контракте нет пунктов про сроки публикации моделей и про участие в координации, встреча не нужна. Добавляйте эти пункты в договор, иначе получите вежливое игнорирование.</p>
    <p>Мелкому проекту тяжёлая процедура вредна. Пристройка на 800 квадратных метров с тремя разделами прекрасно координируется перепиской и одним звонком. Регламент со статусами начинает окупаться примерно от 8-10 тысяч квадратных метров или от пяти разделов.</p>
    <p>И последнее. Если в компании принято «решим на стройке», координация будет буксовать, сколько бы встреч вы ни назначили. Здесь помогает не регламент, а посчитанная стоимость переделок по паре прошлых объектов. Цифры меняют позицию быстрее уговоров.</p>
    <h2>Вопросы, которые задают на внедрении</h2>
    <p><strong>Свой координатор или внешний?</strong> До двух-трёх параллельных объектов дешевле внешний: своему нужна полная загрузка и обучение. От четырёх объектов выгоднее держать человека внутри.</p>
    <p><strong>ГИП не ходит на встречи, что делать?</strong> Не звать его на всю встречу. Пять минут в конце по списку эскалаций, с вопросами, на которые отвечают «да» или «нет».</p>
    <p><strong>У нас есть BCF, зачем ещё протокол?</strong> BCF хранит замечания, протокол хранит решения и сроки. Первое читает инженер в модели, второе читает руководитель в переписке. Дублирования тут нет.</p>
    <p><strong>Как считать, что координация окупилась?</strong> Возьмите число переделок на монтаже по прошлому объекту и умножьте на среднюю стоимость одной. Через полгода сравните с новым числом. Другой честной метрики мы не нашли.</p>
    <p><strong>Онлайн или очно?</strong> Онлайн, когда команда в разных офисах, обязательно с записью экрана. Очно есть смысл собираться на старте проекта и перед выдачей комплекта: там больше споров и живых договорённостей.</p>
    <p><strong>Сколько встреч нужно, чтобы процесс прижился?</strong> По нашему опыту от восьми до двенадцати. Первые три уходят на споры о формате, дальше люди привыкают к таймингу и начинают готовиться заранее.</p>
    <h2>С чего начать</h2>
    <p>Возьмите ближайшую встречу и сделайте три вещи: сократите состав до одного человека от раздела, разошлите повестку из 15 пунктов за сутки, запишите решения формулой «кто, что, к какой дате». Этого достаточно, чтобы через месяц увидеть разницу в числе открытых пунктов.</p>
    <p>Дальше добавляйте статусы и правило перепроверки перед закрытием.</p>
    <p>Мы настраиваем такой цикл под конкретную команду и ведём его первые два-три месяца, пока он не станет привычкой. Что входит в сопровождение, видно на странице <a href="https://bim-pulse.ru/bim-coordination.html">BIM-координации</a>.</p>
    <p>Напишите в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через <a href="https://bim-pulse.ru/contacts.html">контакты</a>, опишите проект и состав разделов. Скажем, какой ритм встреч выдержит ваша команда и с чего начинать.</p>]]></content:encoded>
    </item>
    <item>
      <title>pyRevit: ставим и делаем свои кнопки за вечер</title>
      <link>https://bim-pulse.ru/pyrevit-pervye-knopki.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/pyrevit-pervye-knopki.html</guid>
      <pubDate>Wed, 19 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Automation</category>
      <description>Установка pyRevit, структура расширения из папок, первый скрипт на Python и раздача кнопок команде через сетевую папку или git. С граблями по дороге и без C#.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/Bim1.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Скриптов в Dynamo набралось два десятка. Половину запускают через Player, половину не запускают вообще, потому что искать их дольше, чем сделать руками. Хочется кнопку на ленте: нажал, отработало, поехали дальше.</p>
    <p>pyRevit ровно про это. Бесплатный, открытый, ставится за 10 минут, кнопки делаются папками и файлами. Компилировать ничего не нужно, Visual Studio не нужен, C# не нужен. Вечера хватает на установку, три рабочие кнопки и раздачу их команде.</p>
    <h2>Установка</h2>
    <p>Идём на github.com/pyrevitlabs/pyRevit, в разделе Releases берём подписанный установщик последней стабильной версии ветки 4.8. Он поддерживает Revit с 2019 по 2025, включая нужные нам 2022, 2023 и 2024.</p>
    <p>Ставится в две минуты. Установщик сам находит установленные Revit и подцепляется к ним. Открываем Revit: на ленте появилась вкладка <strong>pyRevit</strong> с полусотней готовых инструментов от сообщества. Уже ради них стоит поставить: там и поиск элементов по id, и сравнение моделей, и массовое переименование видов.</p>
    <p>Что проверить сразу:</p>
    <ul><li>вкладка не появилась - смотрите «Надстройки» в настройках Revit, надстройка могла быть заблокирована политикой безопасности;</li><li>Revit LT в пролёте, у него нет API для надстроек, и это не лечится;</li><li>корпоративный антивирус иногда съедает файлы расширений на сетевом диске, договоритесь об исключении заранее;</li><li>после обновления Revit до новой версии установщик нужно прогнать снова, иначе кнопки не появятся.</li></ul>
    <p>Ставить лучше «для текущего пользователя», без прав администратора. На машинах в организациях это обычно единственный способ поставить что-то самому.</p>
    <h2>Как устроено расширение</h2>
    <p>Вся структура интерфейса - это папки с говорящими окончаниями. Никакого XML, никакой регистрации.</p>
    <pre><code>MyTools.extension\
    Отдел.tab\
        Проверки.panel\
            Пустые номера.pushbutton\
                script.py
                icon.png
            Дубли марок.pushbutton\
                script.py
                icon.png
        Выгрузки.panel\
            Ведомость дверей.pushbutton\
                script.py</code></pre>
    <p>Читается так: расширение → вкладка на ленте → панель внутри вкладки → кнопка внутри панели. Имя папки становится подписью, <code>script.py</code> - тем, что выполнится по нажатию, <code>icon.png</code> - картинкой (png 96 на 96, прозрачный фон).</p>
    <p>Кроме <code>pushbutton</code> есть <code>pulldown</code> (выпадающий список кнопок), <code>splitbutton</code>, <code>stack</code> (три мелкие кнопки в столбик), <code>smartbutton</code>. На первом вечере они не нужны.</p>
    <p>Папку расширения кладём куда-нибудь, где её не снесёт: <code>C:\pyRevitExt\</code> или сразу на сетевой диск. Дальше в Revit: вкладка pyRevit → Settings → Custom Extension Directories → добавляем путь. Reload, и ваша вкладка на ленте.</p>
    <h2>Первый скрипт</h2>
    <p>Классическая первая задача: найти помещения с пустым номером и показать их списком, по которому можно кликнуть.</p>
    <pre><code class="language-python"># -*- coding: utf-8 -*-
__title__ = &quot;Пустые\nномера&quot;
__doc__ = &quot;Показывает помещения без заполненного номера. Модель не меняет.&quot;

from pyrevit import revit, DB, script

doc = revit.doc
out = script.get_output()

rooms = DB.FilteredElementCollector(doc) \
    .OfCategory(DB.BuiltInCategory.OST_Rooms) \
    .WhereElementIsNotElementType() \
    .ToElements()

pustye = []
for r in rooms:
    nomer = r.get_Parameter(DB.BuiltInParameter.ROOM_NUMBER).AsString()
    if not nomer or not nomer.strip():
        pustye.append(r)

out.print_md(&quot;## Помещений без номера: {}&quot;.format(len(pustye)))
for r in pustye:
    imya = r.get_Parameter(DB.BuiltInParameter.ROOM_NAME).AsString()
    out.print_md(&quot;- {} {}&quot;.format(imya, out.linkify(r.Id)))</code></pre>
    <p>Сохранили, нажали Reload на вкладке pyRevit, нажали свою кнопку. В окне вывода список помещений, и <strong>каждая строка кликабельна</strong>: клик выделяет элемент в модели. Это <code>linkify</code>, одна из вещей, ради которых стоит писать на pyRevit, а не собирать граф.</p>
    <p>Разбор по строчкам:</p>
    <ul><li><code>__title__</code> с <code>\n</code> переносит подпись на две строки, иначе кнопка растянется на пол-панели;</li><li><code>__doc__</code> становится всплывающей подсказкой, туда пишите, меняет ли скрипт модель;</li><li><code>revit.doc</code> - текущий документ, не надо доставать его из uiapp вручную;</li><li><code>FilteredElementCollector</code> - штатный способ собрать элементы через Revit API, работает быстрее переборов;</li><li><code>script.get_output()</code> даёт окно с поддержкой markdown, таблиц и ссылок.</li></ul>
    <p>Запись в модель оборачивается в транзакцию:</p>
    <pre><code class="language-python">with revit.Transaction(&quot;Заполнить номера&quot;):
    for r in pustye:
        r.get_Parameter(DB.BuiltInParameter.ROOM_NUMBER).Set(&quot;б/н&quot;)</code></pre>
    <p>Забыли транзакцию - Revit выбросит исключение о запрете модификации вне транзакции. Открыли и не закрыли - получите повисшую транзакцию и «залипшую» модель. Конструкция <code>with</code> закрывает её сама, в том числе при ошибке.</p>
    <h2>Диалоги за две строки</h2>
    <p>Модуль <code>forms</code> закрывает всё, ради чего в Dynamo приходится изворачиваться.</p>
    <pre><code class="language-python">from pyrevit import forms

variant = forms.SelectFromList.show(
    [&quot;Все помещения&quot;, &quot;Только активный вид&quot;],
    title=&quot;Что обрабатываем&quot;,
    button_name=&quot;Поехали&quot;)

if not variant:
    script.exit()      # пользователь закрыл окно - выходим тихо</code></pre>
    <p>Есть готовые окна выбора уровней, видов, семейств, файлов, прогресс-бар и <code>forms.alert</code> с кнопками. На такое в Dynamo Player рассчитывать нельзя, там сценарий линейный.</p>
    <h2>Раздача команде</h2>
    <p>Два маршрута, выбирайте по размеру команды.</p>
    <p><strong>Сетевая папка.</strong> Кладёте <code>MyTools.extension</code> на <code>\\server\BIM\pyrevit\</code>, каждый добавляет путь в Settings. Пять минут на человека, обновления прилетают всем сразу при следующем Reload. Минус: Revit стартует медленнее, а при недоступной сети кнопки просто исчезают.</p>
    <p><strong>Git-репозиторий.</strong> pyRevit умеет подключать расширение как клон репозитория и обновлять его кнопкой Update. Правки катятся коммитами, история видна, откат в одну команду. Настраивается дольше, но на команде от пяти человек окупается за месяц.</p>
    <div class="table-wrap"><table><thead><tr><th>Сколько людей</th><th>Что выбрать</th><th>Почему</th></tr></thead><tbody><tr><td>1-3</td><td>локальная папка</td><td>обновлять некого</td></tr><tr><td>4-10</td><td>сетевая папка</td><td>скорость важнее истории</td></tr><tr><td>10+</td><td>git-репозиторий</td><td>нужны версии и откат</td></tr></tbody></table></div>
    <p>Отдельно про доверие. Первую кнопку команде давайте такую, которая <strong>ничего не меняет в модели</strong>: проверка, поиск, отчёт. Человек нажимает, видит пользу, ничем не рискует. После двух-трёх таких кнопок к пишущим относятся спокойно. В обратном порядке это не работает: одна испорченная модель, и к вашей вкладке больше не подойдут.</p>
    <h2>Грабли</h2>
    <p><strong>IronPython против CPython.</strong> По умолчанию скрипты идут на IronPython 2.7. Кириллица в нём требует <code># -<em>- coding: utf-8 -</em>-</code> в первой строке, иначе получите ошибку при первом же русском тексте. Нужен Python 3 с его библиотеками (requests, pandas) - первой строкой пишется <code>#! python3</code>, и скрипт исполняется другим движком. Смешивать их в одном расширении можно, но помнить надо.</p>
    <p><strong>Reload не всё подхватывает.</strong> Правки в <code>script.py</code> подхватываются сразу, а новые папки-кнопки и переименования - только после Reload. Иногда требуется перезапуск Revit.</p>
    <p><strong>Ошибка в скрипте роняет не Revit, а окно вывода.</strong> Это хорошая новость. Трейсбек показывается прямо в окне, с номером строки. Отладка идёт быстрее, чем в Dynamo, где ошибка прячется внутри жёлтой ноды.</p>
    <p><strong>Revit API не прощает версий.</strong> Метод, работавший в 2022, в 2024 может быть переименован или помечен устаревшим. Перед переходом на новую версию прогоните все свои кнопки на тестовой модели. У меня из восьми скриптов при переезде с 2021 на 2023 сломался один, и то из-за изменения в работе с единицами измерения.</p>
    <h2>Где pyRevit не подойдёт</h2>
    <p>Он не заменяет полноценный плагин на C#. Тяжёлые вычисления на десятках тысяч элементов на IronPython идут заметно медленнее. Своя оконная форма со сложным интерфейсом, лицензирование, продажа инструмента наружу - всё это территория обычной надстройки. Разница подробно разобрана в сравнении <a href="https://bim-pulse.ru/revit-plugin-vs-dynamo.html">плагина и Dynamo</a>.</p>
    <p>Не подойдёт он и там, где IT-политика запрещает сторонние надстройки. Спорить бесполезно, лучше заранее показать службе безопасности открытый код и подписанный установщик.</p>
    <p>И не ждите, что кнопки сами по себе поменяют процессы. Инструмент ускоряет то, что уже устроено разумно. Если в модели бардак с параметрами, кнопка будет быстро и красиво обрабатывать бардак.</p>
    <h2>Три трейсбека первого вечера</h2>
    <p>Окно вывода pyRevit показывает ошибку полностью, с номером строки. Это приятнее жёлтых нод Dynamo, но читать всё равно надо уметь.</p>
    <p><strong>«Autodesk.Revit.Exceptions.InvalidOperationException: Starting a transaction from an external application running outside of API context is not allowed.»</strong></p>
    <p>Длинно, а смысл простой: вы пытаетесь менять модель без транзакции. Оберните запись в <code>with revit.Transaction("Название"):</code>. Название попадёт в список отмены Revit, поэтому пишите его по-русски и понятно: пользователь увидит эту строку, когда нажмёт Ctrl+Z.</p>
    <p><strong>«SyntaxError: Non-ASCII character '\xd0' in file script.py on line 3, but no encoding declared.»</strong></p>
    <p>Привет от IronPython 2.7. Первой строкой файла ставится <code># -<em>- coding: utf-8 -</em>-</code>, и проблема исчезает. Сам файл при этом должен быть сохранён в UTF-8: Блокнот Windows любит записать в другой кодировке, и тогда кириллица в кнопках превращается в кашу. Пишите скрипты в VS Code, там кодировка видна в строке состояния.</p>
    <p><strong>«AttributeError: 'NoneType' object has no attribute 'AsString'.»</strong></p>
    <p>Параметра у элемента нет, <code>LookupParameter</code> вернул <code>None</code>, а вы сразу дёрнули метод. На разнородной выборке это происходит постоянно: у одного семейства параметр есть, у другого нет. Проверка на <code>None</code> перед обращением стоит одну строку и экономит вечер.</p>
    <p>Отдельная история без всякого трейсбека: <strong>кнопка не появилась на ленте</strong>. Проверьте окончания папок (<code>.extension</code>, <code>.tab</code>, <code>.panel</code>, <code>.pushbutton</code>, точка обязательна), наличие <code>script.py</code> внутри и путь в Custom Extension Directories. Помогает нажатие Reload, иногда требуется перезапуск Revit.</p>
    <h2>Чек-лист перед раздачей команде</h2>
    <ul><li>Все кнопки прогнаны на трёх моделях разного размера, включая тяжёлую.</li><li>В <code>__doc__</code> каждой кнопки написано, меняет ли она модель. Это единственный текст, который пользователь прочитает, наведя курсор.</li><li>Иконки нарисованы. Кнопка без картинки выглядит сломанной, и её не нажимают.</li><li>Скрипты, меняющие модель, лежат на отдельной панели, визуально отделённой от проверок.</li><li>Проверено на чужой машине, а не только на вашей: пути, права на сетевую папку, версия Revit.</li><li>Есть человек номер два, который знает, где лежит расширение и как его откатить.</li><li>Расширение не грузится с диска, который отваливается при работе из дома через VPN.</li></ul>
    <h2>Короткие ответы на частые вопросы</h2>
    <p><strong>Сколько стоит pyRevit?</strong> Нисколько. Открытый исходный код, бесплатен и для коммерческой работы. Деньги в этой теме уходят только на ваше время и на разработку своих инструментов.</p>
    <p><strong>Что скажет служба безопасности?</strong> Обычно ничего, если прийти к ним заранее. Установщик подписан, код открыт и лежит на GitHub, расширения читаются с вашего же сетевого диска. Конфликт возникает там, где надстройку ставят молча, а потом её находит аудит.</p>
    <p><strong>Можно ли запускать Dynamo-графы кнопкой pyRevit?</strong> Технически можно через API Dynamo, но связка хрупкая и ломается при обновлениях. Проще переписать логику графа на python: то, что в Dynamo занимает 30 нод, обычно укладывается в 40 строк кода и работает быстрее.</p>
    <p><strong>Что будет при переходе на новую версию Revit?</strong> Прогоняете установщик заново, он подцепляет свежую версию. Дальше проверяете свои кнопки на тестовой модели: код на python версий не боится, а вот методы Revit API иногда меняются.</p>
    <p><strong>Dynamo теперь не нужен?</strong> Нужен. Геометрию и всё, что удобно смотреть глазами по шагам, быстрее собрать графом. pyRevit выигрывает на логике, интерфейсе и скорости запуска. В командах, где живут оба инструмента, графы обычно остаются у проектировщиков, а кнопки пишет один человек на весь отдел.</p>
    <h2>Что сделать сегодня</h2>
    <p>Поставьте pyRevit, создайте папку расширения с одной кнопкой-проверкой и скопируйте туда скрипт выше. Полчаса от нуля до работающей кнопки, из них 20 минут уйдёт на угадывание правильных имён папок.</p>
    <p>Дальше по маршруту: если ещё не собирали графы, посмотрите <a href="https://bim-pulse.ru/dynamo-pervyy-skript.html">разбор первого скрипта в Dynamo</a> - логика та же, синтаксис проще. Хорошее содержимое для первых кнопок берётся из <a href="https://bim-pulse.ru/revit-avtozapolnenie-parametrov.html">автозаполнения параметров</a> и <a href="https://bim-pulse.ru/revit-specifikacii-v-excel.html">выгрузок в Excel</a>. А про то, как вообще приживаются инструменты в команде, написано в статье про <a href="https://bim-pulse.ru/dynamo-player-dlya-komandy.html">Dynamo Player</a>.</p>
    <p>Нужен набор кнопок под ваши регламенты, с проверками модели по вашему BIM-стандарту? Напишите в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через форму на <a href="https://bim-pulse.ru/contacts.html">странице контактов</a>, обсудим объём. Что мы делаем на таких задачах, коротко в <a href="https://bim-pulse.ru/services.html">услугах</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Проверка коллизий в Navisworks: от загрузки до отчёта</title>
      <link>https://bim-pulse.ru/navisworks-proverka-kolliziy.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/navisworks-proverka-kolliziy.html</guid>
      <pubDate>Tue, 18 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Coordination</category>
      <description>Рабочий процесс по шагам: подготовка NWC, наборы поиска, правила Clash Detective, допуски, чистка ложных срабатываний, группировка и выгрузка отчёта смежникам.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-case-2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Первый прогон по модели восьмиэтажного жилого дома дал 4 812 пересечений. К вечеру в списке осталось 57 позиций, которые правда надо было решать. Остальное срезали допуски, наборы и три правила.</p>
    <p>Ниже порядок, по которому мы это делаем. Если его пропустить, Clash Detective выдаёт свалку. Отчёт на 300 страниц уходит смежникам, и через две недели его перестают открывать.</p>
    <h2>Что сделать до запуска Navisworks</h2>
    <p>Больше половины странных результатов рождается ещё в Revit.</p>
    <p><strong>Координаты.</strong> Все разделы выгружаются в одной системе. В экспортёре NWC ставим Coordinates = Shared. Если АР ушёл в Internal Origin, а ОВ в Shared, модели разъедутся на метры, и проверять будет нечего.</p>
    <p><strong>Формат.</strong> Берём NWC. Он легче IFC, тянет параметры Revit и открывается за секунды. IFC подключаем, только если смежник сидит не в Revit. Тогда состав свойств проверяем отдельно: что доехало, что потерялось по дороге (разбор в статье про <a href="https://bim-pulse.ru/ifc-export-iz-revit.html">экспорт IFC из Revit</a>).</p>
    <p><strong>Настройки экспортёра.</strong> Вкладка «Надстройки» → External Tools → Navisworks. Включаем Convert element properties и Convert element Ids. Без них в свойствах не будет ни системы, ни марки, ни номера этажа, и группировать результаты станет не по чему. Convert linked files выключаем: связи подцепим в Navisworks отдельными файлами, так их видно поимённо.</p>
    <p><strong>Имена файлов.</strong> Рабочая выгрузка живёт под постоянным именем: OV.nwc. Датированная копия (OV_2026-05-12.nwc) уезжает в архивную подпапку и в сборку не подключается. Так и история публикаций сохраняется, и пути в сборке не рвутся при каждой перевыгрузке.</p>
    <p>Дальше собираем NWF: File → Append, по файлу на раздел. NWF хранит ссылки, а не геометрию, и весит килобайты. Перевыгрузили NWC, открыли NWF, модель уже свежая. NWD пакуем только для отправки наружу.</p>
    <h2>Наборы поиска вместо выделения мышью</h2>
    <p>Selection Set запоминает конкретные элементы. Перевыгрузили раздел, и набор рассыпался.</p>
    <p>Search Set запоминает условие. После обновления моделей он собирает элементы заново, сам. Разница простая: перенастраивать проверку каждую неделю или нажать одну кнопку.</p>
    <p>Собираются наборы в Home → Sets → Manage Sets → Find Items. Слева дерево загруженных файлов, справа строки условий: Category, Property, Condition, Value.</p>
    <p>Рабочие примеры условий:</p>
    <ul><li>Воздуховоды: Category = Element, Property = Category, Condition = Contains, Value = Воздуховоды. Отдельным набором добавляем «Фитинги воздуховодов», их часто забывают.</li><li>Несущие конструкции: свойство «Несущие» (Structural) со значением Да. Так в набор не попадут перегородки.</li><li>Магистрали ВК: фильтр по параметру «Тип системы» со значением из вашего шаблона, а не по имени семейства.</li><li>Изоляция: отдельный набор, дальше объясню зачем.</li></ul>
    <p>Минимальный комплект для жилого дома: АР стены, АР перекрытия и лестницы, КР несущие, ОВ воздуховоды, ОВ трубопроводы, ВК трубопроводы, ЭОМ лотки и шинопроводы. Семь наборов закрывают процентов восемьдесят реальных проблем.</p>
    <p>Наборы живут в NWF. Один раз собрали, дальше они работают весь проект.</p>
    <h2>Тесты в Clash Detective</h2>
    <p>Home → Clash Detective → Add Test. В каждом тесте выбираем набор A и набор B, тип проверки и допуск.</p>
    <div class="table-wrap"><table><thead><tr><th>Тест</th><th>A</th><th>B</th><th>Тип</th><th>Допуск</th></tr></thead><tbody><tr><td>ОВ / КР несущие</td><td>Воздуховоды</td><td>Несущие конструкции</td><td>Hard</td><td>10 мм</td></tr><tr><td>ВК / КР несущие</td><td>Трубопроводы ВК</td><td>Несущие конструкции</td><td>Hard</td><td>10 мм</td></tr><tr><td>ОВ / ЭОМ</td><td>Воздуховоды</td><td>Лотки</td><td>Hard</td><td>25 мм</td></tr><tr><td>ОВ / ВК</td><td>Воздуховоды</td><td>Трубопроводы ВК</td><td>Hard</td><td>25 мм</td></tr><tr><td>Зоны обслуживания</td><td>Оборудование ОВ</td><td>Все инженерные</td><td>Clearance</td><td>600 мм</td></tr></tbody></table></div>
    <p>Hard ищет реальное пересечение геометрии. Clearance ищет сближение ближе заданного зазора, им проверяют проходы, зоны обслуживания щитов, отступы от кабельных трасс. Duplicates ловит дубли элементов после копирования связей, полезен раз в месяц.</p>
    <p>Допуск задаётся в поле Tolerance и работает как порог глубины пересечения. При 10 мм труба, зашедшая в стену на 6 мм, в отчёт не попадёт. Ставить 0 бессмысленно: получите тысячи касаний по стыкам плит.</p>
    <p>Название теста пишем человеческим языком: «ОВ х КР несущие, 10 мм». Оно попадёт в отчёт, и его будет читать инженер, а не робот.</p>
    <h2>Сотни ложных пересечений: что с ними делать</h2>
    <p>Первый прогон почти всегда выглядит катастрофой. Дальше идёт чистка, и она занимает больше времени, чем сама проверка.</p>
    <p><strong>Правила.</strong> Вкладка Rules внутри теста. Включаем Items in Same Layer, Items in Same Group/Block/Cell и Items with Coincident Snap Points. Три галочки убирают самопересечения внутри одной системы: врезки, тройники, отводы.</p>
    <p><strong>Своё правило под изоляцию.</strong> Изоляция воздуховода честно пересекает соседний кабельный лоток, и формально это коллизия. Практически подрядчик решит её на месте. Мы выносим изоляцию в отдельный набор и держим по ней отдельный тест с пометкой «низкий приоритет», а из основного теста исключаем.</p>
    <p><strong>Допуск по здравому смыслу.</strong> Между лотком и воздуховодом 25 мм лучше десяти: монтажные зазоры всё равно закладываются на площадке.</p>
    <p><strong>Проверка на подмену задачи.</strong> Если один тест выдал больше 500 результатов, чаще всего сломан набор, а не проект. Смотрим первые двадцать позиций. Одинаковые? Значит виновата одна системная ошибка: сдвинутый уровень, задвоенная связь, забытый черновой этаж.</p>
    <p>После чистки из 4 812 пересечений в том проекте осталось 340 сгруппированных пунктов, из них к обсуждению 57.</p>
    <h2>Группировка и статусы</h2>
    <p>Сырой список не выдают проектировщику никогда. Двенадцать пересечений одного стояка с двенадцатью перекрытиями это один вопрос, а не двенадцать.</p>
    <p>В окне Results сортируем по Grid Intersection или по имени элемента, выделяем связанные строки, правая кнопка → Group. Группе даём имя: «Стояк К1, оси 3-4, проходы через перекрытия». Дальше работаем только с группами.</p>
    <p>Статусы в Navisworks встроенные:</p>
    <ul><li><strong>New</strong> появился в текущем прогоне.</li><li><strong>Active</strong> был раньше, не решён.</li><li><strong>Reviewed</strong> просмотрен координатором, отправлен в работу.</li><li><strong>Approved</strong> согласован как допустимый, решать не нужно.</li><li><strong>Resolved</strong> закрыт, при следующем прогоне геометрия не пересекается.</li></ul>
    <p>Approved ставит только координатор и всегда с комментарием. Без комментария через месяц никто не вспомнит, почему пересечение признали нормальным.</p>
    <p>Поле Assign To заполняем по разделу, не по фамилии: раздел никуда не денется, а сотрудник может уйти в отпуск.</p>
    <h2>Как часто гонять проверку</h2>
    <p>Раз в неделю на активной стадии, по свежим публикациям смежников. Машинное время прогона от 20 минут до полутора часов, разбор результатов от часа до трёх.</p>
    <p>Полный прогон по всем тестам ставим на ночь или на выходные. Navisworks на модели в полтора гигабайта забирает всю память рабочей станции, параллельно работать не выйдет.</p>
    <p>Между полными прогонами полезен короткий: два-три теста по критичным парам разделов и только по этажу, который сейчас в работе. Пятнадцать минут, зато проблема ловится в день появления.</p>
    <p>Цифры каждого прогона складываем в таблицу: дата, сколько новых, сколько закрытых, сколько висит дольше двух недель. Три колонки показывают, движется процесс или буксует. Если новых стабильно больше, чем закрытых, настройки проверки ни при чём, вопрос к организации работы.</p>
    <h2>Три симптома сломанной проверки</h2>
    <p><strong>Тест выдал ноль коллизий, а пересечения видно глазами.</strong></p>
    <p>Виноват набор. Условие в Search Set написано по имени семейства, а семейства в модели переименовали. Откройте набор, нажмите Update и посмотрите счётчик элементов внизу окна. Пусто или подозрительно мало, значит условие бьёт мимо. Лечится переводом условия на категорию или на параметр типа системы.</p>
    <p><strong>При открытии NWF выскакивает Cannot find file.</strong></p>
    <p>Кто-то переложил или переименовал NWC, а сборка хранит путь. Все выгрузки держим в одной папке проекта под постоянными именами, датированные копии живут отдельно. Правило простое: путь в сборке настраивается один раз за проект.</p>
    <p><strong>После перевыгрузки все статусы слетели в New.</strong></p>
    <p>Так бывает, когда тест пересобрали заново вместо обновления исходников. Тесты не удаляем никогда: правим наборы, жмём Update All, потом Run. Вторая причина того же симптома: в экспорте Revit выключен Convert element Ids, и Navisworks просто не узнаёт элементы после обновления.</p>
    <h2>Отчёт, который читают</h2>
    <p>Вкладка Report. Формат HTML (Tabular) даёт таблицу с картинками, открывается в любом браузере, весит немного при разумном числе позиций.</p>
    <p>Настройки Contents: оставляем Image, Clash Point, Item 1/Item 2 (имя, категория, уровень), Status, Comments, Assigned To. Всё остальное выключаем.</p>
    <p>Include Clashes ставим на Group headers only, если групп больше сотни, иначе документ распухнет до сотен мегабайт.</p>
    <p>Для точек обзора удобнее XML или BCF (через плагин BCF Manager): смежник открывает пункт прямо в своей модели с нужным ракурсом. HTML идёт руководителю проекта, BCF рабочим инженерам.</p>
    <p>Что дописываем к отчёту вручную, одной страницей: дата, версии моделей, число проверок, статистика по разделам, десять самых дорогих пунктов. Эту сводку читают, а таблицу на 340 строк нет.</p>
    <h2>Перед отправкой отчёта смежникам</h2>
    <ul><li>Открыть отчёт самому и пролистать до конца. Битые картинки и пустые строки видно сразу.</li><li>Проверить, что получатель у каждого пункта назван разделом, а не фамилией.</li><li>Убедиться, что пункты со статусом Approved в файл не попали.</li><li>Написать в теле письма три цифры: новых, закрытых, висящих дольше двух недель.</li><li>Указать дату прогона и версии моделей, по которым считали. Без этого первым ответом будет «а у нас уже поправлено».</li></ul>
    <p>Пять пунктов, три минуты. Отчёт, отправленный без них, обычно возвращается вопросами, а не решениями.</p>
    <h2>Что спрашивают чаще всего</h2>
    <p><strong>Сколько коллизий это нормально?</strong> На жилом доме перед выдачей рабочей документации мы считаем рабочим диапазон 30-80 открытых пунктов после группировки. Ноль означает, что проверка настроена неправильно.</p>
    <p><strong>Проверять по IFC или по NWC?</strong> По NWC, когда вся команда сидит в Revit. IFC берут, если в проекте есть вторая среда, и тогда сначала проверяют качество самого IFC.</p>
    <p><strong>Manage или Freedom?</strong> Clash Detective живёт только в Manage. Freedom бесплатен, но это просмотрщик: смежникам его хватает, координатору нет.</p>
    <p><strong>Можно ли проверять модели, сделанные в разных версиях Revit?</strong> Да, NWC не тянет за собой версию исходника. Экспортёр ставится под каждую версию Revit отдельно, это единственное ограничение.</p>
    <p><strong>Кто должен гонять проверку: координатор или каждый раздел сам?</strong> Полный прогон делает координатор, иначе получите четыре разных набора правил. Инженерам полезно проверять свой раздел локально, перед публикацией.</p>
    <h2>Чего от Navisworks ждать не надо</h2>
    <p>Он не понимает норм. Расстояние от газовой трубы до электрокабеля, высота прохода под коробом, нормируемый уклон канализации: ничего этого Clash Detective не проверит. Он сравнивает объёмы, а не требования СП.</p>
    <p>Он не видит того, что не смоделировано. Зоны обслуживания оборудования, ремонтные проходы, траектория выемки фильтра существуют, если их нарисовали объёмом. Иначе щит спокойно встанет вплотную к воздуховоду, и претензий у машины не будет.</p>
    <p>Организационные проблемы ему не по зубам. Если смежник присылает модель раз в месяц и без предупреждения, проверка покажет свежие коллизии по устаревшей геометрии. Это лечится не настройками, а порядком обмена и встречами, про которые есть отдельный разбор: <a href="https://bim-pulse.ru/reglament-bim-koordinacii.html">регламент BIM-координации</a>.</p>
    <p>И он не заменяет глаз. Часть проблем видна только при обходе модели: две системы формально не пересекаются, но смонтировать вторую после первой физически невозможно.</p>
    <h2>С чего начать на своём проекте</h2>
    <p>Возьмите один этаж и один тест: ОВ против несущих конструкций, допуск 10 мм. Прогоните, почистите правилами, сгруппируйте. Полдня работы, и вы увидите, сколько в модели реальных проблем, а сколько шума.</p>
    <p>Дальше масштабируйте наборы на весь дом и ставьте проверку на расписание.</p>
    <p>Если разбираться некогда, мы настраиваем этот цикл под команду: наборы, тесты, шаблон отчёта, статусы и передача смежникам. Что входит в работу, видно в <a href="https://bim-pulse.ru/bim-coordination.html">BIM-координации</a> и <a href="https://bim-pulse.ru/services.html">составе услуг</a>.</p>
    <p>Опишите задачу в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через <a href="https://bim-pulse.ru/contacts.html">контакты</a>: скажем, что делается за неделю, а что требует изменения процесса.</p>]]></content:encoded>
    </item>
    <item>
      <title>Экспорт IFC из Revit: настройки, из-за которых всё разъезжается</title>
      <link>https://bim-pulse.ru/ifc-export-iz-revit.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/ifc-export-iz-revit.html</guid>
      <pubDate>Mon, 17 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Data</category>
      <description>Версии IFC 2x3 и IFC4, вкладки экспортёра Revit, маппинг категорий, что теряется при обмене и как проверить свой файл до отправки смежникам. Чек-лист приёмки.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-case-2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Смежник открыл наш IFC и написал: «У вас марки нет». В файле было 4 260 элементов и ни одного свойства, по которому их можно отфильтровать. Причина: выключенная галочка Export Revit property sets. Полторы минуты на исправление, три дня на переписку.</p>
    <p>IFC ломается редко целиком. Обычно он приезжает внешне нормальным, а проблемы всплывают через неделю, когда по нему уже считают.</p>
    <h2>Какую версию ставить</h2>
    <p>В экспортёре Revit версий 2020-2025 в списке лежит десяток вариантов. Реально используются два.</p>
    <p><strong>IFC 2x3 Coordination View 2.0.</strong> Рабочая лошадь для координации. Её понимают все: Navisworks, Solibri, BIMcollab, Tekla, отечественные просмотрщики. Если смежник не сказал иначе, отдавайте этот вариант.</p>
    <p><strong>IFC4 Reference View.</strong> Точнее описывает геометрию, компактнее по кривым поверхностям, лучше держит параметрические профили. Проблема одна: поддержка на приёмной стороне неровная. Один просмотрщик откроет идеально, второй потеряет часть свойств, третий покажет серые коробки.</p>
    <p>Остальные схемы под конкретные задачи: GSA Concept Design под американские требования, Basic FM HandOver под сдачу модели службе, которая будет обслуживать здание, IFC4 Design Transfer View под попытку передать редактируемую геометрию.</p>
    <p>Правило простое: версию согласуют один раз на старте, пишут в BEP и больше не меняют посреди проекта. Смена схемы в середине означает, что все ранее настроенные фильтры и правила у смежников перестанут работать.</p>
    <h2>Где лежат настройки и что в них важно</h2>
    <p>File → Export → IFC → Modify setup. Пять вкладок, и на каждой есть по паре пунктов, которые решают судьбу файла.</p>
    <div class="table-wrap"><table><thead><tr><th>Вкладка</th><th>Настройка</th><th>Что ставить</th></tr></thead><tbody><tr><td>General</td><td>IFC Version</td><td>IFC 2x3 Coordination View 2.0</td></tr><tr><td>General</td><td>Coordinate base</td><td>Shared Coordinates</td></tr><tr><td>General</td><td>Split walls and columns by level</td><td>включить, если стены сквозные</td></tr><tr><td>General</td><td>Phase to export</td><td>текущая стадия, не «Новая конструкция» по умолчанию</td></tr><tr><td>Additional Content</td><td>Export only elements visible in view</td><td>включить и подготовить отдельный 3D-вид</td></tr><tr><td>Additional Content</td><td>Export rooms in 3D views</td><td>включить, если нужны IfcSpace</td></tr><tr><td>Property Sets</td><td>Export Revit property sets</td><td>включить</td></tr><tr><td>Property Sets</td><td>Export IFC common property sets</td><td>включить</td></tr><tr><td>Property Sets</td><td>Export base quantities</td><td>включить, если по модели считают объёмы</td></tr><tr><td>Level of Detail</td><td>Tessellation level</td><td>Low для координации, High для сложных форм</td></tr><tr><td>Advanced</td><td>Store IFC GUID in element parameter</td><td>включить</td></tr></tbody></table></div>
    <p>Три пункта из таблицы объясню отдельно, потому что именно они чаще всего портят обмен.</p>
    <p><strong>Coordinate base.</strong> Здесь выбирают точку отсчёта. Shared Coordinates даёт файл, который встанет в общую сборку без сдвигов. Internal Coordinates выдаёт модель, уехавшую на координаты площадки, и смежник получает здание в трёх километрах от остальных.</p>
    <p><strong>Export only elements visible in view.</strong> Без этой галочки в файл уедет всё, включая черновые массы, временные объёмы и чужие связи. С галочкой вы контролируете состав: сделайте 3D-вид «IFC_export», настройте видимость по рабочим наборам и фильтрам, проверьте глазами. Этот вид становится частью процесса и живёт в шаблоне.</p>
    <p><strong>Store IFC GUID in element parameter.</strong> Пишет в элемент Revit тот же идентификатор, который уйдёт в IFC. Дальше замечание из BCF или из отчёта по коллизиям находится в модели поиском по GUID, а не «где-то на третьем этаже возле оси Г».</p>
    <h2>Маппинг категорий: почему всё стало IfcBuildingElementProxy</h2>
    <p>Revit сопоставляет свои категории классам IFC по таблице. Открывается она через File → Export → Options → IFC Options: слева категория Revit, справа IFC Class Name и подтип.</p>
    <p>Основная беда живёт в категории «Обобщённые модели». Всё, что смоделировано семейством этой категории, уезжает как IfcBuildingElementProxy. Для смежника это означает объект без класса: он не попадёт ни в фильтр по стенам, ни в фильтр по оборудованию, ни в расчёт объёмов. А в «Обобщённые модели» у проектировщиков попадает многое: закладные, нестандартные шахты, ограждения, часть оборудования.</p>
    <p>Лечится двумя способами.</p>
    <p>Первый: правка таблицы. Меняете класс для категории целиком, сохраняете файл маппинга и раздаёте команде. Работает, когда категория используется однородно.</p>
    <p>Второй, точнее: параметры IfcExportAs и IfcExportType. Добавляете их как общие параметры типа (текстовые), пишете значение вроде IfcCovering или IfcRailing, и конкретное семейство уезжает нужным классом независимо от категории. Мы обычно зашиваем эти параметры сразу в шаблон и в основные семейства, тогда рядовой проектировщик про них даже не вспоминает.</p>
    <p>Проверить результат просто: открыть выгруженный файл в просмотрщике и посмотреть дерево классов. Если IfcBuildingElementProxy занимает больше пяти процентов элементов, маппинг не настроен.</p>
    <h2>Что теряется при экспорте всегда</h2>
    <p>IFC переносит объём и свойства. Всё, что было логикой Revit, остаётся в Revit.</p>
    <ul><li>Параметрика семейств. Уезжает геометрия в текущем состоянии, ручки и формулы нет.</li><li>Связи и зависимости: привязка стены к уровню, соединения элементов, автоматическое подрезание.</li><li>Двумерное оформление: штриховки, аннотации, размеры, виды. Галочка Export 2D plan view elements переносит немногое и обычно мусорит.</li><li>Заливка помещений, если не включён экспорт IfcSpace. По умолчанию помещения из 3D-видов не выгружаются, и смежник не увидит ни площадей, ни границ.</li><li>Часть параметров экземпляра, если выключены Revit property sets. Тогда остаётся только базовый набор IFC.</li><li>Материалы приходят названиями, а не физическими свойствами.</li></ul>
    <p>Отдельная история со стенами и колоннами через несколько этажей. Без Split walls and columns by level элемент уедет одним объектом на всю высоту, и любая поэтажная выборка у смежника поедет. Считать объёмы по этажам по такому файлу нельзя.</p>
    <h2>Проверка перед отправкой: 10 минут</h2>
    <p>Экспорт без проверки это отправка вслепую. Минимальный чек-лист, который экономит дни переписки.</p>
    <ol><li>Открыть свой же IFC в стороннем просмотрщике. Не в Revit, он покажет слишком лояльно. Подходит любой бесплатный просмотрщик IFC или Navisworks с плагином.</li><li>Сверить число элементов. В Revit спецификация с фильтром по тому же 3D-виду, в просмотрщике счётчик объектов. Расхождение больше пары процентов означает, что в файл уехало лишнее или недоехало нужное.</li><li>Ткнуть в пять случайных элементов разных категорий и посмотреть свойства. Марка, тип, уровень, материал на месте? Если пусто, вернитесь на вкладку Property Sets.</li><li>Проверить точку привязки. Совместите IFC с моделью АР или с топосъёмкой. Сдвиг виден сразу.</li><li>Посмотреть дерево уровней. Элементы должны сидеть на своих этажах, а не в разделе «Без уровня».</li><li>Сравнить объёмы по трём позициям: бетон, стены, воздуховоды. Расхождение с ведомостью Revit больше пяти процентов это повод разбираться, а не отправлять.</li></ol>
    <p>Пункты 2 и 6 автоматизируются: выгрузка свойств из IFC в таблицу и сверка со спецификацией Revit делается скриптом за пару секунд. На объёмах от десяти файлов в месяц это окупается сразу.</p>
    <p>Сам чек-лист стоит записать одной страницей и положить рядом с сетапом экспорта. Люди меняются, а привычка проверять держится на памяти конкретного человека ровно до его отпуска.</p>
    <p>Если выгрузок много, заведите лог: дата, версия модели, кто выгружал, что менялось в настройках. Три строки на выгрузку. Зато вопрос «откуда взялся этот файл» закрывается за минуту, а не за полдня переписки.</p>
    <h2>Четыре жалобы смежников и что за ними стоит</h2>
    <p><strong>«Файл пустой, ничего не видно».</strong> Экспорт шёл с галочкой Export only elements visible in view, а вид оказался с фильтрами или подрезкой. Состав вида проверяют до выгрузки, а не после звонка.</p>
    <p><strong>«Ваш дом стоит в трёх километрах от нашего».</strong> В Coordinate base стояли Internal Coordinates или Survey Point. Ставим Shared Coordinates и отправляем заново.</p>
    <p><strong>«У элементов нет ни одного свойства».</strong> Выключены Revit property sets. Включить и проверить на пяти элементах перед отправкой.</p>
    <p><strong>«Двери у вас не двери, а какие-то прокси».</strong> Семейства сделаны в категории обобщённых моделей. Правится таблицей маппинга или параметром IfcExportAs.</p>
    <p>Пятая жалоба стоит особняком: «объёмы в вашем IFC не сходятся с ведомостью». Обычно виноваты выключенные base quantities или сквозные стены без разбивки по этажам. Проверяется на трёх позициях за пять минут.</p>
    <h2>Что приложить к файлу</h2>
    <ul><li>Схему и версию: IFC 2x3 CV 2.0 или IFC4 RV.</li><li>Дату выгрузки и версию исходной модели.</li><li>Имя вида, из которого шёл экспорт.</li><li>Чего в файле нет намеренно: черновая геометрия, временные конструкции, чужие связи.</li></ul>
    <p>Четыре строки в письме снимают половину вопросов. Смежник сразу видит, что перед ним, и не тратит день на выяснение, у кого в цепочке потерялись свойства.</p>
    <h2>Что смотреть в чужом IFC на приёме</h2>
    <p>Входной контроль занимает те же десять минут и снимает половину будущих претензий.</p>
    <ul><li>Схема и версия совпадают с тем, о чём договаривались на старте.</li><li>Файл встаёт в общую сборку без ручного сдвига.</li><li>Доля IfcBuildingElementProxy. Больше пяти процентов, и ваши фильтры работать не будут.</li><li>Есть свойства, по которым вы собираетесь группировать коллизии и считать объёмы.</li><li>Уровни на месте, элементы сидят на своих этажах.</li><li>Не приехала чужая черновая геометрия и связи соседних разделов.</li></ul>
    <p>Файл, не прошедший контроль, возвращается автору в тот же день с перечнем замечаний. Принимать «как есть, потом разберёмся» выходит дороже: через месяц по этому файлу уже посчитают объёмы и выпустят задание.</p>
    <h2>Чего от IFC ждать не надо</h2>
    <p>Он не заменяет исходную модель. IFC годится для координации, проверки, подсчёта и передачи заказчику. Проектировать в нём и править его как родной файл нельзя: Design Transfer View обещает больше, чем даёт на практике.</p>
    <p>Круговой обмен без потерь не выйдет. Экспорт из Revit, правка у смежника, импорт обратно: каша почти гарантирована. Работают иначе. Каждый ведёт свой раздел в своей программе, а IFC служит для чтения, проверки и подсчёта.</p>
    <p>Он не гарантирует одинаковой картинки в разных программах. Один и тот же файл в двух просмотрщиках может показать разное число объектов, потому что каждый по-своему разбирает вложенные сборки. Ошибки экспорта тут нет. Держите это в голове, когда спорите о числах со смежником.</p>
    <p>Плохую модель формат не лечит. Кривые уровни, элементы в чужих категориях, мусор из связанных DWG уедут в IFC ровно такими же. Сначала порядок в модели, потом обмен, иначе вы аккуратно упакуете хаос.</p>
    <h2>Коротко по частым вопросам</h2>
    <p><strong>IFC или NWC для координации?</strong> NWC, если все работают в Revit: он легче и точнее тянет параметры. IFC нужен, когда в проекте больше одной среды проектирования.</p>
    <p><strong>Можно ли по IFC считать спецификации?</strong> Можно, при включённых property sets и base quantities. Выгрузка свойств в таблицу и сверка с ведомостью Revit автоматизируется скриптом за час работы.</p>
    <p><strong>Почему один файл в разных программах показывает разное число объектов?</strong> Разные правила разбора вложенных сборок. Считайте в одной программе и зафиксируйте её в договорённостях по проекту.</p>
    <p><strong>Связи выгружать отдельными файлами?</strong> Да. Export linked files as separate IFCs даёт по файлу на раздел, и смежник обновляет их поштучно. Единый файл со всеми связями неудобно перевыпускать.</p>
    <p><strong>Кто отвечает за выгрузку: автор раздела или BIM-специалист?</strong> Выгружает автор, проверяет координатор. Схема, где за всю компанию выгружает один человек, ломается на первом же его отпуске.</p>
    <p><strong>Как часто отдавать IFC смежникам?</strong> По тому же графику, что и остальные публикации: раз в неделю на активной стадии. Внеплановые выгрузки плодят версии, о которых никто не помнит.</p>
    <h2>Следующий шаг</h2>
    <p>Сделайте одну вещь на ближайшей выдаче: экспортируйте по чек-листу выше и откройте свой файл сторонним просмотрщиком до отправки. За десять минут вы увидите, что именно получает смежник. Обычно это отрезвляет.</p>
    <p>Дальше настройте один общий сетап экспорта на команду, зашейте IfcExportAs в шаблон и опишите правила в BIM-стандарте. Как это стыкуется с проверкой моделей, разобрано в статье про <a href="https://bim-pulse.ru/navisworks-proverka-kolliziy.html">проверку коллизий в Navisworks</a>, а хранение и версии файлов в статье про <a href="https://bim-pulse.ru/cde-sreda-obshchih-dannyh.html">среду общих данных</a>.</p>
    <p>Мы настраиваем экспорт, маппинг и автопроверку выгрузок под конкретный набор смежников: состав работ в <a href="https://bim-pulse.ru/services.html">услугах</a>, примеры в <a href="https://bim-pulse.ru/cases.html">кейсах</a>.</p>
    <p>Пришлите пробный IFC в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или напишите через <a href="https://bim-pulse.ru/contacts.html">контакты</a>. Посмотрим файл и скажем, что в нём поедет у смежника.</p>]]></content:encoded>
    </item>
    <item>
      <title>Dynamo Player: как отдать скрипт команде и не пожалеть</title>
      <link>https://bim-pulse.ru/dynamo-player-dlya-komandy.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/dynamo-player-dlya-komandy.html</guid>
      <pubDate>Sun, 16 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Automation</category>
      <description>Готовим граф к передаче: входные параметры, папки на сервере, описание и иконка. Плюс список причин, по которым скрипты в командах не приживаются, и что делать.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/Bim2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>Скрипт работает у автора. У остальных пяти человек в отделе не работает: у одного не открывается, у второго открывается и падает, третий вообще не знает, что скрипт существует. Знакомая история?</p>
    <p>Dynamo Player решает техническую часть проблемы. Пользователь жмёт треугольник, вводит два значения, получает результат. Ни холста, ни нод, ни возможности что-нибудь случайно оторвать. Организационную часть Player не решает, и об этом во второй половине.</p>
    <h2>Что такое Player и чего он не умеет</h2>
    <p>Кнопка на вкладке «Управление», рядом с самим Dynamo. Открывается панель со списком графов из указанной папки. Каждый граф - строка с названием, описанием и кнопкой запуска.</p>
    <p>Player запускает .dyn без открытия среды Dynamo, поэтому стартует за пару секунд вместо двадцати. Показывает поля ввода, которые вы разрешили. Отдаёт результат в модель.</p>
    <p>Чего он не делает:</p>
    <ul><li>не показывает предупреждения нод (жёлтые узлы в Player невидимы);</li><li>не даёт откатить частично выполненный граф;</li><li>не умеет диалоговых сценариев «сначала выбери одно, потом покажу второе»;</li><li>при ошибке пишет что-то невнятное вроде «Graph has issues», без указания места.</li></ul>
    <p>Последнее означает: отлаживать всё равно придётся в Dynamo. Player - витрина, а не среда разработки.</p>
    <h2>Подготовка графа: пять шагов</h2>
    <p><strong>1. Режим запуска Manual.</strong> Открываете граф, переключаете Run на Manual, сохраняете. Граф, сохранённый в Automatic, в Player ведёт себя непредсказуемо.</p>
    <p><strong>2. Помечаем входы.</strong> Правый клик по ноде → <strong>Is Input</strong>. Только помеченные ноды попадут в панель Player. Поддерживаются не все типы: Number Slider, Integer Slider, String, Boolean, File Path, Directory Path, Select Model Element и Select Model Elements. Code Block входом быть не может, выпадающий список Categories - тоже, и это первое разочарование при подготовке.</p>
    <p>Обходной путь для выбора категории: строковый вход с точным именем плюс <code>Category.ByName</code> внутри графа. Пользователь пишет «Двери», граф разбирается сам. Работает, но требует от человека точного написания, поэтому в описании обязательно перечислите допустимые варианты.</p>
    <p><strong>3. Переименовываем входные ноды.</strong> Имя ноды становится подписью поля. <code>String</code> в панели выглядит как <code>String</code>, и человек не понимает, что туда писать. Двойной клик по заголовку ноды, пишем по-человечески: <code>Имя параметра (например, Обозначение)</code>, <code>Префикс номера</code>, <code>Куда сохранить отчёт</code>.</p>
    <p><strong>4. Заполняем свойства графа.</strong> В Dynamo: «Файл» → «Свойства графа». Там имя, описание, автор и картинка-превью. Описание видно прямо в панели Player, и это единственная документация, которую пользователь реально прочитает. Пишите в нём не «скрипт для нумерации», а что произойдёт с моделью: «Перенумерует все помещения на активном виде. Старые номера будут перезаписаны. Отмена через Ctrl+Z».</p>
    <p><strong>5. Выход тоже помечаем.</strong> Правый клик → <strong>Is Output</strong> на ноде <code>Watch</code> со сводкой. Пользователь увидит «обработано 307 элементов» и поймёт, что скрипт отработал. Без этого он видит пустую панель и не понимает, случилось ли что-нибудь.</p>
    <h2>Папки, версии, пакеты</h2>
    <p>В панели Player есть шестерёнка: там задаётся путь к папке с графами. Кладите её на сетевой диск, к которому у всех есть доступ на чтение: <code>\\server\BIM\dynamo\</code>. Запись оставьте себе.</p>
    <p>Внутри разложите по подпапкам. Player показывает их вкладками, и это единственная навигация, которая у вас есть:</p>
    <div class="table-wrap"><table><thead><tr><th>Папка</th><th>Что внутри</th><th>Кто пользуется</th></tr></thead><tbody><tr><td><code>01_Проверки</code></td><td>графы, которые ничего не пишут, только считают и показывают</td><td>все</td></tr><tr><td><code>02_Заполнение</code></td><td>параметры, обозначения, нумерация</td><td>АР, КР</td></tr><tr><td><code>03_Выгрузки</code></td><td>Excel, отчёты, ведомости</td><td>ГИП, сметчик</td></tr><tr><td><code>_archive</code></td><td>старые версии</td><td>никто, но лежат</td></tr></tbody></table></div>
    <p>Версию пишите в имени файла: <code>Нумерация_помещений_v4.dyn</code>. Не «финал», не «новый», не «финал2». Когда у половины команды Revit 2022, а у половины 2024, добавляйте версию Revit в имя папки, потому что граф с нодами из свежего ядра в старом Dynamo просто не откроется.</p>
    <p><strong>Пакеты - главная техническая причина «у меня не запускается».</strong> Если граф использует Clockwork, archi-lab или Rhythm, а у пользователя их нет, Player покажет ошибку. Два решения. Первое: собирать графы для команды только на нодах ядра, даже если это на 20% дольше. Второе: положить папку packages на тот же сетевой диск и прописать всем путь в настройках Dynamo («Параметры» → «Управление путями к узлам и пакетам»). Второй вариант надёжнее, но требует один раз пройтись по машинам.</p>
    <h2>Инструкция на одну страницу</h2>
    <p>Пять пунктов, не больше. Люди не читают документацию длиннее экрана, и это не их недостаток.</p>
    <ol><li>Что делает скрипт, одной фразой.</li><li>Что должно быть открыто до запуска: какой вид, какая модель, синхронизирована ли.</li><li>Что вводить в поля, с примером реального значения.</li><li>Что появится в результате и как это проверить.</li><li>К кому идти, когда сломалось. С именем, а не «в отдел BIM».</li></ol>
    <p>Держите инструкцию рядом с графом, в той же папке, в PDF. Ссылку на неё вставьте в описание графа.</p>
    <h2>Почему внедрение проваливается</h2>
    <p>Технически всё готово, а пользуются двое из шести. Причины из практики, по частоте.</p>
    <p><strong>Скрипт решает не ту задачу.</strong> Автор автоматизировал то, что раздражало лично его. У остальных болит другое. Лечится наблюдением: сядьте рядом с проектировщиком на полчаса и посмотрите, что он делает руками чаще всего.</p>
    <p><strong>О скрипте никто не знает.</strong> Разослали письмо, все прочитали и забыли через день. Работает только показ: 15 минут на планёрке, на боевой модели, с реальным результатом на экране.</p>
    <p><strong>Один раз испортил модель.</strong> Самая тяжёлая причина. Скрипт что-то перезаписал, человек потерял час на восстановление, и больше он к Player не подойдёт никогда. Доверие возвращается месяцами. Профилактика: первые версии графов делайте в режиме «только отчёт», пусть они показывают, что собираются изменить, и ничего не пишут.</p>
    <p><strong>Автор ушёл в отпуск.</strong> Скрипт сломался после обновления Revit, чинить некому, команда вернулась к ручной работе. Назначьте владельца библиотеки скриптов и держите вторым человеком того, кто хотя бы умеет открыть граф и посмотреть на красную ноду.</p>
    <p><strong>Слишком много скриптов сразу.</strong> Выкатили двенадцать штук, люди растерялись и не стали разбираться ни в одном. Давайте по одному, раз в две недели, начиная с самого болезненного.</p>
    <h2>Где это не работает</h2>
    <p>Player не годится для операций, требующих выбора по ходу дела. Диалоги, подтверждения, разветвления сценария - для этого нужен либо <code>forms</code> из pyRevit, либо полноценный плагин. Разница между подходами разобрана в статье про <a href="https://bim-pulse.ru/revit-plugin-vs-dynamo.html">плагин и Dynamo</a>.</p>
    <p>Тяжёлые графы в Player запускать неудобно. Пять минут молчащего интерфейса без прогресс-бара человек воспринимает как зависание и жмёт Escape посреди транзакции. Всё, что дольше минуты, лучше оформлять отдельной процедурой с явным предупреждением.</p>
    <p>И не ждите, что Player заменит обучение. Он снижает порог, но не отменяет понимания того, что скрипт делает с моделью. Человек, который не знает разницы между параметром типа и экземпляра, нажмёт кнопку и получит сорок изменённых дверей вместо одной.</p>
    <h2>Три звонка, которые вам поступят</h2>
    <p><strong>«Пишет Graph has issues, и всё».</strong></p>
    <p>Player не показывает, что именно сломалось. Открывайте этот же граф в Dynamo и смотрите на красные ноды. Три частые причины: не установлен пакет, граф сохранён в другой версии Dynamo, входная нода помечена как Is Input, но её тип Player не поддерживает. Последнее коварно тем, что у автора всё работает: он-то запускает из среды.</p>
    <p><strong>«Кнопка нажалась, а ничего не произошло».</strong></p>
    <p>Скрипт отработал на активном виде, а человек стоял на 3D-виде или на листе. Либо выборка пуста, потому что нужные элементы лежат на другом уровне. Лечится двумя способами: ставить в граф проверку контекста с внятным сообщением («откройте план этажа») и обязательно выводить в Is Output количество обработанных элементов. Пустой результат должен выглядеть как «обработано 0», а не как тишина.</p>
    <p><strong>«Он мне всё перезаписал».</strong></p>
    <p>Самый неприятный. Пользователь запустил граф, не прочитав описание, и скрипт перебил заполненные вручную значения. Виноват не пользователь. В описании графа первой строкой должно стоять, что будет перезаписано, а сам граф по возможности должен трогать только пустые поля. Как отфильтровать заполненные, разобрано в статье про <a href="https://bim-pulse.ru/revit-avtozapolnenie-parametrov.html">автозаполнение параметров</a>.</p>
    <h2>Чек-лист перед раздачей</h2>
    <ul><li>Граф отработал на трёх разных моделях, а не только на той, где писался.</li><li>Имена входных полей понятны человеку, который граф не писал. Проверяется просто: покажите панель коллеге и спросите, что он туда впишет.</li><li>В описании сказано, что меняется в модели и что делать при ошибке.</li><li>Скрипт не падает на пустой выборке и на модели без нужной категории.</li><li>Пакетов нет. Если есть, путь к общей папке пакетов прописан у всех, и это проверено на чужой машине, а не на вашей.</li><li>Есть версия в имени файла и предыдущая копия в <code>_archive</code>.</li><li>Кто-то из команды, кроме вас, знает, где лежат исходники и как их открыть.</li></ul>
    <h2>Короткие ответы на частые вопросы</h2>
    <p><strong>Player входит в Revit или его надо покупать?</strong> Входит, начиная с Revit 2017, отдельная лицензия не нужна. Это часть Dynamo for Revit.</p>
    <p><strong>Можно ли запускать графы по расписанию, ночью?</strong> Через Player нет, он требует открытого Revit и живого человека у кнопки. Пакетная обработка моделей делается другими средствами: Design Automation или обвязка на pyRevit с журналами Revit. Тема отдельная и заметно дороже в настройке.</p>
    <p><strong>Как запретить части команды пользоваться скриптами?</strong> Правами на папку. Player видит только то, что доступно пользователю на чтение. Разложите графы по подпапкам под разные отделы и раздайте доступ по группам.</p>
    <p><strong>Работает ли Player в Revit LT?</strong> Нет. В LT нет Dynamo и API для надстроек, и обойти это нечем.</p>
    <p><strong>Сколько графов нормально держать в библиотеке?</strong> У команд, которые я видел вблизи, живут 8-15 штук. Всё, что сверху, обычно лежит мёртвым грузом: люди помнят десяток инструментов, дальше начинают искать, а поиска в Player нет.</p>
    <h2>Следующий шаг</h2>
    <p>Возьмите один готовый граф. Пометьте входы, переименуйте ноды, напишите описание в свойствах, положите в папку на сервере. Покажите одному коллеге, не всей команде. Посмотрите, где он споткнётся: это и будет ваш список правок.</p>
    <p>Графа пока нет? Соберите первый по <a href="https://bim-pulse.ru/dynamo-pervyy-skript.html">пошаговому разбору</a>. Хорошие кандидаты на раздачу команде: <a href="https://bim-pulse.ru/revit-avtozapolnenie-parametrov.html">автозаполнение параметров</a> и <a href="https://bim-pulse.ru/revit-specifikacii-v-excel.html">выгрузки в Excel</a>. Когда библиотека перерастёт два десятка графов, пора смотреть в сторону <a href="https://bim-pulse.ru/pyrevit-pervye-knopki.html">собственных кнопок на pyRevit</a>.</p>
    <p>Хотите собрать библиотеку скриптов для отдела и не тратить на это полгода? Напишите в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через форму на <a href="https://bim-pulse.ru/contacts.html">странице контактов</a>. Что мы делаем на таких внедрениях, есть в <a href="https://bim-pulse.ru/services.html">услугах</a>, частые вопросы собраны в <a href="https://bim-pulse.ru/faq.html">FAQ</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Первый скрипт в Dynamo: нумерация помещений по шагам</title>
      <link>https://bim-pulse.ru/dynamo-pervyy-skript.html</link>
      <guid isPermaLink="true">https://bim-pulse.ru/dynamo-pervyy-skript.html</guid>
      <pubDate>Sat, 15 Aug 2026 09:00:00 +0500</pubDate>
      <author>bimaip@yandex.ru (BIM Pulse Ufa)</author>
      <category>Dynamo</category>
      <description>Собираем первый рабочий граф в Dynamo на живой задаче: нумерация помещений. Ноды, порты, уровни списков и две ловушки, на которых спотыкаются все новички.</description>
      <enclosure url="https://bim-pulse.ru/rss-covers/bim-model-2.jpg" type="image/jpeg" length="0"/>
      <content:encoded><![CDATA[<p>212 помещений в трёхсекционном жилом доме. Их нужно перенумеровать после того, как планировки поехали: секция, этаж, порядок по часовой стрелке. Руками это часа три, если не отвлекаться и не сбиться на седьмом этаже. Скрипт делает то же самое за 40 секунд, и большую часть этого времени Revit просто перерисовывает марки.</p>
    <p>Разберём такой скрипт от пустого холста до записанного параметра. Не «обзор возможностей», а конкретная сборка: какие ноды, в какой порт, что сломается и почему.</p>
    <h2>Почему именно нумерация</h2>
    <p>Первую автоматизацию выбирают неправильно. Берут что-нибудь красивое: расстановку по кривой, генеративный фасад, разбор IFC. Потом две недели ковыряются, бросают и делают вывод, что Dynamo «не для реальных задач».</p>
    <p>Нумерация помещений подходит идеально по трём причинам. Она вам действительно нужна. Результат виден глазами сразу, без запуска спецификаций. И она содержит почти все базовые кирпичи: сбор элементов, чтение параметра, сортировка, группировка, запись обратно в модель.</p>
    <p>Версии. У меня под рукой Revit 2022 (Dynamo 2.12), 2023 и 2024 (Dynamo 2.17 и выше). Всё, что ниже, работает во всех трёх без пакетов из Package Manager. Это важно: скрипт без внешних пакетов вы потом отдадите коллеге, и у него он тоже запустится.</p>
    <h2>Открываем и настраиваем</h2>
    <p>Вкладка «Управление» (Manage) → Dynamo. Открывается стартовое окно, жмём New.</p>
    <p>Первое, что нужно сделать до всего остального: переключить режим запуска. Внизу левой панели есть выпадающий список Run: Automatic / Manual / Periodic. По умолчанию стоит <strong>Automatic</strong>, и это единственная настройка, из-за которой новички теряют модели. В автоматическом режиме граф пересчитывается на каждое ваше действие. Подключили ноду записи параметра, случайно задели значение, и Dynamo уже записал что-то в 212 помещений. Ctrl+Z в Revit это откатывает, но не всегда так, как вы ждёте.</p>
    <p>Ставьте Manual. Запуск только по кнопке Run, когда вы к нему готовы.</p>
    <h2>Сборка графа</h2>
    <p>Ноды ищутся двойным кликом по пустому холсту. Начинаем.</p>
    <p><strong>1. Categories.</strong> Выпадающий список всех категорий Revit. Выбираем «Помещения» (Rooms). Выход у ноды один, называется Category.</p>
    <p><strong>2. All Elements of Category.</strong> Вход Category соединяем с выходом предыдущей ноды. На выходе получаем список всех помещений в модели. Раскройте превью под нодой: там должно быть 212 строк вида <code>Room</code>. Если ноль, значит вы в файле, где помещений нет, или они в связанной модели (об этом ниже).</p>
    <p><strong>3. Element.GetParameterValueByName.</strong> Здесь начинается работа с данными. Вход element берёт наш список, вход parameterName ждёт строку. Строку даём через ноду String, вписываем туда <code>Уровень</code>. Именно так, как параметр называется в вашей локализации Revit, с той же буквой и без лишних пробелов. Русский Revit ждёт русское имя, английский - Level. Это причина примерно половины пустых выходов на первом часу знакомства с Dynamo.</p>
    <p><strong>4. List.GroupByKey.</strong> Раскладывает помещения по уровням. Вход list - помещения, вход keys - уровни с предыдущей ноды. На выходе два порта: groups (списки помещений по этажам) и uniqueKeys (сами уровни). Нам нужен groups.</p>
    <p><strong>5. Сортировка внутри этажа.</strong> Помещения на этаже лежат в том порядке, в каком их создавал проектировщик, то есть в случайном. Сортируем по координате. Берём <code>Element.GetLocation</code> (в Dynamo 2.13+ это ядро, в 2.12 придётся взять Clockwork или маленький Python-узел), из точки достаём <code>Point.X</code> и <code>Point.Y</code>, дальше <code>List.SortByKey</code>.</p>
    <p>Честно: сортировка «по часовой стрелке» через координаты работает только на регулярных планировках. На доме-башне с ядром посередине я в итоге сортировал по углу от центра секции. Это отдельная история и лишние полчаса.</p>
    <p><strong>6. Code Block с номерами.</strong> Двойной клик, пишем:</p>
    <pre><code>&quot;К&quot; + (1..List.Count(rooms));</code></pre>
    <p>Code Block - это текстовое поле для языка DesignScript. Он умеет то, ради чего иначе пришлось бы ставить пять нод. Запись <code>1..25</code> даёт диапазон чисел, <code>1..#25</code> - ровно 25 значений, <code>"К" + число</code> склеивает строку.</p>
    <p><strong>7. Element.SetParameterByName.</strong> Финал. Вход element - отсортированный список, parameterName - строка <code>Номер</code>, value - наши номера.</p>
    <h2>Порты, связи и лейсинг</h2>
    <p>Три вещи, которые в учебниках проговаривают вскользь, а на практике съедают вечер.</p>
    <p><strong>Цвет и направление.</strong> Выход всегда справа, вход слева. Тянуть можно в любую сторону, но связь пойдёт только выход → вход. Порт, подсвеченный красным после запуска, означает не «ошибку соединения», а ошибку внутри ноды: наведите курсор, там текст предупреждения.</p>
    <p><strong>Лейсинг (Lacing).</strong> Правый клик по ноде → Lacing. Три варианта: Shortest, Longest, Cross Product. Разница видна, когда на входах списки разной длины. Подаёте 212 помещений и одно имя параметра: при Shortest обработается одно помещение, при Longest все 212. Значение по умолчанию Auto обычно угадывает, но не всегда. Пустой результат при живых входных данных - первый подозреваемый именно лейсинг.</p>
    <p><strong>Уровни списков (List Levels).</strong> У входного порта есть маленькая стрелка <code>&gt;</code>, за ней настройка @L1, @L2, @L3. После GroupByKey у вас список списков: этажи, внутри этажей помещения. Нода, которая ждёт плоский список, на вложенном ведёт себя странно. Иногда ошибка, иногда молча берёт первый уровень. Переключение на @L2 заставляет ноду работать с каждым подсписком отдельно. Разобравшись с этим один раз, вы закрываете половину вопросов «почему у меня не считается».</p>
    <h2>Ловушка, о которой не пишут</h2>
    <p>Запускаем. Dynamo желтеет, в предупреждениях висит что-то про duplicate number, а в модели вместо <code>К1, К2, К3</code> появились <code>К1, К2 2, К3 3</code>.</p>
    <p>Причина простая. <strong>Номер помещения в Revit уникален в пределах проекта.</strong> Пока вы пишете новые номера, старые ещё на месте. Скрипт добирается до пятого помещения, пытается записать <code>К5</code>, а <code>К5</code> уже занят помещением на другом этаже. Revit не ругается на весь скрипт, он тихо дописывает суффикс.</p>
    <p>Лечится в два прохода. Первый: пишем всем помещениям временные значения, которых в проекте гарантированно нет.</p>
    <pre><code>// Code Block, проход 1: временные номера
&quot;tmp_&quot; + (1..List.Count(rooms));</code></pre>
    <p>Второй проход пишет уже финальные. Тот же граф, только строка префикса другая, а перед ним нода записи временных значений. В моей практике это две ветки одного графа с ручным запуском по очереди. Некрасиво, зато работает и не требует объяснений при передаче коллеге.</p>
    <p>Вторая мелочь того же рода: помещения без границ (Not Enclosed) и незамещённые (Redundant) тоже попадают в выборку. Их лучше отфильтровать через <code>Element.GetParameterValueByName</code> по площади и <code>List.FilterByBoolMask</code>, иначе нумерация поедет на пустых объектах.</p>
    <h2>Проверка результата</h2>
    <p>Скрипт отработал, но верить ему на слово нельзя. Три способа убедиться, что всё встало правильно:</p>
    <ul><li>спецификация помещений, отсортированная по номеру, глазами по 20 строкам с каждого этажа;</li><li>фильтр вида, подсвечивающий помещения с пустым номером красным (10 минут настройки, дальше пользуетесь всегда);</li><li>обратный прогон Dynamo: собрать номера и прогнать через <code>List.Count</code> и <code>List.UniqueItems</code> - если числа разошлись, где-то дубли.</li></ul>
    <p>Третий вариант я держу отдельным маленьким графом-проверялкой. Он ничего не пишет в модель, только считает. Полезно давать его вместе с основным скриптом.</p>
    <h2>Где это не работает</h2>
    <p>Скрипт не тронет помещения в <strong>связанной модели</strong>. <code>All Elements of Category</code> собирает элементы только текущего документа. Для связей нужен другой набор нод и права на запись, которых у вас в чужом файле нет.</p>
    <p>Не сработает и на файлах, где номер помещения заполняется из внешней таблицы через плагин заказчика: скрипт запишет своё, плагин при следующей синхронизации перезапишет обратно. Такое встречалось на объекте с BIM-регламентом от техзаказчика, там нумерацию отдавали их системе.</p>
    <p>Не ждите, что первый граф будет работать вечно. Обновили Revit до следующей версии - проверьте. Ноды ядра стабильны, но параметры проекта и шаблоны меняются чаще, чем сам Dynamo.</p>
    <p>И честно про экономию времени. Написание этого скрипта с нуля новичком занимает от четырёх часов до двух дней. На одном доме он не окупается. Окупается на пятом, когда его запускают за минуту и без раздумий.</p>
    <h2>Три сообщения, которые вы точно увидите</h2>
    <p>Ошибки в Dynamo выглядят одинаково: нода желтеет, под ней текст. Текст английский и не всегда честный. Разберём три самых частых.</p>
    <p><strong>«Warning: Element.GetParameterValueByName operation failed. The parameter name is not found.»</strong></p>
    <p>Перевод на человеческий: параметра с таким именем у элемента нет. В девяти случаях из десяти виновата не модель, а строка на входе. Лишний пробел в конце, латинская <code>C</code> вместо русской, «Номер помещения» вместо «Номер». Лечится за минуту: выделите элемент в Revit, откройте свойства, скопируйте имя параметра оттуда буква в букву. Второй по частоте виновник - локализация: граф писали в русском Revit, запускают в английском.</p>
    <p><strong>«Warning: Element.SetParameterByName operation failed. The parameter is read-only.»</strong></p>
    <p>Вы пытаетесь писать в поле, которое считает сам Revit. Площадь помещения, объём, периметр, отметка уровня. Список read-only параметров нигде не опубликован полностью, узнаётся опытом. Если запись нужна принципиально, значение кладут в отдельный общий параметр и уже его выводят в спецификацию.</p>
    <p><strong>«Dereferencing a non-pointer.»</strong></p>
    <p>Самое загадочное сообщение Dynamo и самое частое у новичков. Означает примерно следующее: нода ждала один элемент, а получила список, или наоборот. Иногда в цепочку пробрался <code>null</code> от помещения без границ. Порядок разбора такой: раскрыть превью у каждой ноды слева направо, найти первую, где вместо данных пустота, и смотреть уровни списков у её входа. В 80% случаев проблема решается переключением порта на @L2 или вставкой <code>List.Flatten</code>.</p>
    <p>Отдельная разновидность беды: ошибок нет, предупреждений нет, а в модели ничего не изменилось. Проверьте режим запуска. Manual требует нажать Run, и первое время об этом забывают все.</p>
    <h2>Что проверить, прежде чем показывать граф коллеге</h2>
    <ul><li>Граф сохранён в режиме Manual.</li><li>Все ноды подписаны по-русски: через месяц вы сами не вспомните, что делает <code>Code Block</code> в углу холста.</li><li>Пакеты не используются вообще. Если без Clockwork не обошлось, напишите это в описании графа.</li><li>На пустой выборке скрипт не падает, а сообщает «обработано 0 элементов». Это отдельная ветка с <code>List.Count</code>, минут на десять работы, зато пользователь понимает, что произошло.</li><li>Файл лежит не на вашем рабочем столе.</li><li>Вы прогнали граф дважды подряд на одной модели и результат не изменился. Скрипт, который при повторном запуске дописывает префикс поверх префикса, вернётся к вам вечером пятницы.</li></ul>
    <h2>Короткие ответы на частые вопросы</h2>
    <p><strong>Нужно ли уметь программировать?</strong> Для первого графа нет. Уровня «понимаю, что такое список и цикл» достаточно. Python понадобится, когда захочется условий сложнее двух ветвей.</p>
    <p><strong>Скрипт может испортить модель?</strong> Может. Он делает ровно то, что написано, включая запись не туда. Отсюда правило про копию файла и Manual-режим. Ctrl+Z после запуска откатывает всё изменённое графом одним шагом, но только пока вы не сделали в Revit ничего другого.</p>
    <p><strong>Почему у коллеги мой .dyn не открывается?</strong> Три причины по частоте: у него старше версия Dynamo (граф из 2.17 в 2.12 не откроется), нет установленного пакета, другая локализация Revit и не совпали имена параметров.</p>
    <p><strong>Сколько времени уходит на освоение?</strong> Первый рабочий граф собирается за вечер. Уверенность приходит примерно к десятому, это два-три месяца по паре часов в неделю. Дальше вы перестаёте искать готовые скрипты в интернете и пишете свои быстрее, чем находите чужие.</p>
    <h2>Следующий шаг</h2>
    <p>Соберите этот граф на копии рабочего файла. Не на боевом. Дойдя до первой записи параметра, сохраните файл под новым именем и только потом жмите Run.</p>
    <p>Когда граф заработает, его захотят коллеги. Отдавать .dyn по почте не надо, для этого есть Dynamo Player: как подготовить скрипт к передаче, разобрано в <a href="https://bim-pulse.ru/dynamo-player-dlya-komandy.html">отдельной статье</a>. Если руки чешутся автоматизировать не нумерацию, а заполнение параметров пачкой, начните с <a href="https://bim-pulse.ru/revit-avtozapolnenie-parametrov.html">этого разбора</a>. А когда скриптов станет больше десятка и захочется настоящих кнопок в интерфейсе, посмотрите на <a href="https://bim-pulse.ru/pyrevit-pervye-knopki.html">pyRevit</a>.</p>
    <p>Задача сложнее учебной? Опишите её в <a href="https://t.me/bimpulsebot?start=article">Telegram</a> или через форму на <a href="https://bim-pulse.ru/contacts.html">странице контактов</a>: посмотрим, решается ли она графом за вечер или там уже нужен плагин. Что мы делаем на таких задачах, коротко описано в разделе <a href="https://bim-pulse.ru/services.html">услуг</a>.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
