Revit Lookup Tables #3. Форматы данных. Получение текстовых параметров
В предыдущих ( первой и второй ) частях по работе с таблицами поиска (Revit lookup tables) вы познакомились со структурой и способами работы функции size_lookup. Рассмотрели способы и области применения данного механизма для извлечения данных по критериям поиска. Сегодня, в заключительной статье, мы поговорим о форматах данных, которые можем получать из таблиц поиска.
Для наших экспериментов будем использовать семейство, которое я создал в предыдущей статье: Переходник ПП Valtec 705 (скачать по ссылке).
Форматы извлекаемых данных
Официальная справка по функции size_lookup говорит о том, что применение данной конструкции в формуле ограничивает нас получением только числовых данных:
- Функция size_lookup предоставляет возможность поиска только числовых значений.
Возможно, так и задумывалось изначально, но пытливый ум и наличие свободного времени для экспериментов позволили открыть способ для извлечения текстовых параметров, но об этом чуть позже. Вернёмся к нашим числовым данным.
Для определения с нашими форматами данных заглянем в справку по созданию каталога типоразмеров:
Почему каталог типоразмеров и какое он имеет отношение к таблицам поиска? На самом деле таблицы поиска (lookup tables) и каталог типоразмеров имеют много общего:
- size_lookup используется в формулах параметров семейства, возвращая определенное значение для типоразмера семейства;
- каталог типоразмеров служит для формирования целых наборов типоразмеров семейства при загрузке семейства в проект;
В первом и во втором случаях мы имеем дело с таблицами, в которых обязательно должны присутствовать столбцы данных. Только в первом случае таблицы используются для одного значения параметра (size_lookup), а во втором — для всего набора параметров типоразмера семейства. Из этого следует вывод: определение типа данных для обоих случаев одинаково.
Но в справке по каталогу типоразмеров приведены не все доступные форматы данных. Например, для площади описание заголовка столбца должно соответствовать: param_name##AREA##SQUARE_FEET. Из определения ясно, что единицами измерения будут являться квадратные футы и параметр относится к типу данных «Площадь». Данное определение распространяется на фактическое значение в самой таблице и при использовании этих данных в семействе будет автоматически конвертировано в соответствии с настройками единиц проекта семейства данной категории:
То есть, если в самой таблице будут указаны в качестве единиц квадратные футы, то в проекте значение будет переведено в метры квадратные автоматически. Об этом следует всегда помнить, записывая формулы для параметров, чтобы не получить ошибку о несоответствии типов данных.
Как узнать нужный формат данных
Каким же образом мы можем указать в заголовке таблицы нужный тип данных и его единицы? Опять же возвращаемся к каталогу типоразмеров. Если вы уже ознакомились со справкой, то наверняка попробовали экспортировать каталог типоразмеров из семейства. Именно данная процедура поможет вам безошибочно определить верный заголовок для столбца таблицы. Как говорится, лучше один раз увидеть, чем сто раз прочитать.
Создаём параметр типоразмера в семействе с интересующим нас типом данных и экспортируем каталог типоразмеров для этого семейства. Получаем текстовый файл с описанием параметров в семействе:
Теперь мы точно знаем, как необходимо описать заголовок для хранения типа данных «Площадь» в квадратных метрах:
имя_параметра##AREA##SQUARE_METERS.
2 способа настройки единиц измерения
К чему все эти разговоры про единицы измерения и типы данных? Давайте вернёмся к нашему семейству: Переходник ПП Valtec 705. В прошлой статье я записал в таблицу данные о массе муфты переходной из каталога производителя:
Я специально привёл описание заголовка именно в таком формате mass##OTHER## и обещал вернуться к этому вопросу. В каталоге производителя масса изделия приведена в граммах, у нас же в таблице значения описаны как численные данные, без привязки к конкретным единицам:
Для приведения единиц в соответствие имеются 2 варианта. Но для этого необходимо сначала создать параметр нашего семейства с единицами измерения – «Килограммы».
Тип данных «Масса» можно найти в категории «Несущие конструкции» либо же «Трубопроводы». Я выбрал категорию «Несущие конструкции»:
В таком случае заголовок для столбца таблицы будет иметь вид:
mass##MASS##KILOGRAMS.
Итак, о возможных вариантах:
- Править саму таблицу, заголовок с описанием столбца и данные (переводить граммы в килограммы):
- Использовать приведение данных в самой формуле параметра без изменения таблицы, но с учётом единиц в ней (в таблице подстановки оставим mass##OTHER## и данные в граммах, а в формуле просто умножим на 1 кг и разделим на 1000):
Какой вариант использовать – выбирать вам. Но в любом случае необходимо соблюдать размерность и выбранные единицы измерений для ваших данных.
Таким образом, мы рассмотрели работу с единицами измерения и возможностями приведения данных в формулах.
Извлечение текста из таблиц lookup tables
Ну и пожалуй самое интересное — работа с текстовыми значениями из таблиц поиска.
Хоть справка по использованию size_lookup и говорит нам о том, что мы можем искать только числовые значения, существует возможность получать и текстовые значения. Но при этом действует одно ограничение – из одной таблицы поиска можно извлекать только один текстовый параметр.
Почему только один? Потому что это текстовое значение извлекается только из первого столбца. Тот самый первый столбец нашей таблицы, который используется для аннотации строки данных в ней:
Еще в прошлой статье я привёл этот столбец в нужный формат – формат каталожной позиции для спецификации. Вместе с тем как я перевернул наши данные для диаметров перехода, я оставил правильное именование первого столбца:
Теперь нам необходимо создать текстовый параметр (по сути это уже может быть общий параметр, который в последующем попадает в спецификацию), не забываем про экземпляр:
Ну, и конечно же, прописываем формулу для параметра:
То есть, для того что бы получить содержимое первого столбца таблицы поиска необходимо указать “” в качестве столбца поиска параметра.
Таким вот нехитрым способом мы можем получать и текстовые значения из таблиц поиска. Если у вас возник вопрос по поводу двух и более текстовых параметров в таблицах поиска, то милости прошу в мой блог, там достаточно подробно описан способ (непростой, но рабочий).
Краткий итог третьей части обзора Lookup tables (таблиц поиска) Revit
Рассмотрение таблиц поиска (lookup tables), основы их использования и способы применения хотел бы завершить итогами 3 части статьи:
- Таблицы поиска и каталог типоразмеров имеют одинаковый формат описания столбцов данных;
- В таблицах поиска можно использовать типы данных и единицы Revit;
- В формуле параметра типоразмера можно приводить единицы измерения;
- Из таблиц поиска можно получать текстовые значения, но только один параметр в одной таблице поиска;
- В типоразмере семейства так же можно использовать общие параметры, которые можно включать в спецификацию проекта. Эти параметры так же могут принимать значения функции size_lookup.
Материал, изложенный в трех статьях по таблицам поиска, должен помочь в освоении заложенных в Revit способов автоматизации процесса информационного моделирования. Область применения данной функции (size_lookup) можно найти не только в инженерных семействах, но это уже совсем другая история….
Revit Lookup Tables #2. Поиск нескольких параметров. Организация структуры таблицы
В первой статье про таблицы поиска (Revit lookup tables) мы с вами познакомились с основами и принципами работы функции size_lookup. Я не зря акцентирую внимание на «функции», потому как результатом работы является возвращаемое значение поиска по определенным условиям, а не результат магических заклинаний и плясок с бубном. Задача, по сравнению с отводом, усложняется и нам необходимо теперь контролировать не один входной параметр. Но что бы в результате получить именно те данные, которые нам нужны, необходимо будет правильно организовать саму структуру таблицы. Итак, приступим.
Создаем таблицу для перехода
Для сегодняшнего примера будем использовать простейшее инженерное параметрическое семейство – переход полипропиленовый или же муфта переходная.
Почему именно переход? У перехода, в отличие от отвода, имеются уже две величины, которые могут меняться независимо друг от друга. Эти величины есть ничто иное, как диаметры сварных труб. Для привязки к реальным значениям параметров воспользуемся муфтой переходной Valtec:
Очень хорошо, когда производители приводят чертежи своих деталей и оборудования, — нам это поможет соблюсти все заявленные габаритные размеры. Как видим, у нас имеются 2 диаметра и соответствующие значения параметров A, B и C. Я по привычке буду использовать всю доступную информацию, это маркировка и масса, вы же можете обойтись пока что без этого. Забегая немного вперед, могу сказать, что значения этих параметров пригодятся в спецификации. О том, как это можно будет сделать, я расскажу в следующей части. Сейчас же вернёмся к нашим каталожным данным – это столбцы с d1 по С.
Создадим скелет будущей таблицы поиска и начнём конечно же с первой строки, в которой пропишем столбцы данных. В моём варианте в Excel (с каталожным описанием и дополнительным столбцом массы) это выглядит так:
В первой строке описана структура таблицы, а именно:
- d1##length##millimeters – диаметр 1 в миллиметрах;
- d2##length##millimeters – диаметр 2 в миллиметрах;
- A##length##millimeters – параметр A в миллиметрах;
- B##length##millimeters – параметр B в миллиметрах;
- C##length##millimeters – параметр C в миллиметрах;
- mass##OTHER## – параметр массы в граммах;
Параметр массы с описанием единиц ##OTHER## воспринимается как число по той причине, что в Revit в категории параметров «Общие» нет массы, найти её можно в других категориях, но сейчас не об этом.
Структура таблицы готова, теперь необходимо заполнить её соответствующими данными из каталога:
В моём варианте представлена итоговая таблица, если вы заметили, в ней больше строк, чем в каталоге производителя. Я добавил дополнительные строки для дублирования каталожного номера. Сделано это для «отзеркаливания» построения геометрии. То есть: в каталоге есть переход с 25 на 20 и приведены соответствующие значения параметров для B и С. Но что если мы захотим переход не с 25 на 20, а наоборот? Можно было бы вводить дополнительные условия в семействе для определения наибольшего диаметра, а потом уже подставлять их в нужном порядке в size_lookup. Но по мне такой вариант лишь может внести лишнюю путаницу в восприятие, по этой причине я решил продублировать такие позиции с развёрнутыми значениями:
Таким образом, мы сделали таблицу универсальной — в любом направлении перехода значения для соответствующего диаметра будут правильными.
Не забываем сохранить нашу таблицу в формат CSV, то есть разделители данных запятые:
И не забываем провести финальную чистку перед загрузкой в семейство. По умолчанию, хотя Excel и пишет что разделителями буду запятые, на самом деле разделителями столбцов будут «;». Даже не смотря на то что Revit спокойно обрабатывает разделители и в виде «;» для столбцов, он не сможет отделить целую часть от дробной потому как в Excel используется «,» а программе Revit нужна «.».
Открываем в текстовом редакторе получившийся файл:
И производим замену наших разделителей (пользуемся инструментом «Правка»-«Заменить»): сначала заменяем «,» на «.», а потом «;» на «,». В итоге получаем рабочую таблицу:
Importance of lookup table in Revit family
Lookup table is a CSV file containing information to specify multiple part sizes without creating a separate family type for each size. This can be useful for families such as doors, windows, lighting fixtures, pipe etc.
Column and row format of CSV file:
- The first column in the CSV file contains a description to identify the row that is being edited. The Lookup Function ignores the first column and the values are looked up strictly on the column order, starting in the second column. Revit will automatically use the second column in the CSV file as the lookup column. This means that the second column must contain unique values that can be used to identify each row in the lookup table. If the second column in the CSV file does not contain unique values, Revit will not be able to import the lookup table correctly. Additionally, if the second column in the CSV file contains empty values, Revit will also not be able to import the lookup table correctly.
- When looking up values, Revit ignores the parameter names and the column headings.
- The first row of values in the CSV file is for header information. Header format-
ParameterName##ParameterType##ParameterUnit
Acceptable parameter types are — NUMBER, LENGTH, AREA, VOLUMN, ANGLE, OTHER
Example of a header: TotalLength##LENGTH##INCHES to represent the total length in inches.
How to import lookup table in Revit family?
- On the Manage ribbon, click Family Editor.
- In the Family Editor, click Manage Lookup Tables.
- In the Manage Lookup Tables dialog box, click Import.
- In the Select File dialog box, select the CSV file that you created and click Open.
- In the Manage Lookup Tables dialog box, click OK.
Parameter composition and syntax function:
It is important to create parameters for each lookup values and all parameters must be similar types (Instance or Type) otherwise there will be an error.
Now copy csv file name and paste it under value associate with lookup table name parameter. Write parametric formulas using size_lookup function. This function is case sensitive.
Syntax of size_lookup function:
Result = size_lookup(LookupTableName, "LookupColumn", DefaultIfNotFound, LookupValue1, LookupValue2, . )
- LookupTableName : The name of the lookup table.
- LookupColumn : The column in the lookup table that contains the lookup values.
- DefaultIfNotFound : The value to return if the lookup value is not found in the lookup table.
- LookupValue1, LookupValue2, . : The lookup values.
To get the length value for product DEF, we have to write the name of Product ID as DEF and syntax function for length will be size_lookup(lookup table name, «Length», 0, Product ID) (Fig 2)
If we don’t put correct product ID the function will return length as 0.
Lookup function for simple «IF» condition:
means if the condition satisfy it will return the result, means if the condition doesn’t satisfy it will return the result.
Lookup function for «Nested IF» condition
If (, , If (, , ))
Conclusion:
Though Lookup tables can be complex to create and maintain, especially for large and complex families, it allows you to create flexible Revit families that can be customized to meet the specific needs of your project without having to create a separate family type for each size and configuration. Lookup tables can improve the efficiency of your workflow by allowing you to quickly and easily update the parameters of multiple families at once.
Thank you for your time and consideration. If you have any query feel free to ask, I am ready to discuss more about this topic.
Revit Lookup Tables
This webinar explains how Revit MEP lookup tables benefit the design process, and how lookup tables are used to automatically size pipe, conduit, and cable tray fittings properly.
We show how lookup tables are formatted and how the Revit family references the lookup table. Users will better understand the role of lookup tables in Revit and be able to identify when best to use lookup.
You’ll also see how to:
– Create custom families that reference lookup tables for automated design
– Use formulas with lookup tables for accurate design
– Improve workflows by using lookup tables.
This webinar was presented by Brendan Upton, Technical Consultant, A2K Technologies.
Source
Autodesk and Revit are registered trademarks or trademarks of Autodesk, Inc., in the US and other countries. This website is not affiliated with, sponsored, endorsed, approved, or otherwise authorized by Autodesk, Inc.
We use cookies to ensure that we give you the best experience on our website (stats & ads). If you continue to use this site we will assume that you are happy with it. Got it !