【MSCE C#】ElementGraphicsProcessor疑问

使用以下设置,将Element解析为PolyfaceHeader

public override bool ProcessAsBody(bool isCurved)
{
    return false;
}
public override bool ProcessAsFacets(bool isPolyface)
{
    return true;
}


public override BentleyStatus ProcessFacets(PolyfaceHeader meshData, bool filled)
{
    list.Add(meshData);  
    return base.ProcessFacets(meshData, filled);
}

返回的PolyfaceHeader参数见下

这个参数是指面的数量吗?如何进一步解析,得到每一个面的数据?

通过PolyfaceHeader.Point和PolyfaceHeader.PointIndex可以计算出平面数据,但是如果是曲面的话,好像就无法表达。看点的数量,曲面已经平面化了?

Parents
  • 这个您可以在Msth中画一个矩形,再画一个圆形,然后用Mstn的Mesh From Element转换成Mesh元素,把Mesh元素传递给这个接口,然后调试看一下meshData的具体值跟Mesh图形对照一下就明白了,Mesh元素的几何数据画的特殊一点这样利于观察,例如您的圆心画到原点,半径给成1,10等这些特殊值。

    MISSING RESOURCE: VerifiedBy Chao Cheng 

  • 平面数据都很好理解,对于一个复杂的三维元素,不是很能理解。

    测试了examples\Elements\exampleSolids 的代码,代码无法操作复杂实体。

    后来通过SolidUtil.GetBodyFaces,取到了面级别的数据。但是新的问题,.net下没有封装GetPlanarFaceData方法,无法判断面的种类。

    另外,想请问下,ElementGraphicsProcessor和SolidUtil这两个几何类的建议适用场景?

Reply
  • 平面数据都很好理解,对于一个复杂的三维元素,不是很能理解。

    测试了examples\Elements\exampleSolids 的代码,代码无法操作复杂实体。

    后来通过SolidUtil.GetBodyFaces,取到了面级别的数据。但是新的问题,.net下没有封装GetPlanarFaceData方法,无法判断面的种类。

    另外,想请问下,ElementGraphicsProcessor和SolidUtil这两个几何类的建议适用场景?

Children