Python --- 关于import 的模块 rhino.geometry , system.guid etc

[复制链接]
Jorin 发表于 2014-10-8 08:52:44
楼主
本帖最后由 Jorin 于 2014-10-8 09:23 编辑

视频中讲解的是 Rhino Python Script 的部分。

而你发的截图是用python直接调用 rhinocommon 。

那么他们之间有什么关系呢?

RhinoCommon是Rhino提供给开发者用于开发插件的函数库,它基于Rhino和微软的.net framework,所以你可以通过VB.Net、C#、Python等多种语言去调用RhinoCommon提供给我们可以操作Rhino的函数。它主要是面向开发插件的程序员而不是设计师的。当然它可以做一些相对底层的事情,假如你有这种需求的话,恐怕只能用 RhinoCommon了。

而RhinoPythonScript是面向设计师的参数化设计工具,它本身也是调用RhinoCommon写成的,也就是说内部执行过程最终都要用到 RhinoCommon的函数。 只不过scirpt简化了 RhinoCommon 中一些设计师需要花很多精力去学习但是对设计并没有过多帮助的部分,例如 script 中弱化了面向对象程序设计的一些概念。所以说 Python Script 上手非常容易,不用你把厚厚一本《Python 学习手册》全部学完再来写代码。

对于只是用 Python 来做参数化设计,而不是用它来开发插件或做一些相对底层的事情的话,Python Script 就完全够用了。

对于做梦露大厦之类的造型来说,不用调用 RhinoCommon ,只使用Rhino Python Script 或者只使用Grasshpooper 完全都是可以做的出来的。你需要的是思路,用什么工具,取决于你自己的选择。

总之,RhinoPythonScript 就像是玩手动档的汽车,而 RhinoCommon 更像是自己动手玩改装了,不上赛道,两者在城市道路上几乎没什么区别。

如果对 RhinoCommon 有兴趣的话,可以看这里:
http://wiki.mcneel.com/developer/rhinocommon
这个页面可以下载到开发文档,页面最下面也有很多例子。


评分

参与人数 1技术 +1 收起 理由
Jessesn + 1 赞一个!

查看全部评分

关于大陆地区Rhino原厂培训中心
Jorin 发表于 2014-10-8 09:12:01
2
顺便解释一下你发的图里的几个库。
import Rhino
就是导入 RhinoCommon 中的所有函数和对象。
import System.Guid
这个库并不是 Rhino 提供给你的,而是Windows 提供的,给每个物件分配 ID 序列号以及区分不同的物件等,电脑就是通过GUID来找到不同物件的。包括Windows中的每个程序,都是有GUID的。
import scriptcontext
大多数情况用于对当前文档的操作。例如把计算好的物件添加到场景中等等。RhinoComon库里面已经包含了这个库里面全部的内容,这里只是把常用的提出来放到这个库里面。
Jorin 发表于 2014-10-8 10:39:07
3
本帖最后由 Jorin 于 2014-10-8 10:48 编辑
筑梦NARUTO 发表于 2014-10-8 10:19
那个梦露大厦只是为了练习rhinocommon时写的。。。rhinopython相当于开发者利用rhinocommon写的一些函数, ...

并不是改写的啦,RhinoPythonScript 本来就是 RhinoCommon的一个开发实例,rhinoscriptsytax中的每个函数,都调用了一堆 RhinoCommon 的对象。也就是说RhinoPyhonScript本来就是 用RhinoCommon 写的。
例如 rs.AddCurve() 函数,是这样定义的:

[mw_shl_code=python,true]import scriptcontext
import rhinoscript.utility as rhutil
import Rhino
import System.Guid
def AddCurve(points, degree=3):
    points = rhutil.coerce3dpointlist(points, True)
    curve = Rhino.Geometry.Curve.CreateControlPointCurve(points, degree)
    if not curve: raise Exception("unable to create control point curve from given points")
    rc = scriptcontext.doc.Objects.AddCurve(curve)
    if rc==System.Guid.Empty: raise Exception("Unable to add curve to document")
    scriptcontext.doc.Views.Redraw()
    return rc[/mw_shl_code]


您需要登录后才可以回帖 登录 | 注册成为会员

本版积分规则