上篇文章我们给出了在GH里怎样用python写出平面二维点阵的代码,同时留了一个小作业,不知道同学们有没有试着去完成?
不管你有没有去完成,今天我们就再用python写出空间点阵的升级版——三维空间点阵,同时也保留了二维点阵,这样一个电池既能生成三维点阵,也能生成二维点阵,可谓是一举两得。先看看两种状态的效果:
三维空间点阵图:
二维平面点阵图:
下面是完整python代码:
# -*- coding: utf-8 -*-
__作者__ = "抖小腿儿,QQ:241525449"
__日期__ = "2021.06.27"
from ghpythonlib.componentbase import executingcomponent as component
import Grasshopper, GhPython
import Rhino.Geometry as rg
class MyComponent(component):
def Grid2d(self,U,V):
points = []
for i in range(int(U)):
for j in range(int(V)):
point2d = rg.Point3d(i*U, j*V, 0)
points.append(point2d)
return points
def Grid3d(self,U,V,W):
points = []
for i in range(int(U)):
for j in range(int(V)):
for k in range(int(W)):
point3d = rg.Point3d(i*U, j*V, k*W)
points.append(point3d)
return points
def RunScript(self, X数量, Y数量, Z数量, 平面点阵):
if 平面点阵:
点阵 = self.Grid2d(X数量,Y数量)
else:
点阵 = self.Grid3d(X数量,Y数量,Z数量)
return 点阵
注意:X数量 、 Y数量 、Z数量、平面点阵端口用鼠标右键从上至下依次设置Type hnit类型为:int, int, int, bool ,要不然电池会报红的。