Отсутствие PipeScheduleType в файле шаблона rte
Я столкнулся со странной проблемой в Revit 2015. В файле проекта, созданного с помощью шаблона, присланного от клиента, полностью отсутствуют PipeScheduleType (Спецификация/Тип). Я имею ввиду, что свойство PipeType.Class всегда равно null, даже если в документе определены сегменты труб.
После консультации с командой разработчиков, мы выяснили, что это произошло из-за обновления файла шаблона при использовании его в новой версии.
Единственное решение в этом случае – вручную создать сегменты. Это невозможно сделать с помощью Revit API, так как методу PipeSegment.Create необходимо передать в качестве параметра PipeScheduleId. После создания сегмента, PipeScheduleType будет создан автоматически. Ну и чтобы потом это все заработало, нужно изменить сегмент трубы для типа трубы, как это указано ниже.
Однако, даже после этих манипуляций, PipeType.Class так и равен null. В чем же дело??
И снова на помощь приходит команда разработчиков. Свойство PipeType.Class теперь принадлежит классу Pipe. Таким образом, нам надо работать с параметром объекта класса Pipe. Например, вот так:
- [ Autodesk.Revit.DB.Plumbing.Pipe pipe = null;
- var pipeClass = pipe.get_Parameter(BuiltInParameter.RBS_PIPE_CLASS_PARAM);
- var pipeScheduleTypeId = pipeClass.AsElementId(); [$/code]]
- Но а как изменить сегмент типа трубы с помощью API? Пример ниже:
- Код - C#: [Выделить]
- ElementId theSegmentId = new ElementId(1803995);
- PipeType pipeType = doc.GetElement(new ElementId(1660690)) as PipeType;
- var rpm = pipeType.RoutingPreferenceManager;
- var groupType = RoutingPreferenceRuleGroupType.Segments;
- RoutingPreferenceRule rule = new RoutingPreferenceRule(theSegmentId,
- "description");
- using (Transaction transaction = new Transaction(RevitDoc))
- {
- transaction.Start("Change pipe segment");
- rpm.AddRule(groupType, rule);
- transaction.Commit();
- }
- Первым делом, получаем объект RoutingPreferenceManager с помощью свойства PipeType.RoutingPreferenceManager
- Затем создаем новое правило RoutingPreferenceRule
- Наконец, добавляем правило с помощью метода AddRule
Источник: http://adndevblog.typepad.com/aec/2015/05/revitapi-pipescheduletype-is-missing-for-a-rte-file.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=2822
Опубликовано 26.06.2015Отредактировано 28.06.2015 в 20:29:06