opencascade通过surface和wires构建face的注意事项

通过surface和wires构建face时,常规的一种直观方法是可能会发生问题的。此常规方法如下:

  1. 通过surface调用BRepLib_MakeFace直接构建face
  2. 通过BRepLib_MakeFace.Add往face上面添加wire

这个流程有一个潜在的风险,第一步在执行的时候,系统可能会根据surface的boundary来创建wire。这里自动创建的wire很有可能会是用户不希望看到的。

这里提出另外一种方法来构建,这种方法需要我们事先知道哪个wire是外部wire。

  1. 通过BRepLib_MakeFace(surface, outerWire)创建初始化aFace
  2. 通过for aWire in innerWires:
    BRepLib_MakeFace(aFace, aWire)来完善face

这一种方法,会避开常规直观方法的坑。

《opencascade通过surface和wires构建face的注意事项》有2个想法

  1. 最近发现OCC在Face和Wire(相当于其他CAD几何内核中的Loop的拓扑元素)之间的关系上搞得相当差。 在产生Face时如果不注意Wire的方向即OuterWire应该是CCW, 而InnerWire是CW(按Face方向)。 产生的Face后再访问Wire时是不能保证Face的内点在Wire前进的左边。

    1. 好像occ是有提供通过wire找出orderedEdge的方法。如果不特意找orderedEdge,直接用wire会出现您说到的情况。

发表评论

邮箱地址不会被公开。 必填项已用*标注