Rhino3D犀牛中文网

标题: Rhino7插件开发时如何用代码直接生成SubD对象? [打印本页]

作者: 天蓝海也蓝    时间: 2020-3-28 21:16
标题: Rhino7插件开发时如何用代码直接生成SubD对象?
哪位大侠知道如何在Rhino7插件开发时用代码直接生成SubD对象?是不是现在还不能通过RhinoCommon7开发插件用代码直接生成SubD对象?还是我没找对方法?我看SubDFaceList的Add(SubDEdge[], Boolean[]) 函数被定义成了internal,不是public,无法调用,SubD也没有添加面的函数接口。


作者: Jorin    时间: 2020-3-29 20:06
可以直接生成 SubD 对象的,请参考这里:
https://developer.rhino3d.com/wi ... o_Geometry_SubD.htm
比较常用的是 CreateFromMesh(Mesh) 这个静态方法。
作者: 天蓝海也蓝    时间: 2020-3-29 21:37
Jorin 发表于 2020-3-29 20:06
可以直接生成 SubD 对象的,请参考这里:
https://developer.rhino3d.com/wip/api/RhinoCommon/html/T_Rhin ...

感谢回复。但是还是不如下面的方法直接,下面的方法控制应该更灵活,但是最后一步增加面的函数却没有开放
            SubD subD = new SubD();

            Point3d p11 = new Point3d(0, 0, 0);
            Point3d p12 = new Point3d(0, 10, 10);
            Point3d p13 = new Point3d(0, 20, 20);
            Point3d p14 = new Point3d(0, 22, 30);
                  
            Point3d p21 = new Point3d(40, 0, 0);
            Point3d p22 = new Point3d(40, 10, 10);
            Point3d p23 = new Point3d(40, 20, 20);
            Point3d p24 = new Point3d(40, 22, 30);

            SubDVertex v11 = subD.Vertices.Add(SubDVertexTag.Smooth, p11);
            SubDVertex v12 = subD.Vertices.Add(SubDVertexTag.Smooth, p12);
            SubDVertex v13 = subD.Vertices.Add(SubDVertexTag.Smooth, p13);
            SubDVertex v14 = subD.Vertices.Add(SubDVertexTag.Smooth, p14);

            SubDVertex v21 = subD.Vertices.Add(SubDVertexTag.Smooth, p21);
            SubDVertex v22 = subD.Vertices.Add(SubDVertexTag.Smooth, p22);
            SubDVertex v23 = subD.Vertices.Add(SubDVertexTag.Smooth, p23);
            SubDVertex v24 = subD.Vertices.Add(SubDVertexTag.Smooth, p24);

            SubDEdge eg1121 = subD.Edges.Add(SubDEdgeTag.Smooth, v11, v21);
            SubDEdge eg2122 = subD.Edges.Add(SubDEdgeTag.Smooth, v21, v22);
            SubDEdge eg2212 = subD.Edges.Add(SubDEdgeTag.Smooth, v22, v12);
            SubDEdge eg1211 = subD.Edges.Add(SubDEdgeTag.Smooth, v12, v11);

            SubDEdge eg1222 = subD.Edges.Add(SubDEdgeTag.Smooth, v12, v22);
            SubDEdge eg2223 = subD.Edges.Add(SubDEdgeTag.Smooth, v22, v23);
            SubDEdge eg2313 = subD.Edges.Add(SubDEdgeTag.Smooth, v23, v13);
            SubDEdge eg1312 = subD.Edges.Add(SubDEdgeTag.Smooth, v13, v23);

            //subD.Faces.Add()  //这个函数目前无法引用

            doc.Objects.Add(subD);
            doc.Views.Redraw();
作者: 天蓝海也蓝    时间: 2020-3-29 21:42
另外,要是有直接设置折痕、尖点的函数就更好了。





欢迎光临 Rhino3D犀牛中文网 (https://www.rhino3d.asia/) Powered by Discuz! X3.3