Найти в Дзене
БилдСофт

Неинициализированные параметры в Revit

Доброго времени, дорогие друзья! Очередная статья-заметка, в которой я поделюсь с вами решением интересных вопросов связанных с Revit, очередная небольшая загадка, которых, кстати говоря, давно не было в нашей серии видео Загадки пользователей Revit.

Перейдем к теме статьи. Нужно предварительно отметить, что в Revit помимо значений параметров «да» или «нет» и «заполненного» или «пустого» есть еще значение типа «null» , что трактуется как «неинициализированное» значение параметра. В wikipidea можно чуть подробнее узнать об этом термине:

NULL в Системах управления базами данных (СУБД) — специальное значение (псевдозначение), которое может быть записано в поле таблицы базы данных (БД). NULL соответствует понятию «пустое поле», то есть «поле, не содержащее никакого значения». Введено для того, чтобы различать в полях БД пустые (визуально не отображаемые) значения (например, строку нулевой длины) и отсутствующие значения (когда в поле не записано вообще никакого значения, даже пустого).

NULL означает отсутствие, неизвестность информации. Значение NULL не является значением в полном смысле слова: по определению оно означает отсутствие значения и может иметь тип NULL или иметь любой другой тип (CREATE TABLE new_tab AS (SELECT NULL) - специальный тип null, CREATE TABLE new_table AS (SELECT 10+NULL) - тип integer). Поэтому NULL не равно ни логическому значению FALSE, ни пустой строке, ни нулю. При сравнении NULL с любым значением будет получен результат NULL, а не FALSE и не 0. Более того, NULL не равно NULL!

Проще говоря, если по какой то причине в семействе Revit некий параметр никогда не упоминался и не заполнялся он может иметь такое значение. Мы столкнулись с этим когда попытались добавить нужные для проекта параметры в каталог типоразмеров семейства, конкретно параметр «стоимость» арматуры (категория здесь не принципиальна).

Начнем с того, что создавать каталоги типоразмеров как и таблицы поиска желательно на основе одного полностью заполненного типоразмера с дальнейшей проработкой таблицы вариантов его исполнения. В нашем случае типоразмер не имеет данных в поле «стоимость» , поэтому параметр «стоимость» даже не экспортируется в каталог.

Параметр стоимость не заполнен и по умолчанию имеет значение типа NULL, что означает отсутствие данных, даже пустого поля.
Параметр стоимость не заполнен и по умолчанию имеет значение типа NULL, что означает отсутствие данных, даже пустого поля.

Может показаться, что особой разницы нет но если вы присвоите параметру числовое значение, то больше пустой ячейки вы не увидите. В крайнем случае 0. Смотрите следующую карусель.

Назад пути нет
Назад пути нет
Теперь здесь будет значение
Теперь здесь будет значение

Итак, если мы все же каким-то образом в ручную добавили в каталог типоразмеров столбец с нужным параметром и типом данных (в нашем случае Стоимость##CURRENCY##CURRENCY ) и заполнили все значения но в семействе параметр остался по прежнему NULL при загрузке нас может поприветствовать интересное уведомление от Revit.

Загружаем семейство. Стоимость в каталоге по всем позициям присутствует, в семействе по прежнему NULL.
Загружаем семейство. Стоимость в каталоге по всем позициям присутствует, в семействе по прежнему NULL.
«В лоб» не совсем понятное утверждение. Параметр ведь существует? А значение нет.
«В лоб» не совсем понятное утверждение. Параметр ведь существует? А значение нет.

Таким образом работая с параметрами в семействе необходимо учитывать этот факт. Применительно к созданию типоразмеров стоит придерживаться правила полного заполнения одного типоразмера с последующим экспортом и доработкой каталога/таблицы.

На этом все благодарю за уделенное внимание, надеюсь, что информация была интересной и полезной для вас.

Никита Иванов, инженер компании БилдСофт