import rhinoscriptsyntax as rs
import ghpythonlib.treehelpers as th
def find_midPt(pt1,pt2):
pt1=rs.PointCoordinates(pt1)
pt2=rs.PointCoordinates(pt2)
mid=((pt1[0]+pt2[0])/2,(pt1[1]+pt2[1])/2, (pt1[2]+pt2[2])/2)
return mid
def create_list(x):
y=th.tree_to_list(x,lambda x:x)
pts=[]
#len(y)求取的应该为列表中分支的个数,在此处为分组的数量。
for i in range(len(y)):
#len(y[i])在此处应为第i个分支中Item的数量,即每一组中点的个数。
if len(y[i])==7:
pts.append(y[i])
return pts
def generate_shape(pts):
surfaces=[]
for i in range(len(pts)):
bottom=rs.AddCurve(pts[i],1)
center=find_midPt(pts[i][0],pts[i][3])
top=rs.ScaleObject(bottom,center,(0.8,0.8,0.8),True)
#六边形上挑选三个点来近似代表该曲面所在的平面plane
plane=rs.PlaneFromPoints(pts[i][0], pts[i][2], pts[i][4])
#这一句中plane[3]代表的是提取平面plane的第三项坐标轴,也就是Z方向,也就是法线方向。
translate=rs.VectorScale(plane[3],4)
top=rs.MoveObject(top,translate)
GH_Python生成六边形开孔曲面
最新推荐文章于 2025-01-09 09:27:49 发布
这篇博客介绍了一段使用Rhino脚本(Rhinoscriptsyntax)和GHPython库来生成三维几何形状的代码。首先定义了一个计算中点的函数`find_midPt`,然后`create_list`函数用于从输入数据中筛选出特定分组的点。最后,`generate_shape`函数根据这些点创建了一系列曲面,通过双轨扫掠操作连接底部曲线和顶部曲线。整个过程涉及到曲线、点的操作,以及几何形状的构造和变换。

最低0.47元/天 解锁文章
2241

被折叠的 条评论
为什么被折叠?



