[ORD C#]剪切体

请问下图中的工具,底层逻辑是不是和BooleanCut方法一样

我发现这个工具有些线能切,有些不能切,就和我用BooleanCut方法一样

而且这样一切也不会报错失败,而是会切出两个一模一样的元素来,工具和方法都是一样,都会切出两个一模一样的元素

这是我的测试文件,能帮我看下是什么原因吗?3D模型.dgn

Parents Reply Children
  • 那c#有剪切mesh的方法吗?我用PolyfaceHeader.ComputeCutAndFill切了后好像有点问题,下面是我的测试代码,用法有问题吗

    我用一个mesh面切隧洞结果出来的add到模型中就是两个很奇怪的mesh,好像不完整样的

    ElementAgenda eleAgen = new ElementAgenda();
                    SelectionSetManager.BuildAgenda(ref eleAgen);
                    if (eleAgen.GetCount() < 2)
                        return;
                    Element ele1 = eleAgen.GetEntry(0);
                    Element ele2 = eleAgen.GetEntry(1);
    
                    MeshHeaderElement mesh = (MeshHeaderElement)ele1;
                    PolyfaceHeader polyface = mesh.GetMeshData();
                    MeshHeaderElement mesh2 = (MeshHeaderElement)ele2;
                    PolyfaceHeader polyfaceCut = mesh2.GetMeshData();
                    List<PolyfaceHeader> resA = new List<PolyfaceHeader>();
                    List<PolyfaceHeader> resB = new List<PolyfaceHeader>();
                    PolyfaceHeader.ComputeCutAndFill(polyfaceCut, polyface, resA, resB);
                    if (resA.Count > 0 && resB.Count > 0)
                    {
                        foreach (var item in resA)
                        {
                            MeshHeaderElement e = new MeshHeaderElement(Session.Instance.GetActiveDgnModel(), null, item);
                            if (StatusInt.Success == e.AddToModel())
                                ;
                        }
                        foreach (var item in resB)
                        {
                            MeshHeaderElement e = new MeshHeaderElement(Session.Instance.GetActiveDgnModel(), null, item);
                            if (StatusInt.Success == e.AddToModel())
                                ;
                        }
                    }

  • 我刚刚又检查了一下您的模型,您最开始剪切失败其实不是因为圆柱超范围造成的,而是那根线太长了超处范围造成的,您把用来剪切的线缩短一点就可以了。

  • 可是我后面要剪切的是很长的隧洞,把线缩短并不能解决体大小的问题,而且我发现好像你们的接口是能剪切很长的隧洞solid的,不过要在特点位置剪切好像

    下面是我的测试模型,分别在顶视图和前视图我都绘制了一根线来剪切这个隧洞,但是只有前视图的能剪切成功(用你们的剪切工具和接口代码都是一样),这是为什么啊?

    麻烦您帮我看下这个模型,你们用工具能剪切顶视图和前视图的吗?为什么我这边顶视图的剪切不了

    测试图纸002.dgn

  • 体超出范围就会出现这种不确定的情况,您可以在切之前获取一下体的范围,如果超出500m的范围了,就把体缩小个10倍(Modify.TransformBody),做完切之后再放大回去即可。不想用这种方式,而用Mesh的话,目前c#操作Mesh的接口不太全,得想办法调用c/c++的接口了。

    Answer Verified By: lai xingguang