Revit二次开发 生成阀门找不到Connector的问题
程序员文章站
2022-03-11 09:12:58
最近,在做管道连接的时候,生成阀门时,当即获取阀门的...
最近,在做管道连接的时候,生成阀门时,当即获取阀门的Connector时候,取到的结果为空。代码片断如下:
using (Transaction ts = new Transaction(m_Doc, "生成阀门"))
{
ts.Start();
fi = CreaetFamilyInstance(m_Doc, "闸阀", diameter.ToString(), Origin, 0);
ConnectorManager cm = fi.MEPModel.ConnectorManager;
ts.Commit();
}
但是,当阀门生成后,用RevitLookUp查看阀门,其ConnectorManager却是非空的。
反复查找问题的过程中,还发现了一个奇怪的现象,只要文档中已经放置有至少一个阀门的时候,运行上面代码后,cm是非空的。
经过以上分析,基本上可以得到一个结论,就是当文档中没有阀门的时候,生成阀门后要先提交事务,然后才能获取其的ConnectorManager。
把代码修改如下:
using (Transaction ts = new Transaction(m_Doc, "生成阀门"))
{
ts.Start();
fi = CreaetFamilyInstance(m_Doc, "闸阀", diameter.ToString(), Origin, 0);
ts.Commit();
}
ConnectorManager cm = fi.MEPModel.ConnectorManager;
果然,在这种情况下,无论文档中原来是否有阀门,cm都可以取到ConnectorManager。
这也说明在Revit中,某些族实例生成后,在事务提交之前,其的某些属性是不全的。
本文地址:https://blog.csdn.net/peng08303/article/details/109205715