#include <TopoDS_Shape.hxx>
#include <TopExp_Explorer.hxx>
#include <TopoDS_Face.hxx>
#include <BRepTools.hxx>
#include <Geom_Surface.hxx>
#include <gp_Pln.hxx>
#include <gp_Dir.hxx>
#include <TopAbs_Orientation.hxx>
#include <vector>
#include <iostream>
struct FaceInfo {
TopoDS_Face face;
gp_Dir normal;
};
std::vector<FaceInfo> CheckFaceOrientation(const TopoDS_Shape& shell) {
std::vector<FaceInfo> faceInfos;
gp_Dir firstNormal;
for (TopExp_Explorer exp(shell, TopAbs_FACE); exp.More(); exp.Next()) {
TopoDS_Face face = TopoDS::Face(exp.Current());
Handle(Geom_Surface) surface = BRep_Tool::Surface(face);
GeomLProp_SLProps props(surface, 0.5, 0.5, 1, 1e-6);
if (props.IsNormalDefined()) { <