NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10993|回复: 1
打印 上一主题 下一主题

[个人作品] 做了个东西 但是找不出哪里错了 能不能有人来帮帮我啊

[复制链接]
跳转到指定楼层
1m
发表于 2012-7-1 14:20:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Call Main()
Sub Main()
        Const objecttype=8
        Dim strsurface,strcrv1,strcrv2,udomain,vdomain,uparam,vparam,arrpoints,i,j,secu,secv
        strsurface=rhino.GetObject("seslect surface",8)
        strcrv1=rhino.GetObject("select crv1",4)
        strcrv2=rhino.GetObject("select crv2",4)
        Dim L
        If isnull (strsurface) Then Exit Sub
        secu=60
        secv=60
        ReDim collec(secu,secv)
        udomain=rhino.SurfaceDomain(strsurface,0)
        vdomain=rhino.SurfaceDomain(strsurface,1)
        For i=0 To secu
                For j=0 To secv
                        uparam=udomain(0)+i*((udomain(1)-udomain(0))/secu)
                        vparam=vdomain(0)+j*((vdomain(1)-vdomain(0))/secv)
                        arrpoints=rhino.EvaluateSurface(strsurface,array(uparam,vparam))
                        collec(i,j)=arrpoints
                Next
        Next
        Dim npoint1,npoint2,npoint3,npoint4,npoint5,circle
        Dim addnp1,addnp2,addnp3,addnp4,addnp5
        Dim ap1,ap2,ap5,clospt1,dist1,clospt2,dist2,R,apcls1,apcls2,adcls1,adcls2
        Dim ev1,ev2
        For i=0 To secu -1 Step 4
                For j=0 To secv -1 Step 3
                        If j Mod 2 = 0 Then
                                L=i+2
                                Else
                                L=i
End If
                       
                        npoint1=array(L,j)
                        npoint2=array(L,j+2)
                        npoint3=array(L+2,j+2)
                        npoint4=array(L+2,j)
                        npoint5=array(L+1,j+1)
       
        addnp1 = rhino.AddPoint(npoint1)
        addnp2 = rhino.AddPoint(npoint2)
        addnp3 = rhino.AddPoint(npoint3)
        addnp4 = rhino.AddPoint(npoint4)
        addnp5 = rhino.AddPoint(npoint5)
       
        ap5 = rhino.PointCoordinates(addnp5)
        ap5 = rhino.PointCoordinates(addnp1)
        ap5 = rhino.PointCoordinates(addnp2)
       
        clospt1 = rhino.CurveClosestPoint(strcrv1,ap5)
        ev1 = rhino.EvaluateCurve(strcrv1,clospt1)
        adcls1 = rhino.AddPoint(ev1)
                        dist1 = rhino.Distance(rhino.PointCoordinates(addnp5),rhino.PointCoordinates(adcls1))
        clospt2 = rhino.CurveClosestPoint(strcrv2,ap5)
        ev2 = rhino.EvaluateCurve(strcrv2,clospt2)
        adcls2 = rhino.AddPoint(ev2)
        dist2 = rhino.Distance(rhino.PointCoordinates(addnp5), rhino.PointCoordinates(adcls2))
                       
        R = (dist1 + dist2)/40
        rhino.Print(R)
        If R < 2 Then
                R = 2
        ElseIf R > 10 Then
                R = 10
        End If
        Dim arrplane
        arrplane = rhino.PlaneFromPoints(ap5, ap1 ,ap2)
        rhino.AddCircle arrplane, R
        Next
        Next
End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
 楼主| 发表于 2012-7-1 14:23:15 | 只看该作者
是个双曲线影响的程序  第71行提示  type mismatch in parameter    array required

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-4-30 09:33 , Processed in 0.186402 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表