revit二次开发 导出结构柱三角面出现的特殊情况

导出弯头的时候,正常的流程如下:

OnElementBegin
OnInstanceBegin
OnFaceBegin
OnPolymesh
OnFaceEnd
OnInstanceEnd
OnElementEnd

 

但是,柱子的逻辑是先运行了[OnInstanceEnd],然后在运行的[OnPolymesh]。

对于这种非正常的情况下,通过OnPolymesh获得的顶点肯定是实际的世界坐标。

那么最后导出坐标的时候,是不需要矩阵变换的。使用使用个单位矩阵即可。

 

反过来讲,如果是正常流程那么坐标是局部坐标,矩阵是有数值的,不是单位矩阵。

通过OnInstanceBegin获得的此时的节点的矩阵需要保存下来,最后导出坐标的时候,需要矩阵变换。

 

贴个图:

revit二次开发 导出结构柱三角面出现的特殊情况

 

结构柱,不仅有几何实例,还有solid:

revit二次开发 导出结构柱三角面出现的特殊情况

2019.10.21 修改bug总结