热门标签

打印 上一主题 下一主题

[教学] 【Rhino6.0】使用GhPython编译器创建Grasshopper组件01

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

18

主题

166

帖子

984

积分

超级版主

Rank: 8Rank: 8

积分
984
跳转到指定楼层
楼主
发表于 2018-10-28 00:07:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Rhino6中Ghpython电池被内置于Grasshopper中,最明显的优势有两个
1:运行速度变快
2:使用Ghpython电池创建的GH组建很难被反编译。

1:我们在Math标签下找到Ghpython电池,基本上和Rhino5里的Ghpython电池差不多,这里就不细讲了。

2:这次我们的案例山寨一下袋鼠插件里的interconnectPoints电池,所以我们需要把Python电池的数据类修改为Pooint3d,数据结构修改为List。如图


3:双击打开Ghpython编译器,这时候可以看见如图,会有些参数的介绍和作者和导入的rs模块等等信息。


4:我们开始写代码和加一些参数注释,这时候我们可以直接在Ghpython电池上看见刚刚参数注释的内容。



5:这样我们的插件功能就写好了,我们来把电池制作成Grasshopper组建。


我们会看见我们的电池变了样子,如图(不过这转换的注释会掉的不全,需要做一些小调整



把注释和导入移动到前面,后面一句注释语句删掉,这样程序结构会清晰一些。刚刚不全的注释也回来了。


6:我们接下来需要制作图标(注意:图标必须为24X24的png文件),我们将画好的图片拖拽到Ghpython电池上就ok了,效果如图(我是随便放的图标,制作插件的时候还是应该认真做图标的)。


7:我们接下来开始编译电池,如果这个编译标签为灰色,需要删除out输出端。


8:(这里要特别说明一下,注释用中文,需要再最前面加#coding=utf-8)这里会弹出来一个窗口如图,方便我们进行一些细节设置,这里特别重要的是GUID,不能和已有的组件具有相同的GUID,一般不需要管。(和打包电池差不多,我们需要改一下名字和分类到那个标签下)
然后会出现保存的路径。这时候我们的插件就编译好了。

9:重启一下rhino我们就可以在我们对应的标签下找到刚刚编译好的插件了。如图。



这样我们的插件就制作好了,赶快来制作属于你自己的插件吧!


评分

参与人数 1金币 +3 经验 +3 收起 理由
Ansen + 3 + 3 赞一个!

查看全部评分

收藏 分享
[db:签名]
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
沙发
发表于 2018-10-28 12:35:51 | 只看该作者
请教一下,为什么我调用AutosaveInterval这个函数的时候总是会报错: 'type' object has no attribute 'AutosaveInterval',调用别的函数就没有这个提示?
回复

使用道具 举报

18

主题

166

帖子

984

积分

超级版主

Rank: 8Rank: 8

积分
984
板凳
 楼主| 发表于 2018-10-28 12:38:21 | 只看该作者
本帖最后由 筑梦NARUTO 于 2018-10-28 13:02 编辑
Achilles 发表于 2018-10-28 12:35
请教一下,为什么我调用AutosaveInterval这个函数的时候总是会报错: 'type' object has no attribute 'Aut ...

这个函数有些BUG,开发者把“AutoSaveInterval”这个属性中的Save小写了,所以会出现这个错误。我已经在论坛汇报这个问题了,你可以使用下面的代码作为临时代替,等待修复。
[AppleScript] 纯文本查看 复制代码
import rhinoscriptsyntax as rs
import Rhino
import System

def AutoSaveInterval(minutes=None):
    rc = Rhino.ApplicationSettings.FileSettings.AutoSaveInterval.TotalMinutes
    if minutes:
        timespan = System.TimeSpan.FromMinutes(minutes)
        Rhino.ApplicationSettings.FileSettings.AutoSaveInterval = timespan
    return rc

minutes = AutoSaveInterval()

if minutes<30:
    AutoSaveInterval(30)





1111111111111.jpg (156.49 KB, 下载次数: 344)

1111111111111.jpg
[db:签名]
回复

使用道具 举报

0

主题

1

帖子

16

积分

新手上路

Rank: 1

积分
16
地板
发表于 2018-11-2 10:19:56 | 只看该作者
筑梦NARUTO 发表于 2018-10-28 12:38
这个函数有些BUG,开发者把“AutoSaveInterval”这个属性中的Save小写了,所以会出现这个错误。我已经在论 ...

学习了,拖icon这招真是骚操作啊!!
回复

使用道具 举报

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

本版积分规则

精彩推荐

Rhino 6 的授权管理模式的调整与转换

2020-08-20 图文教学

2020冬季 Rhino 建筑造型系统面授课程

2020-03-21 面授课程

课程介绍|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 图文教学

Rhino3D(犀牛)中文网

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

关注我们

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