RevitAPI: 模板文件的PipeScheduleType丢失

4 篇文章 1 订阅

前段时间碰到一个很奇怪的问题,用户发给我一个rte文件,Revit 2015里面用它创建出来的文档里面没有任何PipeScheduleType,

换句话说,所有的PipeType.Class都是null,即便文档里面有很多的管段和管道类型:



经过和开发人员沟通,这种情况应该是在文件升级的过程中产生的问题。

解决方法只有再手工创建管段,这样就会自动创建PipeScheduleType,无法使用API,因为PipeSegment.Create方法需要传入一个PipeScheduleTypeId。

创建完之后,要使它生效,必须把管道类型的管段设置为新的管段,就像下面这样:


修改之后,奇怪的是,PipeType.Class依然是null,到底怎么回事?


询问过开发人员之后,发现,PipeType.Class即将移除,取而代之的是它将在Pipe中以参数得以体现,具体做法如下:

Autodesk.Revit.DB.Plumbing.Pipe pipe = null;
var pipeClass = pipe.get_Parameter(BuiltInParameter.RBS_PIPE_CLASS_PARAM);
var pipeScheduleTypeId = pipeClass.AsElementId();

那么如何用API来修改管段呢?请看代码:

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, "some description");
using (Transaction transaction = new Transaction(RevitDoc))
{
    transaction.Start("Change pipe segment");
    rpm.AddRule(groupType, rule);
    transaction.Commit();
}

来看几个关键点:
  • 首先通过PipeType.RoutingPreferenceManager属性获取RoutingPreferenceManager
  • 然后创建一个RoutingPreferenceRule
  • 最后通过AddRule方法把这个Rule加进去



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值