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

拓筑在线

 找回密码
 快速注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

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


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

Enscape高级渲染参数预设合集(宝藏参数)
Enscape高级渲染参数预设合集(宝藏参数)
和所有软件的参数预设类似,仅仅需要在场景中简单加载渲染参数,即可得到已经调整好的渲染效果。让效果更上一层楼! 包含百余款渲染
  sadapple  shank11最后回复于 2025-04-21 虚拟化表现

23J909_工程做法图集更新变化
23J909_工程做法图集更新变化
近期接触的05与23J909_工程做法,发现编号变化了,好像做法没什么变化,其他友友看也是吗?
  QIN·S  zzb739811最后回复于 2025-04-20 建筑师讨论区

23J909 工程做法  更新啦!
23J909 工程做法 更新啦!
23J909代替05J909 18年过去了,不容易呀~ 另外屋面保护层40厚配14的钢筋 应该是印刷错误,欢迎大家纠错,讨论~
  huazai_1991  zzb739811最后回复于 2025-04-20 建筑图集

airpak3.0软件下载 有安装教程 有帮助文件
airpak3.0软件下载 有安装教程 有帮助文件
airpak3.0软件,带教程!!!!!! 软件下载地址: [sell=5]链接: https://pan.baidu.com/s/1snnsw0W_J6uIYe1dDixMmw 提取码: qqi3[/sell]
  zheng878577  王剑30314最后回复于 2025-04-19 绿色化分析

90%的商场导视正在压制空间场景的溢价能力?
90%的商场导视正在压制空间场景的溢价能力?
在商业空间竞争日益激烈的今天,导视系统早已不再是冷冰冰的“路标”,而是悄然进化为空间美学的“点睛之笔”。 当消费者走进一座购物中心,最先被吸引的
  空间印象  czg081128最后回复于 2025-04-19 建筑师讨论区

【民宿设计】
【民宿设计】
链接在最后,欢迎评论。 百度网盘下载链接: [sell=15]链接: https://pan.baidu.com/s/1586V0eERFBD1HLTGRpIh8A 提取码: p9mp[/sell]
  薛鹏鹏  麻..最后回复于 2025-04-18 大学生讨论区

老K系列——《景观细部图集》上册
老K系列——《景观细部图集》上册
本册内容主要讲以下几个方面的详细做法: 1、压顶、墙帽与组砌方式 2、独立式墙体 3、镂空花隔墙 4、挡土墙
  king2548  wtangameqq最后回复于 2025-04-17 电子版图书

中粮别墅合院 中式 SU模型(含图)
中粮别墅合院 中式 SU模型(含图)
本资料除了SKP模型,还含有SU导图、效果图、渲染小样等图片,有很好的学习参考价值。百度网盘下载链接(收集于网络,仅供学习交流,侵
  小迷妹建筑梦  wtangameqq最后回复于 2025-04-17 SketchUp模型

老K系列——《景观细部图集》下册
老K系列——《景观细部图集》下册
本册内容主要讲以下几个方面的详细做法: 1、廊、棚架、拱门 及墓地门 2、凉棚、露台和小屋 3、铺面板和木板路
  king2548  walabc最后回复于 2025-04-16 电子版图书

GB 55031-2022 民用建筑通用规范(正式版含条文解释)
GB 55031-2022 民用建筑通用规范(正式版含条文解释)
GB 55031-2022 民用建筑通用规范(正式版含条文解释) 3月1号执行
  huazai_1991  1806965520最后回复于 2025-04-16 规范&图集&标准

老K系列——《景观细部图集》中册
老K系列——《景观细部图集》中册
本册内容主要讲以下几个方面的详细做法: 1、车行路的铺设 2、步行路的铺设 3、台阶与坡道 4、边缘、路缘、
  king2548  walabc最后回复于 2025-04-16 电子版图书

附下载地址天正T20v8.0 7.0 5.0 2014最新版建筑结构水暖电专业适配CAD2023 2022 20...
附下载地址天正T20v8.0 7.0 5.0 2014最新版建筑结构水暖电专业适
附下载地址 天正T20v8.0 7.0 6.0 5.0 3.0 2014最新版建筑结构水暖电专业适配CAD2023 2022 2021 2018 下载地址: **** 本内容被作者隐藏 ****
  hooxm  wtangameqq最后回复于 2025-04-16 图形化处理

中国最美50家民宿院子
中国最美50家民宿院子
编者按:本文来自微信公众号新微设计(公众号ID:land-2013),本站经授权转载。 注:文中大多数案例摘自《最美民宿》丛书当中,共3部,收录了100家当
  深圳老梁  wtangameqq最后回复于 2025-04-16 项目实践·作品库

4个著名古建的纸模,有兴趣的同学可以试试。
4个著名古建的纸模,有兴趣的同学可以试试。
网上收集来的,目测淘宝上也有卖标准模型的,不过挺贵。 这个直接拿去彩印就可以拼了。
  hellolinxiang  wtangameqq最后回复于 2025-04-16 参考素材

MAT新作|舟山海街11号民宿Ⅱ
MAT新作|舟山海街11号民宿Ⅱ
项目缘起海街11号民宿完成于五年前,当时采用的增设阳台改变外立面的策略改变了当地原有方块形民宅的局限,带来了新的内外感观。随着海街11号的名声鹊起,这种设
  深圳老梁  麻..最后回复于 2025-04-16 项目实践·作品库

一大波民宿酒店
一大波民宿酒店
分享一句话:我的工作不是要给出我的灵魂,只是为了收钱和不给出我的灵魂 直接上图,绝对的好资料,一大波民宿合集袭来,赶紧收入囊中吧 [s
  xuelian  麻..最后回复于 2025-04-16 参考素材

顶级项目的顶级水平!重庆来福士广场施工图图纸PDF(ALT CLADDING)
顶级项目的顶级水平!重庆来福士广场施工图图纸PDF(ALT CLADDIN
顶级项目的顶级水平!重庆来福士广场施工图图纸PDF(推荐学习) 图纸目录: 平面: 立面: 剖面: 大样: 节点(一共151个节点图): 其
  拓筑小助手  Heart26338最后回复于 2025-04-15 精选合集

工业办公楼
工业办公楼
su工业办公楼
  麻..  麻..最后回复于 2025-04-15 快速发帖

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

240721746

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

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

微信扫一扫关注我们

微信公众号

拓筑小助手

GMT+8, 2025-4-22 04:06 , Processed in 0.907866 second(s), 20 queries , Gzip On, MemCached On.    拓筑在线 ( 粤ICP备11043922号 )

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

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