【SEG出品】Grasshopper插件讲解

更新时间:2024-07-03 04:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

【SEG出品】GH插件界面讲解之File ........................................................................................ 1 【SEG出品】GH插件讲解(二)之Preference ......................................................................... 8 【SEG出品】GH插件讲解(三)之Preference ....................................................................... 15 【SEG出品】GH插件讲解(四)之Preference ....................................................................... 22 【SEG出品】GH中级篇计算器讲解之脚本计算器(一) .................................................... 25 【SEG出品】GH中级篇之脚本计算器讲解(二) .................................................................. 30 【SEG出品】GH中级篇之脚本计算器讲解(三) .................................................................. 37 【SEG出品】GH中级篇之脚本计算器讲解(四) .................................................................. 44 【SEG出品】GH讲解之Edit ..................................................................................................... 46

【SEG出品】GH插件界面讲解之File

1

由于GH是全英文的(据说要语言本地化,但是工程量太浩大,不知道到何年何月了)。对于很多英文不太好的童鞋,可能连软件工具栏中的很多功能都还不太清楚。为了游刃有余的使用GH,我们就一起来了解下工具栏吧。我争取不漏下任何一个细节。 首先标题栏双击是折叠以及展开,这个大家都知道 了吧,应该-- 如下图,首先介绍File菜单栏里面的东西:

2

本帖隐藏的内容

1,New Document Ctrl+N创建新的GH文档

文档与文档之间可以互相copy gh计算器,即便关闭犀牛和GH,Copy的计算器仍然能在新打开的GH文档中粘贴,只要在此期间,你不清空粘贴板,或者copy另外的东西。因为计算器copy到粘贴板中都被序列化成xml的文本了,计算器中iternalise的数据也是一样的道理。

既然说到Copy,切记Ctrl+V粘贴到源位置,Ctrl+Shift+V为粘贴到当前视图中心,这点很有用。

2,Open Document... Ctrl+O 打开一个已存在的GH文档

目前只能打开.gh和.ghx这两种格式。前者是二进制存储,后者为xml存储。 3,Recent Files 最近文档,这也比较有用,能直接打开最近使用的gh文档。

4,Save Document Ctrl+S 保存文档。切记要经常Ctrl+S,否则连了一大堆出现个意外就闹心了。

5,Save Document as... Ctrl+Shift+S另存为,可以指定路径及格式。

6,Save Backup Ctrl+Alt+S保存备份文档。gh有一个专门保存备份的文件夹。 7,Export Quick Image....Ctrl+Shift+Q gh自带的一个快速截图工具,如下图

3

a,第一个按钮是裁剪区域

b,第二个是可以旋转裁剪区域

c,第三个是可以将犀牛文档中截图添加到此图中 d,第四个是在截图上添加GH的版本信息 e,清空所有格式

另外弹出此图框大小,跟目前gh窗口大小一致。

8,Export Hi-Res Image...导出目前gh窗口的高清大图,并且可以设置背景颜色,以及缩放比例。

9,Document Properties...文档属性,点开后界面如下图

4

对此gh文档,你可以设置更改版权信息,以及文档描述。而且还可以增加修订版本。这样可以记录你每次更改的日期,便于文档管理。 10,Creat User Object 创建用户计算器,选中一个gh计算器或者 一个cluster此菜单会启用。点击如下图

这样我们可以创建一个.ghuser为扩展名的文件包,此包可以直接使用,像正常的.gha一样可以在菜单里面显示。如上图,可以设置名字,昵称,描述,设置Category即所在的栏目,Sub-Category子栏目,Hide Object是隐藏到栏目里面,还是在Limit to dropdown下拉栏目里面,在栏目里面的第几个格子 Panel Section。以及可以设置其图标。 这个菜单很强大,让用户可以封装自己的电池,应该好好研究研究。 11,Ribbon Layout 配置的罗宾界面,点进去如下图,

Display as text 意思是将计算器栏目名称按图标显示还是按文字显示。 Create layout 创建视图,点进去如下图

5

你可以完全改变GH的电池界面组合,配置自己的栏目组合。如上图,你可以将不经常用的计算器拖到垃圾箱,或者将不用的栏目拖入垃圾箱,那么在你的配置中就不会显示这些计算器或者栏目了,这样可以让界面更简洁。

当然,你也可以新建一个栏目(Tab),将常用的计算器放到里面。 而且你还可以拖动格栏目来改变他们的次序。

左边方框可以搜搜电池:

6

不用担心你会打乱以前的配置。因为我们可以随时关掉自己的配置,而且可以开启多个配置。如下图(导入配置后,Import layouts)

配置的眼睛闭上就是显示默认配置,开启是显示我们自己的配置。这样我们做不同的东西,可以开启不同的配置。

12.Show In folder 打开此文档所在文件夹并选中此文档 13,Special Folder这个很有用,点开如下图

Components Folder是存放计算器.gha文件的地方,你在food4里面下载的.gha文件可以直接放到这里面。ps有些不能用的,试试右键属性解锁。 Settings Folder 配置文件的文件夹

User Object Folder 是.ghouser用户计算器所在的位置

AutoSave Folder是自动保存文件的文件夹,里面的gh文件以guid命名--滥用guid. 14.Preferences... 这个太多了而且很重要,明天单独列出介绍。 15.Close 关闭当前文档。

7

【SEG出品】GH插件讲解(二)之Preference

首先,感谢各位关注。新加入的朋友可以查看之前我发布的主题进行由浅入深的学习。教程前会增加分组的小标签,如【DanielJin原创】,【SEG出品】等,一个标签对应一系列教程。

由于用户基础不一,我们要由浅入深,先讲基础操作,再讲工程实例,再到深入GHA开发,以及各种复杂算法。期间可能会穿插着来讲。 本篇为基础篇插件界面介绍的第二篇。

界面工具栏菜单File下的第14个子菜单preferences 插件配置。如下图。

1,Author

点开界面如上,好比一个指纹,配置连线图作者的名字,公司,版权,地址,网站,邮箱以及电话。 本帖隐藏的内容

这些都是你创建该文档后的固有属性,有些童鞋会问,我在什么地方能查看这些信息。如果你会脚本,如下图:

8

2, 显示设置

既然是显示设置,肯定不会影响计算。

其实,你将鼠标放在上面就会有提示的。

a.勾选Special Case integers 意思将0.999999....这种数字显示成1.0,切记只是显示哟,实质内容还是0.999999...如下图用脚本测试:

9

b.勾选Special case Pi 意思是将输入的2*pi显示成2*pi的形式而非6.28...的数字形式。但本质上还是6.28...的数字如下图测试:

由上面两个例子我们其实就可以知道panel板这个东西并非简单一个显示tostring的文本框。 C.D-Deciamals设置显示小数的位数,只显示那么多位,本质上还是原来的数字,比如

6.284569我如果设置显示3位,那么我们只能看到6.284,但是这个数字还是6.284569如下图:

D.E-Deciamals设置显示科学计数法小数的位数,例如6.284569e10 设置成3则显示为6.285e-10

10

6.284569e10就不行了,设置不起作用了--。

E.E-Lower设置多少位后小数显示成科学技术法。比如我设置为-5,那么0.000056就会显示为5.6e-5

5.6e-4就会显示为0.00056

F.E-Upper按说这个是和上面的那个是相对的,但是经测试无效,怎么设都不会显示成科学计数法--,如果你测试成功可发我消息。 设置完注意重新计算才会使用新的配置。 看完上面的显示设置,你会发现,很多数值和你看到的是不一样的,不要让你的眼睛骗了你。

3, 字体设置

Strandard Font 标准字体,没错就是计算器名称,参数名称等的字体。

设置成中文的一些字体貌似不好看,尽量都用默认的比较好。

Script Font 脚本字体。经测试并非脚本计算器里面的字体。具体什么地方真不清楚。 Console Font 控制台字体,大概就是消息提示一类的字体吧,如下图:

11

4, 用户接口如下图

a,Content Filter 内容过滤 这个功能可谓充分体现了gh插件的专业性。可以叫做色情内容过滤吧。

None就是不过滤,想想George Carlin,百科一下这位是美国反正统人物的代表。

Total完全过滤,应该是处女级别的过滤吧。在这种级别下,gh涉及的淫秽词语及图片都将

12

被其他内容代替,比如这俩计算器的图标 就别列入色情图片,过

滤后变成了 --

此过滤功能在版本0.8.0062加入的(这样的功能太高大上了) Changes and fixes since 0.8.0061:

● Added Content Filter section to the Preferences (Interface section).

其生死缘由可以查看此链接:http://www.grasshopper3d.com/for ... 736&page=2#comments

b,Context Menus

勾选Show Parameter submenus的话的所有计算器的右键菜单里面都会出现参数菜单作为子菜单如下图勾选与不勾选的区别: 不勾选

13

勾选

c,Overlay Graphics

勾选Display obsolete会在旧版本的计算器上显示一个OLD的标记。 d,Ribbon菜单设置

勾掉Show component tabs将隐藏掉所有计算器栏,充分发挥自己的快捷键能力把(什么?你不会 用快捷键?还是慢慢看基础内容吧)

Show tab icons 显示栏目图标,这个貌似还前面介绍的display as text重复了。 Show icon separators 是否显示计算器栏目中的分隔条。分隔条就是下面这东

Show obscure components 显示隐藏的计算器,勾上这个,栏目里面的所有计算器都会显示出来,这样你都可以在其上面右键改快捷键了。否则的话,有些只能在下拉菜单中显示。 e,下面的快捷键在第二篇文章中有详细介绍,此处说几个常用的 Ctrl+E禁用或启用计算器

14

Ctrl+Q隐藏或显示计算器内几何对象 Ctrl +G编组,Ctrl+shift +G解除编组

双击空白区域,输入运算器命令即可直接调出电池。 中键调出罗盘控制菜单,罗盘里面大锁和查找比较好用-- f,Tooltips 帮助提示

Wiggle Radius 信息提示的半径,意思是鼠标在以信息弹出点为圆心,以Radius为半径的圆内信息提示不消失,这个半径设置多大,看自己习惯吧。

【SEG出品】GH插件讲解(三)之Preference

下面开始教程。

首先,感谢各位关注。新加入的朋友可以查看之前我发布的主题进行由浅入深的学习。教程前会增加分组的小标签,如【DanielJin原创】,【SEG出品】等,一个标签对应一系列教程。

由于用户基础不一,我们要由浅入深,先讲基础操作,再讲工程实例,再到深入GHA开发,以及各种复杂算法。期间可能会穿插着来讲,用户可以直接回复有关问题,我们一定会尽量去解答。

15

本篇为基础篇插件界面介绍的第三篇。

1, 调色板

主要是对不同状态下电池的边界颜色,填充颜色,文字颜色做修改。

具体有非选中状态(Normal)和选中状态(Selected)之分。

下面又有禁用电池(Disabled Capsule),错误电池(Error Capsule),隐藏显示电池,隐藏的是电池内部的几何对象(Hidden Capsule),标准电池(Standard Capsule)警告电池,含警告信息的(Warning Capsule)

除了上面的禁用电池,任何类型的电池甚至错误电池都可以使用,只要输出内容有意义,不要因为红彤彤就有心理障碍。

2, 视口配置

16

Default Template Materials默认模板的着色配置。如果你没有设置模板文件,那么每次新建的gh文件都会以这个颜色来渲染你选中和没选中的GH几何对象在犀牛文档里面的显示。 如果设置了模板文件,则显示按照模板文件的Document Materials来显示颜色

本文档你还可以自己设置与模板着色不一样的渲染颜色,即设置Document Materials 注意点到球上面右键设置颜色。

Preview Display 预设显示(其实这些在Display菜单中也可以设置)

Display Gumballs 是否显示操作轴。所谓操作轴一般是针对点而言的,如果勾选了那么对于点的显示如下:

17

但是引用物件不会显示操作轴,也就是Referenced Point不会显示操作轴如下图:

有同学可能会问为啥,这个跟引用物件在gh里面存储的机制有关,这个机制跟单纯的储存几何对象肯定不一样,我估计大概都是存储的Guid(这东西是世界上最不值钱的,不知道是啥可以去百科下)。

那么操作轴有什么好处呢?在gh中好处很明显,就是你可以拖动操作轴对点进行移动(貌似不能输入具体的移动距离,而且也只能朝世界坐标的X,Y,Z方向拖动)。我们知道gh中的物件在犀牛中是不存在的,而这个东西可以在犀牛中拖动不存在的点来改变gh中的数据,已经很了不起了。

剩下的就是对gh显示颜色渲染质量的设定

18

这里需要注意的是,如果选用低质量的渲染有可能看到的点,线会偏离真实位置,所以你电脑配置不错的还是选择高质量渲染比较好,要不可能会出现很多点乱跑的情况。

3, 各种小部件,如下图

A,Align对齐小部件,如果勾选的话选中多个电池则会显示对齐选项如下图:

19

也就是顶端对齐,居中对齐,间距相等阵列等,自己点点试试吧,学习gh一定要勤动手。 B,Copass罗盘

Show Compass widget是否显示罗盘部件

Draw object bubbles是否在罗盘边缘显示电池气泡 Only draw selected objects只显示选中电池的气泡 如下图:

此罗盘究竟有何意义?本人虽然用gh也好多年了,但是真的还没有用过这个罗盘。我想大概就是一个位置定位吧,如果你连线图中电池太多,可以指示你电池在面板里面的分布情况,以便你能快速找到电池。 C,Marov 建议电池菜单

勾选Show Markov widget会在gh某个角落显示一个长条菜单显示建议电池,也就是说gh在推测你下一个将用什么电池,给你一个建议。 Docking corner是设置这个长条所在的角落位置

Suggestions设置显示建议电池的个数,最多设置10个。如下图:

20

而且你还可以拖住箭头所指的黑色边界左右拖动来调节Suggestions的个数。 D,Messages 消息

GH的SDK里面有错误消息,警告消息和空白消息。我们一般看到的都是前两个

如果勾选了Show Messages widget,那么会在每一一个计算器的右上角显示一个消息,鼠标移到此处会弹出提示。

鼠标单击此处会弹出消息内容,鼠标点击消息内容可将消息复制到粘贴板。 E,Profiler 分析器

这个是最有意义的一个部件。 本帖隐藏的内容

显示它,可以让你知道每个计算器的运行时间,以及所占总时间的比例。如下图:

这样,我们就可以知道哪些步骤比较耗时间,来寻找更优化的方案。

Threshold是用来设置显示时间的最小值,小于这个值就不再显示时间,毕竟显示也是一种浪费资源的计算。这个是以毫秒为单位的,gh里面电池的运算速度还是非常快的,因为所有的东西都是加载到内存的。

21

F,Zooming widgets 缩放部件

这个也是跟性能有关的,如下图:

Gh电池界面采用的是gdi+技术,很多显示在缩放的时候可以不显示的,只有当缩放到特别小的时候才显示,例如上图箭头所指的Profiler message以及动态添加参数的+号按钮。这样当缩放特别大的时候这些显示了也是没有什么意义的,就好比,你站的远了就看不清人的五官了,只知道那是个人就可以了,至于鼻子耳朵什么么必要看清楚。

这个值调到100%的话是全部都显示,最消耗内存的,调到1000%是最节省内存的。而黑色三角所指示的是当前的缩放比例。

【SEG出品】GH插件讲解(四)之Preference

这是界面教程的最后一期。下一期将会推出脚本电池讲解。

让我们快速结束GH的界面,进入一些对高级用户有意思的话题。继续上一节内容....

1,文件点击后如下

22

AutoSave 是否开启自动保存。还是建议经常Ctrl+S 下面是激活自动保存的事件。

On document unload event 在文档卸载的时候(应该指的是关闭吧) On object added event 在添加电池的时候

On object deleted event 从gh文档删除电池的时候

On object changed event 在电池改变的时候(应该指电池的输入改变的时候吧) On wire event在线头接入断开时

On data mapping event 在数据映射的时候(这个真不清楚是什么东东) 下面是自动保存的路径,点击show可以在文件浏览器中打开。

Recent Files 这里我们可以设置File菜单下,recent files子菜单中显示最近文档的个数。 Remove missing files 点击会将最近文档列表中已经不存在的文档从最近文档列表中删除。 Remove all files将所有最近文档从列表中移除。

Template Files 这里可以设置自己的gh模板,设置后每次新建都会新建此模板。

2, 计算

23

上面可以设置GH里面GHA插件的加载方式。

默认系统会选择最合适的方式来加载此插件。

用GH默认的加载方式来加载插件。(究竟是神马方式我真不清楚)

插件将直接被加载。

插件将先被复制到内存中,优先加载。

24

后面这把锁

如果锁上则,加载此插件的时候会提示,让你手动选择是否加载。

最后两个: 本帖隐藏的内容

勾选Enable Solver会将整个文档锁起,不进行任何计算(显示除外),这个很有用,有些无法打开的文档比如里面有个死循环,打开即死怎么办?我们要先新建一个文档,锁起(中间也有把大锁性能一样)然后再打开我们想要打开的文档更改其逻辑即可。有的时候计算太慢,我们一般也是先锁起连线,按F5单次运行的。

Solver undo意思是Bake到犀牛文档中的几何物件的回退。

OK,今天就讲到这里,明天我们将穿插一些计算器的讲解。

【SEG出品】GH中级篇计算器讲解之脚本计算器(一)

感谢各位关注。新加入成员可以查看我之前发布的帖子,在我发布的主题下【SEG出品】系列。由于用户基础不一,我们要由浅入深,先讲基础操作,再讲工程实例,再到深入GHA开发,以及各种复杂算法。期间可能会穿插着来讲,可以直接回复问题,我们会尽量去解答。

25

应大部分用户要求,我们今天将穿插一些深入点的东西。就以脚本计算器为例讲一些计算器的应用。

GH中脚本计算器一共有三个如下图:

说是脚本,但实际上并非我们理解的VBS,VBA这样的语言,而是完全面向对象的.net语言。

C Sharp, VB.net 以及IronPython。其中C#是最为流行的,VB.net简单易学,使用VB6的同学可以转到这上面来,Python是非官方发布的一个插件,是开源的代码挂在GitHub上链接如下:

https://github.com/mcneel/ghpython感兴趣的同学可以在这上面和作者交流交流。虽然说python这种语言运行速度比较快,经过很多测试(学习了前面的基础界面课程,我想你自己也能够进行测试了)其速度还是比一般的电池速度慢的,我想这可能跟python在gh中的调用机制有关,而且这个计算器还有很多其他的bug,还不太完善,所以建议初学的同学不要使用此计算器(虽然跟目前网络上的python热有悖)。

本帖隐藏的内容

而实际上,这三种语言基本上都是依赖于.netFrame框架,源码可以相互转换的。下面两个连接就是本人经常用的转换源码页面:

http://www.developerfusion.com/tools/convert/csharp-to-vb/ http://www.dotnetspider.com/convert/vb-to-csharp.aspx

所谓.netframe框架是微软开发一套类库,里面有各种类,方法,函数,你可以通过一些语言进行调用,VB和C#是官方支持的两种语言,但是其他支持的语言也不下于百种。目前最新的netframe框架是netframe4.5,用户最多的是netframe3.5,犀牛5使用的是netframe4.0,当然最新的gh也是。这个其实一般用户没必要担心,因为安装犀牛5的时候,会自动给你装上的,或者提示你去下载安装的。

啰啰嗦嗦一大堆,有些童鞋可能急了,不要急,如果你想用代码写东西,就必须先了解一些基础东西才可以,要不然就是半瓶子醋,也摸不着头绪。 C# VS VB.net

这是一个很纠结的问题吗?客观来讲,C#用户量比较大,网上代码铺天盖地,但VB6用户量在国内要更多,转到VB.net上的潜在量更大。有人嘲笑VB.net是玩具,有人说微软之所以不放弃VB.net是因为盖茨喜欢Qbasic....更中肯的说法就是,都是语言,都是工具而已。 VB.net的同学不要因为别人怎么说就觉得拿不出门,实际上GH官方的很多电池都是使用VB.net写的。两种语言从编译到运行都一样,从语言自身来说各有千秋。所以就别拿这些说事了,功能实现了就好。本人使用VB.net所以说的可能有点偏激,请使用其他语言的朋友多多包涵,勿喷。我们讲脚本,主要讲VB.net以及python,请C#同学们多用上述网页转换一下-- 很久以前,曾经GH有两个VB计算器,两个C#计算器。但是随着Rhino_DotNet.dll的没落,以及犀牛官方说在犀牛6中要完全移除Rhino_DotNet.dll,最终那两个调用Rhino_DotNet.dll的计算器被贴上了OLD,并退出了gh的Tab,隐居后台。所以现在我们看到的VB,C#计算器

26

使用的是RhinoCommon.dll里面的类库,当然也可以用Rhino_DotNet.dll,后面讲gha开放会讲解如何用。

好了,我们开始说电池。

所谓脚本电池就是你可以在这里(双击电池打开代码编辑器)写代码,利用输入输出端完成你所要的功能。

一,点击上图中加减号,我们可以增加或移除输入,输出端。整个脚本计算器的运算实际上只是一个名为Script_Instance的类,此类继承自GH_ScriptInstance。这个类中有一个最重要的过程如下:

Private Sub RunScript(ByVal x As Object, ByVal y As Object, ByRef A As Object) End Sub

此过程的参数即电池的参数,byval的都是传值参数均为输入端参数,byref是传址参数或者叫引用参数 均为输出端类型。传值与传址的区别自己可以查一下,任何一本编程的基础篇应该都有,这里体现的并不是很明显。当你动态的添加或者移除参数,里面代码也动态的跟着改变。参数的名字及类型,以及数量只能通过电池界面设定。 二,参数类型 可以说了,是类型支撑了gh魔术般的功能。我们用gh如果不去深入的去了解其中的数据类型也只能做门外汉了。电池的参数有各种类型(我们将在后面讲到),脚本电池的参数的类型更丰富可以自定义,如下图:

我们姑且叫箭头所指的图标为自定义类型。见到此种图标我们就应该能知道此种类型我们可

27

以自己在右键菜单里面去定义,设定(FX,以及Expression计算器除外里面的类型为本电池所支持的类型)。

上图菜单的下面四个字菜单是设置类型的地方,貌似很多人用了很久脚本都不清楚自己在用什么类型,一切都默认为Object--:

第一个 Item为默认的意思此数据类型只是一个单一的数据

第二个List 意思将此数据设置为一个列表,每次运算传输到计算器内部的是一个列表。 第三个Tree,这个恐怕是gh的核心类型了,这个太强大了,不了解这个就你无法触及GH的真谛。它是一种分叉式的类型,不仅记录了存储了多个列表,而且记录了每个列表的形成路径,暂时就样说一下吧,后面会深入讲解。每次运算传输的计算器内部的是N个列表。 我们写脚本之前一定要弄清楚,自己传输到过程中的参量到底是单一数据,还是列表,还是树。列表和树属于.netFrame框架中泛型(如果不了解,可以去恶补一下)的范畴,只是树是由GH自己定义的一种强大的数据类型。

28

OK,第四个就是储存数据的类型了。如下图:

A,System.object所有类型之父,我们基本上什么类型都可以用object去替代,但是用object速度可能要慢很多,因为使用了Object属于一种后期绑定(可以恶补一下装箱与绑定)。如果我们知道自己使用的类型,我们尽量自己设置好,避免影响速度以及出错不必要的错误。 B,Boolean,Integer,Double,Complex,String,DateTime,Color,Guid

这些属于计算数据类型,这些类型也是gh自己创建的类型,和我们net编程语言中的同名类型还是有些区别的,不过区别不大,我们照常使用即可。举个列子,如Integer的数据范围跟我们net里面的就不一样,在这个GH版本中(0.9.0075)Integer参数计算器有个致命的bug

29

拖出Integer计算器,然后右键设置数据为1e10,你的犀牛将直接崩溃掉。此bug我已经向David 反映,下个版本中就不存在了。从这里我们就可以看出这里面的Integer的上限为2^32 由32位,4个字节存储。因为你输入1e9就没问题,1e9.5都没问题。因为2^32次方是一个9-10位的数字。有同学可能会问为啥,因为 log(2^32)=32*log2 =9.63295这就是这个数的位数。所以当32位里面都存入1的时候最大为这个9.63位多的数字。好了不扯了,继续。 注意里面的Complex为复数类型。Guid也和常用,类似句柄一样的东西,这个你如果不清楚要好好研究一下。

C,Poing3d,Vector3d,Plane,Interval,UVInterval,Rectangle3d,Box,Transform 这些属于几何类型数据的范畴,这些类型模式都是结构体,结构体与类的区别这地方又需要恶补。可以说这些都必须要掌握,尤其是Transform矩阵类型,GH中几何变换的核心。如果你对矩阵不了解就恶补一下大学的高数吧。最起码你要掌握移动矩阵,镜像矩阵,旋转矩阵,以及投影矩阵。这些后面再说。

D,Line,Circle,Arc,Polyline,Curve,Surface,Brep,Mesh,GeometryBase几何线,面,体类型

其中Curve是其他线类型的父类,GeometryBase是这里面所有类型(结构体除外)的基类。 OK,以Point3d为例,我们可以设置dimx as point3d或者dim x as List(of point3d)或者dim x asDataTree(of point3d)

C#为 Point3dx,Listx, DataTree x

好了,今天就讲到这里,不要着急,我们要充分对电池了解透彻之后才能开始写代码,这样才能真正学会使用脚本电池,明天继续。

【SEG出品】GH中级篇之脚本计算器讲解(二)

感谢各位关注。新加入成员可以查看之前的帖子教程。由于用户基础不一,我们要由浅入深,先讲基础操作,再讲工程实例,再到深入GHA开发,以及各种复杂算法。期间可能会穿插着来讲,可以直接回复问题,我们会尽量去解答。 今天我们速度结束脚本计算器的界面,讲一些代码。

脚本计算器的右键菜单,这里只提下两个子菜单,剩下的其他菜单功能在基础操作中讲解。如下图:

30

Edit Source....打开代码编辑器。

Manage Assemblies....这个很有用,是对其他库的引用。所谓库,这里我再啰嗦两句,就是函数,类等的组件,有叫dll,有叫com组件,有叫api函数,其实差不多都是一个东西。有很多常用的功能,我们不可能每次都写,那么很多牛逼的人就把这些给我们封装好,我们只要知道怎么使用就行了,就好比,我们只需要学会如何开车就能达到方便旅行的效果,而非一定要学会造车。当然你要会造车那就更牛逼。其实netframe框架也是一个库,只是稍微大了点而已。简而言之,就是我们引用这些库,使用里面的函数,类等实现我们自己需要的功能。

点击后如下图:

31

点击Add就可以浏览引用库文件

32

如上图,我们可以引用dll,exe,Rhp,gha.实际上rhp,gha本质上也是dll文件,只不过是编译后改了后缀名而已。只要这些文件中有公开的接口,那么我们就可以在代码中使用。

细心的童鞋可能会问,我们如何移除引用文件。问的好,这个问题困扰了我很长时间,直到问了David才知道,选中所引用文件,按Delete键就可以了--! 让我们迫不及待的进入脚本编辑界面吧:

33

右上角这几个按钮是新版本增加的,很久以前的版本木有。

运行,这里面按F5是没用的,按Ctrl+S也非保存,保存必须点击下面的OK.

点击此按钮会插入如下代码: '''

''' This method will be called once every solution, before any calls to RunScript. '''

Public Overrides Sub BeforeRunScript() End Sub '''

''' This method will be called once every solution, after any calls to RunScript. '''

Public Overrides Sub AfterRunScript() End Sub

看解释,如果想在RunScript这个过程的前后发生点什么事情,这里就是个好地方。 Overrides是遮盖,此过程应该是遮盖了原来基类中的BeforeRunscript和AfterRunscript.

点击这个令人发毛的眼睛,会插入如下代码:

34

'''

''' Return a BoundingBox that contains all the geometry you are about to draw. '''

Public Overrides ReadOnly Property ClippingBox() As BoundingBox Get

Return BoundingBox.Empty End Get End Property

'Draw all meshes in this method.

Public Overrides Sub DrawViewportMeshes(ByVal args As IGH_PreviewArgs) End Sub

'Draw all wires and points in this method.

Public Overrides Sub DrawViewportWires(ByVal args As IGH_PreviewArgs) End Sub

第一个属性可以用来返回计算过程中,几何对象的BoundingBox。任何几何对象都有一个BoundingBox,那么就注定了,任何操作几何对象的计算器都离不开BoundingBox这个属性。 第二个是GH强大的显示,用了那么久GH或许你还不知道里面的显示均为Mesh显示。此方法遮盖了基类的显示,我们想改变脚本计算器对几何对象的显示,可以在此动手脚。如果想让原来的显示不改变,那么可以加一句MyBase.DrawViewportMeshes(args) 第三个是GH强大的线头显示。GH里面所有的连线都是nurbs曲线。

实际上对于我们初级学习脚本,上述方法是不经常用的,等我们用到这个级别,就已经不再使用脚本而写GHA了。

这个,脚本字体调节,自己看着办吧。

这个比较有意思,也比较有用。选中此按钮,那么当你点击别的区域的时候,脚本编辑器就自动缩小成一个比较可爱的迷你编辑器来方便我们进行其他操作:

另外旁边的行号也很有用,帮助我们查找错误所在地方,一般错误都会提示错在哪一行的。

35

本帖隐藏的内容 最后Cache按钮,你点击一下编辑器会保存此刻的代码,你可以用旁边的Recover from cache.来恢复代码。当然编辑器也会自动隔段时间保存代码。如果不小心代码丢失了,来这里面找找吧。

最后介绍几个鲜为人知的快捷键,实际上这个编辑器与VS有着某种关系,VS里面的快捷键基本上在此都可以用。

ctrl+e紧接着按 ctrl+c 用来批量注释所选代码 ctrl+e紧接着按 ctrl+u 用来批量反注释所选代码

如果一行代码太长,超出了编辑器的右边界,你想复制此行代码,选择起来不方便,那么没关系,将光标定位到行首,按Ctrl+C即可复制此行。

最后,按住Alt键,然后鼠标右键选择会出现一种神奇的隔行矩形选择:

对此矩形区域可以进行复制粘贴以及删除,有时候可以达到很神奇的功效。 如果群中潜水的高手还知道一些其他比较方便好使的快捷键,欢迎回复消息。 等下,貌似我们的界面还遗漏了什么:

36

Ctrl+F,Find以及替换,这里面有很多选项,其中值得一提的是Use regular expressions,可以使用正则表达式哟。

那么此替换和查找就比较强大了。作为一个脚本开发者,如果你不知道正则表达式就有点太不专业了,必须恶补

【SEG出品】GH中级篇之脚本计算器讲解(三)

37

感谢各位关注。新加入成员可以查看之前的帖子教程。由于用户基础不一,我们要由浅入深,先讲基础操作,再讲工程实例,再到深入GHA开发,以及各种复杂算法。期间可能会穿插着来讲,可以直接回复问题,我们会尽量去解答。您觉得有用,请将此微信号分享给能用得着的朋友。

今天,我们开始讲解GH中的VB脚本代码。

打开GH中的VB编辑器,里面已经预先生成了一些代码,如下,我们逐行讲解: Option Strict Off Option Explicit On

上面两个是编译器的对代码的选项,第一个意思是严格定义关闭,如果开启严格定义即Option Strict On那么我们必须保证我们的代码正确无误才能执行,甚至连警告错误都不能有。还好这里按照的不是严格定义。 第二个选项是显示定义,意思 我们定义变量的时候必须显示定义而不能是隐式的,即dim pt as point3d,而不能直接不定义,把pt当成point3d来用,这样的话会提示一个错误

“1. Error (BC30451): 'pt' is not declared. It may be inaccessible due to its protection level. (line 87)”

以上两个选项目前版本还不能用户自己改动。

下面是导入的命名空间,不知道命名空间是何物的童鞋,可以恶补一下。导入这些,方便我们写代码,例如导入Rhino.Geometry空间后,里面有个Point3d的结构体,那么我们就可以直接使用Point3d这个结构体,Dim pt as Point3d 而不用麻烦滴写 Dim pt as

Rhino.Geometry.Point3d,至于命名空间的其他用途这里就不在赘述。下面介绍一下这些常用的空间。

38

Imports Rhino

Imports Rhino.Geometry 几何类空间,这个里面几乎每个类都需要知道,如果你想对犀牛里面几何对象了如指掌的话。 Imports Rhino.DocObjects

犀牛物件空间,犀牛文档物件。 Imports Rhino.Collections

犀牛泛型空间,就是很多集合空间,例如图层表,颜色表等。 Imports GH_IO GH的文件空间。

Imports GH_IO.Serialization

GH文件序列空,这个是GH能保存文档,初始几何对象的一个重要的空间。 Imports Grasshopper

Imports Grasshopper.Kernel

Imports Grasshopper.Kernel.Data GH的数据空间

Imports Grasshopper.Kernel.Types

GH的类型空间,GH里面所有类型都是GH_xxx例如String实际上是GH_String,GH魔术般的功能都是由这些类型支撑的。

以下是NetFrame框架的一些常用空间。 Imports System Imports System.IO 系统文件管理空间。 Imports System.Xml Xml空间。

Imports System.Xml.Linq XML的linq空间。 Imports System.Linq

Linq空间,不知道Linq为何物的童鞋,要恶补以下,这个很久以前没有引入,后来才引入的,很有用,可以用SQL语句一般的.net语言对各种集合查询。 Imports System.Data Imports System.Drawing 绘图空间。

Imports System.Reflection 反射空间。

Imports System.Collections 泛型空间,这个要掌握。

Imports System.Windows.Forms

WinForm空间,就是那些界面空间,传言犀牛6要移除,不过后来Steve好像找到了另外的方法,保留此空间引用。 Imports Microsoft.VisualBasic

这个空间使用VB6的同学可能很喜欢。是VB6之前的方法函数。 Imports System.Collections.Generic 泛型空间,这个要掌握。

Imports System.Runtime.InteropServices

39

运行时交互空间。(本人水平有限,对很多空间功能也不甚了解。) 目前命名空间的导入,我们只能用默认的不能自己导入。我曾向GH官方建议让用户自己导入。他们会在GH2.0里面加入自己导入命名空间的功能,这样我们的自由读就更大了。比如我们可以自己导入正则表达式空间等。 '''

''' This class will be instantiated on demand by the Script component. '''

下面就是脚本类。

Public Class Script_Instance Inherits GH_ScriptInstance #Region \

'''

Print a String to the [Out] Parameter of the Script component. '''

'Implementation hidden in Script Edit mode... End Sub

'''

Print a formatted String to the [Out] Parameter of the Script component.

'''

'''

Private Sub Print(ByVal format As String, ByVal ParamArray args As Object()) 'Implementation hidden in Script Edit mode... End Sub

'''

Print useful information about an object instance to the [Out] Parameter of the Script component.

'''

'Implementation hidden in Script Edit mode... End Sub

'''

Print the signatures of all the overloads of a specific method to the [Out] Parameter of the Script component.

'''

Private Sub Reflect(ByVal obj As Object, ByVal method_name As String) 'Implementation hidden in Script Edit mode... End Sub #End Region 本帖隐藏的内容

上面四个方法,前两个是Out输出端输出的过程函数,这几个过程函数我们都无法修改。但是可以调用。

例如 我们写入如下代码:

40

本文来源:https://www.bwwdw.com/article/6ks.html

Top