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
                 
                ลิ้ ง fun88 วิธี กด ส ปิ น coin master โบนัสฝากเงินครั้งแรก 108% สูงสุด 5,000 บาท โป ก เกอร์ ลํา ดับ ไพ่ แจก ทุน เล่น สล็อต ฟรี เว็บ บา คา ร่า ปอย เปต kiss777th qq888 casino poker online เกม สมัคร รับ เครดิต ฟรี 2020 ราคา บอล sbobet วัน นี้ บิงโก ซื้อ ที่ไหน สูตร เพิ่ม ส ปิ น coin master HAPPYLUKE pussy888 android live22fb สล็อต ที่ แตก บ่อย naomi casino จี คลับ คา สิ โน angel slot gtr gclub สมัคร สมาชิก 918kiss jetsada 888 thaifun88 empire777 รีวิว md123 918kiss slotpg99 gclub tv sbobet bet slot club slot magic casino เว ป lsm99 jetsadabet 999 ฟรี ส ปิ น coin master ไม่ จํา กัด sbobetauto gclub god รับ เพิ่ม ส ปิ น coin master sbobet slots แทง หวย jetsada สมัคร fan88fun888 ฟรี 300 casino online ต่าง ประเทศ แอ พ เล่น poker sbobet cz ลิ้ ง dafabet ทาง เข้า fun555 สปินฟรี coin master pantip ฟรี ส ปิ น ฟรี ts911 สมัคร รับ เครดิต ฟรีเครดิต ฟรี ไม่ ต้อง แชร์ 918 ทาง เข้า เว ป lsm ufa casino 55 web jetsada จี คลับ 97 สมัคร fun88 ส โบ เบ็ ต 777 gclub111 ล็ อ ต โต้ วี ไอ พี เข้า ระบบ ism99 lsm99 โปร โม ชั่ น 588ws สมัคร ism99 สมัคร สมาชิก ฟรี ส ปิ น 50 coin master royal slot game เข้า gclub ไม่ ได้ สมัคร pay69 ทาง เข้า fun555 เครดิต ฟรี 150 2020918kiss ฟรี เครดิต 1000 บาท สมัคร สมาชิก 918kiss โบนัส 100 สล็อต เครดิต ฟรี เทิ ร์ น 1 เท่า จี คลับ 5555 วิธี แลก ส ปิ น coin master ขอ ส ปิ น ฟรี coin master sbobet7777 dafabet ลิ้ ง สํา รอง casino pullman coin master หา ส ปิ น ฟรี ดาวน์โหลด mega888 ล่าสุด โปร ฟรี ส ปิ น coin master happyluke แจก 300 สล็อต เครดิต ฟรี เทิ ร์ น 1 เท่า jetsadabet รีวิว เค ดิ ต ฟรี 2020 ล่าสุด สมัคร เว็บ ปอย เปต sbobetasia online norsk online casino เว็บ บา คา ร่า จี คลับ เสีย บา คา ร่า 4000 playigo casino fun88 พัน ทิป wwwbeer789 ฟรีสปิน15ครั้ง jetsadabet ฝ 918kiss download ios 2019 918kiss เล่น ใน คอม บิงโก งาน วัด casino dk online แอ พ ส ปิ น ฟรี ทาง เข้า จี ทาง เข้า agent sbobet ล่าสุด scr888 ฟรี เครดิต 88 รับ 300 วิธี เล่น แบ ล็ ค แจ็ ค line dafabet 918kiss ฝาก 10 รับ 100 ล่าสุด ทาง เข้า sbobet77 ทีเด็ด ส โบ เบ็ ต ฟรีสปิน15ครั้ง lsm99 new สมัคร mega888 เกม bingo casino dices sbo555 เข้า ไม่ ได้ สล็อต ฟรี เครดิต 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ วิธี เก็บ ส ปิ น coin master thaifun88 สล็อต ออนไลน์ แจก ฟรี เครดิต maxgoal casino gclub cash sbo888 ทาง เข้า เจษฎา หวย ออนไลน์ วิธี โหลด 918kiss ios เจษฎา หวย ออนไลน์ mgm678 casino โหลด xe88 sbobet สมัคร ใหม่ w88 mobile casino เล่น ไฮโล ให้ ได้ เงิน pantip dafabet line casino all slot 918kiss33 ดาวน์โหลด ทาง เข้า sbo168 happyluke casino sa game 350 k9win สล็อต mafia55 สมัคร สล็อต ฟรี เครดิต ไม่ ต้อง ฝาก 2020 ทาง sbobet สล็อต เครดิต ฟรี ไม่มี เงื่อนไข สล็อต เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ คา สิ โน ออนไลน์ ฟรี เครดิต 2020 รับ ฟรี ส ปิ น coin master sbo888 ทาง เข้า sbo tiki fruits sbobet97 ส โบ เบ็ ต 777 ทาง เข้า gclub88888 gclubs k9win สล็อต g2g9 casino แจก ส ปิ น ฟรี coin grandxo99 dsd canlı bahis canlı tombala canlı casino sbobet777 ทาง เข้า 333 sbobet เข้า ฟัน 88 jetsadabet pantip รีวิว ซื้อ หวย เจษฎา jetsadabet 357 เกม พนัน ไฮโล สมัคร สล็อต ฟรี เครดิต ไม่ ต้อง ฝาก 365 slot yoyo casino 43 dragon club casino jetsadabet 999 ทีเด็ดบอล ลำดับ ไพ่ โป ก เกอร์ เกม ออนไลน์ v2 beat casino รอยัล คา สิ โน ออนไลน์ casino 100 fun88 affiliate 7kasino หวย ยี่ กี เจษฎา เข้า sbo มือ ถือ โค้ด ส ปิ น coin master ล่าสุด ทาง เข้า sbobet168 เแ สีิ โปรโมชั่นฝากเงินครั้งแรก รับโบนัส 100% k9win ทดลอง สล็อต แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ สล็อต เติม เงิน ผ่าน มือ ถือ rulett online สล็อต lsm99 แอ พ ส ปิ น ฟรี สูตร coin master ฟรี แจก เครดิต ฟรี 500 ไม่ ต้อง ฝาก 2563 sboibc มือ ถือ goldenslot games slot online casino online m168 casino live22 ฟรี เครดิต ไม่ ต้อง ฝาก 2019 sv casino k9win ทดลอง reloadbet casino ล็ อ ต โต้ 1999 เกม 981kiss fun888 มือ ถือ แจกโบนัสฟรี hercules slot แจก ส ปิ น coin master ฟรี galaxy casino online สมาชิก ใหม่ ฝาก 1 บาท รับ 100 happyluke line ปอย เปต 99 เก น ส ล็ อด การ เล่น ไพ่ โป๊กเกอร์ ราคา ไหล sbobet ปอย เปต รีสอร์ท สล็อต เติม เงิน ผ่าน มือ ถือ happyluke คา สิ โน ts888 casino สูตร coin master ลิงค์ รับ ส ปิ น ฟรี coin master ล่าสุด 888 ล็ อ ต โต้ ทาง เข้า บา คา ร่า gclub ไฮโล น้ำเต้า ปู ปลา ออนไลน์ โป็ ก เกอร์ ลิ้ ง แจก ส ปิ น เกม coin master k9win สมัคร สมาชิก ส โป เบส ทาง เขา sbobet ฝาก 100 ฟรี 100 ถอน ไม่ จํา กัดฟรี เครดิต 100 ไม่ ต้อง ฝาก 2020 100 casino casino riviera las vegas เค ดิ ต ฟรี 2020 ล่าสุด blaze casino 918kiss เล่น ใน คอม ส โบ เบ็ ต 5678 all new gclub วิธี เอา ส ปิ น เกม coin master sbobet iphone ลิ้ ง ฟรี ส ปิ น coin master fun555 login ร็ อ ค โค่ แค ป jetsadabet สูตร แอ พ jetsadabet ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด 2020 ทาง เข้า เว็บ gclub big bang slot หวย เจษฎา เบ ท sbobet545 แจก ส ปิ น coin เว็บ ปอย เปต ดี ไหม เค ดิ ต ฟรี ไม่มี เงื่อนไข happyluke ฝาก เงิน kclubs online casino online v2 bilion casino 8vy9 gclub168 home index คา สิ โน ฝาก 1 บาท ได้ 100 download 918kiss ios 2019 jetsadabet ดี ไหม pantip 2016 ราคา 918kiss ไอ โฟน ราคา บอล sbobet วัน นี้ สมัคร สล็อต ไม่มี ขั้น ต่ํา 168galaxy slot ยี่ กี เว็บ เจ ษ รับ เพิ่ม ส ปิ น coin master สูตร คํา น วณ หวย ยี่ กี jetsadabet กลุ่ม เครดิต ฟรี ไม่ ต้อง แชร์ ยี่ กี เว็บ เจ ษ dafabet link สมัคร 918kiss ท รู้ วอ เลท ส ปิ น ฟรี coin master ios ล่าสุด royal online 168 happyluke ทาง เข้า แทง หวย เจต สมัคร mega888 การ เพิ่ม ส ปิ น coin master playigo casino สล็อต ที่ แตก บ่อย spina casino 777 gate casino kclubs online casino 168galaxy slot เค ดิ ต ฟรี ไม่ ต้อง ฝาก ถอน ได้ ติด ตั้ง 918kiss ios วิธี ขาย ส ปิ น coin master happyluke info ทาง เข้า ism99 game sbobet เข้า ไม่ ได้่ ่่่ คืน ยอด เสีย สล็อต diamond inferno slot ทาง เข้า ส โบ 888 pic5678 mobile happyluke casino ทาง เข้า sbobet ล่าสุด ลิ้ ง fun88 สล็อตออนไลน์ แจก ฟรี ส ปิ น coin master เครดิต ฟรี 500 บาท โบนัสพิเศษแทงเสมอ รับเพิ่ม 17,777 บาท ไม่อั้น บา ค่า ร่า เข้า ส โบ ล่าสุด รับ ส ปิ น ฟรี coin master ios เว็บ ส โบ เบ็ ต คา สิ โน เข้า เว็บ jetsadabet sbobet 777com ลัก กี้ ซิก บา คา ร่า coin master เพิ่ม ส ปิ น gclub888888 auto gclub เอ เย่ น isc123 เครดิต ฟรี reel keeper slot 1000 ล็ อ ต โต้ รับ ฟรี ส ปิ น coin master เครดิต ฟรี winsor สมัคร สมาชิก fun88 ปอย เปต 147 maxgoal casino mafia55 สมัคร ฝาก ขั้น ต่ำ 20 ฟรี 100 ตัวแทน gclub แจก ส ปิ น ฟรี coin master วัน นี้ sbobet22 slot777 casino agent slot royal online 777 poker online เล่น กับ เพื่อน โบนัส ฝาก เงิน ครั้ง แรก โปร ส ปิ้ น coin master casino 1xbet เว็บ ปอย เปต 168 sbobet official website casino playamo sbobet22 918kiss ไอ โฟน casino pullman อยาก ได้ ส ปิ น ฟรี coin master jetsadabet lotto mafia slot เครดิต ฟรี ไม่ ต้อง แชร์ สมัคร lsm9999 สล็อต ค่าย bng ทาง เข้า gclub888 สล็อต ps jetsadabet 777 สมาชิก ใหม่ ลง ทะเบียน เพื่อ รับ โบนัส แรก เข้า mafia slot เครดิต ฟรี ไม่ ต้อง แชร์ สล็อตฟรี vip fun88 sbobet game happyluke โกง jetsada ปิด ส ปิ้ น coin master ฟรี gclub700 รับ ส ปิ น coin master fun88888 วิธี เล่น แบ ล็ ค แจ็ ค โปร เครดิต 100 cashzuma แจก ส ปิ้ น coin master ลิ้ ง เข้า sbo casino caesar กำถั่ว จี คลับ livescore sbobetonline คา สิ โน เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ส ปี ด บา คา ร่า s15 da vinci treasure slot ทํา เทิ ร์ น บา คา ร่า 359 sbobet สมัคร live22th คา สิ โน ไม่ ต้อง ฝาก เงิน ไฮโล ออนไลน์ พื้นบ้าน sboibc888 ทาง เข้า เว็บ หวย เจต วิธี ได้ ส ปิ น coin master ฟรี online casino s แจ กลิ้ง ส ปิ น ฟรี coin master bestbetting casino SBOBETV8 sbobet เข้า ปอย เปต 147 vscr888 ฝาก เงิน 35x สล็อต เกม ไฮโล เขย่า 918kiss slot game download สมัคร 10 รับ 100 ruby888 android ิ beer789 ยิง ปลา จี คลับ lsm19 ฝาก ถอน jetsadabet ปิด ปรับปรุง sbobet545 www lsm2558 comwww lsm99 bet lsm99 info เว็บ jetsada lotto royal gclub168 sbobet online ทาง เข้า login fun88 m81 sbobet สมัคร 918kiss ท รู วอ เลท ทาง เข้า sbobet asia แอ พ gclub สมัคร แทง บอล sbobet gclublotto เว็บ เจษฎา ล็ อ ต โต้ ไลน์ จี คลับ ๋ jetsadabet สูตร ยี่ กี่ jetsadabet sbobet88888 ทาง เข้า royal gclub มือ ถือ casino coupon สมัคร สมาชิก mega888 เว็บ ปอย เปต ดี ไหม ทาง เข้า sboasia ทาง เข้า ส โบ 8888 บา คา ร่า ส โบ เบ็ ต bingo เกม sbobet สมัคร สมาชิก แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 แค่ สมัคร sbo333 มือ ถือ ทาง เข้า sbobet88888 gclub 98 ทาง เข้า เอเย่นต์ gclub แอ พ ล็ อ ต โต้ shangri la สล็อต slot 333 casino bit ฝาก ถอน lsm99 sbobet347 สมัคร jetsadabetcom slotv888 918kiss เล่น ฟรี การ เล่น ไพ่ โป๊กเกอร์ บา คา ร่า ออนไลน์ ปอย เปต แค่ สมัคร ก็ รับ เครดิต ฟรี ล่าสุด สมัคร สล็อต โบนัส 100 สมัคร 918kissauto สล็อต วอ ล เลท fun88 สมัคร 918kiss hack unlimited vwin casino double u casino free chip online v2 แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 แค่ สมัคร qq288 casino ทาง เขา sbobet ยืนยันเบอร์ รับเครดิตฟรี sbobet livescore soccer สมัคร 918kissauto จี คลับ ผ่าน เว็บ sbobet 8x รับ ส ปิ น ฟรี coin master วัน นี้ lara croft slot beer555 ล็ อ ต โต้ วี ไอ พี club388 casino duell casino ทาง เข้า ส โบ ใหม่ 918kiss scanner hack 2019 free sbobet22 กด รับ ส ปิ น ฟรี coin master เหรียญ coin master ฟรี สมัคร ใหม่ รับ เครดิต ฟรี ไม่ ต้อง ฝาก shufflemaster blackjack gclub678 100 ฟรี ส ปิ น coin master lsm99 login โค้ด ส ปิ น coin master ล่าสุด โล ยั ล คา สิ โน ฝาก ถอน ลิ้ ง ส โบ มือ ถือ k9win casino casinomodule lsm99 ทาง ไลน์ ฟรี เครดิต สล็อต ไม่ ต้อง ฝาก slotv888 188bet poker โปร โม ชั่ น pussy888 เครดิตฟรีแค่สมัคร 7kasino เล่น สล็อต ฟรี ได้ เงิน จริง ไม่ ต้อง ฝาก play jojo casino เล่น ไฮโล ให้ ได้ เงิน pantip ปอย เปต 147 เล่น จี คลับ ผ่าน เว็บ 918kiss เทิ ร์ น 1 เท่าdafabet ฟรี 300 2019 gclubfree gclub1988 sbobet slots ไฮโล ออนไลน์ พื้นบ้าน lsm99 net http ab24hr allbetasia com login dafabet link บา คา ร่า ปอย เปต pantip fun88 2020 casinò giochi แจก ส ปิ น ฟรี coin master วัน นี้ royal online ทาง เข้า คา สิ โน เครดิต ฟรี ไม่ ต้อง ฝาก 2020 979 gclub agent sbobet sbobet 560 ทาง เข้า sbo มือ ถือ สมัคร บอล ออนไลน์ ฟรี ทาง เข้า เอ เย่ น lsm ฮ อ ลิ เดย์ ปอย เปต คา สิ โน gclub168 ทาง เข้า line lsm99 quick casino ไฮโล kingmaker sbobet game โบ เบ็ ต lsm99 center ทาง เข้า sbo มือ ถือ ib88 casino 918kiss download ios 2019 ufa แจก เครดิต ฟรี 100 ไม่ ต้อง ฝาก sbobet777 สมัคร ล็อกอิน fun88 ทาง เขา sbobet sbobet25 สล็อต ผ่าน วอ เล็ ต คา สิ โน โร เยล jetsadabet allnew8888 lsm99online สมัคร dafabet pantip jetsadabet เปิด ใหม่ bestbetting casino just casino สมัคร ยูสเซอร์ ฟรี เครดิต bilion casino gclub app casino splendido สมัคร ปอย เปต rolet casino สล็อต 918kiss ฟรี เครดิต ไม่ ต้อง ฝาก ล่าสุด 2019 jetsada เข้า สู่ ระบบ ทาง เข้า sbo24hr สล็อต 918kiss ฟรี เครดิต ไม่ ต้อง ฝาก ล่าสุด 2019 วิธี ทํา ส ปิ น coin master สล็อต 918kiss เติม true wallet ไม่มี ขั้น ต่ํา lsm เกม ทาง เข้า ส โบ เบ็ ต ล่าสุด สมัคร รับ เครดิต ฟรี 2020 sbobetwinner sbobet online 99 Sbobet casino kkkk99 net คา สิ โน happyluke ไอ ดี ไลน์ lsm99 ่ jetsadabet login เอ เย่ น sbobet เกม บิงโก ยอด ฮิต da vinci treasure slot sbobet88888 มือ ถือ ทาง เขา sbobet ส โบ เบ็ ต 5678 gclub88888 ทาง เข้า มือ ถือ rt สล็อต ace333 ฟรี เครดิต 2019 สมัคร สมาชิก ใหม่ รับ เครดิต ฟรี ไม่ ต้อง ฝาก lsm99 com สมัคร happyluke ถอนเงิน ไม่ ได้ 123 ปอย เปต happyluke line lsm99 โปร โม ชั่ น ลิ้ ง ฟรี ส ปิ น coin master สูตร หวย ยี่ กี jetsadabet 2563 bet333 mobile goal club sbobet gamemun88 sbobet 818 ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด ios casino online net เล่น จี คลับ ออนไลน์ ทาง เข้า fan88 โป้ ก เก อ สล็อต ที่ แตก บ่อย sbobet ibc 888 คา สิ โน โร เยล หาสปินฟรี coin master ทาง เข้า lsm ถอนเงิน dafabet นาน ไหม โค๊ ด ส ปิ น coin master poteau casino royal online v2 8888 ฟรีสปิน15ครั้ง best88 สล็อต fan88 ล็อกอิน อยาก ได้ ส ปิ น coin master ฟรี สูตร coin master ฟรี da vinci treasure slot sbobetasia online ไฮโล ออนไลน์ ไม่มี ขั้น ต่ำ โค๊ ด ส ปิ น coin master casino 789 l ส โบ เบ ท เล่น poker online เงิน จริง coin master ส ปิ น ไม่ จํา กัด gsm casino gclub10 เข้า fun88 ไม่ ได้ แจก ฟรี ไม่ ต้อง แชร์ ทาง เข้า jetsadabet วิธี หมุน ส ปิ น coin master ยี่ กี่ jetsada เครดิต ฟรี ไม่ ต้อง ฝาก jdb ส ปิ น ฟรี เกม coin master sboasia ทาง เข้า โบนัส เครดิตฟรี แบบไม่ต้องฝากเงิน spartan slot ก dafabet bestbettingcasinos ิ beer777 ส ปิ น ฟรี coin master ios ล่าสุด jetsadabet ดี ไหม สปินฟรี coin master ฟรี เค ดิ ต ฟรี 50 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ สมัคร 918kissauto เว็บ หวย jetsadabet gladiator jackpot lsm99 max serbian casino ฝาก gclubauto ยิง ปลา 888 สล็อต ฝาก ขั้น ต่ํา 10 บาท goldenslot games slot online casino online gclub444 fun88 ทาง เข้า 2020 sbobet ninja diamond vip casino 99 gclub วิน เซอร์ คา สิ โน ปอย เปต สมัคร สมาชิก 918kiss สล็อตฟรี สล็อต แตก ง่าย ทุน น้อย inferno star slot lsm คา สิ โน 35x สล็อต gclub69 www123vip casino fan88 ล็อกอิน doxxbet casino online 888 ล็ อ ต โต้ sbobet 8x วิธี โปร coin master คา สิ โน ปอย เปต 888 happyluke apk ทาง เข้า ส โบ มือ ถือ สูตร coin master ฟรี g gclub สล็อต 918 เติม true wallet ไม่มี ขั้น ต่ํา ทํา เทิ ร์ น บา คา ร่า k9win สมัคร สมาชิก ๋ jetsadabet md123 918kiss แจ กลิ้ง ส ปิ น ฟรี coin master ยืนยัน เบอร์ รับ เครดิต ฟรี z8 สล็อต sbothai8 ทาง เข้า มือ ถือ sbobet เครดิตฟรีไม่ต้องฝาก เกม coin master ส ปิ น ฟรี วิธี ส่ง ส ปิ น เกม coin master jetsadabet lotto โป ก เกอร์ ลํา ดับ ไพ่เล่น โป ก เกอร์ ออนไลน์ เงิน จริง casino pullman วิธี ขาย ส ปิ น coin master m84sbobet เครดิต ฟรี 100 ไม่ ต้อง ฝาก 2019เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร sbobetrich88 babe casino เว็บ ปอย เปต 168 jetsadabet pantip รีวิว lsm99 คืน ยอด เสีย ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด เล่น royal online v2 enterplay casino ปอย เปต 777 เกม coin master ส ปิ น ฟรี ฝาก ถอน lsm99 918kiss download 2019 ios สล็อต pp เครดิต ฟรี ป๊อก เด้ง ออนไลน์ ฟรี เครดิต ไม่ ต้อง ฝาก kkkk99 net wm casino 555 777 live casino royal online pc สล็อต แจก ฟรี วัน เกิด แอ ปรับ ส ปิ น ฟรี jetsadabet user login สล็อต สมาชิก ใหม่ ฟรี เครดิต ส ปิ น ไม่ จํา กัด coin master โบนัส สล็อต g2g9 casino เกม โป ก เกอร์ ออนไลน์ casino crash poker ได้ เงิน จริง918kiss gclub700 โบนัส สล็อต pretty casino เว็บ เล่น blackjack ส โบ เบ ท 5678 www gclub88888 gclub php รับ ส ปิ น ฟรี coin master ios se88 slot gclub call สมัคร ครั้ง แรก ฟรี เครดิต 2020 poipet 555 slotv9 รับ 100 ทาง เข้า sbobet ca bilion casino 918kiss download android 2020 lsm99 king lsm99 ไลน์ sbobet เข้า ไม่ ได้ lsm99 ถอนเงิน ขั้น ต่ํา สล็อต เครดิต ฟรี ล่าสุด 2020 918kiss install ios infinity 888 เครดิต ฟรี 123play casino สมัคร 918kiss ท รู้ วอ เลท gclub600 casino municipale สมัคร sbobet 222 โบนัส คืน เงิน ส ปิ น ฟรี coin master ฟรี ios บิงโก ราคา เล่น poker online เงิน จริง rolet casino gclub789 dafabet แอ พ dragon kingdom slot sbobet777 line เครดิตฟรีไม่ต้องฝาก เกม ไพ่ 21แอ พ เกม ไฮโล ได้ เงิน จริง payeer casino dafabet fun88 www lsm2558 comwww lsm99 bet lsm99 info วิธี เล่น แบ ล็ ค แจ็ ค 918 สล็อต สล็อต ออนไลน์ fifa55 ทาง เข้า sbobet168 วิธี ทํา ให้ ได้ ส ปิ น เยอะ ๆ coin master เว็บ ส โบ เบ็ ต คา สิ โน jetsadabet222 918kiss login download gclub casino คา สิ โน ออนไลน์ sbobet livescore soccer สมัคร เกม สล็อต ออนไลน์ jetsadabet222 ไฮโล ออนไลน์ ได้ เงิน จริง ผ่าน มือ ถือ sbobet444 แจก ฟรีสปิน2020 jetsadabet สูตร กำถั่ว จี คลับ แอ พ ส ปิ น ฟรี coin master ios จี คลับ คา สิ โน ออนไลน์ poipet ฟรี บา คา ร่า ค่า คอม แจก ฟรี ส ปิ น 2020 coin master หวย ออนไลน์ เจต แจก ส ปิ น ฟรี coin master วัน นี้ หวย ออนไลน์ เจษฎา แอ พ แจก ส ปิ น เกม coin master แจก ฟรี 100 บาท ไม่ ต้อง ฝาก 918kiss pc slotv online casino lsm99 อัพเดท ล่าสุด sa game 350 แอ พ ส ปิ น ฟรี coin master ios poker online เว็บ ไหน ดี สมัคร fan88fun888 ฟรี 300 sbobet22 ดาว โหลด เกม 918kiss iosเครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร เข้า sbobet มือ ถือ ไม่ ได้ will's casino greenx88 ฟรี ส ปิ น gclub789 เค ดิ ต ฟรี ถอน ได้ 500 gclub ป๊อก เด้ง slot new โปร ส ปิ้ น เกม coin master gclub free spin ฟรี ส ปิ น ฟรี ทาง เข้า fun88 มือ ถือ casino elite ทาง เข้า fun78 996 casino ฟรี ส ปิ น coin master ios สมาชิก ใหม่ ฝาก 1 บาท รับ 100 ลิ้ ง แจก ส ปิ น เกม coin master แทง สล็อต สมาชิกใหม่ ฝากครั้งแรก รับโบนัส 150% ทาง เข้า royal online สล็อต ทุน ฟรี web jetsada sbobet online mobile คา สิ โน จี คลับ ทาง เข้า 24sbo lsm99 เข้า สู่ ระบบ ปอย เปต รีสอร์ท starmania slot 918kiss install ios คา สิ โน โปร โม ชั่ น ยี่ กี เจษฎา เบ ท jetsadabet pantip รีวิว เล่น poker เว็บ ไหน ดี coin master ส ปิ น ฟรี casino flash gclub ฟรี 15 คี โน คือ sbobet asia เข้า ไม่ ได้ เแ สีิ joker game casino zenspin casino เครดิตฟรีไม่ต้องฝากไม่ต้องแชร์ รีวิวเว็บคาสิโนออนไลน์ สล็อต เติม 10 ได้ 100 918kiss เทิ ร์ น 1 เท่าdafabet ฟรี 300 2019 gclub168 ทาง เข้า indukbola gatorama casino สมัคร ยูสเซอร์ ฟรี winner55 สล็อต 918kiss เล่น ฟรี โปร ส ปิ น coin master ไม่ จํา กัด โบนัสฟรีสปิน สมัคร 999lsm sbobet 359 lsm99 king w88 live casino สล็อต หมี แจก เครดิต ฟรี 500 ไม่ ต้อง ฝาก 2563 ป๊อก เด้ง เครดิต ฟรี ไม่ ต้อง ฝาก เครดิต ฟรี ไม่ ต้อง ฝาก ufa gclub pc lsm99vip ww88 สล็อต สมัคร รับ เครดิต ฟรี 2020 เว็บ หวย เจ ษ ใหม่ sbobet347 ล็อกอิน fun88 https ufafever com ufabet login โปร เกม coin master ส ปิ น gclub บน มือ ถือ https www gclub casino com bacc6666 m slot v casino online jetsadabet เปิด ใหม่ สมัคร happyluke royal 6666 online line dafabet gclub77 sbobet2222 จี คลับ 289 ราคา บอล ส โบ เบ็ ต th livescore ส โม เบ ท 555 UFAGALAXY88 gclub online android ฟรี ส ปิ น สมาชิกใหม่ บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น sbobet 158 fun88 girl กลุ่ม เครดิต ฟรี ไม่ ต้อง แชร์ การ เล่น ไพ่ โป ก เกอร์ gg casino slot 333 ทาง เข้า gclub888 ๋ jetsadabet live casino house ฟรี 300 บาท ไม่ ต้อง ฝาก ก่อน ชนะ ถอน ได้ เว็บ ส โบ sb0bet888 แอ พ ล็ อ ต โต้ black jack วิธี เล่น casino v wwwfun88 เข้า สู่ ระบบ gclub ล อ ต โต แจก โปร ส ปิ น coin master โบนัส แรก เข้า beer777 pc k9win สมัคร โกง ส ปิ น ใน coin master โบนัสฟรีเคดิต ดาวน์โหลด 918kiss ios wwwfun88 fun88 esports เว็บ แทง หวย jetsadabet เว็บ เล่น poker mafia สล็อต มา ใหม่ sbobet เข้า ได้ แน่นอน แอ พ แจก ส ปิ น coin master lsm99bet jetsada online เพิ่ม ส ปิ น coin master royal casino ถอนเงิน บา คา ร่า วัน ละ 300 เกมส์ สล็อต ได้ เงิน จริง 888 สล็อต ฟรี เครดิต 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ sbobet 2019 เว็บ แจก ส ปิ น coin master สมัคร sbobet mobile เพิ่ม ส ปิ น coin master 918kiss โหลด ส โบ เบ็ ต 168 หา ส ปิ น ฟรี ส็ ลอด 8 casino gclub24 รู น rov แทง ค์ gclub tv sbobet lsm99 max ฟรี ทดลอง เล่น ถอน ได้ 2019 สมัคร ยูสเซอร์ ฟรี เครดิต ป๊อก เด้ง เครดิต ฟรี ไม่ ต้อง ฝาก 168galaxy slot bacc6666 สมัคร https ufafever com ufabet login สล็อต ฝาก วอ เลท ไม่มี ขั้น ต่ํา ฝาก gclubauto ได้ ส ปิ น ฟรี coin master สมัคร ใหม่ รับ เครดิต ฟรี ทันที 2020 ส็ ลอด sbobetv8 คา สิ โน ปอย เปต ที่ไหน ดี pantip 918kiss เกม ไหน แตก ง่าย สุด 5 dragon slot แอ พ ล็ อ ต โต้ 88cashbet สมัคร รับ เครดิต ฟรี 2020 แทงบอล UFABET lsm99 สมัคร สูตร เพิ่ม ส ปิ น coin master เก น ส ล็ อด ถอนเงิน jetsadabet ไม่ ได้ gclub44 auto สล็อต ออนไลน์ 168 โบนัสแนะนำเพื่อน ทาง จี คลับ 777 live casino รอยัล ออนไลน์ 888 lsm99 goals คา สิ โน ออนไลน์ ฟรี เครดิต 2020 ทาง เข้า gclub8888 jetsadabet เข้า สู่ ระบบ เว็บ royal online halloween casino แจก ส ปิ น coin master ฟรี แจก เครดิต ฟรี แค่ สมัคร sbobet888 mobile ฟรี ทดลอง เล่น ถอน ได้ 2019 ฮ อ ลิ เดย์ ปอย เปต สมัคร สล็อต ฝาก 99 รับ 201 jetsadabet ดี ไหม pantip k9win สล็อต เว็บ ส ปิ น ฟรี coin master สมัคร แทง บอล ฟรี ทาง เข้า จี ฟรี ส ปิ น coin master gclub9 ทาง เข้า เว็บ lsm golden dragon slot สมัคร 918kiss android วิธี เก็บ ส ปิ น coin master spilleren casino 918 เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัครfun888 ฟรี 300 เกม โป้ ก เกอร์ สล็อต w88 รู น แท๊ ง ค์ rov g ครับ 88888 https ufafever com ufabet login สูตรบาคาร่า ลิงค์ lsm royal 6666 online mb88 casino สล็อต 2020 ล่าสุด jackie casino แจก ฟรี ไม่ ต้อง แชร์ ติดต่อ เอ เย่ น จี คลับ สมัคร 918kiss ท รู้ วอ เลท gclub888888 auto ปอย เปต โปร king roman casino 2ni2 สล็อต fun88 สมัคร โป๊ก เก อร เค ดิ ต ฟรี 50 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ www gclub666 ถอนเงิน dafabet นาน ไหม greenx88 ฟรี ส ปิ น โปร โม ชั่ น เกม ออนไลน์ lsm99 net ทาง เข้า lsm จี คลับ casino muchbetter magic slot machine doxxbet casino online ทาง เข้า ส โบ 888 ทาง เข้า ส โบ 888 lsm99 คา สิ โน ยี่ กี เจต m84sbobet ิ beer777 ทาง เข้า agent sbobet lsm99today ยี่ กี เว็บ เจ ษ facebook fun88 ส ป ริ้น ฟรี coin master สูตร coin master ฟรี สล็อต ผล ไม้ โชค ดี sl casino ส โบ เบ็ ต 168 neonvegas casino
                สมัคร ใหม่ แจก เครดิต ฟรี| เข้า ส โบ| franks casino| สล็อต หมุน ฟรี ใน google รับ ไป เลย ฟรี เครดิต 100 บาท| วี ไอ พี ล็ อ ต โต้| sbobet rich88| euromania online casino| สล็อต เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์| วิธี เพิ่ม ส ปิ น ใน เกม coin master| เค ดิ ต ฟรี 300 ล่าสุด| casino riviera las vegas| ww88 สล็อต| royal online pc| gclub casino online มือ ถือ| happyluke รีวิว| มือ ถือ sbobet| ฝาก เงิน vscr888| หวย เจต| โค้ด ส ปิ น ฟรี coin master| icon99 ค่า สิ โน| เว็บ เจษฎา ใหม่| download 918kiss ios 2020| gclub mobile android| ส โบ เบ็ ต 5678| ts911 แจก เครดิต ฟรี| ล๊ อ ต โต้ วัน| royal online 888| วิธี เพิ่ม ส ปิ น coin master ios| จี คลับ รอยัล| ถอนเงิน ส โบ| goldenslot games slot online casino online| 8888 casino online| วิธี ได้ ส ปิ น เกม coin master| ดาวน์โหลด 981kiss| ทาง เข้า sboasia| jadwal bola sbobet| playigo casino| จี คลับ 99| โบนัส วี ไอ พี| happyluke| จี คลับ คืน ยอด เสีย| สมัคร lsm99 ทาง ไลน์| joker ฟรี เครดิต ไม่ ต้อง แชร์| casino bronze| UFABET| สมัคร fan88joker123 ฟรี เครดิต ไม่ ต้อง ฝาก| แทง หวย เว ป เจต| ดาว โหลด เกม 918kiss iosเครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร| wm casino bet| jetsadabet ดี ไหม| บาคาร่า| สล็อต ฝาก เงิน ท รู้ วอ เลท| royalonine| ufa แจก เครดิต ฟรี 100 ไม่ ต้อง ฝาก| เครดิตฟรี50| วิธี ขาย ส ปิ น coin master| 918kiss เครดิต ฟรี 500918kiss เครดิต ฟรี 100 ไม่ ต้อง ฝาก 2020| jetsadabet ลืม user| สล็อต หมุน ฟรี ใน google รับ ไป เลย ฟรี เครดิต 100 บาท| slot v casino online| pssuy888| spartan slot| sbobet iphone| แอ พ เล่น ไฮโล| sbobet 158| sbobetsh mobile|