воскресенье, 30 августа 2015 г.

Для опытных, но ленивых. Семейство тройника с использованием таблиц поиска.

Недавно на одном ресурсе, посвященном вопросам по Revit MEP, задали такой вопрос:
"Как сделать такой тройник с использованием таблиц поиска?"

Казалось бы, ничего сложного - создать параметризованное семейство. Создать таблицы поиска по данным с сайта производителя, высота, ширина, диаметры, вес, маркировка типоразмера производителя... Всё просто! Но нет, не всё так просто на практике. Давайте разберемся.

Создание геометрии самого семейства тройника я намеренно пропущу, загрузив моё  семейство вы сможете сами "разобрать его на куски", и поймёте как это работает. Всё банально и просто, опорные плоскости, параллельные размеры с привязкой к параметрам, настройка переопределения видимости.
Основным элементом в нашем "резиновом" семействе являются параметры, которые выбираются из условий соответствия значений в таблице поиска.
Как вы уже наверное догадались, для поиска по таблицам мы будем использовать функцию size_lookup.
3 значения параметра диаметра являются экземплярами, для того что бы семейство воспринимало эти значения от труб. Оставшиеся значения параметров высоты и ширины элемента будем выбирать из таблиц, при условии что все 3 диаметра соответствуют определенной комбинации.

Трудность №1(невнимательность):
Наш тройник является редукционным, а это значит что изменяться могут все 3 диаметра. Но при этом это должно вписываться в допустимые комбинации изделия.
Основная сложность реализации данного момента заключается в грамотном создании самой таблицы поиска, списка и порядка столбцов. Не забываем про справку, в которой четко прописано, что можно указывать не один столбец для поиска. Вот таблица поиска, которую я создал из технического паспорта изделия:
 
Думаю, что тут всё достаточно понятно, я лишь немного модернизировал её для возможности "зеркального" представления тройника, т.е. тройник с комбинацией диаметров 33-26-26 может быть и развёрнутым 26-26-32, но при этом это один и тот же элемент.

Трудность №2(хитрость):
Итак, с первым барьером разобрались. Имеем параметризованное семейство, при изменении значений параметров всех трех диаметров одновременно меняются значения высоты и ширины изделия, отображается масса.
Это всё замечательно, скажете вы, но как же получить текстовое значение параметра каталожного номера этого изделия? Иначе какой смысл такого семейства, если его нельзя будет корректно отобразить в спецификации. Спокойно - и на это у меня есть решение.
Вариант 1:
Чаще всего им пользуются, когда необходимо отобразить текстовое значение при определенном условии некоего значения. Это всем известные конструкции if . То есть можно написать условия отображения каталожного номера при определенных диаметрах. Я стараюсь избегать таких вещей, если учесть, что в таблице поиска может быть не одна сотня или десяток типоразмеров, то конструкция вложенных формул if(if,,(if,,(if,,()))) может свести с ума любого человека. Есть пользователи, которые для генерации таких формул написали в Excel макросы, похвально - люди стараются упрощать себе жизнь. Но так как этот материал написан для "опытных, но ленивых" я приготовил вариант проще, и который полностью вписывается в нашу концепцию использования таблиц поиска.
Вариант 2:
Мы с вами прекрасно знаем, что функция size_lookup умеет возвращать только числовые значения содержимого ячейки в столбце, в котором происходит выборка. Однако, внимание, под понятием "только числовые" может быть и текст. Единственное ограничение, которое полностью вписывается в нашу концепцию, это - текстовое значение можно считать только с первого столбца. Как вы уже наверное догадались, первый столбец в таблицах поиска и в каталоге типоразмеров всегда используется для значения имени типоразмера, его мы можем вытащить через size_lookup.
Как же это сделать? Для того что бы получить текстовое значение из первого столбца выбранной таблицы, имя столбца для поиска необходимо оставить пустым, а точнее пустые кавычки (""). В моём случае это выглядит так: 

Итог:

Вот, собственно, и всё - все трудности мы с вами успешно преодолели. Получили семейство тройника, которое:
  • принимает допустимые диаметры из технического паспорта изделия (при указании недопустимых комбинаций диаметров получите ошибку о невозможности сформировать типоразмер семейства);
  • строит корректную геометрию;
  • отображает массу элемента;
  • отображает каталожный номер изделия.
А вот так это уже выглядит в проекте:
Как вы догадались, я использовал марку соединительных деталей трубопроводов и через общий параметр связал значение PartNumber, которое выбирается из таблицы поиска на основе комбинаций 3 диаметров.
Таким образом, мы можем сократить время на создание каталога типоразмеров (если вдруг понадобится сгенерировать конкретные типоразмеры семейства). Так же можем сократить ручной труд на выбор нужного типоразмера, пускай Revit занимается рутиной за нас!
Семейство тройника вы так же можете найти в разделе "Семейства".

5 комментариев:

  1. отличное параметрическое семейство...

    ОтветитьУдалить
    Ответы
    1. Надеюсь изложение материала, по восприятию, для вас было не хуже реализации самого семейства. Если интересна тема таблиц поиска - имеется продолжение, смотрите в архиве.

      Удалить
  2. Интересная статья!
    А можно таблицы выбора прикрутить к спецификации в проекте?
    делаем деталями стеновые панели, и пишем километры If(..).
    работает конечно, но элегантным решение не назовешь:)

    ОтветитьУдалить

Ваш комментарий