热门标签

[已解答] Rhino7插件开发时如何用代码直接生成SubD对象?

[复制链接]
查看: 604|回复: 3

1

主题

3

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2020-3-28 21:16:07 | 显示全部楼层 |阅读模式
哪位大侠知道如何在Rhino7插件开发时用代码直接生成SubD对象?是不是现在还不能通过RhinoCommon7开发插件用代码直接生成SubD对象?还是我没找对方法?我看SubDFaceList的Add(SubDEdge[], Boolean[]) 函数被定义成了internal,不是public,无法调用,SubD也没有添加面的函数接口。

回复

使用道具 举报

4

主题

30

帖子

144

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
144
发表于 2020-3-29 20:06:28 | 显示全部楼层
可以直接生成 SubD 对象的,请参考这里:
https://developer.rhino3d.com/wi ... o_Geometry_SubD.htm
比较常用的是 CreateFromMesh(Mesh) 这个静态方法。
回复

使用道具 举报

1

主题

3

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2020-3-29 21:37:56 | 显示全部楼层
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();
回复

使用道具 举报

1

主题

3

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2020-3-29 21:42:18 | 显示全部楼层
另外,要是有直接设置折痕、尖点的函数就更好了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩推荐

2020暑期 Rhino 建筑曲面造型高级面授课程

2020-03-21 面授课程

2020暑期 Rhino 工业/设计曲面造型高级面授

2020-03-20 面授课程

2020暑期 Grasshopper参数化系统面授课程

2020-03-20 面授课程

VisualARQ 2.7 发布更新

2020-02-17 新闻

VisualARQ 2.6 发布更新

2019-12-12 新闻

ShapeMap–复杂形体的表面纹理贴合参数化插

2019-11-04 新闻

图文教学 | Rhino 6 细分建模 BARCELONA 椅

2019-06-30 图文教学

图文教学 | Rhino 6 细分建模-马头吊坠

2019-05-30 图文教学

Rhino3D(犀牛)中文网

  • 深圳:0755-29642189
  • 上海:021-56496412
  • 成都:028-61592400
  • support@shaper3d.com

关注我们

Copyright   ©2007-2017  Rhino3D(犀牛)中文网  Powered by©Discuz!     ( 粤ICP备12051517号-5