欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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