GH_Python生成六边形开孔曲面

这篇博客介绍了一段使用Rhino脚本(Rhinoscriptsyntax)和GHPython库来生成三维几何形状的代码。首先定义了一个计算中点的函数`find_midPt`,然后`create_list`函数用于从输入数据中筛选出特定分组的点。最后,`generate_shape`函数根据这些点创建了一系列曲面,通过双轨扫掠操作连接底部曲线和顶部曲线。整个过程涉及到曲线、点的操作,以及几何形状的构造和变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)
        
        topPt=rs.EvaluateCurve(top,0)
        rail=rs.AddLine(pts[i][0],topPt)
        
        #构建完成bottom和top两条断面线和扫掠路径rail之后,进行双轨扫掠。
        surface=rs.AddSweep2([bottom,top],[rail],False)
        
        surfaces.append(surface)
        
    return surfaces
    
pts=create_list(x)
shape=generate_shape(pts)

a=th.list_to_tree(shape,source=[])

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值