大家都知道一个图形的最小基本单位就是点,而点是在犀牛空间里是由坐标表示的,比如 (x,y,z),而这(x、y、z)代表3个数字,所以只要我们知道这三个数字就可以生成点了,在GH中,生成单个点或多个点的方法有很多,但用一个电池做成点阵的电池却没有,所以,我们这次就来用python去编写一个电池,从而达到我们的目的,先看看做好后的效果是怎样的:
下面是完整python代码:
# -*- coding: utf-8 -*-
__作者__ = "抖小腿儿,QQ:241525449"
__日期__ = "2021.05.26"
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 RunScript(self, X数量, Y数量):
if X数量 and Y数量:
点阵 = self.Grid2d(X数量,Y数量)
elif X数量:
Y数量 = 10
点阵=self.Grid2d(X数量,Y数量)
elif Y数量:
X数量 = 10
点阵 = self.Grid2d(X数量,Y数量)
else:
X数量 = Y数量 = 10
点阵 = self.Grid2d(X数量,Y数量)
return 点阵
这个电池代码用了python函数写法,另外加了多种判断,目的是如果 X数量 和 Y数量 都不输入数字或者仅输入一个数字的时候让程序也能完美的执行,本次代码默认的数字是 10 。
当然,这个程序很简单,也只能在XY平面上生成点阵,如果想在其他平面生成点阵呢?或者想生成三维点阵呢?这就留下作业给屏幕前的你了。
注意:X数量 和 Y数量 端口用鼠标右键从上至下依次设置Type hnit类型为:int, int,要不然电池会报错的哦。