RhinoPython创建矩形开孔立面

#coding:utf-8
import rhinoscriptsyntax as rs
import random as rnd

def ptMtx(XMAX,YMAX,ZMAX):
    ptDict={}
    for i in range(XMAX):
        for j in range(YMAX):
            for k in range(ZMAX):
                x=i*8
                y=j*10 
                z=k*10

                ptDict[(i,j,k)]=(x,y,z)

    for i in range (XMAX):
        for j in range(YMAX):
            for k in range(ZMAX):
                if i>0 and j>0 and k>0:
                    #创建闭合多段线作为frontCrv,末尾的阶数设置为1
                    frontCrv=rs.AddCurve((ptDict[(i,j,k)],ptDict[(i,j,k-1)],
                    ptDict[(i,j-1,k-1)],ptDict[(i,j-1,k)],ptDict[(i,j,k)]),1)

                    #创建backSrf
                    backSrf=rs.AddSrfPt([ptDict[(i-1,j,k)],ptDict[(i-1,j,k-1)],
                    ptDict[(i-1,j-1,k-1)],ptDict[(i-1,j-1,k)]])

                    #将backSrf重建为三阶四点,并获取backSrf上的点
                    rs.RebuildSurface(backSrf,(3,3),(4,4))
                    pts=rs.SurfacePoints(backSrf)
                    rs.DeleteObject(backSrf)

                    quadnum=rnd.randint(1,9)
                    if quadnum==1:
                        backCrv=rs.AddCurve((pts[0],pts[4],pts[5],pts[1],pts[0]),1)
                        sweepline=rs.AddLine(pts[0],ptDict[(i,j,k)])

                    if quadnum==2:
                        backCrv=rs.AddCurve((pts[1],pts[5],pts[6],pts[2],pts[1]),1)
                        sweepline=rs.AddLine(pts[1],ptDict[(i,j,k)])

                    if quadnum==3:
                        backCrv=rs.AddCurve((pts[2],pts[6],pts[7],pts[3],pts[2]),1)
                        sweepline=rs.AddLine(pts[2],ptDict[(i,j,k)])

                    if quadnum==4:
                        backCrv=rs.AddCurve((pts[4],pts[8],pts[9],pts[5],pts[4]),1)
                        sweepline=rs.AddLine(pts[4],ptDict[(i,j,k)])

                    if quadnum==5:
                        backCrv=rs.AddCurve((pts[5],pts[9],pts[10],pts[6],pts[5]),1)
                        sweepline=rs.AddLine(pts[5],ptDict[(i,j,k)])

                    if quadnum==6:
                        backCrv=rs.AddCurve((pts[6],pts[10],pts[11],pts[7],pts[6]),1)
                        sweepline=rs.AddLine(pts[6],ptDict[(i,j,k)])

                    if quadnum==7:
                        backCrv=rs.AddCurve((pts[8],pts[12],pts[13],pts[9],pts[8]),1)
                        sweepline=rs.AddLine(pts[8],ptDict[(i,j,k)])

                    if quadnum==8:
                        backCrv=rs.AddCurve((pts[9],pts[13],pts[14],pts[10],pts[9]),1)
                        sweepline=rs.AddLine(pts[9],ptDict[(i,j,k)])

                    if quadnum==9:
                        backCrv=rs.AddCurve((pts[10],pts[14],pts[15],pts[11],pts[10]),1)
                        sweepline=rs.AddLine(pts[10],ptDict[(i,j,k)])

                    rs.AddSweep2([backCrv,frontCrv],[sweepline])

def main():
    xmax=rs.GetInteger("input number in x direction",10)
    ymax=rs.GetInteger("input number in y direction",10)
    zmax=rs.GetInteger("input number in z direction",10)
    #添加下面一行代码,可使得在Rhino的运行速度变开,但不改变运行结果。
    rs.EnableRedraw(False)
    ptMtx(xmax,ymax,zmax)

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值