<wbr id="I17"></wbr>

          1. A playground for University of Bologna Students and a 6-days seminar about digital tools.

            Digital generative tools are a very important part of architectural education. Andrew Kudless during his conference at SimAE was telling about chinese traditional woodcraftsmen: they spend their first two years of apprentice in making their own tools. Today, we have a large pool of digital ready made tools, built to respond to more or less specific problems or tasks, while keeping a level of flexibility and personalization. The majority of these tools have hidden capabilities, which can only be accessed bypassing the conventional interface and getting close to the machine logic of programming or building parametric components which generate shapes. Thus, seriality, differentiation, complexity can be implemented in architectural projects through code, in order to exploit the power of algorithmic based complex systems which are the basis of biological systems.


            But, before going through such complexity, we must start with simple tasks and simple rules. Before playing seriously we need practice. This is the playground where a bunch of students will start to practice, a pool where they will share their results and questions. Maybe the stuff here that will be posted will seem obvious or naive to the navigated code-monkey, but, as I mentioned before, we all start from the basics and this is intended as a place to start. However, any comment and contribution is appreciated.

            Playground is open, let's play! _ Alessio

            2.11.09

            L-system [test]

            Working on the same principles of my last post I realized a new script based on self-learning system.
            The concept is easy. A simple L-system start to grown randomly from a seed, and after every generation it try to touch other L-systems, that are growing from different one seed.

            [edit]
            I forgot to explain some aspects. In this script singles L-system recive a feedback from others, because configuration of every generation depend on configuration of previous one.
            Unlike my previous script there isn't only one final perfect configuration, but infinity ones... because every random event of system "A" affects other systems in next generation, thus itself in following one.
            [/edit]


            Option Explicit
            ' Script written by Alessandro Zomparelli
            ' alessandro.zomparelli@gmail.com
            ' http://alessandrozompa.altervista.org/
            ' Script version domenica 1 novembre 2009 14.40.18

            Call Main()
            Sub Main()
            'picking seed points
            Dim arrSeed, arrSub
            ReDim arrSeed(0)
            arrSeed(0)=Rhino.GetObjects("pick seed points",1)

            'defining number of branch
            Dim dblBrN
            dblBrN=Rhino.GetInteger("number of branches",2,1)

            'defining number of branch generation
            Dim dblBranch
            dblBranch=Rhino.GetInteger("number of branch generation",3,1)
            ReDim Preserve arrSeed(dblBranch)

            Dim arrData, dblVote, arrVote
            ReDim arrData(dblBranch), arrVote(0)

            'defining number of generations and amount of mutation between following generations
            Dim dblGen, dblMut, strLine
            dblGen=Rhino.GetInteger("set number of generations",100,2,10000)
            dblMut=Rhino.GetReal("set mutation value",2,0.1,100)

            Call Rhino.EnableRedraw(False)

            'starting evolution system
            Dim i,j,z,k,y,m,a

            Dim dblDis, arrDist, strC1, strC2
            ReDim arrDist(0)

            'generation of different layers
            Dim strL1: strL1="lines"
            Call Rhino.AddLayer(strL1)

            'evaluation of distance between seed points for a better L-System scale
            dblDist=Rhino.Distance(Rhino.PointCoordinates(arrSeed(0)(0)),Rhino.PointCoordinates(arrSeed(0)(1)))
            For i=0 To ubound(arrSeed(0))
            For j=0 To ubound(arrSeed(0))
            If i<>j Then
            If Rhino.Distance(Rhino.PointCoordinates(arrSeed(0)(i)),Rhino.PointCoordinates(arrSeed(0)(j)))<>0 Then
            arrSeed(i)=arrSub
            End If
            arrData(i)=arrSub
            For j=0 To ubound(arrSeed(i))
            arrData(i)(j)=array(0,array(0,0,0),array(0,0,0),dblDis)
            Next
            Next


            For z=0 To dblGen-1
            Call Rhino.Print(int(z*100/(dblGen-1))&"%")
            For i=1 To dblBranch
            'generation of branches
            For j=0 To ubound(arrSeed(i-1))

            For y=0 To dblBrN-1
            'defining vector scattering direction
            arrData(i)(j*(dblBrN)+y)(2)=array(arrData(i)(j*(dblBrN)+y)(1)(0)+dblMut*(dblGen-z)/dblGen*(rnd-rnd),arrData(i)(j*(dblBrN)+y)(1)(1)+dblMut*(dblGen-z)/dblGen*(rnd-rnd),arrData(i)(j*(dblBrN)+y)(1)(2)+dblMut*(dblGen-z)/dblGen*(rnd-rnd))

            'propotional scaling factor
            arrData(i)(j*(dblBrN)+y)(2)=Rhino.VectorUnitize(arrData(i)(j*(dblBrN)+y)(2))
            arrData(i)(j*(dblBrN)+y)(2)=Rhino.VectorScale(arrData(i)(j*(dblBrN)+y)(2),arrData(i)(j*(dblBrN)+y)(3)/i/3)
            arrSeed(i)(j*(dblBrN)+y)=Rhino.CopyObject(arrSeed(i-1)(j),arrData(i)(j*(dblBrN)+y)(2))

            'drawing last generation
            If z=dblGen-1 Then
            strLine=Rhino.AddLine(Rhino.PointCoordinates(arrSeed(i-1)(j)),Rhino.PointCoordinates(arrSeed(i)(j*(dblBrN)+y)))
            Call Rhino.objectlayer(strLine,strL1)
            If i=1 Then
            strC1=Rhino.AddCircle(Rhino.PlaneFromNormal(Rhino.PointCoordinates(arrSeed(i-1)(j)),arrData(i)(j*(dblBrN)+y)(2)),arrData(i-1)(j)(3)/20/i)
            Else
            strC1=Rhino.AddCircle(Rhino.PlaneFromNormal(Rhino.PointCoordinates(arrSeed(i-1)(j)),arrData(i)(j*(dblBrN)+y)(2)),arrData(i-1)(j)(3)/40/(i-1))
            End If
            strC2=Rhino.AddCircle(Rhino.PlaneFromNormal(Rhino.PointCoordinates(arrSeed(i)(j*(dblBrN)+y)),arrData(i)(j*(dblBrN)+y)(2)),arrData(i)(j*(dblBrN)+y)(3)/40/i)
            Call Rhino.AddLoftSrf(array(strC1,strC2))
            If i=1 Then
            Call Rhino.AddSphere(Rhino.PointCoordinates(arrSeed(i-1)(j)),arrData(i-1)(j)(3)/20/i)
            'Else
            ' Call Rhino.AddSphere(Rhino.PointCoordinates(arrSeed(i-1)(j)),arrData(i-1)(j)(3)/30/(i-1))
            End If
            Call Rhino.AddSphere(Rhino.PointCoordinates(arrSeed(i)(j*(dblBrN)+y)),arrData(i)(j*(dblBrN)+y)(3)/40/i)
            Call Rhino.DeleteObjects(array(strC1,strC2))
            End If

            'for display colors of different generation
            'If z/10=int(z/10) Then
            ' strLine=Rhino.AddLine(Rhino.PointCoordinates(arrSeed(i-1)(j)),Rhino.PointCoordinates(arrSeed(i)(j*2+y)))
            ' Call Rhino.ObjectColor(strLine, RGB(255-255/dblGen*z,0,255/dblGen*z))
            'End If
            Next
            Next

            'recordn data of individual branches
            For j=0 To ubound(arrSeed(i-1))
            For y=0 To dblBrN-1
            a=-1
            'defining votes for branches generated from different seeds
            For k=0 To ubound(arrSeed(i-1))
            If int(k/(dblBrN^(i-1)))<>int(j/(dblBrN^(i-1))) Then
            For m=0 To dblBrN-1
            a=a+1
            ReDim Preserve arrVote(a), arrDis(a+1)
            'defining a vote for element efficiency
            arrVote(a)=(Rhino.Distance(PointCoordinates(arrSeed(i-1)(j)),Rhino.PointCoordinates(arrSeed(i-1)(k)))-Rhino.Distance(Rhino.PointCoordinates(arrSeed(i)(j*(dblBrN)+y)),Rhino.PointCoordinates(arrSeed(i-1)(k))))
            'recording distance from detected points
            arrDist(a)=Rhino.Distance(PointCoordinates(arrSeed(i-1)(j)),Rhino.PointCoordinates(arrSeed(i-1)(k)))
            Next
            End If
            Next
            dblVote=Rhino.Max(arrVote)

            'recording dist for nearest point
            For k=0 To ubound(arrVote)
            If arrVote(k)=dblVote Then
            arrDist(a+1)=arrDist(k)
            End If
            Next

            'recording data about the new element
            If dblVote>arrData(i)(j*(dblBrN)+y)(0) Then
            arrData(i)(j*(dblBrN)+y)(0)=dblVote
            arrData(i)(j*(dblBrN)+y)(1)=arrData(i)(j*(dblBrN)+y)(2)
            arrData(i)(j*(dblBrN)+y)(3)=arrDist(a+1)
            End If
            Next
            Next

            Next
            For i=1 To dblBranch
            Call Rhino.DeleteObjects(arrSeed(i))
            Next

            Next
            Call Rhino.LayerVisible(strL1,False)
            Call Rhino.EnableRedraw(True)
            Call Rhino.Print("100%")

            End Sub

            31.10.09



            Like human body and ant colony, later generations reduce scattering for a more accurate configuration. Studying countless generations, the family should reach the target specified.

            Specifying different rules for worms should be possible to study emergent systems whose behavior is not predictable from the study of individual elements, like organic complexity L-systems.




            Option Explicit
            ' Script written by Alessandro Zomparelli
            ' alessandro.zomparelli@gmail.com
            ' http://alessandrozompa.altervista.org/
            ' Script version venerdì 30 ottobre 2009 16.59.03

            Call Main()
            Sub Main()
            Dim strTarget, arrFamily, arrTarget, n
            n=Rhino.GetInteger("set number elements",20,2,100)

            ReDim arrFamily(n), arrTarget(2)
            arrFamily(0)=Rhino.GetObject("pick starting point")
            'check for starting point
            If Rhino.IsPoint(arrFamily(0))=False Then
            Exit Sub
            End If
            strTarget=Rhino.GetObject("pick target point")
            'check for target point
            If Rhino.IsPoint(strTarget)=False Then
            Exit Sub
            End If
            arrTarget=Rhino.PointCoordinates(strTarget)

            Dim dblDist
            dblDist=Rhino.Distance(Rhino.PointCoordinates(arrFamily(0)),arrTarget)

            'defining number of generations and amount of mutation between following generations
            Dim dblGen, dblMut
            dblGen=Rhino.GetInteger("set number of generations",100,2,1000)
            dblMut=Rhino.GetReal("set mutation value",2,0.01,100)

            'defining an array to collect data about different family
            Dim arrData
            ReDim arrData(n)

            'defining a value for better step-element of different family
            Dim dblVote

            'defining counters, array for data recording and an array for scattering direction
            Dim i, j, arrVect, arrVect0, arrRec
            ReDim arrVect(2), arrVect0(2), arrRec(1)

            'defining random data for first generation
            For j=1 To n
            arrVect=array(rnd-rnd,rnd-rnd,rnd-rnd)
            dblVote=0
            arrData(j)=array(dblVote,arrVect)
            Next

            Dim strLine

            'starting evolution system
            For i=0 To dblGen-1

            Call Rhino.EnableRedraw(False)
            'starting family growning
            For j=1 To n
            arrRec=arrData(j)
            arrVect0=arrRec(1)
            arrVect=array(arrVect0(0)+dblMut*(dblGen-i)/dblGen*(rnd-rnd),arrVect0(1)+dblMut*(dblGen-i)/dblGen*(rnd-rnd),arrVect0(2)+dblMut*(dblGen-i)/dblGen*(rnd-rnd))
            arrVect0=Rhino.VectorUnitize(arrVect)
            arrVect=Rhino.VectorScale(arrVect0,dblDist/n)
            'generation of new element of the family
            arrFamily(j)=Rhino.CopyObject(arrFamily(j-1),arrVect)
            strLine=Rhino.AddLine(Rhino.PointCoordinates(arrFamily(j-1)),Rhino.PointCoordinates(arrFamily(j)))
            Call Rhino.ObjectColor(strLine, RGB(255-255/dblGen*i,0,255/dblGen*i))

            If Rhino.Distance(Rhino.PointCoordinates(arrFamily(j)),arrTarget)arrRec(0) Then
            arrData(j)=array(dblVote,arrVect)
            End If
            End If
            Next
            For j=1 To n
            Call Rhino.DeleteObject(arrFamily(j))
            Next

            Call Rhino.EnableRedraw(True)
            Next

            End Sub

            12.6.09

            tens.tesselation


            Here some other surface tesselation experiments, I have already posted the first one but now it is fixed (no more Rhino.command!). Anyway there is not a relevant physics accuracy in both scripts, take them just as tries.





















            ' CASE 10 SURFSTARS

            Sub surfstars(strsurf,upar,vpar)
            upar = upar*5
            vpar = vpar*5
            Dim dblheight : dblheight = rhino.getreal("extrusion height?" ,.05)
            If isnull (dblheight) Then Exit Sub
            Dim attrpoint : attrpoint = rhino.getobject("point attractor",1)
            Dim arrpoint : arrpoint = rhino.PointCoordinates(attrpoint)
            Call rhino.enableredraw(False)
            Dim i, j
            Dim uvalone(1), uvaltwo
            Dim arrUone, arrVone
            Dim arrpttemp, pointtwo
            Dim pt1, pt2, pt3, pt4, pt5, pt6, PT7, Pt8, pt5b, pt6b, pt7b, pt8b, ptc1, ptc2, pt1c, pt2c, pt3c, pt4c
            ReDim matrix (upar, vpar)
            Dim tempt
            arruone = array (0,0)
            arrVone = array (0,0)
            Dim strcell, arrct, arrptsurf, arrnorm, arrnormend,arrnormenddown, arrline, strcell2
            Dim pt1b,pt2b,pt3b,pt4b
            If rhino.IsSurface(strsurf) Then
            arruone = rhino.surfacedomain(strsurf,0)
            arrVone = rhino.surfacedomain(strsurf,1)
            End If
            For i=0 To upar
            For j=0 To vpar
            uvalone(0)= ((arruone(1)-arruone(0))/upar)*i
            uvalone(1) = ((arrVone(1)-arrVone(0))/vpar)*j
            arrpttemp = rhino.EvaluateSurface(strsurf,uvalone)
            matrix(i,j) = arrpttemp
            Next
            Next
            Dim oct1, oct2, oct3, oct4, arrlinehuge, arrel1, arrel2, arrdom, midplane, midcircle1, midcircle2
            Dim rn, crvtemp, dbldist

            For i = 1 To upar-1
            For J=0 To vpar-1
            pt1 = matrix(i,j)
            pt2 = matrix(i+1,j)
            pt3 = matrix(i,j+1)
            pt4 = matrix(i+1,j+1)
            pt5 = array( (pt1(0)+pt2(0))/2,(pt1(1)+pt2(1))/2,(pt1(2)+pt2(2))/2)
            pt6 = array( (pt2(0)+pt4(0))/2,(pt2(1)+pt4(1))/2,(pt2(2)+pt4(2))/2)
            pt7 = array( (pt3(0)+pt4(0))/2,(pt3(1)+pt4(1))/2,(pt3(2)+pt4(2))/2)
            pt8 = array( (pt1(0)+pt3(0))/2,(pt1(1)+pt3(1))/2,(pt1(2)+pt3(2))/2)
            ptc1 = array( (pt5(0)+pt7(0))/2,(pt5(1)+pt7(1))/2,(pt5(2)+pt7(2))/2)
            ptc2 = array( (pt6(0)+pt8(0))/2,(pt6(1)+pt8(1))/2,(pt6(2)+pt8(2))/2)
            dbldist = rhino.Distance(ptc1,arrpoint)
            dbldist = Rhino.Log10 (dbldist*3)
            If dbldist<1 dbldist ="">
            pt5b = array( pt5(0)+(ptc1(0)-pt5(0))/(dbldist),pt5(1)+(ptc1(1)-pt5(1))/(dbldist),pt5(2)+(ptc1(2)-pt5(2))/(dbldist))
            pt6b = array( pt6(0)+(ptc2(0)-pt6(0))/(dbldist),pt6(1)+(ptc2(1)-pt6(1))/(dbldist),pt6(2)+(ptc2(2)-pt6(2))/(dbldist))
            pt7b = array( pt7(0)+(ptc1(0)-pt7(0))/(dbldist),pt7(1)+(ptc1(1)-pt7(1))/(dbldist),pt7(2)+(ptc1(2)-pt7(2))/(dbldist))
            pt8b = array( pt8(0)+(ptc2(0)-pt8(0))/(dbldist),pt8(1)+(ptc2(1)-pt8(1))/(dbldist),pt8(2)+(ptc2(2)-pt8(2))/(dbldist))

            Call rhino.AddCurve(array(pt1,pt2,pt4,pt3,pt1),1)
            strcell = rhino.addcurve(array(pt1,,pt5b, pt2,pt6b, pt4, pt7b,pt3,pt8b,pt1),1)

            arrct = array( (pt4(0)+pt1(0))/2,(pt4(1)+pt1(1))/2,(pt4(2)+pt1(2))/2)
            arrptsurf = rhino.SurfaceClosestPoint(strsurf,arrct)
            arrnorm = rhino.SurfaceNormal(strsurf,arrptsurf)
            arrnorm = rhino.VectorScale(arrnorm, dblheight)
            arrnormend = rhino.PointAdd(arrct,arrnorm)
            arrnormenddown = rhino.Pointsubtract(arrct,arrnorm)
            crvtemp = rhino.AddSrfPt(array(pt1,arrnormend,pt5b))
            crvtemp = rhino.AddSrfPt(array(pt5b,arrnormend,pt2))
            crvtemp = rhino.AddSrfPt(array(pt2,arrnormend,pt6b))
            crvtemp = rhino.AddSrfPt(array(pt6b,arrnormend,pt4))
            crvtemp = rhino.AddSrfPt(array(pt4,arrnormend,pt7b))
            crvtemp = rhino.AddSrfPt(array(pt7b,arrnormend,pt3))
            crvtemp = rhino.AddSrfPt(array(pt3,arrnormend,pt8b))
            crvtemp = rhino.AddSrfPt(array(pt8b,arrnormend,pt1))

            crvtemp = rhino.AddSrfPt(array(pt1,arrnormenddown,pt5b))
            crvtemp = rhino.AddSrfPt(array(pt5b,arrnormenddown,pt2))
            crvtemp = rhino.AddSrfPt(array(pt2,arrnormenddown,pt6b))
            crvtemp = rhino.AddSrfPt(array(pt6b,arrnormenddown,pt4))
            crvtemp = rhino.AddSrfPt(array(pt4,arrnormenddown,pt7b))
            crvtemp = rhino.AddSrfPt(array(pt7b,arrnormenddown,pt3))
            crvtemp = rhino.AddSrfPt(array(pt3,arrnormenddown,pt8b))
            crvtemp = rhino.AddSrfPt(array(pt8b,arrnormenddown,pt1))
            arrline = rhino.AddLine(pt1,pt2)
            arrdom=rhino.CurveDomain(arrline)
            midplane=rhino.CurvePerpFrame(arrline,arrdom(0))
            midcircle1=rhino.AddCircle(midplane,0.09)
            midplane=rhino.CurvePerpFrame(arrline,arrdom(1))
            midcircle2=rhino.AddCircle(midplane,0.09)
            Call rhino.AddLoftSrf (Array(midcircle1,midcircle2))
            arrline = rhino.AddLine(pt3,pt4)
            arrdom=rhino.CurveDomain(arrline)
            midplane=rhino.CurvePerpFrame(arrline,arrdom(0))
            midcircle1=rhino.AddCircle(midplane,0.09)
            midplane=rhino.CurvePerpFrame(arrline,arrdom(1))
            midcircle2=rhino.AddCircle(midplane,0.09)
            Call rhino.AddLoftSrf (Array(midcircle1,midcircle2))

            Next
            Next

            Call rhino.deleteobject(strsurf)
            Call rhino.EnableRedraw(True)
            End Sub



            '----- CASE 11 SURFholetens -----


            Sub SURFholetens (strsurf,upar,vpar)
            Dim dblheight : dblheight = rhino.getreal("elements height?" ,.6)
            Dim attrpoint : attrpoint = rhino.Getobject("attractor",1)
            Dim attrpointcoord : attrpointcoord= rhino.pointcoordinates(attrpoint)
            If isnull (dblheight) Then Exit Sub
            Call rhino.enableredraw(False)
            Dim i, j
            Dim uvalone(1), uvaltwo
            Dim arrUone, arrVone
            Dim arrpttemp, pointtwo
            Dim pt1, pt2, pt3, pt4, pt5, pt6, pta, ptb, ptc,ptd
            ReDim matrix (upar, vpar)
            Dim tempt
            arruone = array (0,0)
            arrVone = array (0,0)
            Dim arrct, arrptsurf, arrnorm, arrnormend, arrline
            If rhino.IsSurface(strsurf) Then
            arruone = rhino.surfacedomain(strsurf,0)
            arrVone = rhino.surfacedomain(strsurf,1)
            End If
            For i=0 To upar
            For j=0 To vpar
            uvalone(0)= ((arruone(1)-arruone(0))/upar)*i
            uvalone(1) = ((arrVone(1)-arrVone(0))/vpar)*j
            arrpttemp = rhino.EvaluateSurface(strsurf,uvalone)
            matrix(i,j) = arrpttemp
            Next
            Next
            Dim dbldist
            Dim strquad1,strcentr,strquad2,strcell, midline,midcircle1,midcircle2, midplane,arrdom,ptmid
            Dim midp1,midpoint1
            Dim midp2,midpoint2
            For i = 1 To upar-2 Step 3
            For J=0 To vpar-2 Step 4
            pt1 = matrix(i,j)
            pt2 = matrix(i+1,j)
            pt3 = matrix(i+2,j+1)
            pt4 = matrix(i+1,j+2)
            pt5 = matrix(i,j+2)
            pt6 = matrix(i-1,j+1)
            pta = matrix(i-1,j)
            ptb = matrix(i+2,j)
            ptc = matrix(i+2,j+2)
            ptd = matrix(i-1,j+2)
            strcell = rhino.AddCurve(array(pt6,pt1,pt2,pt3,pt4,pt5,pt6),2)
            strquad1 = rhino.AddCurve(array(pta,ptb,ptc,ptd,pta),1)
            Call rhino.objectcolor(strquad1,rgb(255,255,255))'bianco
            arrct = array( (pt6(0)+pt3(0))/2,(pt6(1)+pt3(1))/2,(pt6(2)+pt3(2))/2)
            arrptsurf = rhino.SurfaceClosestPoint(strsurf,arrct)
            dbldist=rhino.Distance(arrct,attrpointcoord)
            dbldist = Rhino.Log10 (dbldist*7)
            If dbldist < dbldist ="">
            strcell = rhino.scaleobject(strcell,arrct,array(0.95/dbldist,0.95/dbldist,0.95/dbldist))
            arrnorm = rhino.SurfaceNormal(strsurf,arrptsurf)
            arrnorm = rhino.VectorScale(arrnorm, dblheight)
            arrnormend = rhino.PointAdd(arrct,arrnorm)
            arrline = rhino.AddLine(arrct,arrnormend)
            Call rhino.AddLoftSrf(array(strcell,strquad1))
            strquad2=rhino.copyObject(strquad1,arrct,arrnormend)
            strcentr=rhino.copyobject(strcell,arrct,arrnormend)
            Call rhino.addloftsrf(array(strquad2,strcentr))
            Call rhino.addloftsrf(array(strquad2,strquad1))
            Call rhino.addloftsrf(array(strcentr,strcell))

            midp1 = array((ptd(0)+ptc(0))/2,(ptd(1)+ptc(1))/2,(ptd(2)+ptc(2))/2)
            midp2 = array((pta(0)+ptb(0))/2,(pta(1)+ptb(1))/2,(pta(2)+ptb(2))/2)
            ptmid= array((arrct(0)+arrnormend(0))/2,(arrct(1)+arrnormend(1))/2,(arrct(2)+arrnormend(2))/2)
            midpoint1=rhino.addpoint(midp1)
            midpoint2=rhino.AddPoint(midp2)
            Call rhino.MoveObjects(array(midpoint1,midpoint2),arrct,ptmid)
            midp1=rhino.PointCoordinates(midpoint1)
            midp2=rhino.PointCoordinates(midpoint2)
            midline = rhino.AddLine(midp1,midp2)
            arrdom=rhino.CurveDomain(midline)
            midplane=rhino.CurvePerpFrame(midline,arrdom(0))
            midcircle1=rhino.AddCircle(midplane,dblheight/6)
            midplane=rhino.CurvePerpFrame(midline,arrdom(1))
            midcircle2=rhino.AddCircle(midplane,dblheight/6)
            Call rhino.AddLoftSrf (Array(midcircle1,midcircle2))
            Call rhino.DeleteObjects (array(arrline,strquad1,strcentr,strquad2,strcell,midpoint1,midpoint2,midline,midcircle1,midcircle2))
            Next
            Next
            For i = 2.5 To upar-2 Step 3
            For J=2 To vpar-2 Step 4
            pt1 = matrix(i,j)
            pt2 = matrix(i+1,j)
            pt3 = matrix(i+2,j+1)
            pt4 = matrix(i+1,j+2)
            pt5 = matrix(i,j+2)
            pt6 = matrix(i-1,j+1)
            pta = matrix(i-1,j)
            ptb = matrix(i+2,j)
            ptc = matrix(i+2,j+2)
            ptd = matrix(i-1,j+2)
            strcell = rhino.AddCurve(array(pt6,pt1,pt2,pt3,pt4,pt5,pt6),2)
            strquad1 = rhino.AddCurve(array(pta,ptb,ptc,ptd,pta),1)
            Call rhino.objectcolor(strquad1,rgb(255,255,255))'bianco
            arrct = array( (pt6(0)+pt3(0))/2,(pt6(1)+pt3(1))/2,(pt6(2)+pt3(2))/2)
            arrptsurf = rhino.SurfaceClosestPoint(strsurf,arrct)
            dbldist=rhino.Distance(arrct,attrpointcoord)
            dbldist = Rhino.Log10 (dbldist*7)
            If dbldist < dbldist ="">
            strcell = rhino.scaleobject(strcell,arrct,array(0.95/dbldist,0.95/dbldist,0.95/dbldist))
            arrnorm = rhino.SurfaceNormal(strsurf,arrptsurf)
            arrnorm = rhino.VectorScale(arrnorm, dblheight)
            arrnormend = rhino.PointAdd(arrct,arrnorm)
            arrline = rhino.AddLine(arrct,arrnormend)
            Call rhino.AddLoftSrf(array(strcell,strquad1))
            strquad2=rhino.copyObject(strquad1,arrct,arrnormend)
            strcentr=rhino.copyobject(strcell,arrct,arrnormend)
            Call rhino.addloftsrf(array(strquad2,strcentr))
            Call rhino.addloftsrf(array(strquad2,strquad1))
            Call rhino.addloftsrf(array(strcentr,strcell))
            midp1 = array((ptd(0)+ptc(0))/2,(ptd(1)+ptc(1))/2,(ptd(2)+ptc(2))/2)
            midp2 = array((pta(0)+ptb(0))/2,(pta(1)+ptb(1))/2,(pta(2)+ptb(2))/2)
            ptmid= array((arrct(0)+arrnormend(0))/2,(arrct(1)+arrnormend(1))/2,(arrct(2)+arrnormend(2))/2)
            midpoint1=rhino.addpoint(midp1)
            midpoint2=rhino.AddPoint(midp2)
            Call rhino.MoveObjects(array(midpoint1,midpoint2),arrct,ptmid)
            midp1=rhino.PointCoordinates(midpoint1)
            midp2=rhino.PointCoordinates(midpoint2)
            midline = rhino.AddLine(midp1,midp2)
            arrdom=rhino.CurveDomain(midline)
            midplane=rhino.CurvePerpFrame(midline,arrdom(0))
            midcircle1=rhino.AddCircle(midplane,dblheight/6)
            midplane=rhino.CurvePerpFrame(midline,arrdom(1))
            midcircle2=rhino.AddCircle(midplane,dblheight/6)
            Call rhino.AddLoftSrf (Array(midcircle1,midcircle2))
            Call rhino.DeleteObjects (array(arrline,strquad1,strcentr,strquad2,strcell,midpoint1,midpoint2,midline,midcircle1,midcircle2))
            Next
            Next
            Call rhino.DeleteObject(strsurf)
            Call rhino.EnableRedraw(True)
            End Sub
             
            โหลด slot live22 พุ ช 888 slot mafia123 casino1988 แจ้ง ฝาก pg slot apk download ฝาก 20 บาท รับ 100 วอ เลท เกม ยิง ปลา กระสุน ฟรี 300joker สล็อต 123 joker slot abc ค่าย pg เกม ไหน แตก ดี 77up sport เว็บ สล็อต ที่ ดี ที่สุด 2019 หมุน สล็อต pantip ตัว เกม 918kiss ยูสเซอร์ ทดลอง เล่น 918kiss โหลด ตัว เกม joker joker gaming ผ่าน เว็บ playlive88 joker สล็อต ออนไลน์ ใหม่ ผล บอล แม่น ยํา สมัคร ดั ม มี ออนไลน์ ได้ เงิน จริง slot joker แตก ง่าย ยูสเซอร์ ทดลอง เล่น live22 หมุน สล็อต ได้ เงิน จริง ไหม slotv9 pg เกม สล็อต สมัคร ฟรี แจก user ทดลอง เล่น ฟรี 2019 ทดลอง slotxo v9slot pg สล็อต โปร วัน เกิด โจ๊ก เกอร์ 168 ดาว โหลด เกม พุ ช ชี่ 888 nikigame 999 pg soft free play slot369 joker action joker slot next88 สมัคร ยิง ปลา แตก ง่าย pantip เข้า เล่น mafia88 สมัคร เล่น เกม ได้ เงิน xoth joker หมุน วง ล้อ 918kiss ยูสเซอร์ ทดลอง เล่น xo โปร 100 live22 slot nikigame mm88 fair ฝาก ขั้น ต่ำ 50 มาเฟีย 88 918kiss ios เล่น ไม่ ได้ สล็อต หาเงิน pantip สล็อต joker auto slot nova88 maxbet slot ท รู วอ ล เล็ ต slot168vip joker 123 joker สล็อต ถอน ผ่าน วอ เลท เกม ยิง ปลา สมัคร ฟรี joker gaming ทดลอง โหลด เกม ออนไลน์ สล็อต สล็อต โจ๊ก เกอร์ แตก ง่าย v9 slot joker slot joker roma slot เติม เงิน วอ เลท สล็อต ฝาก เงิน ท รู วอ ล เล็ ต เว็บ สล็อต โดยตรง fifa55 atm สมัค เกม ส ล๊ อ ต สล็อต 50 รับ 100 สล็อต ฝาก ผ่าน ท รู วอ ล เล็ ต ฟรี เครดิต สล็อต ออนไลน์ fifa55 official แจก เครดิต ทดลอง เล่น ฟรี 1000 ถอน ได้ สมัคร สล็อต ฝาก ถอน ไม่มี ขั้น ต่ํา โหลด 918kiss ไม่ ได้ สล็อต แจก เครดิต ฟรี 2019 เว็บ เล่น สล็อต gclub slot vip สล็อต เว็บ ไหน ดี โจ๊ก เกอร์ ออ โต้ 123 ทาง pgslot แจก user ทดลอง เล่น ฟรี 250 ทดลอง ยิง ปลา joker joker123 ฝาก เงิน หมุน วง ล้อ เครดิต ฟรี epicwin slot online สล็อต ท รู มัน นี่ สล็อต ฝาก ทาง วอ เลท เข้า เล่น mafia88 download pg slot star vegas แจก เครดิต ฟรี joker slot 1788 เกมส์ เงิน จริง สล็อต ที่ เติม วอ เลต joker ทาง เข้า เกม โจ๊ก เกอร์ gameufa98s 918kiss ios เล่น ไม่ ได้ โปร เค ดิ ต ฟรี แจก เค ดิ ต ฟรี 500 slot joker roma สล็อต โจ๊ก เกอร์ ฟรี เครดิต หน้า เว็บ โจ๊ก เกอร์ joker1888 net mobile ค่าย เกม สล็อต แตก ง่าย ufa356 com call center sweet bonanza ซื้อ ฟรี ส ปิ น เว็บ สล็อต ออนไลน์ ฟรี slot joker 999 demo roma slot เว็บ สล็อต ที่ ดี ที่สุด เว็บ เกมส์ สล็อต ออนไลน์ สร้าง โปรแกรม สูตร บา คา ร่า slot mafia888 สูตร บา คา ร่า dg grand slotxo ยิง ปลา ดาว โหลด เกม 918 สมัคร สล็อต ใหม่ joker th 99 slotxo 77 เกมส์ อะไร เล่น แล้ว ได้ เงิน จริง avenger slot ฟรี เครดิต joker123 thailand royal888 สมัคร joker123 ฝาก ถอน ออ โต้ ดาวน์โหลด เกมส์ สล็อต เข้า ระบบ joker แจก ฟรี สมาชิก ใหม่ 168 fortune slot free สล็อต demo slot pg soft mahjong สูตร บา คา ร่า ที่ ดี ที่สุด 2020 โปร ฝาก 200 www i99pro ทดลอง เล่น สล็อต ค่าย joker joker slot 1788 สล็อต รับ วอ เลต ป๊อก เด้ง ออนไลน์ แจก เครดิต ฟรี สล็อต แจก เครดิต ฟรี 2019 เกมส์ ยิง ปลา รีวิว ฝาก ไม่มี ขั้น ต่ํา สล็อต ออนไลน์ fun88 เกมส์ ยิง ปลา ส ตา ร์ เว กั ส แอ ป xo เกม สล็อต 981 หมุน ฟรี 15 ครั้ง highway kings คือ เกม สล็อต ฟรี โบนัส sbobet222 เติม เงิน เว็บ หลัก joker สมัคร ยิง ปลา ฟรี เครดิต เล่น สล็อต ฟรี ได้ เงิน จริง 2018 เกมส์ สล็อต 999 สล็อต apk โหลด เกมส์ สล็อต pc แอ พ เกม สล็อต xo joker28 game โปร แฮก สล็อต สล็อต ค่าย gtm การ สมัคร สล็อต ออนไลน์ แนะ นํา สล็อต แตก ง่าย fifa55 โกง ฝาก วอ เลท free credit slot 2019 betflix24 line ดาวน์โหลด และ ติด ตั้ง pgslot app 25club แจก ฟรี เครดิต สมัคร ปั่น สล็อต สมัคร สล็อต ฝาก ถอน ไม่มี ขั้น ต่ํา โหลด 8richd sbobetstep 5 สล็อต ออนไลน์ ฝาก 1 บาท รับ 100 kingkong pg slot roma เล่น ฟรี slotxo 69 สล็อต ที่ ดัง ที่สุด สูตร บา คา ร่า ที่ แม่น ที่สุด 2020 joker dragon slot slotxoz ไพ่ สล็อต เข้า ระบบ live22 slot pg ฝาก 10 ได้ 100 ร่วม เว็บ ค่าย jdbเกม ฟรี ได้ เงิน จริง โจ๊ก เกอร์ 123 net เกม สล็อต สวี ท โบ นั น ซ่า สล็อต ออนไลน์ เติม ท รู วอ เลท pussy888 ดาวน์โหลด ี ufa700 สล็อต ที่ แตก ง่าย ที่สุด 2020 สมัคร joker mvp joker123 thailand slotxo 888th เว็บ slot online joker โปร สล็อต ฝาก ถอน วอ ล เล็ ต สมัคร เล่น sbobet โหลด แอ พ สล็อต ออนไลน์ slot007 ทาง เข้า สล็อต เติม ไม่มี ขั้น ต่ํา โหลด เกมส์ สล็อต ได้ เงิน จริง pg slot ฝาก 1 รับ 100 สล็อต เครดิต ฟรี 200 ไม่ ต้อง แชร์ สล อ ต เค ร ดิ ส ฟรี สมัคร เล่น สล็อต เครดิต ฟรี epicwin 100 เข้า สู่ ระบบ joker8899 เว็บ เล่น เกม ได้ เงิน ufavip848 แจก เครดิต ฟรี slot mafia 789 สล็อต ฟรี 2020 ไลน์ sbobet777 pg allbet สล็อต แบบ เติม วอ เลต joker899 เข้า สู่ ระบบ mafia 1688 เครดิต ฟรี ทาง เข้า amb555fifa555hd สล็อต ที่ แจก เครดิต ฟรี joker123 game ikan เกม สล็อต พา รวยufabet678 77up sport fifa55 dash slot007 pc สมัคร เกม สล็อต joker เว็บ สล็อต ไม่มี ขั้น ต่ํา slot เว็บ ไหน ดี pantip แทง บอล ส เต็ ป วัน นี้ ยูสเซอร์ 918kiss slot sf168 แอ พ เกม ออนไลน์ ได้ เงิน จริง สล็อต online joker go slot สล็อต เม ก้า 888 เล่น สล็อต ผล ไม้ slotjoker เล่น หน้า เว็บ โหลด เกม ค่า สิ โน ออนไลน์ เครดิต ฟรี nxcasino slot รวม ทุก ค่าย slot1688 สมัคร เว็บ ตู้ สล็อต สูตร บา คา ร่า ที่ ใช้ได้ จริง สมัคร ขั้น ต่ำ 50 แทง บอล ส เต็ ป วัน นี้ ดาวน์โหลด live22 easy joker gaming 1888 สมัคร เกม ยิง ปลา joker สล็อต live22 เติม true wallet ไม่มี ขั้น ต่ํา โหลด เกมส์ สล็อต ฟรี สมัคร heng555 slot game 66 เพลง ฝาก sboibc888 เกม สล็อต ออนไลน์ ทดลอง เล่น ฟรี pg slot games สล็อต ได้ เงิน จริง pantip ts911 logo เว็บ เล่น เกม ได้ เงิน จริง สล็อต พุซซี่ เล่น สล็อต ผ่าน วอ เลท เกมส์ เล่น ได้ เงิน จริง 2019 joker เข้า ระบบ joker69 slot โหลด โจ๊ก เกอร์ 888 sas game 888 โหลด เกมส์ สล็อต 22 สมัคร betflix24 คา สิ โน เล่น เกม ได้ เงิน จริง ไม่ ต้อง ฝากเกม สล็อต ฟรี เครดิต โจ ก เกอร์ เกม joker168 slot slot35pg joker gaming เกม ฝาก ถอน ไม่มี ขั้น ต่ํา ทาง เข้า เว กั ส 168 pg slot 188 mafia 168 slot ดาว โหลด เกม pg magix99 joker joker gaming 777 slot999 เข้า สู่ ระบบสล็อต ลอง เล่น ฟรี slot ท รู วอ ล เล็ ต slotgame66 สูตร skyslot88 joker mafia77 slot สล็อต สวี ท โบ นั น ซ่า หมุน วง ล้อ ฟรี joker joker สล็อต ฟรี เครดิต 100 เข้า สู่ ระบบ joker88 สล็อต วอ เลท ไม่มี ขั้น ต่ํา โจ ก เกอร์ เกม ทาง เข้า โจ๊ก เกอร์ 1234 สล็อต ออนไลน์ วอ เลท ดาวน์โหลด โจ๊ก เกอร์ สล็อต เว็บ เล่น เกม ได้ เงิน จริง แจก user ทดลอง เล่น ฟรี 250 ufa147 แจก เครดิต ฟรี แจก เครดิต ฟรี ยืนยัน ตัว ตน live 22 slot สล็อต ฝาก 99 รับ 201 สมัคร สล็อต ออนไลน์ ฟรี เครดิต ไม่ ต้อง ฝาก แทง บอล ส เต็ ป วัน นี้ เกมส์ พนัน ออนไลน์ ได้ เงิน จริง ก่อน ฝาก สมัคร slot 1688 sbobet222 เติม เงิน ทาง เข้า copa69 ดาวน์โหลด เกม pussy roma slot ทดลอง 123 joker เข้า เล่น ufa191 ufabet1688 com agreement8 aspx เกม ยิง ปลา กระสุน ฟรี 300joker สล็อต 123 โหลด เกมส์ สล็อต 777 โจ๊ก เกอร์ ทาง เข้า เล่น เกม สล็อต 888 โปร สล็อต pg เว็บไซต์ โจ๊ก เกอร์ สล็อต สมัคร รับ ฟรี 100 ยืม เครดิต w88 เกม สล็อต apk สล็อต ufa100 โหลด 8richd 88 joker ได้ เงิน จริง ไหม sweet bonanza ทดลอง เล่น โปร วัน เกิด สล็อต slot เกมส์ 66 เว็บ ค่า สิ โน รวม สล็อต ทุก ค่าย เครดิต ฝาก 20 รับ 100 ยืม เครดิต w88 slot ไว กิ้ ง หมุน วง ล้อ joker เกมส์ ยิง ปลา รีวิว ฟรี เงิน เดิมพัน 2020 ทาง เข้า joker vip ไว กิ้ ง สล็อต joker slot roma demo joker899 เข้า สู่ ระบบ pg slot apk joker dc slot joker slot 8998 โจ้ ก เกอร์ ส ล้อ ต เกม supreme caishen สมัคร heng555 สมัคร mafia888 มาเฟีย 88 ดาวน์โหลด joker 10000 joker strike slot สล็อต ปั่น ฟรี 15 ครั้ง โจ๊ก เกอร์ 8888 joker slot im แจก ทุน เล่น ฟรี slot joker 1888 เข้า เล่น joker slot epicwin 77 สล็อต ตัว ไหน แตก ดี สูตร dg บา คา ร่า เว็บ ทดลอง เล่น สล็อต ฟรี เกม แคน ดี้ เครดิต ฟรี สล็อต 66 ฟรี เครดิต สล็อต เม ก้า 888 สล็อต ฝาก ท รู วอ เลท ไม่มี ขั้น ต่ํา สล็อต แจก เค ดิ ต ฟรี 4up slot pg ดาวน์โหลด สล็อต โจ๊ก เกอร์ 168 แจ้ง ถอน sbobetstep สมัคร ยิง ปลา รับ เครดิต ฟรี ufa168 ่ joker123th สล็อต ค่าย rt แตก ง่าย เกมส์ สล็อต โจ๊ก เกอร์ 99 เว็บ เล่น เกม ได้ ตัง 77up sport สมัคร เล่น เกม ได้ เงิน เกม สล็อต ฟรี เครดิต ไม่ ต้อง ฝาก ถอน ได้ จริง เล่น kiss918 สวี ท โบ นั น ซ่า ทดลอง เล่น ยูสเซอร์ ทดลอง เล่น mega888 เกม ไม่ ต้อง ลงทุน ได้ เงิน จริง ufascr v2 slotxo 24h สมัคร 3win8 fifa55a avenger slot ทดลอง fifa55 ดี ไหม ครับ 918 โหลด สูตร บา คา ร่า dg grand ราคา บอล ไหล แม่น ๆ pussy888 เกม สล็อต ต่าง ประเทศ หมุน สล็อต pantip โปร สล็อต pg ยู ส ทดลอง เล่น slotxo โหลด เกม ค่า สิ โน ออนไลน์ ทาง เข้า สล็อต 168 สมัคร joker slotxoth pg ป๊อก เด้ง ออนไลน์ มือ ถือ ได้ เงิน จริง การ เล่น เกม สล็อต โหลด เกม ตู้ สล็อต joker สมาชิก ใหม่ slot สบาย 99 slot online pg soft panda888 slot roma demo slot สล็อต m8 dota2 พนัน เล่น สล็อต ทุน น้อย 55 slotxo slot online ทดลอง เล่น ฟรี joker888 สมัคร โหลด เกมส์ สล็อต ฟรี เกม หาเงิน เครดิต ฟรี123 สล็อต สมัคร joker gaming fifa55 ดี ไหม ครับ สล็อต ฟรี 2020 โหลด เว็บ โจ๊ก เกอร์ สมัคร joker123net slot joker777 สล็อต ที่ แตก ง่าย 2020 ufa191 เข้า สู่ ระบบ สล็อต ใน เว็บ สล็อต ออนไลน์ ฟรี เครดิต ถอน ได้ สมัคร สมาชิก ใหม่ เครดิต ฟรี สล็อต ได้ เงิน จริง pantip สล็อต เติม ผ่าน วอ เล็ ต slot88 joker sweet bonanza ทดลอง เล่น สล็อต โอน ผ่าน วอ ล เล็ ต สล็อต เติม ผ่าน วอ เล็ ต slot avenger โปร ฝาก 1 บาท รับ 100 slot เติม เงิน วอ เลท เกม สวี ท โบ นั น ซ่า อยู่ ค่าย ไหน โหลด เกม ค่า สิ โน ออนไลน์ สมัคร joker mvp slot เติม เงิน วอ เลท kiss scr888 a3ccc gclub1688 โหลด เกม ace333 สบาย ดี 99 สล็อต slot เติม เงิน วอ เลท เกม ยิง ปลา pantipสล็อต ค่าย jiliเว็บ 168 happyslot88 pg slot ฝาก 100 ได้ 200 ฟรี เค ดิ ต ไม่ ต้อง ฝาก สล็อต ปั่น ฟรี 15 ครั้ง joker123 ระบบ อัต โน 10 รับ 100xo 4up slot pg สล็อต ฝาก ผ่าน วอ เลท ไม่มี ขั้น ต่ํา best slot joker สมัคร สล็อต ผล ไม้ 123xbet พุ ช 888 โหลด joker ล่าสุด เกม สล็อต แตก บ่อย โจ๊ก เกอร์ เกมส์ 999 slot1234 pg สมัคร สล็อต w88 สล็อต ที่ ดัง ที่สุด slot ฝาก 100 ได้ 200 ราคา บอล ไหล แม่น ๆ สล็อต ออนไลน์ 222 สล็อต ออนไลน์ w88 slot ออนไลน์ epic journey สมัคร sweet bonanza สล็อต ที่ ดี ที่สุด ตอน นี้ avenger slot สมัคร 77up sport pg slot th sweet bonanza อยู่ ค่าย ไหน เกม สล็อต ยิง ปลา ได้ เงิน จริง เล่น สวี ท โบ นั น ซ่า slot ได้ เงิน ง่าย joker slot funny สล็อต เติม ขั้น ต่ำ 1 บาท สล็อต ค่าย sa โหลด เกม เล่น ได้ เงิน จริง สล็อต ออนไลน์ ผ่าน วอ เลท sweet bonanza สมัคร เล่น สล็อต ไม่มี ขั้น ต่ํา hmvip159 slot สมัคร epic slot ทาง เข้า เล่น joker เว็บ ตู้ สล็อต joker เว็บ ไหน ดี โหลด เว็บ สล็อต slotxo69 th โหลด 918kiss ลง คอม การ เล่น ตู้ สล็อต สล็อต online sagame168 th ป๊อก เด้ง 888 เล่น เกม winner55 เล่น สล็อต ให้ ได้ เงิน แสน kingkong pg slot copa89 ดี ไหม nx casino แจก เครดิต ฟรี 500 pg ฝาก 1 รับ 100 แจก เครดิต ทดลอง เล่น ฟรี 1000 ถอน ได้ สมัคร joker888 net ทาง เข้า sbobetstep สล็อต รับ 100 joker899 เข้า สู่ ระบบ highway kings คือ sweet bonanza ทดลอง เล่น สล็อต ลาว เกม ผล ไม้ ได้ เงิน จริง รวม สล็อต ทุก ค่าย ใน เว็บ เดียว แจก เครดิต ฟรี ทุก วัน avenger slot ฟรี เครดิต 2020 โหลด เกม joker123 sboonline24 dafabet สล็อต แตก ง่าย โหลด fhm99 เกมส์ ค่าย pg joker gaming 1888 โหลด เกมส์ คา สิ โน วิธี เล่น สล็อต roma สล็อต ฝาก ทาง วอ เลท เกม ยิง ปลา pantipสล็อต ค่าย jiliเว็บ 168 ไว กิ้ ง slot สล็อต รวม ค่าย เกมส์ สล็อต ออนไลน์ ฟรี เว็บ สล็อต เติม เงิน ผ่าน wallet สล็อต หมุน ฟรี ไม่ ต้อง ฝาก ทดลอง เล่น ยิง ปลา joker รวม เกมส์ ได้ เงิน จริง sboonline24 ufa147 แจก เครดิต ฟรี epicwin สมัคร 168 superslot แอ พ เกม ออนไลน์ ได้ เงิน จริง โหลด เกม พุซซี่ 888 joker mvp slot โหลด เกม ค่า สิ โน ออนไลน์ เกม เม ก้า 888 หมุน สล็อต ทุน น้อย ขั้น ตอน การ สมัคร เล่น เกม ดั ม มี่ ได้ เงิน จริง สูตร บา คา ร่า sa app slot ฝาก 100 ได้ 200 slot แมว ปั่น สล็อต ให้ แตก ปั่น สล็อต w88 slot ufabet 20 รับ 100 live22 บา คา ร่า joker การ เล่น สล็อต เล่น เกม สล็อต เครดิต ฟรี joker gaming bettopfive ฟรี เงิน เดิมพัน 2020 ทาง เข้า joker ผ่าน เว็บ สล็อต เว็บ ไหน ดี แตก ง่าย 2020 roma เล่น ฟรี เครดิต ฟรี nxcasino เล่น สวี ท โบ นั น ซ่า เกม ยิง ปลา กระสุน ฟรี 300joker สล็อต 123 สูตร บา คา ร่า เข้า ได้ ทุก เว็บ สล็อต สมัคร ด้วย วอ เลท สล็อต แจก โบนัส joker slot 9988 เกม เล่น ได้ เงิน จริง ไม่ ต้อง ลงทุน เล่น สล็อต เกมส์ ไหน ดี ทาง เข้า สล็อต โจ๊ก เกอร์ ยู ส ทดลอง joker เล่น สล็อต บน เว็บ scr 918kiss online joker 123 th download เกม สล็อต วอ ล เลท สล็อต เล่น ผ่าน วอ เลท ivip9 สมัคร pg soft mahjong 2 เกม ทดลอง สล็อต สล็อต ออนไลน์ เติม ท รู วอ เลท ฝาก 20 รับ 100 ท รู วอ เลท slot mafia game โหลด แอ พ สล็อต รับ เครดิต ฟรี slot ฝาก ทาง วอ เลท 123xbet v2 live 22 slot slot joker 6886 สมัคร สล็อต w88 ทาง เข้า joker หน้า เว็บ สล็อต โจ๊ก เกอร์ เติม true wallet ไม่มี ขั้น ต่ํา เกม สล็อต ufabet เว็บ สล็อต วอ เลท ปั่น สล็อต w88 ทดลอง เล่น slotxo slot mafia ทั้งหมด สมัคร เล่น เกม ได้ เงิน จริง ทาง เข้า joker game hungrypurry888 เกม สล็อต sa เติม เกม joker ป๊อก เด้ง ออนไลน์ แจก เครดิต ฟรี roma demo slot pg slot 999 เกม สล็อต โบนัส ฟรี เว็บ slotgame66 สล็อต best88 ดาว โหลด พุซซี่ slot เกม ฟรี วิธี เล่น sweet bonanza เครดิต แจก ฟรี 2020 joker ท รู วอ ล เลท เกมส์ ไพ่ ดั ม มี่ เงินสด web joker slot 9889 download android 88 joker ได้ เงิน จริง ไหม pg slot โบนัส joker slot ใหม่ ล่าสุด สล็อต หมุน วง ล้อ ฟรี แล้ว ได้ เงิน gucci slot joker slot joker ทาง เข้า เข้า เกม สล็อต ไม่ ได้ สมัคร xe88 slot candy สล็อต ทาง เข้า สล็อต 168 slot ฝาก ผ่าน ท รู วอ ล เล็ ต โปร ฟรี สล็อต สล็อต ออนไลน์ ได้ เงิน จริง pantip สล็อต รวม ค่าย betflix24 สมัคร สมาชิก เกม โจ๊ก เกอร์ แตก ง่าย joker888 auto avenger slot ฟรี เครดิต 2020 โหลด เกมส์ สล็อต 89 เล่น slot ออนไลน์ เข้า สู่ ระบบ joker8899 slot เค ดิ ต ฟรี ไม่ ต้อง ฝาก สมัคร เอ เย่ น joker sagame168 th pokdeng ฟรี เครดิต joker888 ฝาก วอ เลท เกมส์ สล็อต 999 sweet bonanza เทคนิค ufa scr v3 joker โปร 50 โหลด เกม mega888 slotxoth live22 เกม สวี ท โบ นั น ซ่า อยู่ ค่าย ไหน ไพ่ป๊อก เด้ง เงิน จริง ยิง ปลา ยิ่ง มี รา วา ส โจ๊ก เกอร์ เกมส์ 888 เกม ออนไลน์ ฝาก ไม่มี ขั้น ต่ํา สล็อต ออนไลน์ w88 ดาว โหลด เกม 918 โปร โม ชั่ น ฝาก 10 รับ 100 เล่น สล็อต ฟรี ได้ เงิน จริง 2018 pg slot th โหลด เกมส์ คา สิ โน pg ฝาก 10 รับ 100 ล่าสุด สล็อต เติม true wallet ฝาก 10 รับ 100 สล็อต ค่าย playstar เกม สล็อต พา รวยufabet678 slot ท รู วอ เลท เกม สล็อต ไว กิ้ ง slot supreme caishen วิธี เล่น sbobet ให้ รวย เกม สล็อต ที่ แตก ดี ที่สุด สูตร บา คา ร่า sa app 333be slot ดาวน์โหลด โจ๊ก เกอร์ 168 kiss918 โหลด pg สล็อต เครดิต ฟรี สมัคร vegus69 fun888 สล็อต เกม ฟรี เล่น ได้ เงิน เว็บ พุซซี่ 888 สล็อต สมัคร รับ ฟรี 100 การ เล่น สล็อต โร มา เว็บ สล็อต 999 918kiss ios เล่น ไม่ ได้ เกม แมว สล็อต royal gclubth เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน 2020 สล็อต โอน ผ่าน true wallet โปร epicwin สล็อต เติม true wallet ไม่มี ขั้น ต่ำ 2020 สล็อต รับ 100 ี ufa168bet casino1988 แจ้ง ฝาก pg slot ฝาก ผ่าน วอ เลท สล็อต เว็บ ไหน ดี 2020 แจก โค้ด 333be ล่าสุด pg slot วอ เลท สล็อต หมุน วง ล้อ ฟรี แล้ว ได้ เงิน เว็บ เล่น เกม ได้ เงิน เล่น เกมส์ ได้ เงิน จริง 2020 123vip สมัคร ทาง เข้า ufa191 เติม เงิน โจ๊ก เกอร์ pg หน้า เว็บ โค้ด เครดิต ฟรี 333be spin999 com สมัคร ให้ ทีเด็ด บอล เต็ง บอล ต่ํา สูง ทาง เข้า joker gaming ส โบ เบ็ ต 999 ทาง เข้า mafia1688 สล็อต ออนไลน์ ยิง ปลา slotxo 69 pg สล็อต 1234 สล็อต แบบ เติม วอ เลต สล็อต ฝาก ทาง วอ เลท joker slot 1788 sagame168 th สล็อต ออนไลน์ ฝาก ขั้น ต่ำ 50 scr 918kiss online คิง สล็อต slotxo 55 joker8899 ระบบ สมาชิก ฟุต ซี่ 888 slot xovip กม สล็อต ทาง เล่น joker ป๊อก เด้ง ออนไลน์ มือ ถือ ได้ เงิน จริง slot5g pg เกม ยิง ปลา เว็บ ไหน ดี สุดKeyword slot jack88 สล็อต ที่ มี คน เล่น มาก ที่สุด joker slot4u สล็อต โจ๊ก เกอร์ เครดิต ฟรี fifa55 official joker123 ฝาก ถอน ออ โต้ เกม สล็อต supreme caishen app slot ได้ เงิน จริง dafabet สล็อต แตก ง่าย สล็อต ตัว ใหม่ ดาว โหลด เว็บ โจ๊ก เกอร์ สมัคร joker gaming เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน mm88 fair เข้า เกม สล็อต ไม่ ได้ สล็อต ค่าย red tiger pg game soft สล็อต ออนไลน์ ยิง ปลา slot joker xoth เกม สล็อต แลก เงิน จริง ป๊อก เด้ง ออนไลน์ ได้ เงิน จริง dummy เงิน จริง joker โปร วัน เกิด joker123th เล่น ผ่าน หน้า เว็บ slot joker ทดลอง เล่น ฟรี สูตร บา คา ร่า ออนไลน์ บริการ จาก gclubmember แจก เครดิต ฟรี ให้ ยืนยัน ตัว ตน ดาว โหลด เกม พุ ช ชี่ ลิ้ ง สล็อต โจ๊ก เกอร์ หมุน วง ล้อ สล็อต joker123 โหลด ufavip848 แจก เครดิต ฟรี สล็อต joker88 สล็อต เกมส์ pg slot ฝาก 50 รับ 100 เกม ที่ เล่น แล้ว ได้ เงิน จริง ไม่ ต้อง ลงทุน 2020 เว็บ โจ๊ก เกอร์ 89 slot joker free สล็อต kd pg slot logo www gtr168bet pussy888 เกมส์ สล็อต ออนไลน์ nova88 maxbet สูตร บา คา ร่า dg grand สล็อต ฟรี เกม 55 slotxo slotxoth live22 joker เล่น บน เว็บ pussy888 เกมส์ สล็อต ออนไลน์ joker เข้า ระบบ เล่น kiss918 fifa55 โกง สล็อต สมัคร 100 สล็อต 918 เครดิต ฟรี สล็อต ออนไลน์ 77 ถอนเงิน fifa555 ไม่ ได้ เว็บไซต์ โจ๊ก เกอร์joker สล็อต 888 เครดิต ฝาก ครั้ง แรก โปร ฝาก 100 ฟรี 100 pg ฝาก 1 รับ 100 สวี ท โบ นั น ซ่า อยู่ ค่าย ไหน ufa lion 168 สูตร สล็อต แมชชีน คือ sweet bonanza เทคนิค joker69 slot แจก user ทดลอง เล่น ฟรี เว็บ สล็อต โอน ผ่าน วอ เลท ไม่มี ขั้น ต่ํา โหลด เกมส์ สล็อต ได้ เงิน จริง สล็อต epic win joker 10000 ไพ่ป๊อก เด้ง ได้ เงิน จริง เข้า joker เว็บ สล็อต ที่ แตก ง่าย โหลด เกม โจ๊ก เกอร์ เกมส์ สล็อต ค่าย pt roma demo slot slotxo ทดลอง เล่น ฟรี game slot letou สล็อต มือ ถือ ได้ เงิน จริง slotxo ทดลอง สล็อต ฝาก ท รู วอ ล เล็ ต สล็อต apk dragon slotxo ทดลอง เล่น สล็อต joker ทุก เกม slot ไว กิ้ ง ปั่น สล็อต แตก สวี ท โบ นั ท ซ่า slot246 pg สูตร บา คา ร่า เข้า ได้ ทุก เว็บ โหลด เกม dreamtech สมัคร เกม สล็อต ฟรี สมัคร joker888 net เว็บ สล็อต mafia helloslotjoker joker 10000 joker slot im 168slotxo pg เกมส์ ยิง ปลา โจ๊ก เกอร์ สล็อต แจก โบนัส สมัคร สล็อต ไม่มี ขั้น ต่ำ slotxo369 joker joker สมาชิก ใหม่ hmvip159 slot mafia123 เล่น ผ่าน เว็บ pg slot pg ฝาก 10 รับ 100 เกมส์ slot casino สล็อต ฝาก 99 รับ 201 slot joker8899 ฝาก 200 รับ 400 xo slot joker688 joker ฟรี ส ปิ น ฟรี เครดิต สล็อต ออนไลน์ ts911 goal joker vip 99 เกม แคน ดี้ เครดิต ฟรี slot007 ทาง เข้า supreme caishen slot joker slot 1234 โหลด เกม mega888 ยู ส ทดลอง เล่น joker โบนัส joker เกมส์ slot machine ฟรี เกม แคน ดี้ ไม่มี ขั้น ต่ำ โหลด เกม pussy88 ts911 goal เกม คา สิ โน 88 fifa55 pantip แจก เงิน เดิมพัน ฟรี เกมส์ เล่น ได้ เงิน จริงๆ สูตร บา คา ร่า sa app สล็อต เติม วอ ล เล็ ท สล็อต ออนไลน์ ฝาก ขั้น ต่ํา 50 สล็อต โอน วอ ล เลท การ ปั่น สล็อต เว็บ สล็อต ฝาก ท รู วอ ล เล็ ต joker168 slot โหลด เกมส์ สล็อต โจ๊ก เกอร์ ราคา บอล ส เต็ ป 99 slot แมว วิเคราะห์ เตะ มุม บอล วัน นี้ free สล็อต slotv9 pg สล็อต โจ๊ก เกอร์ xd เล่น เกม ฟรี เครดิต ดู บอล สด copa69 epicwin สมัคร รวม เกม สล็อต ทุก ค่าย โหลด เกม พุซซี่ 888 เกม สล็อต sa โจ๊ก เกอร์ 6666 mafia 168 slot game slot789 ฝาก 10 รับ 100 สล็อต รู เล็ ต สมัคร สล็อต วอ เลท สมัคร เว็บ slot mafia1688 เครดิต ฟรี slot007 download เกม xo ออนไลน์ mafia88 ทดลอง เล่น สล็อต สาย ฟรี หมุน slot แจก เครดิต ฟรี ทุก วัน ซื้อ ฟรี ส ปิ น ค่าย pg joker xoth เกม ยิง ไข่ ได้ เงิน จริง ฝาก 9 บาท รับ 100 live22 ฝาก ผ่าน ท รู วอ ล เล็ ต โปร สล็อต สมาชิก ใหม่ pg soft slot pg slot ฝาก วอ เลท pg slot ฝาก 10 เล่น ไพ่ป๊อก เด้ง ออนไลน์ ได้ เงิน จริง ทดลอง sweet bonanza โหลด เกมส์ สล็อต scr888 สล็อต ฟรี เงิน pg slot 456 สล็อต พุซซี่ สล็อต ฝาก วอ เลท ได้ mafia 88 slot สล็อต โอน วอ ล เลท แจก ทุน เล่น ฟรี สล็อต ฝาก วอ เลต ไม่มี ขั้น ต่ํา โหลด เกม สล็อต 007 ufa191 ฝาก ถอน ได้ เอง เล่น เกม ฟรี ได้ เงิน จริง 2020 ยูสเซอร์ ทดลอง เล่น king168 สล็อต ออนไลน์ เติม ท รู วอ เลท สมัคร สมาชิก โจ๊ก เกอร์ 123 joker slot pc แจก เครดิต ฟรี ทุก วัน pg slot ฝาก 100 โหลด แอ พ จี คลับ สล็อต ที่ คน เล่น เยอะ ที่สุด เว็บ เกม 888 สล็อต แตก ดี ที่สุด ดาวน์โหลด เกมส์ pussy888 สล็อต ที่ เติม วอ เลต ได้ เกม slot999 เล่น เกม ได้ เงิน จริง 2018 mafia slot เล่น ผ่าน เว็บ ufa 600 แจก ทุน ฟรี ไม่ ต้อง ฝาก winner88 club สล็อต ไม่มี ขั้น ต่ํา ฟรี โบนัส เล่น เกม ได้ เงิน ไม่ ต้อง ลงทุน pokdeng ฟรี เครดิต เครดิต ฟรี nxcasino ทาง เข้า เล่น โจ๊ก เกอร์ 123 ทาง เข้า joker69 สล็อต 888 แตก ง่าย ทาง เข้า joker88 เกม slot999 สล็อต ฝาก ผ่าน airpay joker slot หน้า เว็บ all slot168 สล็อต ออนไลน์ ทดลอง เล่น ฟรี ดาว โหลด เกม pussy888 slot mafia123 โจ๊ก เกอร์ 123 ทาง เข้า สมัคร slot เครดิต ฟรี slot mafia 2020 สล็อต bet2you ติดต่อ slot007 you slot 168 slot เครดิต โจ๊ก เกอร์ 1668 epicwin bet สล็อต ฝาก ผ่าน airpay โหลด pgslot99 ดาว โหลด live22 pg slot games ทาง เข้า s joker สล็อต ออนไลน์ วอ เลท slot รวม ค่าย โหลด แอ พ จี คลับ ให้ ทุน เล่น สล็อต พุ ช ชี 888 เกม สล็อต แปะ แมว เกม สล็อต ฝาก 10 รับ 100 โจ๊ก เกอร์ 388 โปร โม ชั่ น เครดิต ฟรี แอ พ สล็อต xo โจ๊ก เกอร์ 666 พุซซี่ 888 ดาวน์โหลด สมัคร marwin slot สล็อต ขั้น ต่ํา สมัคร เกม สล็อต รับ เครดิต ฟรี สมัคร slot online th เดิมพัน ฟรี ไม่ ต้อง ฝาก 2019 สูตร บา คา ร่า sa game 1688 วิเคราะห์ เตะ มุม บอล วัน นี้ สมัคร เล่น ไพ่ ดั ม มี่ ออนไลน์ ได้ เงิน จริง slotxo เข้า ระบบ แทง บอล ส เต็ ป วัน นี้ กงล้อ ปั่น ฟรี 24 ชม เกม สล็อต ออนไลน์ ที่ ดี ที่สุด เกม แคน ดี้ ไม่มี ขั้น ต่ำ แจก ฟรี สล็อต ทาง เข้า ufa slot เกม ฟรี โบนัส slot9889 สล็อต เล่น ง่าย แตก ไว เว็บ สล็อต ใหม่ ๆ ดาว โหลด live22 เล่น สล็อต ผ่าน วอ เลท สล็อต บัญชี วอ เลต เว็บ สล็อต ที่ แตก ง่าย ที่สุด เกมส์ สล็อต ได้ ตังค์ สมัคร ยิง ปลา ฟรี เครดิต avenger slot ฟรี เครดิต ts911 ทดลอง สล็อต ฝาก เงิน ผ่าน ท รู วอ เลท avenger 777slot ทดลอง เล่น สล็อต joker ฟรี สมัคร เกม ได้ เงิน mafia77 slot การ เล่น สล็อต โร มา slot 918kiss สมัคร joker ฝาก 10 รับ 100 วอ เลท เกม ไพ่ ออนไลน์ เงิน จริง สล็อต ไว กิ้ ง เข้า ระบบ live22 mm88win v8 ระบบ สมาชิก joker สล็อต ต่าง ประเทศ สล็อต บัญชี วอ เลต แจก เครดิต ฟรี ยืนยัน ตัว ตน เว็บ ที่ มี สล็อต ทุก ค่าย
            เล่น หมากรุก ไทย ออนไลน์| สมาชิก ใหม่ ฟรี เครดิต ไม่ ต้อง ฝาก| ubet89| กีฬา บอล| รวม เว็บ คา สิ โน ออนไลน์| เกม มา ย ครา ฟ ยิ่ง ปื่ น| gclub1111| ทดลอง เล่น คา สิ โน ออนไลน์ ฟรี| เกม แม็คโคร| เว็บ คา สิ โน สล็อต| sa1688 บา คา ร่า| เกม ยิง ปื่ น| สมัคร พนัน ออนไลน์ ฟรี| เกม เล่น กับ เพื่อน ใน โทรศัพท์| เกม กระโดด| ได้ ส ปิ น ฟรี| สมัคร บา คา ร่า 100 บาท| gravity game tech| บา คา ร่า ฟรี ไม่ ต้อง ฝาก ก่อน| ufabet88 บา คา ร่า| คา สิ โน ออนไลน์ ที่ น่า เชื่อถือ| เกมส์ ซอมบี้| อ่าน ข่าว กีฬา แมน ยู| เกม ออนไลน์ สล็อต| เกม sakura school simulator| เกม among us| rainbow six siege ราคา| เล่น หมากรุก| บา คา ร่า wallet| ฟุตบอล วัน นี้ 7m| worldbet888| เว็บ ข่าว กีฬา| ข่าว ฟุตบอล ต่าง ประเทศ thsport| qooapp โหลด| แอ พ บา คา ร่า ได้ เงิน จริง| ข่าว กีฬา สั้น| รับ เล่น บา คา ร่า| สมัคร เกม ออนไลน์| วิธี การ เล่น คา สิ โน ออนไลน์| บา คา ร่า gclub888| โบนัส 300| สมัคร คา สิ โน เครดิต ฟรี| 365 บา คา ร่า| เกม คา สิ โน ที่ ได้ เงิน จริง| คา สิ โน ฟรี เครดิต ไม่ ต้อง ฝาก ถอน ได้| เดลิ นิ ว ส์ กีฬา| พนัน ออนไลน์ ฟรี| คา สิ โน ไม่ ต้อง ฝาก| topplay989| บา คา ร่า ออนไลน์ คือ| ข่าว กีฬา ออนไลน์| เกม บวก เลข| yuri revenge โหลด| เล่น เกม ใน google| สมัคร บา คา ร่า เครดิต ฟรี| ฟุตบอล ออนไลน์ เจ ลีก| เกม ฟรี ไม่ ใช้ เน็ต| แบดมินตัน สด| บา คา ร่า m88| 888truthbet| ข่าว กีฬา sanook| เกม หนอน ใน คอม| | ข่าว ลิเวอร์พูล สยาม กีฬา| กีฬา เปตอง| เกม ที่ เล่น กับ เพื่อน|