Revit二次开发 生成阀门找不到Connector的问题

  • A+
所属分类:revit

最近,在做管道连接的时候,生成阀门时,当即获取阀门的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中,某些族实例生成后,在事务提交之前,其的某些属性是不全的。

历史上的今天:

发表评论

您必须登录才能发表评论!