个人中心 我的学堂 我的旅行 退出账号

Rhino中的Curve,CurveObject,GH_Curve的区别与不同

2017.07.02 | , , ,
大水牛参数化设计 大水牛参数化设计

作者:CPF
原文链接

之所以选择此三者,是因为Point太简单,而Surface物件又太过复杂,剩下不表。当然通过此三者,你可以进而推广到其他地方。最好的资料莫过于SDK。


Rhino.Geometry.Curve

640.webp.jpg

1.是对Curve这个类的的描述,从中我们我们可以看到其中一个重要参数为t。

2.Curve类所在的命名空间

3.RhinoCommon.ll的版本号,主版本号为5。

640.webp (1).jpg

1.特性,在一定程度上表示Curve的实体是可以序列化,即写入文档文件。

2.Curve类继承自GeometryBase类,这样Curve类就继承GeometryBase的一些方法和属性

640.webp (2).jpg

1.Rhino.Geometry.Curve的继承关系,表明ArcCurve、CurveProxy、LineCurve、NurbsCurve、PolyCurve、PolyLineCurve是Curve的子类,他们之间存在一定的转换方式。


构造方法Constructor

640.webp (3).jpg

1.受保护的方法,我们不可以调用,但是可以再类的内部调用,之所以有这样的受保护的方法,可能是因为你单独调用它是无意义的甚至危险的,而我们通过静态方法在类的内部进行调用的话,这样可以完成一系列的赋值操作,使这个实例具有几何意义上的属性。

2、受保护的方法,通过反序列化将数据流转化为Curve实例,它受保护的原因也许仅仅是因为他太难了,我猜的。

640.webp (4).jpg

1.带小钥匙,受保护的方法,只能在类的内部调用,但是可以通过继承,在子类的内部调用

2.可以调用的实例方法

3.静态方法,通过Curve直接调用,里面在一定程度上调用了Curve()这个受保护的构造方法,多半用于返回一个Curve类实例。


属性Properties

640.webp (5).jpg

属性,我们可以直接通过  .  运算符直接获取的的实例字段。从中我们可以看到描述Curve类的重要属性,基本上都是几何意义上的描述,阶数、维度、区间、是否闭合的、是否是周期曲线、曲线的起点、曲线的终点等。

如何区别Curve,CurveObject,GH_Curve的区别与不同,答案是属性和方法。至于CurveObject,GH_Curve的类描述,继承关系、构造方法、实例方法、静态方法可以通过上述步骤一探究竟,所以不再赘述。


Curve,CurveObject的属性对比

640.webp (6).jpg

我们先通过属性来了解CurveObject,它存在一个Document的属性,返回一个RhinoDoc的实例,即物体所在的文档,进而可以猜想到我们在Rhino这个软件界面中看到的物件就是CurveObject,而不是Curve,

640.webp (7).jpg

而他的另外一个CurveGeometry的属性,返回一个Curve的实例,CurveObject实例通过内部的字段,字段类型为Curve,存储了最为基本的几何数据。如果我们想直接操作文档中的CurveObject的几何特征,我们需要通过调整CurveGeometry的属性进而调整CurveObject。

IsHideen,IsLocked,IsDeleted,Visible是不是很熟悉,这基本上都是rhino界面操作的一些基本命令。

当然如果你不写rhino插件的话,基本上不会接触CurveObject,我们大部分操作的都是Curve这种几何源数据。

640.webp (9).jpg

接下来我们通过物件描述,以及CurveObject的Attribute来进一步了解文档中物件。我们在几何图形部分看到Curve类的大部分属性。而其他的一些东西则属于CurveObject。CurveObject的另外一个重要属性为Attribute.里面包含了渲染材质,图层等一系列的属于文档物件的特有属性。里面包含东西过多没办法一一列举。

640.webp (10).jpg


GH_Curve

强调一点,GH_Curve的几何属性存储于字段m_value中。

所以尽量不要调用grasshopper的电池,这样的话会涉及大量的数据转换,Curve转为GH_Curve,GH_Curve转化为Curve。

640.webp (11).jpg

那么知道这些有什么用,如果涉及几何建模,那么从Curve方向查找,如果涉及材质,图层等物件属性的话,从CurveObject方向查找,比如想查相机,文字,图层等,那么应该在Rhino.DocObject的命名空间中找。至于GH_Curve,还是把它放在一边。

废话颇多,总结下来,Curve是存储几何数据的,CurveObject是在Rhino中可以看见的物件,而GH_Curve是在Grasshopper中可以看见的物件。也算是对框架的一个介绍吧。


最后放个相机小代码。

640.webp (12).jpg

0.gif



感谢 远洋设计汇 授权分享

欢迎关注他们的微信公众号

微信ID:Sinooceanland-Design

大水牛参数化设计.png

0条评论
大水牛参数化设计 大水牛参数化设计

作者:CPF
原文链接

media@archcollege.com
建筑学院来稿须知 关闭
感谢您的关注与支持!我们非常欢迎各类投稿。
几点简单的来稿须知,望您耐心读完。
来稿要求如下:

● 作品类稿件

1、高清项目实景照片/效果图/模型照片/手绘草图
2、高清技术图纸,如:分析图/主要平立剖/总平面/关键节点详图
(图片要求:无水印,格式为JPG,图片分辨率72,宽度大于1200像素)
3、详实的设计说明800字左右(word格式)
4、真实准确的基本项目信息
5、如有项目视频,请提供高清项目视频
6、贵司的LOGO、官网相关信息。(用于注明文章出处及作者)

● 其他稿件

1、配图清晰且无水印图片
2、内容有趣有料,文字流畅通顺。
3、作者姓名,若有公号请提供公号名称及LOGO
我们的编辑将在收到稿件后的3个工作日内审稿并与您取得联系,如果没有刊载也会在3个工作日内您答复。
投稿邮箱:tougao@archcollege.com
如有其他疑问请加QQ:359440856 或微信: jzxy-gtn
建筑学院 建筑学院

建筑学院APP

为建筑师而打造的精品应用

点击下载
close
社交账号登录
close
close
close
欢迎加入【建筑学院】
快去完善你的个人信息吧!
完善资料
等下完善
close