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
                           
                          สล็อต joker ฟรี เครดิต pgslot 99th ufabet1688 com agreement8 aspx สล็อต ฟรี ส ปิ น ไม่ ต้อง ฝาก 2020 g2win slot เล่น สวี ท โบ นั น ซ่า สล็อต ที่ แตก ง่าย 2020 เว็บ สล็อต ที่ แตก ง่าย ที่สุด 2020 สล็อต ออนไลน์ ฝาก ขั้น ต่ำ 50 เว็บ slot online เว็บ สล็อต เติม เงิน ผ่าน wallet joker ออ โต้ สล็อต ฝาก ท รู วอ เลท ไม่มี ขั้น ต่ํา สล็อต ไหน แตก ดี joker gaming ทดลอง 168 superslot สล็อต 168 gaming เม กา 888 joker slot logo วิธี แทง บอล sbobet joker69 slot ทาง เข้า vegus69 v9 slot joker slot joker lucky god สมัคร copa89 เว็บ เกมส์ โจ๊ก เกอร์ สล็อต ออนไลน์ ฝาก 1 บาท รับ 100 pg slot ฟรี สล็อต วัน เกิด slot king168 mafia88 สล็อตแทง บอล วัน นี้ โจ๊ก เกอร์ 88 ทาง เข้า โจ๊ก เกอร์ 1234 สมัคร โจ๊ก เกอร์ xo avenger slot ฟรี เครดิต 2020 สล็อต ออนไลน์ ทดลอง เล่น ฟรี www sbobetonline 24 sboaaaa ทาง เข้า app เล่น ไพ่ ได้ เงิน จริง ทาง เข้า เล่น joker โหลด โจ๊ก เกอร์ slot ฝาก ทาง วอ เลท ufagoal168 ทาง เข้า โจ๊ก เกอร์ 123 แนะ นํา สล็อต joker magix99 ทาง เข้า joker สล็อต ufabet1688 com main aspx ยิง ปลา มี รา วา ส epic slot ทาง เข้า เกม สล็อต แตก ดี สล็อต ฝาก วอ ล เลท 10 รับ 100 เกมส์ สล็อต fifa55 ี ufa700 slot ออนไลน์ epic journey 168 superslot บอล ต่อ น่า เล่น วัน นี้ เกม ไพ่ สล็อต joker gaming 1888 สล็อต แตก ดี ที่สุด ส รู สล็อต pg slot games สล็อต เติม ขั้น ต่ำ 1 บาท ทดลอง เล่น สล็อต joker ทุก เกม slot joker เปิด ใหม่ avenger slot download เข้า สู่ ระบบ joker โหลด สล็อต xoth โหลด เกม ไลน์ 22 เว็บ สล็อต ฝาก ผ่าน วอ เลท หมุน สล็อต ฟรี ได้ เงิน จริง 77up sport สมัคร สล็อต ผล ไม้ slot joker roma ดาวน์โหลด โจ๊ก เกอร์ 168 pg slot games joker magix99 สล็อต ที่ มี คน เล่น มาก ที่สุด เกม ที่ เล่น ได้ เงิน จริง ไม่ ต้อง ลงทุน live22 วง ล้อ สมัคร เกม สล็อต รับ เครดิต ฟรี สูตร บา คา ร่า ที่ ใช้ได้ จริง slot pg cc ค้นหา เกม สล็อต สล็อต ขั้น ต่ํา สล็อต joker ทุน น้อย เกม สล็อต แปะ แมว สล็อต ทุน น้อย ล่าสุด joker mvp สมัคร ดาว โหลด pg slot ios 48 slot pg dafabet เกม ได้ เงิน สล็อต ออนไลน์ เติม วอ เลท fifa7777com สล็อต หมุน ฟรี เครดิต ฟรี ปั่น สล็อต ฟรี pg สล็อต 999 th ibet789 สล็อต สมัคร เกม joker สล็อต โปร วัน เกิด ตัว เข้า เกม joker เกม ออนไลน์ ได้ เงิน ไม่ ต้อง ลงทุน joker slot pc เว็บ สล็อต ที่ คน เล่น เยอะ ที่สุด slot pg ฟรี เครดิต สมัคร joker123th สมัคร เครดิต ฟรี สล็อต มาเฟีย 88 ดาวน์โหลด สล็อต ทุน น้อย ล่าสุด เกม คา สิ โน ออนไลน์ ฟรี เครดิต slot ไท เกอร์ คา สิ โน star ให้ ทุน เล่น สล็อต เกม scr888 แจก โค้ด เครดิต ฟรี โหลด เกมส์ สล็อต 22 สล็อต ออนไลน์ ผ่าน วอ เลท สล็อต ais โหลด แอ พ สล็อต joker โค้ด 333be ล่าสุด 2020 joker slot 1788 เกม สล็อต แจก เครดิต ฟรี 100 ไม่ ต้อง ฝาก สล็อต m8 slotxo 888th สูตร บา คา ร่า ที่ ใช้ได้ ทุก เว็บ สล็อต ฟรี ส ปิ น ถอน ได้ สมัคร king888 slot joker win สูตร บา คา ร่า ที่ แม่น ที่สุด 2020 ดาวน์โหลด โจ๊ก เกอร์ สล็อต putsy888 โหลด สล็อต มาเฟีย 88 joker89 download โจ๊ก เกอร์ vip ถอน ได้ ไม่มี ขั้น ต่ํา joker gaming download แนะ นํา เว็บ สล็อต ออนไลน์ การ ปั่น สล็อต live22 jackpot 168 epicwin ฝาก 10 รับ 100 เข้า ระบบ โจ๊ก เกอร์ มาเฟีย 88 ดาวน์โหลด nikigame 999 168 superslot ทาง เข้า เกม โจ๊ก เกอร์ สล็อต แตก ง่าย ตอน นี้ royal gclubth สล็อต คิง ดาว โหลด พุ ช ชี่ 888 แอ พ เล่น เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน roma slot demo หมุน สล็อต ได้ เงิน สล็อต หมุน ฟรี ไม่ ต้อง ฝาก slot joker เกม ไหน ดี 168 slot joker ทาง เข้า โจ๊ก เกอร์ 123 ยิง ปลา ยิ่ง มี รา วา ส โหลด เกม ไลน์ 22 ฝาก 20 บาท รับ 100 วอ เลท โจ๊ก เก อ เกม ทาง เข้า เล่น โจ๊ก เกอร์ 123 โหลด เกมส์ สล็อต live22 เกม hp888 เกม ออนไลน์ ได้ เงิน จริง 2019 สมัคร สล็อต ฝาก ถอน ไม่มี ขั้น ต่ํา เกม ไพ่ป๊อก เด้ง เครดิต ฟรี เข้า สู่ ระบบ โจ๊ก เกอร์ สล็อต ใน ไลน์ สวี ท โบ นั น ซ่า อยู่ ค่าย ไหน ส รู สล็อต slot91 joker เกม แคน ดี้ สล็อต ทดลอง เล่น sweet bonanza xmas เล่น เกมส์ slotxo เว็บ สล็อต slot joker35 joker slot ทดลอง เล่น ฟรี mafia slot เล่น ผ่าน เว็บ avenger 777slot slot เกมส์ 66 สล็อต ออนไลน์ เติม วอ เลท joker168 สมัคร เว็บ สล็อต ออนไลน์ ทดลอง สล็อต roma epicwin slot download สล็อต ฝาก เงิน ท รู วอ ล เล็ ต joker89 download สล็อต ฝาก ผ่าน airpay กงล้อ ปั่น ฟรี การ เล่น slot สวี ท โบ นั น ซ่า เล่น ฟรี fifa55 atm joker auto vip joker slot free credit สล็อต ถอน ผ่าน วอ เลท pussy888 เกม joker slot free game avenger 98 ufa356 com call center บอล ต่อ น่า เล่น วัน นี้ โหลด เกม joker games เล่น เกมส์ ไพ่ ได้ เงิน จริง ไม่ ต้อง ลงทุน เกม เล่น แล้ว ได้ เงิน ไม่ ต้อง ลงทุน เกม สล็อต ออนไลน์ ได้ เงิน เครดิต ฟรี avenger ทาง เข้า เล่น joker โหลด เกม เล่น ได้ เงิน จริง gaminator free credit หมุน วง ล้อ เครดิต ฟรี pgslot168 ทดลอง 48 slot pg roma slot free แนะ นํา เว็บ เล่น สล็อต สล็อต 777 ฝาก ขั้น ต่ํา 100 slots casino maruay99 online casino ufavip848 แจก เครดิต ฟรี jokergod164 สมัคร สมาชิก joker สล็อต 10 ฟรี 100 joker28 game พุ ช 888 big win slotxo สล็อต บน มือ ถือ เว็บ พุซซี่ 888 แจก เครดิต ฟรี ยืนยัน ตัว ตน สมัคร สมาชิก ใหม่ 918kissแทง บอล ออนไลน์ 168 โปร สมาชิก ใหม่ ฟรี เครดิต joker สล็อต ฟรี เครดิต สล็อต ที่ นิยม มาก ที่สุด เดิมพัน ฟรี ไม่ ต้อง ฝาก โบ นั น ซ่า สล็อต สมัคร เกม ยิง ปลา เครดิต ฟรี demo slot online pg soft สล็อต dragon ไพ่ป๊อก เด้ง เกม แปะ แมว slot mafia ฟรี เครดิต pg slot test พุ ช ชี่ 888 วอ เลท slot999 joker โบนัส เกม สล็อต สล็อต รับ วอ เลต ติดต่อ ufabet365 กงล้อ ปั่น ฟรี โปร วัน เกิด สล็อต slotxo apk ล่าสุด gclubhouse สูตร บา คา ร่า ที่ แม่น ที่สุด 2020 สล็อต ฟรี 18 บาท ไม่มี ฝาก ขั้น ต่ํา dafabet สล็อต แตก ง่าย เกม สล็อต ฝาก 10 รับ 100 avenger slot ฟรี เครดิต pg slot ฝาก ผ่าน วอ เลท pg24 slot แจก ทุน เล่น ฟรี slotxoz big win slotxo pg soft mahjong 2 joker slot5g สล็อต ออนไลน์ ใหม่ วัน นี้ สล็อต ตัว ไหน แตก สล็อต ออนไลน์ ได้ เงิน จริง pantip slot เว็บ ไหน แตก ดี sbobetstep แจ้ง ถอน โจ๊ก เกอร์ 789 แจก ฟรี 100 บาท เว็บ รวม สล็อต ทุก ค่าย ทาง เข้า เว็บ joker โหลด เกมส์ สล็อต สล็อต joker789 joker game 2 ออนไลน์ สล็อต แอ พ เกม ออนไลน์ ได้ เงิน จริง เล่น สล็อต ออนไลน์ มือ ถือ ได้ เงิน จริง โจ๊ก เกอร์ 8899 free credit slot 2019 แนะ นํา เว็บ เล่น สล็อต สูตร บา คา ร่า ออนไลน์ บริการ จาก gclubmember สล็อต โจ๊ก เกอร์ 24 เม กา 888 slot ได้ เงิน ง่าย เล่น เกม ไม่ ต้อง ลงทุน ได้ เงิน จริง หมุน วง ล้อ เครดิต ฟรี magix99 pg โจ๊ก เกอร์ ออ โต้ สล็อต ฝาก ด้วย วอ เลท สล็อต ขั้น ต่ํา 1 ซื้อ ฟรี ส ปิ น sweet bonanza สล็อต 918 ฟรี เครดิต ไม่ ต้อง ฝาก เงิน 2020 แจก ทุน ฟรี สล็อต เข้า เกม สล็อต ไม่ ได้ โหลด โจ๊ก เกอร์ slotjokers 168slotxo pg gucci slot joker joker สล็อต 999 fifa95net เกม ยิง ปลา สมัคร ฟรี slot king888 เกม สล็อต ทํา เงิน หน้า เว็บ โจ๊ก เกอร์ โปร สล็อต pg slot joker 681 สมัคร เกม โจ๊ก เกอร์ slot youlike สูตร บา คา ร่า ฟรี 2019 เข้า ได้ ทุก เว็บ เกมส์ ยิง ปลา pantip พุซซี่ 888 ดาวน์โหลด slot เกมส์ 66 ยู ส ทดลอง slotxo coin master ได้ เงิน จริง pg slot apk download เกมส์ ฝาก ไม่มี ขั้น ต่ํา slot โปร ฝาก ครั้ง แรก เล่น สล็อต ออนไลน์ มือ ถือ ได้ เงิน จริง ufa191 ดู บอล เว็บ เล่น เกม แล้ว ได้ เงิน เกม คา สิ โน 88 สล็อต วี ไอ พี แอ ป สล็อต ได้ เงิน จริง แจก เครดิต ฟรี 20 บาท jdb ค่าย เกมส์ สล็อต ฝาก ผ่าน ท รู วอ ล เล็ ต joker888 เข้า สู่ ระบบ เกม ฟรี เล่น ได้ เงิน เว็บ สล็อต ที่ ดี ที่สุด โหลด เกม mega888 เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน แจก เครดิต ทดลอง เล่น ฟรี 2020 slot แมว slot รวม ค่าย แจก เงิน ทดลอง เล่น ฟรี joker slot ทดลอง แทง บอล ส เต็ ป วัน นี้ demo slot pg เข้า สู่ ระบบ joker8899 เกม ออนไลน์ ได้ เงิน จริง ไม่ ต้อง ลงทุน mafia88 apk joker slot z เกม สล็อต รับ เครดิต ฟรี pg slot allbet slot333 สมัคร สมัคร สมาชิก โจ๊ก เกอร์ รีวิว เกม ยิง ปลา ได้ เงิน joker casino slots มาเฟีย 88 ดาวน์โหลด หวย ออนไลน์ เครดิต ฟรี sweet bonanza สมัคร slot24th pg โค้ด 333be ล่าสุด 2020 pg slot mobile แจก ฟรี 100 บาท โหลด jack88 เกมส์ pg ค้นหา เกม สล็อต สล็อต ให้ ทุน ฟรี pg slot ฟรี สมัคร sboaaaa เกม ฝาก ผ่าน ท รู วอ ล เล็ ต mafia1688 download แอ พ เกม ออนไลน์ ได้ เงิน จริง scr888 kiss เว็บ สล็อต วอ เลท สล็อต แตก ง่าย สุด เล่น เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน 2019 เงิน ฟรี สล็อต ถอนเงิน joker888 สล็อต ออนไลน์ วอ เลท เข้า เล่น โจ๊ก เกอร์ 123 live22 สล็อต แตก ง่าย slotjoker 35 ไพ่ป๊อก ได้ เงิน จริง เว็บ พุซซี่ 888 เกม สล็อต the dog house pg slot xo โจ๊ก เก อ เกม slot โปร วัน เกิด slotxo ทดลอง เล่น ฟรี พุ ช ชี่ 888 ทดลอง เล่น joker slot สล็อต ออนไลน์ ที่ แตก ง่าย ฝาก ขั้น ต่ำ 50 เว็บ ไหน สล็อต แตก ง่าย เกม pg แตก ง่าย เกม ออนไลน์ ไม่ ต้อง ลงทุน nx casino แจก เครดิต ฟรี 500 slotxoth pg สล็อต ค่าย ใหญ่ pg slot club pg slot ฝาก สล็อต โปร ดี สล็อต ฝาก ถอน ขั้น ต่ำ 1 บาท pg โปร 100 slot pg ฝาก 10 ได้ 100 ฝาก sboibc888 สล็อต joker789 โค้ด 333be ใหม่ slot ได้ เงิน ง่าย slot ไท เกอร์ ทาง เข้า เล่น เกม โจ๊ก เกอร์ โหลด เกม luk666 สมัคร king888 ทาง เข้า i99pro joker gaming สมัคร ยูสเซอร์ ทดลอง slotxo slot1688 สมัคร ยูสเซอร์ ทดลอง เล่น คิง ค อง slot รีวิว เกม ยิง ปลา เกม สล็อต ยิง ปลา ได้ เงิน จริง 188bet แจก ฟรี เครดิต โปร สล็อต สมาชิก ใหม่ เกม สล็อต โบ นั น ซ่า สล็อต เติม ผ่าน วอ เล็ ต สล็อต ที่ คน เล่น เยอะ ที่สุด เล่น joker slot เข้า สูตร บา คา ร่า sa ufa700 ทาง เข้า สูตร บา คา ร่า ที่ ใช้ได้ จริง joker slot หน้า เว็บ ทาง เข้า เว็บ https www uro168club com pg slot ท รู วอ เลท โหลด ตัว เกม joker slot999 เติม เงิน ไม่ เข้า scr888 kiss slot game 88 ambbo live22 slot รวม ทุก ค่าย sbobet777 slot joker1888 เข้า สู่ ระบบ เติม เกม joker โหลด เกม สล็อต โจ๊ก เกอร์ 123xbet เล่น สล็อต sbobet บอล วัน นี้ fifa55 ทาง เข้า โจ๊ก เกอร์ 123 ผ่าน หน้า เว็บ สล็อต เกมส์ ไหน ดี สล็อต ออนไลน์ สมัคร ฟรี สล็อต สมัคร ผ่าน วอ เลท 918kiss สมัคร สมาชิก สมัคร epicwin สล็อต ค่าย rt แตก ง่าย magix99 pg สล็อต ฝาก เงิน ผ่าน ท รู วอ เลท สล็อต ขั้น ต่ํา 1 happyslot88 joker เว็บ หลัก joker เล่น เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน 2019 1pg slot สล็อต ค่าย pt dafabet สล็อต แตก ง่าย ถอน ขั้น ต่ํา 50 ฝาก 50 ฟรี 150 ี ufa168bet เกม เม ก้า 888 แจก ทุน ฟรี สล็อต สล็อต ตัว ใหม่ mafia123 เล่น ผ่าน เว็บ ฝาก ถอน sbobetstep สล็อต บัญชี วอ เลต slot sf168 สล็อต มือ ถือ ได้ เงิน จริง joker สล็อต true wallet ี ด ฟ 168 royal1688 เล่น ผ่าน โทรศัพท์ เกมส์ slot online slotxo apk ล่าสุด ฝาก ขั้น ต่ำ 50 ทาง เข้า เล่น slot joker ฟรี เงิน เดิมพัน 2020 โจ๊ก เกอร์ ออ โต้ วัน นี้ สล็อต ตัว ไหน แตก mafia1688 เข้า สู่ ระบบ pg slot ฝาก ถอน ไม่มี ขั้น ต่ำโหลด เกม สล็อต xo เล่น เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน 2020 ibc9 คือ อะไร pantip สมัคร โจ๊ก เกอร์ 89 สล็อต ท รู มัน นี่ สูตร บา คา ร่า ที่ แม่นยำ ที่สุด สล็อต คิง สมัคร marwin slot หมุน วง ล้อ เครดิต ฟรี เกม ฟรี เล่น ได้ เงิน ระบบ ฝาก ถอน joker joker ทดลอง เล่น ฟรี ฟรี เครดิต สล็อต jdb สล็อต เครดิต ฟรี 18 บาท slot ให้ เครดิต ฟรี ไพ่ป๊อก ได้ เงิน จริง สมัคร เกม 888ยิง ปลา jdb slot1234 pg slot สล็อต ลาว เกม สล็อต pg แตก ง่าย สล็อต ออนไลน์ ต่าง ประเทศ เกม เล่น ได้ เงิน ไม่ ต้อง ลงทุน ยิง ปลา lsmยู ฟ่า 365 ราคา บอล ไหล ทุก 15 นาที เว็บ เล่น เกม ได้ เงิน สล็อต สบาย ดี 99 เกม ที่ เล่น แล้ว ได้ เงิน จริง ไม่ ต้อง ลงทุน 2020 slot333 สมัคร สล็อต ทุน น้อย ล่าสุด slot king168 สูตร บา คา ร่า ฟรี 2019 เข้า ได้ ทุก เว็บ พนัน เทนนิส ไพ่ป๊อก ได้ เงิน จริง แนะ นํา เว็บ สล็อต เกม ออนไลน์ ได้ เงิน จริง ไม่ ต้อง ลงทุน slot pg โปร 100 เกม สล็อต แตก ง่าย ที่สุด เครดิต แจก ฟรี สล็อต ออนไลน์ fun88 สล็อต ทํา เงิน เกมส์ พนัน ออนไลน์ ได้ เงิน จริง ก่อน ฝาก สล็อต เกมส์ สล็อต เว็บ ไหน ดี แตก ง่าย 2020 สร้าง โปรแกรม สูตร บา คา ร่า slot ฝาก 10 รับ 100 วอ เลท joker โปร วัน เกิด เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน 2020 ทาง เข้า โจ๊ก เกอร์ 123 สล็อต pg88 joker slot หน้า เว็บ jokerizer dafabet เกม ได้ เงิน ทาง pgslot slot king888 สมัคร สล็อต ไม่มี ขั้น ต่ำ joker123 ระบบ อัต โน โปร โม ชั่ น ฝาก 10 บาท ได้ 100 เกม คา สิ โน ออนไลน์ ฟรี เครดิต pg slot 567 สมัคร สล็อต ฝาก ถอน ไม่มี ขั้น ต่ํา สล็อต ฝาก ขั้น ต่ํา 50 บาท เว็บ มังกร 888 สล็อต ฝาก ท รู วอ ล เล็ ต 123xbet เครดิต ฟรี ป๊อก เด้ง ออนไลน์ แจก เครดิต ฟรี ราคา บอล ไหล ทุก 15 นาที เว็บ หมุน สล็อต เกม สล็อต ทํา เงิน ทดลอง เล่น ฟรี สล็อต joker joker games โหลด เกม slot999 เข้า สู่ ระบบสล็อต ลอง เล่น ฟรี แนะ นํา เว็บ สล็อต ufa lion 168 royal gclubth ยิง ปลา มี รา วา ส สล็อต xo live22สล็อต มาเฟีย 1688 slot joker 35 slot vip 168 หน้า เว็บ โจ๊ก เกอร์ slotjoker 666 demo slot pg soft เก ม์ สล็อต โปร epicwin สล็อต dragon เกม สล็อต ฝาก 10 รับ 100 เกมส์ pg vs168 sure เว็บ สล็อต ที่ แตก ง่าย เงิน ฟรี สล็อต สูตร บา คา ร่า sa ออ โต้สูตร เฮีย ขวาน เสือนอนกิน action joker slot สูตร บา คา ร่า ที่ แม่นยำ ที่สุด โหลด เกม พุ ช ชี่ 888 สูตร บา คา ร่า ที่ แม่น ยํา ที่สุด รับ กระสุน ยิง ปลา ฟรี สล็อต ถอน เข้า วอ เลท slot ยอด ฮิตfifa55cash 168 gaming joker ส ล้อ ต 168 สล็อต ออนไลน์ เติม วอ เลท เว็บไซต์ โจ๊ก เกอร์joker สล็อต 888 55 slotxo สล็อต เล่น ผ่าน วอ เลท slot ฝาก แรก ของ วัน เกม หาเงิน เครดิต ฟรี123 สล็อต joker dc slot ค่าย สล็อต แตก ง่าย สูตร บา คา ร่า ที่ แม่น ยํา ที่สุด โหลด เกม สล็อต joker slotxo 77 สล็อต ออนไลน์ 77 เว็บ สล็อต ที่ ดี ที่สุด joker ฝาก 20 jokerslotabc slot ฝาก น้อย ได้ 100 slot ท รู วอ เลท สล็อต ส โบ เบ็ ต เกม ไพ่ แลก เงิน ทาง เข้า i99pro ทาง เข้า 55slot xo joker slot 8868 jokerslotth เกม ไพ่ แลก เงิน สมัคร ปั่น สล็อต slot spin999 สูตร บา คา ร่า ที่ ดี ที่สุด ฟรี สล็อต ได้ เงิน เยอะ สล็อต เว็บ ไหน ดี แตก ง่าย 2020 ace333auto โจ๊ก เกอร์ 388 เครดิต เกม สล็อต ฟรี ทดลอง เล่น สล็อต เครดิต ฟรี ทดลอง เล่น สล็อต ฟรี 2020 joker สล อ ต โจ้ ก เกอร์ เล่น เกม แล้ว ได้ เงิน ฟรี รวม ค่าย สล็อต ใน เว็บ เดียว เล่น เกม ออนไลน์ ฟรี ได้ เงิน the great icescape slot สล็อต joker เติม true wallet ไม่มี ขั้น ต่ํา ค้นหา เกม สล็อต เกม ยิง ไข่ ได้ เงิน จริง เว็บ สล็อต 88 slot ไท เกอร์ jokerth vip pg slot ฝาก ผ่าน วอ เลท เกม ค่าย joker slots casino maruay99 online casino สมัคร เกม joker ไพ่ป๊อก เด้ง ได้ เงิน จริง มา รวย 99 apk wwwfifa9999 pussy888 เล่น หน้า เว็บ ฝาก 20 รับ 100 ท รู วอ เลท เว็บ โจ๊ก เกอร์ 666 xoslot vip pg soft leprechaun riches joker slot 1919 fifa7777com โหลด เกมส์ โจ๊ก เกอร์ 888 ลิ้ ง โจ๊ก เกอร์ 123 slot joker เปิด ใหม่ แจก user ทดลอง เล่น ฟรี ถอน ได้ 2019 sboaaaa ทาง เข้า สล็อต โปร ดี เกมส์ เงิน จริง สมัคร joker slot sugar pop เกม joker123th auto slot1168 joker เงิน ฟรี สล็อต เกม ออนไลน์ ได้ เงิน จริง 2019 slots ฟรี เว็บ สล็อต โดยตรง v9 slot joker เล่น ไพ่ป๊อก เด้ง ได้ เงิน จริง เว็บ โจ๊ก เกอร์ เกมส์ pg slot ฝาก 20 ได้ 100 แจก เครดิต ฟรี ยืนยัน เบอร์ pg slot mobile ace333auto สล็อต ออนไลน์ ใหม่ สล็อต แตก ง่าย สุด 191 ยู ฟ่า โหลด โจ๊ก เกอร์ 888 สมัคร สมาชิก โจ๊ก เกอร์ slot roma ทดลอง โหลด ตู้ สล็อต ผล ไม้ สมัคร joker auto วิธี เล่น sbobet ให้ รวย 918 เกม ไหน แจก ufa slot แตก ง่าย กระสุน ฟรี 300 joker ฝาก 20 ufa nova88 ค้นหา เกม สล็อต เกม 88 joker pussy888 เล่น หน้า เว็บ สล็อต pg 99 ufabet 36 สมัคร สมาชิก ใหม่ เครดิต ฟรี slot4u epicwin โหลด แอ ป xo โหลด เกมส์ โจ๊ก เกอร์ 888 สมัคร joker เครดิต ฟรี รีวิว เกม ยิง ปลา สมัคร สล็อต ท รู วอ เลท joker1888 สมัคร สมาชิก 35pg slot สมัคร vegus69 เล่น ส โบ เบ็ ต mafia 1688 เครดิต ฟรี ทาง เข้า เว็บ joker เว็บ สล็อต ฝาก 100 สล็อต ฝาก ถอน ท รู วอ เลท สล็อต ฟรี 2020 slotxo 168 mafia88 ทดลอง เล่น โจ๊ก เกอร์ ฝาก ผ่าน วอ เลท วง ล้อ หมุน ฟรี แจ้ง ถอน sbobetstep สล็อต อัน ไหน แตก ง่าย เกมส์ ยิง ปลา พัน ทิป หมุน วง ล้อ ได้ เงิน จริง joker123 สล็อต เกมส์ ไหน ดี โบนัส แตก บ่อย joker 2020 สมัคร สล็อต แคน ดี้ สมัคร heng555 เว็บไซต์ สล็อต ออนไลน์ สร้าง โปรแกรม บา คา ร่า ทดลอง เล่น สล็อต ค่าย joker เว็บ โจ๊ก เกอร์ 666 หน้า เว็บ โจ๊ก เกอร์ แจ้ง ถอน sbobetstep สล็อต กา แล ค ซี่ สล็อต ทดลอง เล่น ได้ เงิน จริง mafia123 เล่น ผ่าน เว็บ สล็อต ฟรี ส ปิ น ถอน ได้ เข้า nova88 เกม ไม่ ต้อง ลงทุน ได้ เงิน จริง เข้า เล่น เกม live22 slot เค ดิ ต ฟรี ไม่ ต้อง แชร์ ฝาก 20 รับ 100 ท รู วอ เลท ส โบ เบ็ ต 888 สล็อต สล็อต แจก ฟรี 200 pg slot apk download โหลด xoslot สล็อต ค่าย playstar gclub slot iphone เกมส์ ฝาก ไม่มี ขั้น ต่ํา ทาง เข้า amb555fifa555hd สล็อต ที่ เติม วอ เลต joker slot91 slotxo lucky god2 สล็อต แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2560 joker slot asia slotxo 555 สล็อต ออนไลน์ เติม วอ เลท epicwin xo ts911 asia pg soft leprechaun riches mafia slot ใหม่ joker สล็อต 999 โจ๊ก เกอร์ 8888 หมุน สล็อต ฟรี 15 ครั้ง โค้ด 333be ล่าสุด 2020 สล็อต ออนไลน์ ได้ เงิน จริง pantip slot mafia999 nova88 maxbet สล็อต สมัคร 100 แจก เครดิต ฟรี 20 บาท สูตร บา คา ร่า เข้า ได้ ทุก เว็บ slot 999 vip สูตร บา คา ร่า ที่ แม่น ยํา ที่สุด สล็อต 2019 เล่น เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน 2020 แจ็ ค พอ ต โจ๊ก เกอร์ avenger ฟรี เครดิต ดาวน์โหลด โจ๊ก เกอร์ 168 scr888 สล็อต ออนไลน์ โจ๊ก เกอร์ เกม 123 mm88fifa 2 avenger แจก เครดิต ฟรี ค้นหา เกม สล็อต วัน นี้ สล็อต ตัว ไหน แตก slot live22 pg เกม supreme caishen สมัคร สล็อต ไว กิ้ ง mafia 007 เกม สล็อต ออนไลน์ candy สล็อต slot mafia888 สมัคร ฟรี สล็อต สล็อต pussy 888 โปร เว็บ สล็อต สล็อต คน เล่น เยอะ ที่สุด joker123th pc เกม สล็อต gtm โหลด เกมส์ พุซซี่ สล็อต 918 ฟรี เครดิต ไม่ ต้อง ฝาก เงิน 2020 เว็บ มังกร 888 slot ฝาก ทาง วอ เลท pg slot ฝาก ถอน ไม่มี ขั้น ต่ำ สล็อต วอ เลท เครดิต ฟรี ufa191 ฝาก ถอน ได้ เอง ยู เบ็ ต 89 เกมส์ เล่น ได้ เงิน จริงๆ สมัคร joker123net เติม เกม joker slotxo 168 สล็อต สมัคร 100 pg slot 999 ดาว โหลด pg slot ดาวน์โหลด สล็อต โจ๊ก เกอร์ joker slot 169 สล็อต 1 บาท ก็ รวย ได้ j0ker gaming slot gam ยูสเซอร์ ทดลอง slotxo j0ker gaming รวม เกมส์ ได้ เงิน จริง 2019 joker โหลด เกม สล็อต สมัคร ผ่าน วอ เลท เกมส์ สล็อต 999 เว็บ โจ๊ก เกอร์ เกม ส ส ล็ อด best88 slot apk download ดาวน์โหลด โจ๊ก เกอร์ สล็อต เติม เงิน joker123 สมัคร slot 1688 เล่น slot007 ผ่าน เว็บ slotxo 888th ฟรี เค ดิ ต ไม่ ต้อง ฝาก 2020 เว็บ สล็อต ฝาก 20 รับ 100 เกม ที่ เล่น แล้ว ได้ เงิน จริง ไม่ ต้อง ลงทุน 2020 เกม ไม่ ต้อง ลงทุน slot 35 joker เกมส์ สล็อต 999 สล็อต pg 99 เล่น เกม ได้ เงิน จริง 2018 pg pocket games joker สล็อต 99 เกม เล่น แล้ว ได้ เงิน ไม่ ต้อง ลงทุน สล็อต ฝาก ทาง วอ เลท สมัคร เกม สล็อต 888 wwwfifa9999 เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน pg slot ฝาก วอ เลท ทาง เข้า amb555fifa555hd สล็อต joker วอ เลท สล็อต ที่ มี คน เล่น มาก ที่สุด แจก ฟรี 300 สล็อต ทดลอง เล่น สล็อต joker ฟรี http www joker123 net gameindex joker auto slot บอล ต่อ น่า เล่น วัน นี้ slot รวม ทุก ค่าย สมัคร mafia888 โหลด สล็อต joker 168 reddragon88 วง ล้อ เสี่ยง โชค ฟรี เล่น สล็อต ออนไลน์ เว็บ ไหน ดี ดาว โหลด เกม pussy888 ทาง เข้า โจ๊ก เกอร์ 123 ผ่าน หน้า เว็บ โจ๊ก เกอร์ 88 slot v ได้ เงิน จริง ไหม สมัคร ยิง ปลา ฟรี เครดิต ดั ม มี่ กิน ตัง จริง สมัคร xe88 slot เล่น เกม ออนไลน์ ฟรี ได้ เงิน joker slot ทดลอง slot joker303 mafia88 ทดลอง เล่น สลอด เกม 66 slot vip 168 slot joker55 123xbet เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน joker123 club สมัคร heng555 ทาง เข้า mafia1688 เล่น slot online เว็บ สล็อต ที่ ดี ที่สุด แนะ นํา เว็บ สล็อต 2020 ทาง เข้า 55slot xo สล็อต ออนไลน์ ฝาก 1 บาท รับ 100 สมัคร สมาชิก เม ก้า 888 jokerth slotjoker 35 สล็อต ais sagame168 th สล็อต 1 บาท ก็ รวย ได้ รีวิว เกม ยิง ปลา ฟรี เงิน เดิมพัน ไม่ ต้อง ฝาก รับ เครดิต ฟรี mafia สล็อต โจ๊ก เกอร์ แตก ง่าย ล่าสุด เว็บ slot ฝาก เงิน ผ่าน วอ เลท slot คน เล่น เยอะ ดาว โหลด slot xo ฟรี เค ดิ ต ไม่ ต้อง ฝาก fifa55avg สล็อต เล่น ผ่าน วอ เลท เว็บ สล็อต ฝาก ท รู วอ ล เล็ ต ฟรี เงิน เดิมพัน 2020 โจ๊ก เกอร์ 6666 ป๊อก เด้ง ออนไลน์ แจก เครดิต ฟรี สล็อต เติม วอ ล เล็ ท สล็อต แตก ง่าย ล่าสุด เกม xo ออนไลน์ ซื้อ ฟรี ส ปิ น ค่าย pgยู ฟ่า 365 joker gaming ฟรี เครดิต วิธี ดาวน์โหลด แอ พ มือ ถือ ผ่าน link https www gclubhouse com download เว็บ รวม สล็อต ทุก ค่าย ไพ่ สล็อต epicwin สมัคร เครดิต ฟรี avenger เล่น เกมส์ slotxo เล่น เกม ฟรี เครดิต เกม แคน ดี้ สล็อต เล่น โจ๊ก เกอร์ ี ufa168bet ฝาก sboibc888 เกม เม ก้า 888 เกม เล่น แล้ว ได้ เงิน เข้า บัญชี จริง scr888 สล็อต ออนไลน์ ฝาก 300 รับ เพิ่ม 200 เกม ยิง ปลา สมัคร ฟรี แจก เครดิต ฟรี mafia สล็อต ตัว ไหน แตก ง่าย ดาว โหลด joker slot nova88 maxbet pg slot ฝาก ผ่าน วอ เลท สล็อต pg 99 โปร 100 live22 เกม สล็อต ใหม่ ๆ สล็อต 918 เครดิต ฟรี slot joker999th เล่น สล็อต แจก เครดิต ฟรี ทาง เข้า เว กั ส 168 pussy888 หน้า เว็บ mafia slot 888 epicwin auto winner88 club com สมัคร เล่น สล็อต ออนไลน์ ฟรี slot live22 pgสล็อต xo เล่น ผ่าน เว็บ slot999 เติม เงิน ไม่ เข้า sboibc888 ดี ไหม joker 123 th ไลน์ เข้า สู่ ระบบ ufa191 สล็อต 777 ฝาก ขั้น ต่ํา 100 ufascr ดี ไหม jokerslotabc เล่น ป๊อก เด้ง ได้ เงิน จริง โหลด live22slot เว็บ สล็อต วอ เลท สล็อต ที่ ได้ เงิน ง่าย ที่สุด pg slot 567 สมัคร pg เกม สล็อต คิง ค อง pg slot 311 ทดลอง เล่น ฟรี สล็อต joker mafia88 ทดลอง เล่น แจก เงิน เดิมพัน ฟรี โปร สล็อต ฟรี โหลด เกมส์ สล็อต 22 slotxo เกมส์ ไหน แตก ง่าย 2020 สล็อต ออนไลน์ โปร โม ชั่ น เว็บ ทดลอง เล่น สล็อต ฟรี ufabet1688 com agreement8 aspx เกม เล่น แล้ว ได้ เงิน จริง ไม่ ต้อง ลงทุน avenger slot ฟรี เครดิต 2020 สล็อต ฝาก ถอน วอ ล เล็ ต บอล ต่อ น่า เล่น วัน นี้ ฟรี slot แจก โค้ด bet911 ufa888 เร็ว joker xoth โปร ฝาก 200 แจ้ง ฝาก sbobetstep mafia slot 777 ufavip848 แจก เครดิต ฟรี สล็อต ที่ เติม วอ เลต โหลด เกม สล็อต joker สล็อต หมุน ฟรี ไม่ ต้อง ฝาก ยู ส ทดลอง slotxo เกม ไพ่ แลก เงิน ได้ จริง joker gaming ฟรี เครดิต avenger slot ฟรี เครดิต เครดิต แจก ฟรี สล็อต joker999 ufa 600 best88 slot apk สมัคร xe88 slot สล็อต ฝาก วอ ล เลท 10 รับ 100 ทาง เข้า เว็บ https www uro168club com สล็อต แจก เค ดิ ต ฟรี fifa55 atm เข้า เล่น โจ๊ก เกอร์ 123 เกม ออนไลน์ 123 เกม ผล ไม้ ได้ เงิน จริง slot king168 โหลด คิด 918เว็บ ปั่น สล็อต ยู ฟ่า สล็อต แตก ง่าย สล็อต เติม ผ่าน วอ เล็ ต ฝาก ขั้น ต่ํา 50 joker ฝาก 20 สล็อต โจ๊ก เกอร์ แจก เครดิต ฟรี สมัคร vegus69 โปร โม ชั่ น วัน เกิด slot slot live22 pgสล็อต xo เล่น ผ่าน เว็บ game demo slot pg soft ทดลอง ซื้อ ฟรี ส ปิ น sweet bonanza เกม สล็อต เติม เงิน ผ่าน wallet joker เล่น บน เว็บ ดั ม มี่ กิน ตัง จริง pantip สล็อต jokergameslot โหลด เกม เล่น ได้ เงิน จริง ruby888 กระเป๋า เงิน slotxo ambbo ดาวน์โหลด โจ๊ก เกอร์ 168 สล็อต ให้ เครดิต ฟรี pg ดาวน์โหลด 1234 pg slot โจ๊ก เกอร์ 789 เล่น เกม ได้ เงิน จริง ไม่ ต้อง ลงทุน 2018 แต้ม รีวอร์ด fun88 คือ pg slot ฝาก
                          สล็อต jdb แจก เครดิต ฟรี 2019| slotxo899| สล็อต 168xo| 1xbet casino| สล็อต แลก ของ รางวัล| สล็อต ออนไลน์ เล่น ฟรี| สล็อต joker888| กลุ่ม ไลน์ เกม สล็อต| โจ๊ก เกอร์ สล็อต 99| สล็อต 222| เกม สล็อต ฝาก ไม่มี ขั้น ต่ํา| โหลด เกม ได้ เงิน จริง| casino on| เกม สล็อต ทั้งหมด| ค่าย เกม cq9| skykings casino| เกม สล็อต ค่าย pg| mafia slot| ส โบ เบ ท 24| สมัคร วัน นี้ รับ เครดิต ฟรี ทันที| เกม ฟัน สิงโต| เกม สล็อต เกม สล็อต| double casino| เกม ยิง ปลา jdb| jokerxo24th| สล็อต ออนไลน์ ได้ เงิน จริง| mafia333 สล็อต| เว็บ ยิง ปลา ค่าย sg| zulu casino| mafia718 เล่น แล้ว รวย| แค่ สมัคร ก็ รับ เครดิต ฟรี 2020| เล่น เกม ยิง ปลา ฟรี| joker ผ่าน เว็บ| เว็บ ฝาก ขั้น ต่ํา 100| slot ค่าย rt| สล็อต ฟรี เครดิต ไม่ ต้อง ฝาก ต้อง แชร์ ถอน ได้ 2020| ยิง ปลา สล็อต xo| คา สิ โน แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ 2018| สล็อต fun88| slot อันดับ 1| ลอง เล่น ยิง ปลา| เว็บ โจ๊ก เกอร์ 123| pg slot 2020| สมัคร สล็อต จี คลับ| เกม ฟรี pg| twin79 สล็อต| สล็อต ที่ ได้ เงิน ง่าย| เกม สล็อต ฝาก ไม่มี ขั้น ต่ํา| roma slot 777| casino mobile| โหลด 918| สมัคร gclub slot| web slot joker| holiday casino| โหลด เกม 918kiss เวอร์ชั่น ล่าสุด| slot roma| เว็บ เกม ได้ เงิน จริง| สล็อต 1168| ยิง ปลา 300| twin79 สล็อต| เว็บ sbobet| โจ๊ก เกอร์ เล่น ผ่าน เว็บ| แทง ส โบ เบ็ ต| สล็อต ฝาก 50 รับ 200| slot ยิง ปลา| เค ดิ ต ฟรี โจ๊ก เกอร์|