通知:E拓建筑网正式更名为拓筑在线!

拓筑在线

 找回密码
 快速注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

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


[版块:参数化设计] [分类:经验教程] [复制链接] 报告无效帖子查看: 19996|回复: 109   
拓邦元帅|DanielJin 发表于 2014-8-17 11:52:32 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
本帖最后由 DanielJin 于 2014-8-17 12:01 编辑

首先,很开心的告诉大家,E拓参数化板块有自己的独立域名啦!以后大家可以输入csh.eeeetop.com即可访问参数化板块。
大家没有发现参数化板块的UI比主页要简洁一些了吗?UI会慢慢进行更加简洁化设计,有好的建议的朋友,
有喜欢学习参数化知识的朋友,欢迎加群83296128一起讨论。备注E拓即可。

原帖内容由微信公众账号【SecondEffectGroup】 【江河梦】小组发布,由【DanielJin】获得授权,进行重新整理和编辑后发布。转载请保留此行信息。欢迎大家下载由【Second Effect Group】出品的gh插件seg,其在幕墙行业,数据存储,曲线等分,数据优化等方面具有非常大的用途,并提供中文版支持。插件将不断更新,更新日志将会在本论坛同步推出。下载地址:http://www.food4rhino.com/project/segghcommon
0.jpg

1.jpg

感谢各位关注。新加入成员可以查看之前的帖子教程。由于用户基础不一,我们要由浅入深,先讲基础操作,再讲工程实例,再到深入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,至于命名空间的其他用途这里就不在赘述。下面介绍一下这些常用的空间。
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
运行时交互空间。(本人水平有限,对很多空间功能也不甚了解。)
目前命名空间的导入,我们只能用默认的不能自己导入。我曾向GH官方建议让用户自己导入。他们会在GH2.0里面加入自己导入命名空间的功能,这样我们的自由读就更大了。比如我们可以自己导入正则表达式空间等。
'''
''' This class will be instantiated on demand by the Script component.
'''
下面就是脚本类。
Public Class Script_Instance
  Inherits GH_ScriptInstance
#Region "Utility functions"
  ''' Print a String to the [Out] Parameter of the Script component.
  ''' String to print.
  Private Sub Print(ByVal text As String)
    'Implementation hidden in Script Edit mode...
  End Sub
  ''' Print a formatted String to the [Out] Parameter of the Script component.
  ''' String format.
  ''' Formatting parameters.
  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.
  ''' Object instance to parse.
  Private Sub Reflect(ByVal obj As Object)
    '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.
  ''' Object instance to parse.
  Private Sub Reflect(ByVal obj As Object, ByVal method_name As String)
    'Implementation hidden in Script Edit mode...
  End Sub
#End Region
游客,如果您要查看本帖隐藏内容请回复
下面我们自己在此类中写个方法试试:
4.png
实际上我们编辑脚本的过程是在修改这个类。我们甚至可以在此类中自己创建类,所以整个脚本计算器还是很强大的。
#Region "Members"
  ''' Gets the current Rhino document.
  Private Readonly RhinoDocument As RhinoDoc
  ''' Gets the Grasshopper document that owns this script.
  Private Readonly GrasshopperDocument as GH_Document
  ''' Gets the Grasshopper script component that owns this script.
  Private Readonly Component As IGH_Component
  '''
  ''' Gets the current iteration count. The first call to RunScript() is associated with Iteration=0.
  ''' Any subsequent call within the same solution will increment the Iteration count.
  '''

  Private Readonly Iteration As Integer
   #End Region
上面是脚本的几个私有方法,RhinoDocument用的比较多,这里面我们可以直接遍历犀牛文档中的很多东西,甚至直接创建犀牛物件,下面的例子是获取犀牛里面的图层表。
5.png
   这里要说明的是Layers是一个LayerTable的实例,是一个集合,里面装的并非是图层名,而是装了很多Layer类。那么为啥我们显示出了图层名字呢?这里是实际上隐式做了很多转换,第一个转换时从Layer类到Layer.Name,我们定义集合类的时候,可以将类里面的一个属性定义为默认显示,这里就将Layer类中的那么属性做为了Layer类的默认显示,第二个转换时从Layer.Name的String类型到A输出端Object类型的转换。A为一个byref类型的参数,我们复制的时候,A的指针会指向Layer.name的地址,那么A就是一个储存了一个String集合的object类型(注意与Python的区别,变量的类型并不随着储存的内容改变)最后由Panel板将整个图层名集合显示出来。至于Panel板对变量的显示机制也是一个很复杂的东西,以后再讲。
   好了,GrasshopperDocument是文档本身,我们获取文档本身的以一些信息,比如电池的个数,路径名等等:
6.png
Component是脚本电池计算器本身。
Iteration是运行次数,显示此运算器运行了几次,GH在某个升级中,为每个电池都加入运行次数显示,如下图:
7.png
经常注意看看电池到底运行了多少次,有助于我们对计算器运行机制的了解,帮助我们查出一些错误等。而且还有助于我们队列表,树的的了解。
  '''
  ''' This procedure contains the user code. Input parameters are provided as ByVal arguments,
  ''' Output parameter are ByRef arguments. You don't have to assign output parameters,
  ''' they will have default values.
  '''

  Private Sub RunScript(ByVal x As Object, ByVal y As Object, ByRef A As Object)
End Sub
RunScript是我们经常写代码的地方,我们可以在这里自由发挥。
'
  '
上面这个地方也是一个好地方,我们可以自定义过程,函数,属性,以及自己定义类。
End Class
好了今天就到这里,我们明天将讲一些简单的实用代码。

评分

参与人数 1e币 +20 收起 理由
沧月 + 20 心得小教程,教学相济大家进步快。

查看全部评分

我司提供建筑方案设计/全流程BIM设计/参数化设计
有兴趣欢迎站内信或在https://www.jianzhu.us进行商务洽谈
我的《Grasshopper从入门到进阶》课程购买地址为https://www.tuozhu123.com/course-54.html
拓都将军|藏剑客 发表于 2014-8-17 12:13:33 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
沙发...强赞
拓邑团练|tiankongzhi5 发表于 2014-8-17 13:16:11 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
赞赞赞啊   可以系统的学习一下了
拓邦元帅|沧月 发表于 2014-8-17 14:25:29 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
开始爆发了啊,赞一个
 楼主 | 拓邦元帅|DanielJin 发表于 2014-8-17 20:40:25 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
沧月 发表于 7小时前
   
   下午去踢球了不然我就让by Danieljin刷整个E拓的屏!哈哈
来自:IOS客户端
拓土新兵|小尛小尛小尛1 发表于 2014-8-20 22:08:19 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
脚本部分比较难懂啊。。。。继续支持楼主!
拓邦元帅|peter704 发表于 2014-8-27 17:03:36 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
继续学习
拓乡士官|shayahati 发表于 2014-9-2 11:51:04 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
感谢分享!!!
拓邑团练|nightkaras 发表于 2014-9-27 16:27:22 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
一直想找太感谢了
拓乡士官|陈杰豪 发表于 2014-10-4 23:53:08 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
很好啊,   可以系统的学习一下了
拓土新兵|cxc2988 发表于 2014-10-28 10:23:07 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
好文加微
拓土新兵|yingmoe 发表于 2014-10-31 20:57:21 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
支持分享~···
拓乡士官|笑而不语410 发表于 2014-11-2 17:17:23 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
感觉压力好大啊
拓土新兵|贝爸杨 发表于 2014-11-21 19:16:04 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
COPY 下载学习中
拓邑团练|yuen316 发表于 2014-11-25 16:32:12 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
讲的很详细 学习了啊
您需要登录后才可以回帖 登录 | 快速注册 微信登录

隈研吾新作|杭州小河公园
隈研吾新作|杭州小河公园
小河公园位于世界遗产大运河河畔,它取代了废弃的石油工厂工业区,将场地转化为多功能的公共开放公园。▲项目与周边环境概览 kkaa▲公园鸟瞰 kkaa我们将这个公
  深圳老梁  深圳老梁最后回复于 2024-04-24 项目实践·作品库

[韩国版]Space 空间 2024年04期
[韩国版]Space 空间 2024年04期
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=1]链接:https://pan.baidu.com/s/1DJ2-0gMK9enBMMvU_Vfz0g 提取码:hkdy
  设计杂志  ConiglioP最后回复于 2024-04-23 建筑景观

建筑学入门书籍150本 免费分享
建筑学入门书籍150本 免费分享
hi,这是我用百度网盘分享的内容~复制这段内容打开「百度网盘」APP即可获取 [sell]链接: https://pan.baidu.com/s/1n2XCuefVqRgf4011CHhW_w 提取码: ibsk[/se
  鱼当当  ConiglioP最后回复于 2024-04-23 大学生讨论区

[英国版]Wallpaper 设计业权威杂志 2024年05期
[英国版]Wallpaper 设计业权威杂志 2024年05期
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=1]链接:https://pan.baidu.com/s/1ovn2KLDfllz4V3vzOvD8sg 提取码:urnc
  设计杂志  设计杂志最后回复于 2024-04-23 艺术设计

[英国版]3D World 世界CG艺术杂志 2024年311期
[英国版]3D World 世界CG艺术杂志 2024年311期
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=1]链接:https://pan.baidu.com/s/1ximXOa00Zm2D9qfsASw0rQ 提取码:dhij
  设计杂志  设计杂志最后回复于 2024-04-23 艺术设计

[美国版]Frame 建筑室内设计杂志 Issue 156
[美国版]Frame 建筑室内设计杂志 Issue 156
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=1]链接:https://pan.baidu.com/s/1_6M67CJPSDp2ByQYKT8qZA 提取码:8aq5
  设计杂志  设计杂志最后回复于 2024-04-23 室内家居

伦佐·皮亚诺工作室新作:安大略省法院
伦佐·皮亚诺工作室新作:安大略省法院
伦佐·皮亚诺建筑工作室(RPBW)宣布安大略省法院的新设施竣工。这座安大略省最大的法院将整合法院的各种办公室和职能部门,而这些办公室和职能部门之前是分散在
  深圳老梁  深圳老梁最后回复于 2024-04-23 项目实践·作品库

隈研吾新作:沙特阿拉伯 Ummahat AlShaykh 岛
隈研吾新作:沙特阿拉伯 Ummahat AlShaykh 岛
隈研吾完成了沙特阿拉伯的 Ummahat AlShaykh 岛项目,这是红海上出现的一种新的酒店概念,深深植根于当地的特点。尽管脆弱的环境给设计带来了挑战,但设计团队还
  深圳老梁  深圳老梁最后回复于 2024-04-23 项目实践·作品库

国家大屠杀博物馆 / Office Winhov
国家大屠杀博物馆 / Office Winhov
Stefan Muller荷兰国家大屠杀博物馆是一个独特而又充满情感的地方,它展示了荷兰犹太人在二战期间遭受迫害的历史。博物馆将于 2024 年开放,位于前教学学校 Her
  深圳老梁  深圳老梁最后回复于 2024-04-23 项目实践·作品库

“福田”建筑传承吉祥精神-----苏州福园(3期)
“福田”建筑传承吉祥精神-----苏州福园(3期)
项目以中国吉祥文化的“福”文化为规划理念,建筑单体以中国传统文化为依托,传承中国园林建筑的布局和特色,打造纯正的园林养生别墅产品。
  mnhy888  basten272最后回复于 2024-04-23 项目实践·作品库

6个不错的乡村会客厅设计
6个不错的乡村会客厅设计
乡村服务中心设计不仅要尊重乡村肌理,也要融合新旧建筑。释放公共聚集的丰富生活内涵,用公共空间联结内外交流的纽带,留住并放大乡间的浓厚生活气息。以下是6
  深圳老梁  basten272最后回复于 2024-04-23 项目实践·作品库

新作|上海苏河湾慎余里修复更新
新作|上海苏河湾慎余里修复更新
  深圳老梁  深圳老梁最后回复于 2024-04-22 项目实践·作品库

新中式风格酒店建筑(6套案例)
新中式风格酒店建筑(6套案例)
第一套
  mnhy888  basten272最后回复于 2024-04-21 项目实践·作品库

全民文旅强势头下,用流量引人,用文化留人
全民文旅强势头下,用流量引人,用文化留人
中国旅游业发展在近几年发生了本质上的区别,旅游模式的改变,市场消费降级的同时“报复性”出游,文旅传播方式的更新,游客消费习惯的转变,都影响着文旅运营
  空间印象  basten272最后回复于 2024-04-21 建筑师讨论区

地产培训 户型基本知识入门与优劣势解析(126页,免费领取)
地产培训 户型基本知识入门与优劣势解析(126页,免费领取)
百度网盘下载链接: **** 本内容被作者隐藏 ****
  小迷妹建筑梦  liurong080最后回复于 2024-04-20 设计专题

如果你逛到了这个帖子并愿意留下一些话,谢谢你。
如果你逛到了这个帖子并愿意留下一些话,谢谢你。
新人,工作两个月,有些迷茫。 今年的应届生,7月份入职,到今天两个月,在上海,公司名字暂时不透露了。 这两个月以来,每天早十点到晚十二点,周日固定加班
  cccccffffing  basten272最后回复于 2024-04-20 建筑师讨论区

[日本版]Shotenkenchiku 商店建筑 2019年全12册(限时免费)
[日本版]Shotenkenchiku 商店建筑 2019年全12册(限时免费)
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接:(具体册数,以贴内封面截图为准,请自行查阅) **** 本内容被作者隐藏 **** 国外60种设
  设计杂志  basten272最后回复于 2024-04-20 建筑景观

2024一级注册建筑师资格考试教材,最新版注考书籍
2024一级注册建筑师资格考试教材,最新版注考书籍
2024一级注册建筑师考试还剩一个月了,分享下最新版注考书籍,祝小伙伴们旗开得胜 2024-级注册建筑师考试教材---设计前期与场地设计.pdf 2024-级注册建筑
  马甲不能少  basten272最后回复于 2024-04-20 建筑师讨论区

官方综合交流QQ群(更多):

240721746

拓筑在线——面向建筑师群体的

设计交流论坛、软件学习社区、资料下载网站及企业服务平台!

微信扫一扫关注我们

微信公众号

拓筑小助手

GMT+8, 2024-4-24 16:34 , Processed in 0.229844 second(s), 39 queries , Gzip On.    拓筑在线 ( 粤ICP备11043922号 )

Powered by Discuz! X3.4  © 2011-2023 拓筑在线

快速回复 返回顶部 返回列表