犀牛基础讲解,Rhino中Curve,CurveObject,GH_Curve的区别与联系

2019-06-27  343 分类:犀牛资讯

犀牛基础讲解,Rhino中Curve,CurveObject,GH_Curve的区别与联系

犀牛软件是我们熟知和应用广泛的建模软件,很多人对于rhion软件都非常感兴趣,其中有不少知识点及相关基础常识需要犀牛新人去学习,下面品索就为大家带来犀牛基础讲解,Rhino中Curve,CurveObject,GH_Curve的区别与联系,为大家盘点一下三者的区别与联系,让你不在混淆,迷糊。

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

Rhino.Geometry.Curve

a5fd7652.png

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

2.Curve类所在的命名空间

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

77372d02.png

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

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

7d1110dc.png

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

构造方法Constructor

71855b70.png

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

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

84313_th.png

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

2.可以调用的实例方法

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

属性Properties

43575_th.png

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

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

Curve,CurveObject的属性对比

46094_th.png

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

f96a9_th.png

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

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

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

7ee42_th.png

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

42d09_th.png

GH_Curve

GH_Curve的几何属性存储于字段m_value中。

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

f376f_th.png

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

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

最后放个相机小代码

来源:CPF/大水牛数字设计联盟

猜你喜欢