ADN Club > Revit API

настройка оффсетов для ductFitting(transition)

(1/3) > >>

Алексей Кузин:
Доброе время суток. при создании нового семества ductFitting(transition) предлагаются системные оффсеты "OffsetWidth" и "OffsetDepth". для моих целей нужны другие оффсеты. я могу задать зависимость моих оффсетов от этих но тогда их нельзя будет редактировать, только просматривать значения.

Вопрос в следующем - где "OffsetWidth" и "OffsetDepth" считаются и можно ли подменить их на свои?

На сколько я понял данные значения считаются автоматически рейвитом при коннекте 2-х дактов. Можно ли программно переопределить расчеты для моих фиттингов.

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

Заранее спасибо.

Виктор Чекалин:
LmRArtist, добрый день.

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

Программно задать нужные значение смещений можно с помощью Dynamic Model Updater после создания фитинга.

Алексей Кузин:
Dynamic Model Updater срабатывает уже после создания. Например при расчетах геометрии фиттинга если использовать мои оффсеты то получается ситуация - рисуем раутингом duct - transition - duct. Ревитовские оффсеты посчитались верно, но мы их в геометрии не используем, поэтому рисуется соединение со смещением, потом срабатывает Updater и считаются мои оффсеты. геометрия меняется на правильную, но излом, полученный при построении остается...

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

следовательно вопрос можно ли в Updater узнать что именно изменилось в фиттинге (какой именно параметр) без построения системы контроля изменений (ну или как её назвать правильно)...

Виктор Чекалин:
Узнать что именно изменилось при помощью DMU нельзя. Можем лишь знать что объект изменился.

Пока задача не очень ясна. Можете поподробней рассказать, что за фитинг, какой результат в итоге хотите получить и почему не подходят стандартные смещения? Желательно с изображениями.

P.S. Большая просьба не писать английские слова русскими буквами, тем более что вы это делаете неправильно. Очень тяжело читать в итоге. Особенно Рейвит... Бррр... где вы такое вообще услышали..

Алексей Кузин:
Прошу прощения за мой английский...)
Задача - имеется ductFitting в MEP. необходимо сделать подобный в Revit. параметры должны быть идентичными, чтобы для пользователей было всё понятно (поэтому стандартные смещения не подходят)

в частности offsetWidth - это смещение от правой грани на входе до центра на выходы.
моё смещение Left Set - это смещение от левой грани на входе до левой грани на выходе.
их зависимость - Left Set = WidthIn - 0.5 * WidthOut - offsetWidth

Вложил примерный rfa. Сделал зависимость LeftSet от OffsetWidth. всё работает замечательно, но пропадает возможность редактировать LeftSet. А это не приемлемо!

PS:
Если делать расчет геометрии через OffsetWidth:
Меняется OffsetWidth я могу  программно поменять LeftSet, для этого 2 триггера:

var ductFittingCatFilter = new ElementCategoryFilter(BuiltInCategory.OST_DuctFitting);
UpdaterRegistry.AddTrigger(updater.GetUpdaterId(), ductFittingCatFilter, Element.GetChangeTypeElementAddition());
UpdaterRegistry.AddTrigger(updater.GetUpdaterId(), ductFittingCatFilter, Element.GetChangeTypeParameter(new ElementId(BuiltInParameter.RBS_FAMILY_CONTENT_OFFSET_WIDTH)));

Осталось осуществить реакцию на изменение Left Set, чтобы когда пользователь менял значение Left Set изменялось и OffsetWidth, пока что непонятно как это сделать...

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии