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

拓筑在线

 找回密码
 快速注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

【原创】分享一本gh+ghpython的入门教程


[版块:参数化设计] [分类:经验教程] [复制链接] 报告无效帖子查看: 63543|回复: 823   
拓邑团练|910926994 发表于 2016-10-17 09:38:20 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
感谢分享
拓土新兵|zhangqiang1319 发表于 2016-10-17 10:33:46 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
这个很有用,很喜欢。
拓城校尉|mereryang 发表于 2016-10-17 10:42:35 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
现在非常需要啊!!感谢楼主!!!
拓土新兵|勿忘我 发表于 2016-10-17 21:15:37 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
感谢分享
拓城校尉|snail97711 发表于 2016-10-17 21:36:49 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币

感谢分享
拓邑团练|bry~奕 发表于 2016-10-17 22:16:23 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
拓乡士官|kzb2009 发表于 2016-10-19 11:08:22 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
感谢分享,支持了
拓土新兵|j83879 发表于 2016-10-19 11:24:29 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
多谢分享,很好的资料
拓土新兵|akai2000 发表于 2016-10-19 14:35:53 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
谢谢共享,正想学习GHpython呢,下载看看
拓土新兵|nxgyzqw 发表于 2016-10-19 23:16:57 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
"""

design team: Vincenzo D'Auria, Tingwei Duan, Nicolo Friedman, Shuliang Wang

ENCODED MATTER, BARTLETT 2012

Instructor: Ezio Blasetti

code developed in python for rhinoceros beta 5.0

"""

import rhinoscriptsyntax as rs

import math

a = []

class voxels():

   

    def __init__(self, INTX, INTY, INTZ, BBOX):

        self.x = INTX

        self.y = INTY

        self.z = INTZ

        self.bbox = BBOX

        self.Xinc = (self.bbox[6][0]-self.bbox[0][0])/self.x

        self.Yinc = (self.bbox[6][1]-self.bbox[0][1])/self.y

        self.Zinc = (self.bbox[6][2]-self.bbox[0][2])/self.z

        self.pts = []

        self.vals = []

        self.vtxs = []

        self.fvtxs = []



    def voxelizeCrvs(self, crvs, freq):

        

        for i in range(self.x):

            ptRows = []

            valRows = []

            for j in range(self.y):

                ptCols = []

                valCols = []

                for k in range(self.z):

                    thisPt = [self.bbox[0][0]+i*self.Xinc, self.bbox[0][1]+j*self.Yinc, self.bbox[0][2]+k*self.Zinc]

                    ptCols.append(thisPt)

                    sum = 0

                    for e in range(len(crvs)):

                        crv = crvs[e]

                        w = 2*math.pi/freq[e]

                        t = rs.CurveClosestPoint(crv,thisPt)

                        testPt = rs.EvaluateCurve(crv,t)

                        testDist = rs.Distance(thisPt,testPt)

                        sum = sum + math.sin(w*testDist)/testDist

                    if sum>fallout[e] :

                        valCols.append(1)

                    else:

                        valCols.append(0)

                ptRows.append(ptCols)

                valRows.append(valCols)

            self.pts.append(ptRows)

            self.vals.append(valRows)

        self.voxelize()

   

    def voxelize(self):

        for i in range(len(self.vals)):

            row = self.vals[i]

            for j in range(len(row)):

                col = row[j]

                for k in range(len(col)):

                    val = col[k]

                    ###########################################################

                    if val>0.5:

                        listOfBool = [True,True,True,True,True,True]

                        if k!=0 :

                            if self.pts[i][j][k-1] and self.vals[i][j][k-1]>0.5:

                                listOfBool[0] = False

                        if j!=0 :

                            if self.pts[i][j-1][k] and self.vals[i][j-1][k]>0.5:

                                listOfBool[1] = False

                        if i!=self.x-1:

                            if self.pts[i+1][j][k] and self.vals[i+1][j][k]>0.5:

                                listOfBool[2] = False

                        if j!=self.y-1 :  

                            if self.pts[i][j+1][k] and self.vals[i][j+1][k]>0.5:

                                listOfBool[3] = False

                        if i!=0 :

                            if self.pts[i-1][j][k] and self.vals[i-1][j][k]>0.5:

                                listOfBool[4] = False

                        if k!=self.z-1 :

                            if self.pts[i][j][k+1] and self.vals[i][j][k+1]>0.5:

                                listOfBool[5] = False

                    ###########################################################

                        self.addMeshBox(self.pts[i][j][k], listOfBool)

        self.id = rs.AddMesh(self.vtxs,self.fvtxs)

        a.append(self.id)

   

    def addMeshBox(self, pt, listOfBool):

        arrMinCorner = [pt[0],pt[1],pt[2]]

        arrMaxCorner = [pt[0]+self.Xinc,pt[1]+self.Yinc,pt[2]+self.Zinc]

        self.vtxs.append([arrMinCorner[0], arrMinCorner[1], arrMinCorner[2]]) #0 -8

        self.vtxs.append([arrMaxCorner[0], arrMinCorner[1], arrMinCorner[2]]) #1 -7

        self.vtxs.append([arrMaxCorner[0], arrMaxCorner[1], arrMinCorner[2]]) #2 -6

        self.vtxs.append([arrMinCorner[0], arrMaxCorner[1], arrMinCorner[2]]) #3 -5

        self.vtxs.append([arrMinCorner[0], arrMinCorner[1], arrMaxCorner[2]]) #4 -4

        self.vtxs.append([arrMaxCorner[0], arrMinCorner[1], arrMaxCorner[2]]) #5 -3

        self.vtxs.append([arrMaxCorner[0], arrMaxCorner[1], arrMaxCorner[2]]) #6 -2

        self.vtxs.append([arrMinCorner[0], arrMaxCorner[1], arrMaxCorner[2]]) #7 -1

        e = len(self.vtxs)

        if listOfBool[0] : self.fvtxs.append([e-8,e-5,e-6,e-7])

        #arrFaceVertices.append([0,3,2,1])

        if listOfBool[1] : self.fvtxs.append([e-8,e-7,e-3,e-4])

        #arrFaceVertices.append([0,1,5,4])

        if listOfBool[2] : self.fvtxs.append([e-7,e-6,e-2,e-3])

        #arrFaceVertices.append([1,2,6,5])

        if listOfBool[3] : self.fvtxs.append([e-6,e-5,e-1,e-2])

        #arrFaceVertices.append([2,3,7,6])

        if listOfBool[4] : self.fvtxs.append([e-5,e-8,e-4,e-1])

        #arrFaceVertices.append([3,0,4,7])

        if listOfBool[5] : self.fvtxs.append([e-4,e-3,e-2,e-1])

        #arrFaceVertices.append([4,5,6,7])

        #return rs.AddMesh (arrVertices, arrFaceVertices)

   

  



def Main():

    """

    crvs = rs.GetObjects("select a few crvs",4)

    box = rs.GetObject("select the box",rs.filter.polysurface)

    u = 10

    v = 10

    w = 10

    rad = 3

    """

    bbox = rs.BoundingBox(box)

    myVoxels = voxels(u,v,w,bbox)

    myVoxels.voxelizeCrvs(crvs,rad)

   

Main()
拓土新兵|brianeve 发表于 2016-10-20 10:05:50 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
good!!!!!!!
拓邑团练|小哥爱喝蘑菇汤 发表于 2016-10-20 10:48:11 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
下载学习一番 谢谢楼主
拓邑团练|opufo7774 发表于 2016-10-20 12:15:49 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
谢谢分享
拓邑团练|安藤的教堂 发表于 2016-11-3 19:46:38 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
拓土新兵|範特西 发表于 2016-11-4 01:50:43 | 显示全部楼层
发帖得20e币  e币充值  开通VIP会员  快速免费获取e币
谢谢分享
您需要登录后才可以回帖 登录 | 快速注册 微信登录

大艺术家 康定斯基的著作《点.线.面.抽象艺术的基础》的电子版
大艺术家 康定斯基的著作《点.线.面.抽象艺术的基础》的电子版
每个学校肯定都借的到,大一的新生做平面构成一般都会去看,有些同学可能嫌书本看着麻烦,这里给拓友们提供电子版,扫描的还算清晰吧,大家喜欢平面构成的凑合着
  动动  阿白47923最后回复于 2025-07-15 大学生讨论区

终于实现全参螺丝了,不容易啊
终于实现全参螺丝了,不容易啊
一个月。整整一个月的痛苦摸索啊。从ghPython组件的基本使用方法,到rhino脚本环境和common的区别用法互相转换等,都是一点点查找、分析、总结、实验.....终于,
  lbchm1016  阿白47923最后回复于 2025-07-15 大学生讨论区

懂得「让」空间的商业,才能留住「人」
懂得「让」空间的商业,才能留住「人」
当工业风、毛坯风悄然成为潮流,当轻质木料、铁制装置取代了奢华装潢,当空间本身开始“做减法”让位于人的活动——我们正目睹且经历着商业空间一场静默而深刻
  空间印象  空间印象最后回复于 2025-07-15 建筑师讨论区

CECS 1266-2023《建筑幕墙设计标准》扫描件
CECS 1266-2023《建筑幕墙设计标准》扫描件
[sell]链接:https://pan.baidu.com/s/1j43RwlehKm84b5iTn603Kg?pwd=j5ql 提取码:j5ql[/sell]
  285646050  wolf826最后回复于 2025-07-15 规范&图集&标准

新洲·新悦天地丨一张即将代表渭南未来商业的文旅名片
新洲·新悦天地丨一张即将代表渭南未来商业的文旅名片
在商业日益更新的当下,城市的文旅名片早已从当地博物馆、历史地标扩大到一个特色商业,一座活力城市,是贯穿古今的,它既能保留千年历史的余温,又能承载新
  空间印象  空间印象最后回复于 2025-07-14 建筑师讨论区

建筑学报2020电子版持续更新,1973-2019也在
建筑学报2020电子版持续更新,1973-2019也在
建筑学报2020电子版持续更新,延迟官方大半个月样子,建议保存链接,一个月查看一次 1973-2019也在,19年的是到9月份,后三月无 不收积分了,自取,就是希
  蜗牛nkh  zhangs180最后回复于 2025-07-14 电子版图书

【SEG出品】GH中级篇之脚本计算器讲解(一)
【SEG出品】GH中级篇之脚本计算器讲解(一)
首先,很开心的告诉大家,E拓参数化板块有自己的独立域名啦!以后大家可以输入csh.eeeetop.com即可访问参数化板块。 大家没有发现参数化板块的UI比主页要简洁一
  DanielJin  19980834830最后回复于 2025-07-14 参数化设计

[英国版]Wallpaper 设计业权威杂志 2025年08期
[英国版]Wallpaper 设计业权威杂志 2025年08期
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 艺术设计

[美国版]Dwell 现代世界之家 2025年07-08期
[美国版]Dwell 现代世界之家 2025年07-08期
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 建筑景观

[美国版]Architectural Digest US 建筑辑要 2025年07期
[美国版]Architectural Digest US 建筑辑要 2025年07期
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 室内家居

[日本版]Casa Brutus 建筑室内艺术杂志 2025年07期
[日本版]Casa Brutus 建筑室内艺术杂志 2025年07期
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 室内家居

[意大利版]Interni 著名室内设计杂志 2025年07-08期
[意大利版]Interni 著名室内设计杂志 2025年07-08期
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 室内家居

[意大利版]Domus 高端建筑室内杂志 2025年07期
[意大利版]Domus 高端建筑室内杂志 2025年07期
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 室内家居

[日本版]Shotenkenchiku 商店建筑 2025年07期
[日本版]Shotenkenchiku 商店建筑 2025年07期
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 建筑景观

[澳大利亚版]Architecture Australia 澳大利亚建筑 2025年07-08期
[澳大利亚版]Architecture Australia 澳大利亚建筑 2025年07-08
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 建筑景观

[英国版]Landscape & Urban Design 景观与城市设计 2025年07-08期
[英国版]Landscape & Urban Design 景观与城市设计 2025年07-08
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 建筑景观

[日本版]Confort 建筑室内杂志 2025年07-08期
[日本版]Confort 建筑室内杂志 2025年07-08期
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 建筑景观

[新西兰版]Architecture NZ 建筑学 2025年07-08期
[新西兰版]Architecture NZ 建筑学 2025年07-08期
2025年精选30种国外【建筑+景观+室内】设计杂志超大合集 全年订阅链接:https://www.eeeetop.com/forum.php?mod=viewthread&tid=75981
  深圳老梁  深圳老梁最后回复于 2025-07-12 建筑景观

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

240721746

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

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

微信扫一扫关注我们

微信公众号

拓筑小助手

GMT+8, 2025-7-16 03:47 , Processed in 0.067733 second(s), 20 queries , Gzip On, MemCached On.    拓筑在线 ( 粤ICP备11043922号 )

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

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