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

拓筑在线

 找回密码
 快速注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

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


[版块:参数化设计] [分类:经验教程] [复制链接] 报告无效帖子查看: 21561|回复: 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币
讲的很详细 学习了啊
您需要登录后才可以回帖 登录 | 快速注册 微信登录

03J012-2 环境景观-绿化种植设计
03J012-2 环境景观-绿化种植设计
本图集收集于网络,仅供学习研究,侵删。若您发现有更新版本,请回复提醒或直接上传新版本。
  编辑9527  阿白47923最后回复于 2025-01-02 建筑图集

建筑构筑物+种植设计
建筑构筑物+种植设计
lumion效果及分析图
  露琪亚诺  阿白47923最后回复于 2025-01-02 建筑师讨论区

[意大利版]Interni 著名室内设计杂志 2024年12期
[意大利版]Interni 著名室内设计杂志 2024年12期
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=10]通过网盘分享的文件:Interni IT 202412_eeeetop.com.pdf 链接: https://p
  设计杂志  设计杂志最后回复于 2025-01-01 室内家居

[加拿大版]Western Living 时尚家居杂志 2024年09-10期
[加拿大版]Western Living 时尚家居杂志 2024年09-10期
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=10]通过网盘分享的文件:WL20240910_eeeetop.com.pdf 链接: https://pan.baid
  设计杂志  设计杂志最后回复于 2025-01-01 室内家居

[澳大利亚版]Architecture Australia 澳大利亚建筑 2024年11-12期
[澳大利亚版]Architecture Australia 澳大利亚建筑 2024年11-12
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=10]通过网盘分享的文件:AA20241112_eeeetop.com.pdf 链接: https://pan.baid
  设计杂志  设计杂志最后回复于 2025-01-01 建筑景观

[英国版]Architects Datafile(ADF) 建筑师数据 2024年11-12期
[英国版]Architects Datafile(ADF) 建筑师数据 2024年11-12期
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=10]通过网盘分享的文件:AD202411-12_eeeetop.com.pdf 链接: https://pan.bai
  设计杂志  设计杂志最后回复于 2025-01-01 建筑景观

[英国版]Architects Datafile(ADF) 建筑师数据 2024年10期
[英国版]Architects Datafile(ADF) 建筑师数据 2024年10期
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=10]通过网盘分享的文件:AD202410_eeeetop.com.pdf 链接: https://pan.baidu.
  设计杂志  设计杂志最后回复于 2025-01-01 建筑景观

[日本版]Landscape Design 景观设计 2024年11-12期
[日本版]Landscape Design 景观设计 2024年11-12期
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=10]通过网盘分享的文件:Landscape Design 202412_eeeetop.com.pdf 链接: htt
  设计杂志  设计杂志最后回复于 2025-01-01 建筑景观

[日本版]Jutakukenchiku 住宅建筑 2024年11-12期
[日本版]Jutakukenchiku 住宅建筑 2024年11-12期
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=10]通过网盘分享的文件:Jutakukenchiku 202412_eeeetop.com.pdf 链接: https
  设计杂志  设计杂志最后回复于 2025-01-01 建筑景观

[日本版]A+U 建筑与都市 2024年12(651)期
[日本版]A+U 建筑与都市 2024年12(651)期
本杂志PDF电子版收集于网络,仅供学习研究之用,百度网盘下载链接: [ck8_view=10]通过网盘分享的文件:a+u 651_eeeetop.com.pdf 链接: https://pan.baidu.c
  设计杂志  设计杂志最后回复于 2025-01-01 建筑景观

卷帘门图集
卷帘门图集
卷帘门图集
  藤米禾舀  藤米禾舀最后回复于 2024-12-31 建筑图集

景观资料之树木SketchUp模型
景观资料之树木SketchUp模型
都是建筑设计场景三大配景:人,车,树。好的配景总能给你的设计营造好的气场氛围,加分~今天给大家分享一下,整理的树的模型资料,包括2d和3d的,乔灌木,应该够
  顺溜1990  阿白47923最后回复于 2024-12-31 可视化设计

上百个建筑PS人物树木素材
上百个建筑PS人物树木素材
用于渲染出图的PS素材,包含人物树木以及小配件。第一次发帖多多指教!
  moonlongshen  阿白47923最后回复于 2024-12-31 参考素材

黑科技!贴图就能生成三维透视效果!出效果图必备素材!牛!(Enscape可用)
黑科技!贴图就能生成三维透视效果!出效果图必备素材!牛!(En
本EXR视差贴图模型可用于Enscape、Lumion、Vray等主流渲染器。 小伙伴们建模
  sadapple  良木道门窗|劳卡最后回复于 2024-12-31 虚拟化表现

草地贴图&高清树木
草地贴图&高清树木
最近工作很忙,大家呢?这些材料只是辅助表达,好好做设计才是根本。
  weiranabc  阿白47923最后回复于 2024-12-31 参考素材

树木笔刷分享,再也不用搞树木素材了
树木笔刷分享,再也不用搞树木素材了
37种高级树荫、大树剪影效果Photoshop笔刷素材下载: [sell=1]链接: https://pan.baidu.com/s/1-PMcaDDKqVMHEcMWtLpT3w 提取码: dkyr[/sell]
  Ahyh987  阿白47923最后回复于 2024-12-31 图形化处理

中交地产新亚洲系标准化研发
中交地产新亚洲系标准化研发
好东西一起分享。百度网盘下载链接(收集于网络,仅供学习交流,侵删): [sell=5]链接:https://pan.baidu.com/s/1z-hJtdNZ_h5pi_V6VdnfaA 提取码:
  成之歌  czg081128最后回复于 2024-12-31 设计文本

【加肥猫】25G万科小区cad精选(含部分文本及效果图)
【加肥猫】25G万科小区cad精选(含部分文本及效果图)
如题,最近得到的25G的万科资料,拿来和拓友们分享 注意:本人也属于转载性质,大家请勿用于商业用途 截图很多不一 一上传
  liupeiyu1235  czg081128最后回复于 2024-12-31 设计文本

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

240721746

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

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

微信扫一扫关注我们

微信公众号

拓筑小助手

GMT+8, 2025-1-2 23:45 , Processed in 0.281633 second(s), 39 queries , Gzip On.    拓筑在线 ( 粤ICP备11043922号 )

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

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