1. <nobr id="aLy"></nobr>
          <code id="aLy"></code>
          <nobr id="aLy"><var id="aLy"></var></nobr>
        2. <menuitem id="aLy"><strong id="aLy"><dl id="aLy"></dl></strong></menuitem>

          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
           
          xe88 สมัคร เกม สล็อต แมว slotxo 123 ยิง ปลา ได้ เงิน ง่าย แอ พ เกม ยิง ปลา ได้ เงิน จริง joker เกม เล่น สล็อต joker ผ่าน เว็บ bonusslot99 สล็อต หมุน ฟรี 2020 เกม winner55 ฝาก 10 รับ 100 ล่าสุด เกม สล็อต ยอด นิยม ยิง ปลา ไม่ แตก เล่น สล็อต joker ผ่าน เว็บ casinovegas เล่น live22 kinglive22 svenbet casino slot joker game golden casino betmaster casino สล็อต เครดิต ฟรี 500 ถอน ได้ 2019 joker slot 1668 สล็อต ผ่าน วอ เลท สล็อต ยิง ปลา ได้ เงิน จริง allslot888 เกม roma เว็บ เกม ยิง ปลา ได้ เงิน จริง สล็อต 666 ฟรี เครดิต สล็อต เติม true wallet ไม่มี ขั้น ต่ํา 2020 10 รับ 100 วอ เลท สล็อต ออนไลน์ มือ ถือ ที่ ดี ที่สุด epic สล็อต ยิง ปลา โจ๊ก เกอร์ 123 เว็บ ยิง ปลา แจก เครดิต ฟรี ไม่ ต้อง ฝาก เล่น 918kiss ผ่าน เว็บ สล็อต เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน แอ ป เล่น สล็อต sbobetonline24 casino โหลด pg slot betcruise ส ล๊ อ ต ค่าย pg สล็อต ฝาก 10 รับ 100 ล่าสุด สล็อต ใหม่ ล่าสุด เกม สล็อต 2020 เกม สล็อต 123 สล็อต เว็บ ไหน ดี ได้ ง่าย 918kiss ยิง ปลา สมัคร สมาชิก สล็อต ไม่มี ขั้น ต่ำ joker slot 978 www777 casino เกม ยิง ปลา โจ๊ก เกอร์ เกม ยิง ปลา ได้ ตัง joker slot 1888 joker99th สล็อต ออนไลน์ อัน ไหน ดี เกม ace333 ได้ เงิน จริง ไหม สล็อต ออนไลน์ มือ ถือ 888 เกม puss ยิง ปลา ค่าย ไหน แตก ง่าย แอ พ เกม ยิง ปลา ได้ เงิน สล็อต ฝาก เงิน ท รู้ วอ ล เล็ ต pg ลอง เล่น 918kiss เข้า ไม่ ได้ สล็อต เล่น ฟรี ฝาก 10 รับ 100 เข้า ส โบ เบ็ ต มือ ถือ xo1688 สล็อต ฝาก 100 ได้ 100 สล็อต ฝาก 10 รับ 100 วอ เลท สล็อต ฝาก 99 รับ 300 mafia สล็อต สล็อต ฝาก ผ่าน วอ เลท สล็อต ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 สล็อต ยืนยัน ตัว ต้น รับ เครดิต ฟรี สล็อต ออนไลน์ 2020 สล็อต live22th สล็อต pussy88 โจ๊ก เกอร์ สล็อต 888 สล็อต มาเฟีย 99 kg88 สล็อต เกม sugar pop ได้ เงิน สมัคร เล่น สล็อต ไม่มี ขั้น ต่ำ สล็อต ฝาก ผ่าน ท รู วอ เลท sweet bonanza เครดิต ฟรี ไม่ ต้อง ฝาก svenbet casino สล็อต เติม true wallet ไม่มี ขั้น ต่ํา 2020 สล็อต 9 เล่น เกม ตก ปลา ได้ เงิน สล็อต rt เกมส์ ยิง ปลา แจก เครดิต ฟรี slot ลอง เล่น puss 888 สล็อต 918kiss แจก เครดิต ฟรี ไม่มี ค่า ใช้ จ่าย สล็อต v ยิง ปลา ค่าย ไหน ดี เกม ยิง ปลา ได้ เงิน จริง มือ ถือ หน้า เกม โจ๊ก เกอร์ สล็อต xo24 สล็อต ไหน ดี สุด เว็บ ฝาก ขั้น ต่ํา 50 joker คา สิ โน www777 casino สล็อต ค่าย fc ปั่น สล็อต โจ๊ก เกอร์ roma slot 777 lsm99 ยิง ปลา สล็อต star vegas แอ พ สล็อต แจก เครดิต ฟรี สล็อต ออนไลน์ เล่น ได้ เงิน จริง ปอย เปต pantip สล็อต 47 ค่าย เกมส์ jdb เล่น ยิง ปลา ได้ เงิน mafia แจก เครดิต สล็อต เติม เงิน ผ่าน wallet joker game 888 สล็อต 888 ฟรี เครดิต เกม joker ทั้งหมด สล็อต เติม true wallet ไม่มี ขั้น ต่ํา 2020 เว็บ i99win joker ยิง ปลา โหลด เกม ยิง ปลา ฟรี สล็อต มาเฟีย 99 168 pg slot เกม ออนไลน์ joker เว็บ slot เกม สล็อต ฟรี god of fortune ยิง ปลา สล็อต ufa เกม ค่าย pg fun88 เกมส์ เว็บ เล่น สล็อต ฟรี royal casino online เว็บ mm88now มาเฟีย สล็อต มา ใหม่ sbobet แทง บอล ออนไลน์ joker slot 234 pg slot โปร joker8899z สล็อต joker888 เว็บ เกม ยิง ปลา คา สิ โน joker สล็อต 123 มาเฟีย เกม ยิง ปลา เล่น แล้ว ได้ เงิน จริง blackjack mobile slot1234joker ดู เกม สล็อต โหลด สล็อต 918kiss slot roma joker joker slot เข้า สู่ ระบบ สล็อต มาเฟีย เครดิต ฟรี ไม่ ต้อง แชร์ slot ยิง ปลา slot ค่าย rt เว็บ พนัน ฝาก ถอน ไว เกม มา รวย 99 ถอน ได้ ไหม เว็บ หวย คา สิ โน สล็อต ฝาก ถอน ไม่มี ขั้น ต่ำ เกม สล็อต ไม่ เสีย ตัง เกม ยิง ปลา ฟรี เกม ค่าย sg mafia สล็อต 3win2u online casino จี คลับ สล็อต มือ ถือ ฟรี as casino gtr casino sweet bonanza เว็บ ไหน ดี line casino เว็บ ส ตา ร์ เว กั ส คา สิ โน ออนไลน์ joker allwin casino ตู้ สล็อต ออนไลน์ mafia แจก เครดิต โหลด สล็อต 007 sbobet บอล สด fortuin casino slot ค่าย rt taibet88 ยิง ปลา jili monopoly slot เกม ยิง ปลา ฝาก ไม่มี ขั้น ต่ํา สล็อต 96 เกม สล็อต ที่ แจก เครดิต ฟรี สล็อต เกม ฟรี casino live หมุน สล็อต เกม สล็อต ได้ เงิน ง่าย เว็บ ยิง ปลา ค่าย sg เว็บ สล็อต 888 666 เกม ออนไลน์ ค่าย joker joker mvp เข้า สู่ ระบบ asia 999 casino เกม สล็อต แจก เครดิต ฟรี เว็บ poipet slot vip 88 เกม สล็อต ออนไลน์ joker slot game 66 pantip สล็อต ฝาก 1 รับ 100 เกม ออนไลน์ 99 เกมส์ jdb ยิง ปลา ฟรี ได้ เงิน ยิง ปลา pg gold club casino joker slot 978 เกม pg slot fugaso สล็อต เครดิต ฟรี ได้ เงิน จริง เกม ยิง ปลา ได้ ตัง จริง slot 666 เว็บ พนัน ออนไลน์ โจ๊ก เกอร์ goldfishka casino golden casino เกม ออนไลน์ โจ๊ก เกอร์ คา สิ โน 6666 โหลด เกม ยิง ปลา pc ยิง ปลา lsm99 โหลด สล็อต 007 เข้า เกม joker 285 คา สิ โน ยิง ปลา lsm99 slotxo เกม ยิง ปลา joker คา สิ โน mafia88 ทั้งหมด สล็อต แจก ฟรี 300 เกม สล็อต ที่ แตก ง่าย ที่สุด สล็อต ฮิต โบนัส เงิน คืน ตู้ ผล ไม้ สล็อต pg game slot เว็บ โจ๊ก เกอร์ 777 สล็อต ฟรี 100 w88 live slot ทั้งหมด เกม คา สิ โน 888 demo ยิง ปลา แอ พ เกม สล็อต slot game 1688 สล็อต โร ม่า ฟรี คา สิ โน โอน วอ ล เลท สมัคร รับ เครดิต ฟรี ทันที ไม่ ต้อง ฝาก เกม ฟรี สล็อต คา สิ โน 6666 ลอง เล่น joker pgslot99 โหลด แอ พ โจ๊ก เกอร์ คา สิ โน เกม สล็อต เล่น ฟรี ได้ เงิน จริง เข้า เกม สล็อต สล็อต แพนด้า สล็อต เกม 666 สล็อต พัน ทิป โจ๊ก เกอร์ slot เกม ยิง ปลา เว็บ ไหน ดี 2020 m888 casino สล็อต 3d ส โบ เบ็ ต ออนไลน์ 24 เว็บ ufascr แทง สกอร์ สูง ต่ํา สมัคร สมาชิก รับ เครดิต ฟรี live22 ยิง ปลา slot jili ecopayz casino สล็อต ฟรี เครดิต ถอน ได้ 2020 เว็บ หวย ค่า สิ โน slot mate สล็อต ยืนยัน เบอร์ รับ เครดิต ฟรี 2020 ยิง ปลา jili ace333 เข้า สู่ ระบบ 369 สล็อต สล็อต ออนไลน์ pg 918kiss เล่น หน้า เว็บ dasist casino เล่น slot ฟรี เข้า เกม pussy888 สล็อต 96 ยิง ปลา ส ตา เว กั ส แอ พ เกม ยิง ปลา ได้ เงิน จริง winpalace คา สิ โน ท รู วอ เลท sbobet 55 pg slot4u www777 คา สิ โน ปั่น สล็อต คือ ส โบ เบ็ ต 89 สล็อต ทุน น้อย เกม ยิง ปลา slotxo สล็อต 888 ฟรี เครดิต โหลด ยิง ปลา เกม ออนไลน์ เงิน จริง สล็อต ค่าย sg เกม สล็อต พัน ทิป เล่น สล็อต ผ่าน หน้า เว็บ joker vip 999 joker89th โปร ยิง ปลา 918 สล็อต ออนไลน์ power stars slot เกม ยิง ปลา แลก ของ รางวัล สล็อต ออนไลน์ 918 pop slot สล็อต gclub168 เว็บ พนัน ขั้น ต่ํา 100 สล็อต ฝาก ผ่าน วอ เลท ยิง ปลา 918 สล็อต 444 เกม แจก เค ดิ ต ฟรี ลอง เล่น เกม สล็อต ปอย เปต 888 เว็บ สล็อต ค่าย jdb ฟรี เครดิต joker gaming ยิง ปลา ยิง ปลา กระสุน ฟรี 300 เกม สล็อต ทุก ค่าย เกม สล็อต ฝาก ขั้น ต่ํา 50 บาท เครดิต ฟรี เกม สล็อต mafia88 th เล่น เกม ยิง ปลา ออนไลน์ สล็อต เกม 6 6 slotxo311 โหลด เกม ได้ เงิน 2xl สล็อต เกม สล็อต โจ๊ก เกอร์ 123 king สล็อต สล็อต 3d สล็อต jdb เข้า เล่น joker วิดีโอ เกม เว็บ สล็อต 918 สล็อต ออนไลน์ joker เล่น สล็อต ฟรี ได้ เงิน จริง เกม ฝาก ขั้น ต่ํา 1 บาท ฝาก 9 บาท รับ 100 แอ พ เกม ยิง ปลา เล่น สล็อต joker แคน ดี้ แจก เครดิต ฟรี internet casino pg slot เล่น ฟรี มาเฟีย 88 สล็อต สล็อต มาเฟีย 928 สล็อต ฝาก 50 รับ 300 mafia slot ฟรี เครดิต คา สิ โน ออนไลน์ แจก เครดิต ฟรี 2020 สล็อต ที่ นิยม สล็อต มาเฟีย เครดิต ฟรี ไม่ ต้อง แชร์ สล็อต ท รู วอ เลท คา สิ โน ออนไลน์ เครดิต ฟรี 2019 สล็อต เครดิต ฟรี 100 ไม่ ต้อง แชร์ 2020 fin888 casino สล็อต วอ ล เล็ ต สล็อต มือ ถือ ออนไลน์ ลอง เล่น เกม ยิง ปลา slot อันดับ 1 เข้า เล่น joker123 เว็บ สล็อต 777 คา สิ โน ท รู วอ เลท เว็บ เกม สล็อต เกม สล็อต เล่น ได้ เงิน สล็อต ยืนยัน otp รับ เครดิต ฟรี w88 ยิง ปลา w777w casino 918 เล่น ผ่าน เว็บ สล็อต ออนไลน์ ดี ที่สุด เกม สล็อต ฝาก 10 ได้ 100 playboy slot ฝาก 15 รับ 100 ล่าสุด คา สิ โน ออนไลน์ เครดิต ฟรี 2020 sbobet 24 hr พนัน บอล ออนไลน์ sbobet เว็บ เกม ออนไลน์ 888 เกม sugar pop ส โบ เบ็ ต 89 slot007 เล่น ผ่าน เว็บ thubet casino เกม joker 918kiss สมัคร สมาชิก ใหม่ โบนัส 100 สล็อต ออนไลน์ ได้ เงิน จริง ไหม สล็อต ผ่าน ท รู้ วอ เล็ ต สล็อต เครดิต ฟรี 200 slotmafia88 สล็อต 1 บาท pg slot4u ยิง ปลา fishing war เกมส์ สล็อต ได้ เงิน จริง ไม่ ต้อง ลงทุน สล็อต แจก เครดิต ฟรี 2019 ล่าสุด 777 สล็อต เกม เกม ยิง ปลา 88 slotmafia88 fairspin casino slot ค่าย rt เข้า สู่ ระบบ joker1888 สล็อต ออนไลน์ มือ ถือ 777 สล็อต ค่าย ไหน แตก ง่าย 2020 ttai999 สล็อต ซอมบี้ เกม ยิง ปลา ฟรี ได้ เงิน จริง สล็อต ฟรี ได้ เงิน จริง god สล็อต สล็อต เติม true wallet ไม่มี ขั้น ต่ำ ปั่น สล็อต 1 บาท slot888 game เว็บ หวย คา สิ โน happyslot88 เว็บ สล็อต 777 เกม สล็อต ได้ เงิน จริง 888 slot ค่าย sg สล็อต ฝาก 100 ได้ 100 เครดิต ฟรี epicwin เครดิต ฟรี แค่ สมัคร รับ เลย สล็อต ยิง ปลา เล่น เกม โจ๊ก เกอร์ ผ่าน หน้า เว็บ แอ พ เกม ยิง ปลา ได้ เงิน จริง สมัคร 918kiss ยิง ปลา sg เกม ยิง ป่า 10 รับ 100 ล่าสุด เกม สล็อต เล่น ได้ เงิน จริง สล็อต slot สล็อต แจก เครดิต ฟรี 2020 ปอย เปต 123 สล็อต โจ๊ก สล็อต 888 ฟรี เครดิต เกม สล็อต เครดิต ฟรี ไม่ ต้อง ฝาก 2020 slot เล่น ฟรี ได้ เงิน จริง 777 bet slot007 line สล็อต ฝาก 19 บาท รับ 100 sbobet vip สล็อต 4u pg slot 123 มาเฟีย สล อ ต เกม สล็อต เค ดิ ต ฟรี สล็อต เว็บ ใหม่ สล็อต pp allbet789 เกม ยิง ปลา ที่ ได้ เงิน จริง 1234 เกม แอ พ สล็อต ออนไลน์ เกม ยิง ปลา xo พนัน 365 gate 777 casino ยิง ปลา ได้ เงิน ง่าย slot เล่น ผ่าน เว็บ เว็บ เกม ยิง ปลา สล็อต แตก บ่อย ยิง ปลา ออนไลน์ ได้ เงิน จริง เกม รอยัล สล็อต เข้า เล่น เกม โจ๊ก เกอร์ ฝาก 50 รับ 100 วอ เลท สล็อต ออนไลน์ ยอด นิยม สล็อต ฝาก true wallet v9 สล็อต ยิง ปลา pc ถอนเงิน เกม สล็อต ยิง ปลา 2020 สล็อต โร ม่า ฟรี slot168th blackjack casino online สล็อต ออนไลน์ 1688 casino top 10 ฝาก 50 รับ 100 สล็อต wallet เครดิต ฟรี สล็อต มาเฟีย 888 สล็อต เว็บ ใหม่ สล็อต แจก ฟรี เครดิต เล่น สล็อต โจ๊ก เกอร์ ฟรี สล็อต jdb แจก เครดิต ฟรี 2019 เกม ยิง ปลา ฟรี เครดิต 300 all casino bet fun88 เกมส์ ufabet ไม่ ผ่าน เอเย่นต์ เว็บ ฝาก ไม่มี ขั้น ต่ํา สล็อต ใช้ วอ เลท slotxo311 35 สล็อต slot joker888 joker game 123 สล็อต 123 มาเฟีย nikigame777 เกม ยิง ปลา fun88 สล็อต 918 ฝาก ขั้น ต่ํา 1 บาท sbobz เกม สล็อต ได้ เงิน จริง ไหม mafia789 เวฟ เกม สล็อต เว็บ โจ๊ก เกอร์ ฝาก ถอน ไม่มี ขั้น ต่ํา เกม สล็อต ออฟ ไลน์ สล็อต 999 ฟรี สมัคร รับ เครดิต ฟรี ทันที ล่าสุด sweet bonanza เล่น ฟรี สล็อต ออนไลน์ 2019 เว็บ mm88fc เพจ เกม สล็อต 123vip เว็บ เกม ที่ ดี ที่สุด win casino สล็อต 1234 สล็อต ฝาก 10 รับ 100 วอ เลท เกม ยิง ปลา sa 8899 casino line casino mafia slot แจก เครดิต ฟรี www777 casino สมัคร รับ เครดิต ฟรี ทันที ไม่ ต้อง แชร์ สล็อต ฝาก 1 บาท โบนัส 99 internet casino mafia 789 slot ส โบ เบ็ ต คา สิ โน ฝาก 50 รับ 100 เล่น สล็อต ฟรี ได้ เงิน จริง สล็อต ฝาก 19 บาท รับ 100 turbo vegas คา สิ โน 666 star vegas ฝาก ถอน ไม่มี ขั้น ต่ํา scr779th com เล่น ฟรี ได้ เงิน จริง w777w casino เกม สล็อต ฟรี เครดิต ไม่ ต้อง ฝาก 2020 เล่น สล็อต ได้ เงิน จริง slotciti สล็อต ลอง เล่น ตู้ สล็อต ผล ไม้ หยอด เหรียญ สล็อต ออนไลน์ มือ ถือ 888 slotxo the king 918 เล่น ผ่าน เว็บ 7gods casino เกม ยิง ปลา joker123 โหลด เกม 918kiss ios โหลด เกม 198 kiss ฝาก 10 บาท รับ 100 แนะ นํา เว็บ พนัน เกม ยิง ปลา royal casino slot4u pg เกม ยิง ปลา ฝาก ถอน ไม่มี ขั้น ต่ํา สล็อต ฝาก ผ่าน ท รู วอ เลท เกม ฟรี ได้ เงิน จริง 66 สล็อต เว็บ ออนไลน์ ไม่มี ขั้น ต่ํา จี คลับ 666 สล็อต cq9 โหลด เกม ค่า สิ โน สล็อต ฝาก 50 รับ 300 star vegas พัน ทิป 1 pg slot เกม ค่าย jdb 999 สล็อต พนัน สล็อต สล็อต ฝาก 100 ได้ 100 เกม 999 สล็อต เติม true wallet ไม่มี ขั้น ต่ํา 2020 สล็อต ส ตา ร์ สมัคร สมาชิก สล็อต เกม ฟรี สล็อต casino 440 casino เล่น เกมส์ ยิง ปลา ได้ เงิน จริง ไหม slot เล่น ผ่าน เว็บ โจ๊ก เกอร์ เกม ยิง ปลา เกมส์ ยิง ปลา เล่น แล้ว ได้ เงิน เค ดิ ต ยิง ปลา ฟรี slotsuper456 1bet2u jokergame 123 เกม ยิง ปลา อัน ไหน ดี เล่น pg หน้า เว็บ สมัคร วัน นี้ รับ เครดิต ฟรี สล็อต สล็อต ฝาก 19 บาท ได้ 100 เว็บ โจ๊ก เกอร์ 777 ปั่น สล็อต ฟรี เกม ยิง ปลา แลก เงิน super sic bo เกม roma เกม 918 สมัคร 918 mafia vip slot สล็อต ออนไลน์ เล่น ผ่าน เว็บ สล็อต มาเฟีย 678 ไลน์ sbobet สล็อต 99 ฟรี เครดิต สมัคร 918 สล็อต epic sbobetworldclass ยิง ปลา jdb gclub66 ยิง ปลา ออนไลน์ ได้ เงิน จริง narcos slot เล่น สล็อต ออนไลน์ ให้ ได้ เงิน pg pocket games slot เว็บ เกม เล่น ได้ เงิน viking casino เว็บ vip2541 ไม่ ผ่าน เอเย่นต์ 300 shields เอ ส บี โอ เบ ท สล็อต ปั่น ฟรี เกม โจ๊ก เกอร์ 89 เค ดิ ต ฟรี โจ๊ก เกอร์ fhm99 สมัคร สมาชิก thubet casino โหลด เกมส์ ยิง ปลา 918kiss slot 666 โหลด epicwin vip lounge casino แอ พ ยิง ปลา ได้ เงิน เว็บ ปั่น สล็อต ฟรี winpalace mafia789 เกม ยิง ปลา เล่น ได้ เงิน joker slot vip ฝาก 20 ฟรี 100 สล็อต สล็อต sg เกม สล็อต เครดิต ฟรี 2020 สล็อต 007 eaglebet casino สล็อต ฟรี ได้ เงิน จริง joker123 เข้า สู่ ระบบ slotsuper456 jdb ยิง ปลา swin99th joker123 เล่น ผ่าน เว็บ เล่น เกม ปลา ได้ เงิน เล่น สล็อต ฟรี เครดิต สล็อต ฟรี เครดิต ไม่ ต้อง ฝาก เงิน 2020 ยิง ปลา ufabet เว็บ สล็อต ออนไลน์ ฟรี เครดิต เกม สล 168galaxy มาเฟีย 123 สล็อต slotxo899 เว็บ สล็อต มาเฟีย joker888v1 star vegas pantip slot คา สิ โน slotxo79 joker slot vip เก น สล็อต pg slotxo ยู ฟ่า สล็อต เล่น เกม หน้า เว็บ joker slot007 มาเฟีย เกม ฟรี ได้ เงิน จริง สล็อต แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2562 เกม สล็อต ฝาก ขั้น ต่ํา 1 บาท สล็อต ยืนยัน otp รับ เครดิต ฟรี ace333 เข้า สู่ ระบบ ส โบ เบ็ ต 555 ฝาก 10 รับ 100 สล็อต แอ พ สล็อต ออนไลน์ ยิง ปลา ไม่ แตก เกม สล็อต ฟาโรห์ bk8 casino เกม ยิง ปลา fishing god โจ๊ก เกอร์ 123 ฝาก ถอน ไม่มี ขั้น ต่ํา slot คา สิ โน casino android เข้า ระบบ joker123 mmc996 แอ ป สล็อต เงิน จริง jili สล็อต gclub casino online แอ ป เล่น สล็อต เว็บ pg slot เกมส์ ยิง ปลา w88 เว็บ พนัน 999 เกม joker สล็อต ทุน น้อย the star vegas คา สิ โน แจก เครดิต ฟรี เล่น joker ผ่าน เว็บ เกม epicwin เกม ออนไลน์ ได้ เงิน ฟรี มาเฟีย สล็อต มา ใหม่ konung casino สล โจ๊ก เกอร์ สล็อต 918 ฝาก ขั้น ต่ํา 1 บาท เล่น เกม ตก ปลา ได้ เงิน royal spinz casino super cat casino pg slot เล่น ฟรี เกม ยิ่ง ปลา ออนไลน์ เกม ได้ เครดิต ฟรี สล็อต ts911 เว็บ สล็อต ค่าย jdb สล็อต 365 สล็อต ฝาก 19 บาท ได้ 100 epicwin ฟรี เครดิต hibet8 jokergame 123 slot pg 99 ยิง ปลา ได้ เงิน mafia สล็อต เครดิต ฟรี ค่าย เกมส์ jdb เกม ยิง ปลา ได้ ตัง จริง ไหม สล็อต ค่าย ใหม่ sbobet ดี ที่สุด เกม ยิง ปลา 999 เกม ยิง ปลา ได้ เงิน จริง ไหม joker pg slot เว็บ สล็อต ใหม่ เล่น 918kiss ใน เว็บ เกม สล็อต แจก เครดิต ฟรี psthai888 เล่น หน้า เว็บ โจ๊ก เกอร์ สล็อต 48 breakout casino sagame เครดิต ฟรี slot hunter casino สล็อต เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ 2019 เว็บ i99 เกม ace333 ได้ เงิน จริง ไหม ฝาก 20 รับ 100 วอ เลท ล่าสุด สล็อต ที่ แตก ง่าย ที่สุด เข้า ระบบ เกม สล็อต เกมส์ ยิง ปลา ได้ ตังค์ ตู้ ยิง ปลา เล่น สล็อต ผ่าน เว็บ พนัน บอล sbobet ลอง เล่น pg sbobet ส เต็ ป แทง ส โบ เบ็ ต เล่น สล็อต ผ่าน หน้า เว็บ mafia88 ทั้งหมด เล่น joker123 หน้า เว็บ 22 สล็อต เกม ออนไลน์ 88 เกม ยิง ปลา เจ้า มหาสมุทร web casino สล็อต โจ๊ก สล็อต เล่น ได้ เงิน จริง ecopayz casino ออ โต้ สล็อต เกม ยิง ปลา ฟรี เครดิต ไม่ ต้อง ฝาก ยิง ปลา xo สล็อต ใหม่ ล่าสุด live222 เข้า สู่ ระบบ สล็อต ออ โต้ สล็อต 360 mafia 444 slot เกม สล็อต เล่น ฟรี ปั่น สล็อต การ เล่น เกม ยิง ปลา joker เว็บ sbobet คือ เกม สล็อต ที่ แจก เครดิต ฟรี เกม ยิง ปลา star vegas เกม ยิง ปลา sg สล็อต 96 เกม สล็อต ค่าย pp โหลด คิด 918 fhm99 สล็อต ยิง ปลา หาเงิน คา สิ โน 285 sath88 สล็อต สล็อต luk666 เกม ยิง ปลา ที่ ดี ที่สุด คา สิ โน ออนไลน์ i99win riches888 เครดิต ฟรี สล็อต th เกม ยิง ปลา ios แอ พ เกม ยิง ปลา สล็อต สมัคร 10 ได้ 100 slot22th sbobet 24 hr คา สิ โน ออนไลน์ joker สมัคร สล็อต ฝาก 99 รับ 300 bslot88 taibet88 joker123 เข้า สู่ ระบบ สล็อต 69 jokercat44 เกม สล็อต dafabet สล็อต jdb แจก เครดิต ฟรี ไม่ ต้อง ฝาก เข้า เล่น เกม fhm99 918kis casino เกม ออนไลน์ 99 kg88 สล็อต fin888 casino เกม เล่น ฟรี ได้ เงิน จริง เกม สล็อต royal สล็อต ค่าย fc สล็อต ซอมบี้ mafia slot คา สิ โน ออนไลน์ เครดิต ฟรี 2019 ไม่ ต้อง ฝาก 777ww คา สิ โน พนัน 365 เครดิต ยิง ปลา ฟรี 2020 สล็อต joker1234 เว็บ ฝาก ไม่มี ขั้น ต่ำ สล็อต 48 เล่น ง่าย ได้ เงิน จริง เกม สล็อต ออนไลน์ joker เกม ยิง ปลา ไม่ เสีย เงิน สอน เล่น ยิง ปลา การ เล่น เกม ยิง ปลา ให้ ได้ เงิน โหลด สล็อต pg rb88 สล็อต เกม ยิง ปลา ได้ เงิน จริง มั้ ย stan james casino ยิง ปลา แตก ง่าย สล็อต 789 เกม สล็อต ได้ เงิน จริง ไหม มาเฟีย สล็อต 88 สมัคร เกม joker slot 1668 สล็อต เล่น ฟรี สล็อต 89 joker เข้า เกม casino 285 เว็บ พนัน โปร โม ชั่ น ดีๆ 2020 เวฟ เกม ยิง ปลา ค่าย เกม jdb สล็อต xo24 ลอง เล่น สล็อต ออนไลน์ mafia slot เล่น live22 ecopayz casino โหลด คิด 918 slotxo pg slotxo66 เกม สล็อต พัน ทิป sbobet member สล็อต เครดิต ฟรี 2020 เกม สล็อต jdb 21grandcasino เกม ออนไลน์ 168 joker เข้า เล่น 918kiss สมัคร สมาชิก ใหม่ โบนัส 100 ยิง ปลา ฟรี เครดิต 300 123 โจ๊ก เกอร์ สมัคร สมาชิก สล็อต ไม่มี ขั้น ต่ำ bk8 casino เกม ตู้ สล็อต fox casino เข้า ส โบ เบ็ ต มือ ถือ jack88 สล็อต สล็อต ออนไลน์ pg โหลด joker123 lsm99 casino เข้า เล่น เกม joker สล็อต huc99 ยิง ปลา ให้ ได้ เงิน เยอะ www mafia678 pg slot ลอง เล่น สล็อต เว กั ส casino2499 โหลด แอ พ เกม 918kiss ระบบ สล็อต สล็อต golden แอ พ สล็อต ได้ เงิน จริง เกมส์ ยิง ปลา แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2020 เกม 789 star vegas pantip สล็อต ออนไลน์ มือ ถือ ได้ เงิน จริง สล็อต ไหน ดี สุด star vegas pantip kinglive22 ระบบ สล็อต 168 slot pg ส โบ เบ็ ต 888 ค่า สิ โน มือ ถือ joker slot th slot ยิง ปลา gu918kiss แอ พ เกม ยิง ปลา ค่าย 918kiss สล็อต ออนไลน์ ฟรี เครดิต 2019 ล่าสุด สล็อต ค่าย cq9 ส โบ เบ็ ต 365 สล็อต v เว็บ ยิง ปลา แตก ง่าย slot เกม 66 สล็อต 47 สล็อต true wallet เครดิต ฟรี เล่น สล็อต ฟรี ได้ เงิน สล็อต ผ่าน ท รู วอ เล็ ต มาเฟีย สล็อต มา ใหม่ เว็บ sbobet ส โบ เบ็ ต 24 สล็อต ผ่าน ท รู วอ เล็ ต เล่น สล็อต ฟรี ได้ เงิน จริง 2019 แอ ป เล่น สล็อต ufabet ยิง ปลา สล็อต 666 sbobet ไม่ ผ่าน เอเย่นต์ w88 live สล็อต ฝาก ขั้น ต่ํา 1 บาท เกม ยิง ปลา เล่น ฟรี แพนด้า 777 สล็อต ออนไลน์ 666 1234 สล็อต 1234 สล็อต สล็อต แจก เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน เล่น mafia88 ผ่าน เว็บ ฝาก ถอน joker123 สล็อต ค่าย fc คา สิ โน 6666 as casino ปอย เปต 123 fugaso ubet89 สมัคร โหลด 918kissauto ยู ฟ่า สล็อต 168 ส โบ เบ็ ต ออนไลน์ 24 เล่น ยิง ปลา ฟรี สล็อต ที่ น่า เล่น เกม ยิง ปลา ที่ แตก ง่าย ที่สุด สล็อต ฝาก ถอน ไม่มี ขั้น ต่ํา วอ เลท 4kingslots มา รวย 99 เครดิต ฟรี แอ พ สล็อต แจก เครดิต ฟรี เครดิต ฟรี สล็อต วัน นี้ หมุน วง ล้อ ฟรี เกม สล็อต ได้ เงิน joker slot 2019 golden casino เกม ยิง ปลา แลก เงิน เล่น เกม ตก ปลา ได้ เงิน จริง สล็อต roma เล่น ฟรี เว็บ poipet freak casino สล็อต แลก เงิน จริง สล็อต เล่น ได้ ทุก ค่าย joker เล่น สล็อต ฝาก ผ่าน true wallet sbfplay99 ฝาก 10 รับ 100 ล่าสุด เว็บ เกม ได้ เงิน โร มา สล็อต ลิ้ ง โหลด เกม 918kiss sic bo เกม สล็อต pantip เกม ออนไลน์ 88 สล็อต อันดับ 1 เว็บไซต์ สล็อต joker gaming ยิง ปลา joker123 เข้า สู่ ระบบ เว็บ 888 สล็อต เล่น เกม สล็อต 918 sbobet 24 hr เว็บ สล็อต โร ม่า เกม เครดิต ฟรี ปั่น สล็อต ได้ เงิน จริง ตัว เกม โจ๊ก เกอร์ winpalace เล่น โจ๊ก เกอร์ ผ่าน หน้า เว็บ jokerxo555 เกม มาเฟีย 88 scg9 เกม ยิง ปลา 1 pg slot ลอง ปั่น สล็อต ฟรี sa casino เครดิต ฟรี 300 pg slot 777 dreamtech888 ลอง เล่น สล็อต ออนไลน์ วิดีโอ เกม เกม สล็อต ใหม่ ล่าสุด club casino สล็อต star vegas เกม ยิง ปลา ไม่ เสีย เงิน sco88 casino สล็อต มาเฟีย 123 เว็บ พนัน ออนไลน์ โปร โม ชั่ น เล่น เกม joker เว ป ส โบ เบ ต stan james casino เกม หมุน สล็อต ได้ เงิน จริง สล็อต ฝาก 20 ได้ 100 มาเฟีย สล็อต 88 skykings casino mafia88 สล็อต สล็อต เกม 666 สล็อต อัน ไหน ได้ เงิน ดี เกม สล็อต แตก ง่าย ได้ เงิน จริง สล็อต ฝาก ถอน ออ โต้ เกม สล็อต เงิน จริง โหลด เกม สล็อต 888 poker 21 เว็บ พนัน ขั้น ต่ํา 100 ufa168 ถอนเงิน สล็อต 2020 เกม โจ๊ก เกอร์ 888 สล็อต 444 เล่น 918kiss ให้ ได้ เงิน โหลด เกม kiss918 casino velkomstbonus สล็อต เครดิต ฟรี ไม่ ต้อง แชร์ 2020 เว็บ เล่น เกม ยิง ปลา สล็อต โจ๊ก เกอร์ ออนไลน์ psthai888 เกม ยิง นก ได้ เงิน live22 ผ่าน เว็บ epic สล็อต สล็อต ฝาก 25 รับ 100 สล็อต wallet เล่น สล็อต pg ฟรี joker เกม ไหน ดี เกม สล็อต 168 casino online casino crazy casino เกม ยิง ปลา ฝาก ขั้น ต่ํา 100 สล็อต หมุน ฟรี entaplay เกม สล็อต ออนไลน์ ได้ เงิน จริง pantip jdb สล็อต slotxo79 สล็อต 918 ฝาก ขั้น ต่ํา 1 บาท
          ฟุตบอล 7 คน แชมป์ กีฬา 7 สี 2019| เล่น แคน ดี้ ได้ เงิน| วิธี สมัคร เล่น บา คา ร่า| เกม ตอก รองเท้า| ฟุตบอล 2020| เกมส์ ยิ่ง ปลา คา สิ โน ฟรี เครดิต| rb88 โปร โม ชั่ น| sbobet บา คา ร่า| gclub4fun| โหลด เกม roblox ฟรี| คา สิ โน ออนไลน์ อันดับ 1| จี คลับ 1688| คา สิ โน| บา คา ร่า ออนไลน์ ฟรี เครดิต ฝาก ขั้น ต่ํา 100| gclub 1688| บา คา ร่า ถอน ขั้น ต่ํา 100| โหลด เกม roblox| เกม วิทยาศาสตร์| เกม ใหม่ 2020 ออนไลน์| บา คา ร่า ออนไลน์ ฝาก ขั้น ต่ํา 100| เกม y8 ทํา อาหาร| เกม ps1| เกม มือ ถือ 2020| เว็บ การ พนัน คา สิ โน| บา คา ร่า ufa365| มา ย ครา ฟ มิ นิ เกม| บา คา ร่า วอ เลท ufa191| บา คา ร่า คน เล่น เยอะ| เว็บ คา สิ โน ออนไลน์ ที่ น่า เชื่อถือ| จี 88888| เล่น free fire ใน คอม| เกม y8 ยิง ปื่ น| เกม ps5| ทดลอง รู เล็ ต| เล่น คา สิ โน| สยาม กีฬา แมน ยู| เกมส์ แต่งตัว เกาหลี| สยาม กีฬา วัน นี้| ดู อเมริกัน ฟุตบอล สด| เล่น เกม ฟรี| บา คา ร่า ออนไลน์ ฟรี เครดิต ฝาก ขั้น ต่ํา 100| เกม ก๊อ ต ซิ ล ล่า| เกม ปื่ น| โหลด เกมส์| เกม ยิง ปลา คา สิ โน ได้ เงิน จริง| เกม งู จอม ตะกละ| dg88win| คา สิ โน ออนไลน์ ได้ เงิน จริง ไม่ ต้อง ฝาก 2019| โหลด เกม ppsspp rom| เล่น พนัน ออนไลน์ ได้ เงิน จริง ไหม| บา คา ร่า 24| เกม nintendo switch 2020| เกมส์ ไดโนเสาร์ กระโดด ต้น กระบองเพชร| ดู สด ฟุตบอล| กีฬา ทั่วไป| บา คา ร่า ได้ เงิน ฟรี| เล่น บา คา ร่า ได้ เงิน จริง ไหม| fun88 ดั ม มี ออนไลน์| 918kiss โบนัส| เกม โหลด ฟรี| บา คารา| ข่าว กีฬา ลิเวอร์พูล วัน นี้| rov ใน คอม| เว็บ คา สิ โน ออนไลน์ เครดิต ฟรี| เว็บ คา สิ โน ฟรี เครดิต| ฟุตบอล วัน นี้ 7m|