vtkSmartPointer<vtkCellPicker> m_cellPicker;
double* ijk = m_cellPicker->GetPickNormal();
获取的发现反向,造成这样情况的原因可能选择的面是片体(壳),需要把片体或者壳缝合或者转换为实体正常。
业务情况导入STEP,在VTK中渲染,选择面上的点法相异常,增加STEP导入后获取组合体中片体,然后缝合片体。下面方法还是有些问题的,缝合的片体可以转换为实体,但是运行后没有实体显示转换失败,没有好的方法解决。
TopoDS_Shape dmuCADReader::CreateSolidFromFaces(TopoDS_Shape theTopoDS_Shape)
{
std::vector<TopoDS_Face> faces;
TopoDS_Shape sewedShape ;
try
{
for (TopExp_Explorer explorer(theTopoDS_Shape, TopAbs_COMPOUND); explorer.More(); explorer.Next()) {
TopoDS_Shape subshape = explorer.Current();
int