Расскажу про основы в семействах. Это не в смысле базовая информация, а в смысле — как могут размещаться семейства в проектах. В зависимости от выбранной основы поведение семейств может отличаться, и то, что хорошо работает для одного раздела, может не подходить для другого.

Эту тему также освещал в ликбезе по редактору семейств, так что можете посмотреть этот мини-курс, он бесплатный: https://muratovbim.pro/courses/

Разновидности основ

Основа для размещения семейства — это тот объект, на который ставится семейство, к которому оно привязывается. Глобально все семейства привязываются либо к уровню, либо не к уровню. Во втором случае основой может быть какая-нибудь опорная плоскость, грань стены, воздуховода или ещё какого-нибудь семейства.

Основа задаётся в момент создания семейства при выборе шаблона семейства. На первом изображении в статье как раз список с шаблонами семейств. Обратите внимание на шаблоны, которые начинаются с «Метрическая система, типовая модель». Есть шаблон ровно с таким же названием, а есть с добавкой «на основе...». И безлактозного молока тут нет.

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

Если менять в свойствах смещение, то унитаз будет менять своё положение относительно своей основы — уровня этажа.

Остальные шаблоны семейств дают нам на выбор в качестве основ:

  • грань — это любая поверхность или опорная плоскость в проекте, вариант удобен для размещения чего-нибудь, что можно поставить и на стену, и на пол, например отверстие или светильник;
  • два уровня — в качестве основы при размещении пользователю надо выбрать два уровня в модели, например для какой-нибудь колонны, которая идёт от этажа до этажа;
  • крышу / пол / потолок / стену — основой будет соответствующий элемент в модели, например окна и двери ставят в стену, поэтому для них нужно выбирать шаблон семейства для размещения на стене;
  • линию — пользователь выбирает грань и рисует отрезок, чтобы разместить семейство переменной длины, например — плинтус или молдинг;
  • образец — это шаблон для адаптивных семейств, которые потенциально можно размещать очень по-разному.

Выше привёл примеры, но скажу сразу, что не все они обязательно удачные, главное, чтобы вы поняли смысл.

А смысл такой: у семейств могут быть разные основы. Семейство на основе стены будет вставать только на стену, оно не встанет на потолок, а семейство на основе уровня «не видит» стену при размещении.

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

Если скачали семейство, то посмотреть его основу можно в редакторе семейств. Откройте семейство в редакторе и посмотрите в свойства, там будет указана основа.

Правда, так узнать основу можно не всегда, иногда приходиться определять по другим признакам. В семействе на основе линии — будет линия. В семействе на основе двух уровней — будут два уровня на фасаде.

Влияние основы на семейство

В зависимости от выбранного шаблона семейства и основы в нём меняется поведение семейства.

В первую очередь это касается размещения. Окно обязательно «ищет» стену для размещения, ей нужна такая основа. Элемент, на котором размещают другие элементы, называют «хост» — host, основа, хозяин. Чаще всего это встречается в архитектуре и конструктиве, но и в инженерных разделах такое бывает. Изоляция труб и воздуховодов — пример такого размещения, в их случае хостом будут труба или воздуховод.

Важно! Элемент не существует без основы.

При удалении стены удаляются и окна и двери, которые основывались на ней. При удалении трубы удаляется её изоляция. Удалили уровень? Удаляются все трубы, фитинги, арматура, оборудование и прочие элементы на основе уровня. Единственное исключение — семейства на основе грани, но про эту занозу в заднице поговорим в отдельном пункте.

Есть ещё один нюансы. Семейства не на уровне или грани могут вставляться на основы только в текущем проекте. Это означает, что если вы скачали семейство радиатора, которое выполнено на основе стены, то такой радиатор будет прекрасно цепляться к стене, но в файле отопленца не должно быть стен, стены — в файле архитектора.

Важно! Элемент на основе стены или потолка не может вставляться на стену или потолок из связанной модели.

В результате такое семейство может служить элементом дизайна, но не инженерного проекта. Такие семейства не видят основу из связанного файла. Это касается любых семейств на основе элементов модели: стены, пола, потолка и так далее.

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

Их логика понятна: вентилятор поставят на крышу, раковину на стену, а кассетник в потолок, значит, на этих основах и нужно размещать такие семейства. Однако они упускают из вида, что это семейства для инженерных проектов, в которых крыша, стены и потолки будут в связанной модели. Поэтому для инженера такие семейства — мусор. Тем не менее у семейств на основах есть один большой плюс.

Важно! Элемент всегда следует за своей основой, за своим хостом.

Для архитектора удобно, чтобы раковина цеплялась к стене. В этом случае, когда он подвинет стену на 200 мм левее, то раковина точно также сместится вслед за стеной. И дверь, и окно, и зеркало. Это удобно и этим нужно пользоваться. Представьте, что двигаете воздуховод, а его изоляция не следует за ним и её надо выделять и смещать отдельно. Такое себе удовольствие.

При смещении уровня все элементы на его основе, а это 99 % инженерки, тоже смещаются вместе. Это вроде удобно, но по факту зачастую приводит к поломке систем, очень много элементов рассоединяются. Причину не знаю, потому что на тестовой маленькой модели всё работает хорошо, но возьмите любой реальный проект, попробуйте сместить уровень и ловите ошибки.

Поэтому даже небольшая смена отметки уровня так болезненна для инженеров.

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

Важно! После создания семейства его основу изменить нельзя.

В интернете и даже у меня в какой-то статье с лайфхаками можно найти способ, как удалить основу из семейства, но всё это тщетно, так как основу вы удалите, а поведение семейства не измените.

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

Семейства на основе грани

В отдельный пункт выделю семейства на основе грани. Их можно получить двумя способами.

Первый — при создании семейства на шаблоне типовой модели на грани. Этот вариант незаменим, если нужно одно семейство разместить на грани другого и при этом ещё и вырезать кусок геометрии. Например, какая-нибудь кухонная мойка должна прорезать столешницу или в передней панели радиатора нужна выштамповка вырезающим массивом.

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

За это в редакторе семейства в свойства отвечает галочка «На основе рабочей плоскости». Здесь есть ещё галочка «Всегда вертикально», про неё чуть позже.

Когда в семействе активируют галочку размещения на рабочей плоскости, семейство из обычного превращается по сути в семейство на грани. Рабочей плоскостью может выступать чуть ли не всё, что угодно: уровень, грань стены/потолка/перекрытия из связанного или своего файла, грань воздуховода или сантехники, любая опорная (она же рабочая) плоскость. Архитекторы и разработчики семейств наверняка знают, что это.

Главное тут следующее:

  1. Семейство в этом случае больше не цепляется к уровню, его координатной базой становится грань, на которую его ставят;
  2. При удалении основы семейство не удаляется, оно теряет основу.
  3. Основы можно менять, то есть можно перенести семейство с одной грани на другую.
  4. Семейство вставляется либо по нормали к поверхности, либо строго вертикально.
  5. В редакторе такое семейство должно «лежать» на уровне.
При удалении основы семейство на грани выдаст значение «не связано»

По 4 и 5 пункту поясню отдельно. Сначала про пятый пункт.

Предположим, что мы создаём мойку и хотим сделать её на грани. Дурацкое решение для инженеров, но для архитекторов — приемлемо, ведь им нужно, чтобы раковина бегала за стеной.

В этом случае мы будем рисовать геометрию мойки так, чтобы вся она лежала на уровне внутри редактора семейств. То есть мы по сути рисуем её лежащей на задней поверхности, а не вертикально, как она ставится в жизни. Это нужно из-за того, что при вставке на стену мойка будет ориентироваться плоскостью уровня.

Если непонятно, откройте семейство и нарисуйте ассиметричную геометрию, потом попробуйте разместить её на вертикальной поверхности, всё сразу станет ясно.

По пункт 4. У нас есть галочка «Всегда вертикально». Если её включить, то семейство будет всегда смотреть строго вверх, даже если плоскость, где мы её размещаем, наклонена. Например, скатная кровля и семейство печной трубы. Грани кровли под углом к горизонту, но если вставить семейство с размещением на опорной плоскости и галочкой «Всегда вертикально», то семейство будет ориентировано строго вверх. То есть под углом к поверхности кровли и вверх в космос. Так трубы и ставят.

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

Казалось бы, ну сколько плюсов, все семейств срочно делает на опорной плоскости или грани. Но нет, всё не так.

Важно! Такие семейства на опорной плоскости или грани очень сложно копировать по этажам — для вставки им нужна основа, а её зачастую просто нет.

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

Поэтому такие семейства чрезвычайно капризные в работе и с ними иметь дел в инженерке по возможности не надо. Если у вас небольшие модели и вы точно контролируете все основы — окей, это удобно. Но когда делаете для внешнего заказчика или для большого проекта, то проблем будет больше, чем пользы.

Иногда я просто вынужден делать семейства на основе грани. Такое приходится делать, когда не знаешь, как именно будут размещаться семейства. Это как раз касается всяких светильников, пожарных датчиков и прочих элементов, которые могут поставить куда угодно, хоть на пол, хоть на потолок, хоть на стену. Можно, конечно, сделать геометрию так, чтобы вручную управлять её углом поворота, но это дополнительные трудозатраты для разработчика и интерфейс для пользователя.

Из-за всего этого в 99 % случаев для инженерных семейств размещение на основе или грани не подходит, это почти всегда типовая модель на основе уровня. Куда чаще этим можно пользоваться для вложенных семейств, но вот конечное семейство, с которым будет работать пользователь, при всех своих плюсах даст столько неудобств при редактировании модели, что станет грустно.

Итоги

  1. Основы в семействах сильно влияют на поведение семейств в проекте.
  2. Основу фактически уже нельзя изменить после создания семейства.
  3. Элемент всегда живёт вместе со своей основой и двигается за ней. Удаление основы чаще всего будет приводить к удалению элемента.
  4. Для инженеров нежелательны семейства не на уровне.
  5. Правильно выбирайте основу при разработке семейства с учётом того, кто будет работать с семейством и на чём будет размещать семейство.

Научиться делать крутые семейства на правильных основах можете на моих курсах: https://muratovbim.pro/courses/