REVIT LOOKUP TABLES #1. ОСНОВЫ, ПРИМЕНЕНИЕ, СТРУКТУРА
Revit Lookup tables – таблицы поиска Revit (зарегистрированное расширение для файлов, содержащих значения с разделителями CSV).
Что же такое таблицы поиска и как они используются в Revit?
Как работают таблицы поиска (Revit Lookup tables)?
Основное применение таких таблиц – это семейства. Любой, кто проектировал внутренние инженерные сети, а именно – сталкивался с соединительными деталями воздуховодов либо трубопроводов, имел дело ни с чем иным, как с семействами с использованием таблиц поиска.
В тот момент, когда изменяется один параметр (чаще всего, это сечение воздуховода или диаметр трубы), вместе с ним изменяется и геометрия самого семейства. Увидеть это можно на следующем примере отвода из стандартной библиотеки Revit:
В данном случае, значение «Наружный диаметр фитинга» зависит от значения «Диаметр». В нашем случае «Диаметр» равен 100 мм, значит, из таблицы производится выбор значения параметра «Наружный диаметр фитинга», равное 4.125 дюйма, что при пересчёте и округлении (25.4 * 4.125 = 104,775) даст 104.8 мм.
Аналогичным образом при изменении значения параметра «Диаметр» происходит поиск в таблице и пересчёт значения параметра «Наружный диаметр фитинга»:
Реализовано это параметризованным семейством: в формуле задана зависимость геометрии от конкретных параметров семейства (в случае с отводом – это построение наружного диаметра фитинга в зависимости от номинального диаметра соединителя) и поиском этих значений параметров в файле таблицы поиска Revit (Поиск в таблице имен).
Где найти таблицы поиска Revit?
До 2015 версии Revit все файлы таблиц поиска должны были находиться в одном месте для возможности их использования. За это отвечает параметр в файле revit.ini – LookupTableLocation, он содержит путь по умолчанию к папке со всеми таблицами поиска.
Это было крайне неудобно по той причине, что при передаче таких семейств, приходилось копировать и файл таблицы в нужную папку. Начиная с 2015 версии Revit, разработчики решили исправить данную ситуацию и разрешили хранение таких таблиц в файле семейства.
Теперь актуальные таблицы поиска всегда живут в самом семействе, но возможность использования таблиц из папки (параметр LookupTableLocation файла revit.ini) так же осталась.
Структура файла таблиц поиска (Revit lookup tables)
Как говорилось ранее, файл таблицы поиска содержат значения параметров с разделителями между ними. По умолчанию в качестве разделителя для данных используется запятая “,” а для отделения дробной части значения самого параметра используется точка “.”
Если заглянуть внутрь файла таблицы поиска, то можно увидеть примерно такое содержимое:
Для начала, разберемся с первой строкой. В нашем случае, она содержит следующий текст: «,ND##length##millimeters,FOD##length##inches».
На первый взгляд – это совершенно непонятный набор символов. На самом деле это структура таблицы – описание (заголовки) столбцов данных.
Для более наглядного вида я открою этот файл с помощью Excel. Но для того что бы Excel воспринял наш файл как данные с разделителями, необходимо изменить расширение с CSV на TXT:
Теперь выбираем разделители:
Указываем запятую в качестве разделителя столбцов:
И форматируем столбцы. Делать это лучше для значений с дробной частью, потому как Excel переведёт эти значения в дату автоматически, если оставить формат данных столбца «общий».
И в итоге получаем уже наглядное представление нашей таблицы:
Теперь мы видим структуру таблицы именно так, как воспринимает её Revit. Наши данные хранятся в ячейках: пересечение строки и столбца. Именно по такому принципу и сам Revit получает данные из файла таблицы поиска.
Как говорилось ранее – неотъемлемой частью файла является заголовок, первая строка. Именно в ней описывается количество столбцов и формат данных, которые будут в них храниться.
Если взглянуть на первый столбец нашей шапки, то мы увидим, что он пустой, и это не ошибка! В первом столбце ВСЕГДА (!) пишется комментарий. По аналогии с каталогом типоразмеров семейств Revit, это есть ни что иное, как имя типоразмера. Вы можете использовать этот столбец для своих целей, чаще всего в нем указывается текстовое обозначение строки данных, описание набора значения параметров.
Далее перечисляются столбцы с данными, к которым Revit получает доступ. В нашем примере это «ND##length##millimeters».
Формат описания столбца унифицирован:
«имя_столбца##тип_данных_revit##единицы_данных_revit».
Таким образом, можно понять, что в данном столбце с именем «ND» хранятся параметры типа «длина» (length) и измеряются в миллиметрах (millimeters). Так же можно распознать остальные столбцы.
После сохранения в формат CSV, записи сами разделяются запятыми. Напомню, как выглядит в итоге строка из нашего примера:
«,ND##length##millimeters,FOD##length##inches»
Работа Lookup tables в семействе Revit
Каким же образом Revit получает эти значения в нашем семействе? Для этих целей, в качестве формулы значения параметра, используется функция size_lookup. Из стандартной справки Revit можно увидеть описание её использования:
size_lookup (LookupTableName, LookupColumn, DefaultIfNotFound, LookupValue1, LookupValue2, …, LookupValueN)
LookupTableName – имя таблицы файла CSV, в котором будет производиться поиск;
LookupColumn – имя столбца, из которого будет возвращено значение результата;
DefaultIfNotFound – значение, которое будет возвращено, если значение в столбце (столбцах) LookupValue(1-N) поиска не найдено;
LookupValue(1-N) – значение, которое требуется найти в первом, втором и последующих столбцах таблицы. (При поиске значений первый столбец пропускается).
Самая первая ошибка в понимании механизма этой функции кроется именно в понимании параметров LookupColumn и LookupValue(1-N). Для объяснения вернёмся к уточнению: «при поиске значений первый столбец пропускается». Когда речь шла о заголовке таблицы поиска, было сказано, что первый столбец ВСЕГДА используется для аннотации строки данных (комментария), поэтому поиск по столбцам производится, начиная со ВТОРОГО столбца. Наглядно для конкретного примера нашего отвода это можно отобразить в таком виде:
Ну и детальная схема всего механизма на примере конкретной формулы:
То есть для получения значения, сначала мы определяем имя таблицы, в которой будем производить поиск. В данном примере это сделано через параметр семейства «Поиск в таблице имен»:
Следующим параметром для нашей функции определяем, из какого столбца по итогам поиска мы хотим получить данные – «FOD». Имя указывается так, как оно определено в заголовке таблицы.
После указывается, какое значение будет возвращено функцией, если поиск не даст результатов из таблицы. В нашем случае это будет значение параметра «Номинальный диаметр» + 3.2 мм. На случай, если подходящего значения не будет найдено, а геометрию нашего отвода необходимо сформировать, то просто увеличим наш наружный диаметр фитинга на 3.2 мм от номинального диаметра.
Ну и последний параметр для функции – это непосредственно само значение, по которому мы будем искать соответствие во ВТОРОМ столбце – «Номинальный диаметр». Наша таблица должна быть построена с учетом того, что столбцы с данными, по значениям в которых будет происходить поиск, должны начинаться со ВТОРОГО столбца. А уже после них должны идти столбцы, из которых мы хотим получать соответствующие данные. В нашем примере из таблицы поиска мы получаем всего лишь одно значение – «FOD», значение наружного диаметра в дюймах для определённого значения «ND» – номинального диаметра. Поэтому в заголовке порядок столбцов именно такой:
- первый столбец для аннотации строки данных;
- второй столбец ND – по этим значениям мы будем выбирать подходящую строку;
- третий столбец FOD – это столбец со значением в найденной строке, которое мы будем получать в результате успешного поиска.
Для правильной работы с таблицами поиска необходимо корректно создавать её структуру!
Краткий итог первой части обзора Lookup tables (таблиц поиска) Revit
На этом хочу подвести итог для первой части полного обзора Lookup tables (таблиц поиска) Revit:
- таблицы поиска используются в семействах;
- из таблиц поиска можно получать значения параметров в семействе;
- оптимальное использование таблиц поиска – параметризированные семейства;
- таблицы поиска могут храниться в семействе;
- основным разделителем столбцов в таблице поиска служит «,»;
- таблица поиска должна содержать обязательный элемент: заголовок в 1 строке;
- первый столбец ВСЕГДА содержит необязательное описание для строк данных;
- столбцы, по которым будет производиться поиск, должны располагаться сразу после первого;
- описание столбцов унифицированы, необходимо соблюдать правило описания, тип параметров и тип единиц.
На этом первая часть, знакомство с таблицами поиска и данными по структуре и описанию, завершена. Во второй части я рассмотрю основные способы использования функции size_lookup в параметрах семейства для доступа к данным в таблицах поиска. Рассмотрим простейшее параметрическое семейство в связке с таблицами поиска и поиском нескольких параметров в одной таблице.
До новых встреч, следите за обновлениями на сайте BIM2B.
Дмитрий Талалаев, эксперт BIM2B.