这次主要分享的是Revit管线中的布管系统配置相关的API,案例讲解的是弯头的设置,其他的操作步骤是相似的。直接上代码,GoGoGo~~
获取数据
//选择管道
Reference selRef = uidoc.Selection.PickObject(Autodesk.Revit.UI.Selection.ObjectType.Element);
Pipe selPipe = doc.GetElement(selRef) as Pipe;
PipeType selPipeType = selPipe.PipeType;
//已知的一个弯头FamilySymbol Id是我直接用lookup取的。示例使用
FamilySymbol nwElowsFS = doc.GetElement(new ElementId(211606)) as FamilySymbol;
//得到布管系统信息
RoutingPreferenceManager routing = selPipeType.RoutingPreferenceManager;
#region 获取弯头族信息
//示例得到弯头的族类型
RoutingPreferenceRule routingRule = routing.GetRule(RoutingPreferenceRuleGroupType.Elbows, 0);
//获取弯头设置的familysymbol
FamilySymbol mid = doc.GetElement(routingRule.MEPPartId) as FamilySymbol;
PrimarySizeCriterion primarySize = routingRule.GetCriterion(0) as PrimarySizeCriterion;//获取弯头的尺寸设置值
double minSize = primarySize.MinimumSize;
double maxSize = primarySize.MaximumSize;
MessageBox.Show($"族名称{mid.FamilyName} 族类型名称{mid.Name}, 最小尺寸{minSize * 304.8} , 最大尺寸{maxSize * 304.8}");
#endregion
其中RoutingPreferenceRuleGroupType是一个枚举值,对应参数的枚举值可以自己去试一下就知道了。每一个RoutingPreferenceRule参数代表着一行数据。
下面是添加一行自己定义的规则的代码
Transaction createTrans = new Transaction(doc, "改变管道系统里面的数值");
createTrans.Start();
//设置尺寸
PrimarySizeCriterion nwPriSize = new PrimarySizeCriterion(25 / 304.8, 150 / 304.8);
//创建新的布管规则
RoutingPreferenceRule nwRule = new RoutingPreferenceRule(nwElowsFS.Id, "新建");
//添加尺寸信息
nwRule.AddCriterion(nwPriSize);
//添加新的布管规则
routing.AddRule(RoutingPreferenceRuleGroupType.Elbows, nwRule, 0);
createTrans.Commit();
下面是修改第一个规则的族为自己想要的族类型
Transaction replaceTrans = new Transaction(doc, "替换");
replaceTrans.Start();
//创建新的布管规则
RoutingPreferenceRule nwRule = new RoutingPreferenceRule(nwElowsFS.Id, "替换");
//添加尺寸信息
nwRule.AddCriterion(primarySize);
//添加新的布管规则
routing.AddRule(RoutingPreferenceRuleGroupType.Elbows, nwRule, 0);
routing.RemoveRule(RoutingPreferenceRuleGroupType.Elbows, 1);
replaceTrans.Commit();
这些是今天的所有分享,希望能够帮助到你。