# Rhino开发教程

**URL:** <https://cn.discourse.mcneel.com/t/topic/1292>\
**Category:** RhinoScript / RhinoPython\
**Created:** [2018年三月2日 03:32 UTC](https://cn.discourse.mcneel.com/t/topic/1292 "2018-03-02T03:32:57Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![gxyanjiaju](https://sea3.discourse-cdn.com/mcneel/user_avatar/cn.discourse.mcneel.com/gxyanjiaju/32/1659_2.png) [@gxyanjiaju](https://cn.discourse.mcneel.com/u/gxyanjiaju)\
**Post date:** [2018年三月2日 03:32 UTC](https://cn.discourse.mcneel.com/t/topic/1292/1 "2018-03-02T03:32:57Z")

</div>

有关于Rhino C#开发方面的一些官方教程或比较好的教程吗？请帮忙推荐一下。我自学老是在门口转悠，不得要领。

---

<div class="post-metadata">

**Author:** ![KelvinC](https://sea3.discourse-cdn.com/mcneel/user_avatar/cn.discourse.mcneel.com/kelvinc/32/3391_2.png) [@KelvinC](https://cn.discourse.mcneel.com/u/KelvinC)\
**Post date:** [2018年三月3日 09:45 UTC](https://cn.discourse.mcneel.com/t/topic/1292/3 "2018-03-03T09:45:52Z")

</div>

@Jorin，請看一下這個問題。

---

<div class="post-metadata">

**Author:** ![Jorin](https://sea3.discourse-cdn.com/mcneel/user_avatar/cn.discourse.mcneel.com/jorin/32/3292_2.png) [@Jorin](https://cn.discourse.mcneel.com/u/Jorin)\
**Post date:** [2018年三月3日 15:21 UTC](https://cn.discourse.mcneel.com/t/topic/1292/4 "2018-03-03T15:21:07Z")

</div>

你好，

对于有 C# 基础的用户，想要入门 Rhino C# 的开发，最好的方式就是学习案例：

> **[Samples](https://developer.rhino3d.com/samples/)**
>
> All the official sample code available for Rhino and Grasshopper developers.

这里提供的案例几乎覆盖了 RhinoCommon 开发的方方面面。从添加简单的几何体，到图层、工作视窗等等的操作。

当然前提是需要用户对 Rhino 要有足够的了解，因为对于初学者来说，敲代码往往是对手工操作的重现，对 Rhino 基础工具和工作流程不够了解，开发就无从谈起了。

祝好！

---

<div class="post-metadata">

**Author:** ![gxyanjiaju](https://sea3.discourse-cdn.com/mcneel/user_avatar/cn.discourse.mcneel.com/gxyanjiaju/32/1659_2.png) [@gxyanjiaju](https://cn.discourse.mcneel.com/u/gxyanjiaju)\
**Post date:** [2018年三月4日 02:23 UTC](https://cn.discourse.mcneel.com/t/topic/1292/5 "2018-03-04T02:23:52Z")

</div>

主要对其中的一些API还没有理解透彻，不太会使用。比如一个Brep,按我的理解，它应该是由一些Surface组成的.也就是Brep.Faces所包含的曲面组成的。我可以提取所想要的surface的数据。对这些概念，有点含糊不清，能给我们讲讲吗？  
我主要是想开发一个计算建筑工程量的插件。直接在地形地貌上开挖土方，修建建筑物，得出土方量和建筑物的工程量。相比欧迪克Revit平台的臃肿，Rhino平台速度太好了，最适合。

---

<div class="post-metadata">

**Author:** ![Jorin](https://sea3.discourse-cdn.com/mcneel/user_avatar/cn.discourse.mcneel.com/jorin/32/3292_2.png) [@Jorin](https://cn.discourse.mcneel.com/u/Jorin)\
**Post date:** [2018年三月4日 03:19 UTC](https://cn.discourse.mcneel.com/t/topic/1292/6 "2018-03-04T03:19:00Z")

</div>

按照您的描述，您应该是对 Rhino 的使用以及 Rhino 几何层面的知识不够了解，建议阅读下面的内容，当您了解了 Rhino 中几何的构成，API 中的功能与之对应，都是现成的：

这个教程详细讲解了 Rhino 中的点、曲线、曲面、网格等等的构成，并且穿插讲解了一些常用的算法，其中的案例代码用的是 Python ,但几何理论是完全一样的。  
[http://developer.rhino3d.com/guides/rhinopython/primer-101/8-geometry/](http://developer.rhino3d.com/guides/rhinopython/primer-101/8-geometry/)

当您了解了 Rhino 的几何知识，调用 API 是非常容易的，比如当您了解了 Rhino 中曲面的构成，您就可以看懂 API 中 Surface 类的属性和方法分别代表的什么，而且 API 中也有详细的描述；再例如当您了解了曲面的 UV 构成，就可以通过 [Surface.NormalAt](http://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Surface_NormalAt.htm) 方法提取到曲面任意位置的法线。

---

<div class="post-metadata">

**Author:** ![gxyanjiaju](https://sea3.discourse-cdn.com/mcneel/user_avatar/cn.discourse.mcneel.com/gxyanjiaju/32/1659_2.png) [@gxyanjiaju](https://cn.discourse.mcneel.com/u/gxyanjiaju)\
**Post date:** [2018年三月5日 08:50 UTC](https://cn.discourse.mcneel.com/t/topic/1292/7 "2018-03-05T08:50:18Z")

</div>

对，你说的一点没错，我缺失几何知识。那里面的内容我看只看懂了20%。大概的知道了曲面是高度拟合的，曲面由u、v表示。还有其他书籍推荐没有？问个具体的吧，Interval这个类的作用是什么？我看曲面里也有他的踪影。
