<em id="22G94U"></em>

  • <form id="22G94U"></form>
    <nav id="22G94U"></nav>

      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
       
      ไป คา สิ โน ปอย เปต สล็อต สมาชิก ใหม่ ตัวแทน royal casino jetsadabet หวย ล็ อ ต โต้ เว็บ เจษฎา หวย ufa casino 55 ส ปิ น ฟรี เกม coin master wildslots casino sb0bet888 virgin88 เครดิต ฟรี สมัคร sbobet285 livescore sbobetonline เข้า เล่น จี คลับ 168 สล็อต royal online v2 สมัคร เว็บ fun88 sbobet 188 yoyo casino 43 วิธี ส ปิ น coin master poker online เว็บ ไหน ดี sbobeton บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น เว็บ พนัน ปอย เปต สมัคร sbobet คา สิ โน jetsada ปิด แจก เงิน ฟรี 300 ufa casino 55 เกม บิงโก ราคา ทาง เข้า sbo888 slot 918kiss auto เข้า sbo888 สล็อต ทุน ฟรี โปร โม ชั่ น จี คลับ UFABET gclub111111 sbobet เข้า ไม่ ได้ all new gclub ufa แจก เครดิต ฟรี 100 ไม่ ต้อง ฝาก sbobetwinner ทาง เข้า เว็บ lsm คา สิ โน ใน ปอย เปต สล็อต 918kiss เติม true wallet ไม่มี ขั้น ต่ํา แอ ป ส ปิ น ฟรี fun88 vip bestbetting casino pin casino โบนัส เครดิตฟรี แบบไม่ต้องฝากเงิน agent lsm99 wwwfun88 ส โบ เบ็ ต 888 mafia แจก เครดิต ฟรี ไม่ ต้อง แชร์ ฝาก 1 บาท รับ 100 ล่าสุด 2020 sbobet222 mobile สล็อต xov9 ฝาก 300 ฟรี 500 สล็อต ฝาก วอ เลท ไม่มี ขั้น ต่ํา lsm99online สมัคร เสื้อ fun88 ทาง เข้า gclub มือ ถือ gclub888888 auto sekabet casino โปร เกม coin master ส ปิ น ไม่ จํา กัด เข้า เว็บ jetsadabet ไม่ ได้ ส โบ เ ทาง เข้า sbobet999 ทีเด็ด บอล ส โบ เบ็ ต ฟรี ส ปิ น คือ บาคาร่า ฟรี ส ปิ้ น เว็บ พนัน บอล sbobet happyluke คา สิ โน ออนไลน์ sbomobi sbobet ibc casino 789 หา ส ปิ น ฟรี coin master ios viking clash slot ปอย เปต รีสอร์ท happyluke app GCLUB sbobet 433 jetsadabet เอ เย่ น เข้า เว็บ ส โบ บา คา ร่า 1688 เครดิต ฟรี สมัคร sbocopa หวย เจต พัน ทิป 918kissauto co คา สิ โน ออนไลน์ โปร โม ชั่ น โบนัสฝากเงินครั้งแรก 108% สูงสุด 5,000 บาท สมัคร ส โบ เบ ท แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 แค่ สมัคร pic5678 asia ลิงค์ สํา รอง dafabet happyluke มือ ถือ สมัคร live22th jetsadabet ดี ไหม pantip ทาง เข้า sbo8888 1688 gclub รับเลย 100% โบนัสแรกเข้าสล็อต, กีฬา,​ คาสิโน สูงสุด 10,000 บาท grim muerto slot ถอนเงิน fun88 เค ดิ ต ฟรี ไม่ แชร์ ทาง เข้า sbo8888 เสีย บา คา ร่า 4000 วิธี แทง ไฮโล ให้ ถูก เข้า ส โบ เบ็ ต 888 american poker 90 ทาง เข้า fun88 ล่าสุด scr 918kiss android download slotland 198 sbobet88899 gclub558 sbobet2222 เข้า ระบบ sbobet megawins casino sbobet เข้า ไม่ ได้ มือ ถือ ฟรี ส ปิ น เกม coin master fun88 มือ ถือ sbobet2222 casino happyluke 9 ล็ อ ต โต้ บา คา ร่าไฮโล ออนไลน์ ได้ เงิน จริง ผ่าน มือ ถือ joker 888 slot ทาง เข้า sbo มือ ถือ ล่าสุด สล็อต แจก ฟรี วัน เกิด วิธี เก็บ ส ปิ น coin master เกม โป๊กเกอร์ ออนไลน์ ล็ อ ต โต้ 1000 สปินฟรี coin master ฟรีไม่จํากัด โค้ด ส ปิ น coin master ล่าสุด วิธี เล่น แบ ล็ ค แจ็ ค สล็อต ฟรี เครดิต 100 2020 ทาง เข้า sbobet789 แจก ฟรี ไม่ ต้อง แชร์ hub88 casino โบนัสเว็บพนันออนไลน์ ส โม เบส 888 live house casino sl casino สมัคร วัน นี้ รับ เครดิต ฟรี 2020 เข้า เล่น gclub agent lsm99 บา คา ร่า 1688 เครดิต ฟรี royal online v2 8888 35x สล็อต coin master รับ ส ปิ น ฟรี วิธี หา ส ปิ น coin master live casino house ทาง เข้า เว็บ หวย เจษฎา ถอนเงิน jetsadabet ไม่ ได้ สมัคร จี คลับ 666 แบบ บิงโก ลิ้ ง dafabet www4 lsm2558 jetsadabet ปิด santa slot วิธี ส ปิ น coin master ฟรี เกม โป้ ก เกอร์ สมัคร เกม สล็อต ออนไลน์ บา คา ร่า วัน ละ 300 gclub god แจก ส ปิ น ฟรี coin master วัน นี้ หา กลุ่ม ไลน์ เครดิต ฟรี รอยัล คา สิ โน th สมัคร สมาชิก ฟรี เครดิต fan88 2020 all new gclub sbobet88899 สมัคร สมาชิก 918kiss โบนัส 100 a3ccc gclub sbobet official website สมัคร สมาชิก 918kiss โบนัส 100 spartacus casino coin master โปร ส ปิ น 5 dragon slot สมัคร poipet โบนัส Free Spin วิธี เอา ส ปิ น เกม coin master ปอย เปต บา คา ร่า ออนไลน์ หวย ออนไลน์ jetsadabet เว็บ แจก ส ปิ น coin master coin master ฟรีสปิน k9win ทดลอง เข้า ส โบ เบ ท โปร ส ปิ้ น เกม coin master rome vip casino สล็อต ที่ แตก บ่อย 24sbobet การ หา ส ปิ น ฟรี snake arena slot fun88 ถอนเงิน ช้า วิธี ได้ ส ปิ น ฟรี coin master ส ปิ น ฟรี coin master ios ล่าสุด แจก เครดิต สล็อต ฟรี bacc6666 สมัคร เกมสล็อต คืน ยอด เสีย สล็อต jetsadabet 8888 slot 918kiss auto lsm99 info poker online ฟรี fun788 ทาง เข้า เครดิต ฟรี 100 ไม่ ต้อง ฝาก 2019เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร เครดิต ฟรี ไม่ ต้อง ฝาก ufa ฝาก 100 ฟรี 100 ถอน ไม่ จํา กัดฟรี เครดิต 100 ไม่ ต้อง ฝาก 2020 เข้า ระบบ jetsadabet สล็อตออนไลน์ ฟรี เค ดิ ต ไม่ ฝาก ไม่ แชร์ fun788 มือ fan88 ล็อกอิน ทาง เข้า จี คลับ ล่าสุด gclub app wm casino pantip thai casino online web casino online การ หา ส ปิ น ฟรี E-Sport โบนัสต้อนรับ 100% สูงสุดถึง 1,000 บาท jetsadabet rerun sbothai mobile happyluke ฝาก เงิน 1168 สล็อต happyluke line sbobet7777 ufa แจก เครดิต ฟรี 100 ไม่ ต้อง ฝาก happyluke แจก 300 ล็ อ ต โต้ 8888 beer555 เครดิต ฟรี ไม่ ต้อง ฝาก fifa sbobetbeer777 ราคา ไหล sbobet บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น ทาง เข้า จี คลับ 88888 lsm2558 สมัคร 918kiss hack unlimited ilucky casino เข้า sbo ไม่ ได้ royal casino ตัวแทน uni casino agent sbobet ทาง เข้า ทาง เข้า sb0 sbobet 818 sv casino ทาง เข้า sbo แจก ส ปิ น coin master ฟรี สมัคร เค ดิ ต ฟรี ไม่ ต้อง ฝาก โป๊ก เก อร rolet casino วิธี ขาย ส ปิ น coin master เครดิต ฟรี ไม่ ต้อง เท ริน โปร ส ปิ น ฟรี coin master เอ เย่ น sbobet coin master ส ปิ น ไม่ จํา กัด lsm99 mobile เจ ษ หวย gatorama casino k9win casino sbobet111 918kiss รับ เครดิต ฟรี lsm99com poipet 777 วิธี หา ส ปิ น ฟรี coin master โป๊ก เก อร เข้า เว็บ jetsadabet ไม่ ได้ sbobet 666 spartacus casino reloadbet casino multi wild slot beer777 บิงโก ซื้อ ที่ไหน holiday palace ปอย เปต fun88 pc สล็อตฟรี ทาง เข้า sbobet ล่าสุด happyluke ทาง เข้า xoslotzv3 sbobet222 มือ ถือ ฝาก ถอน mafia88 ลิ้ ง ค์ ส ปิ น coin master รู น rov แทง ค์ kiss777th รู น แท๊ ง ค์ rov ทาง เข้า royal online v2 วิธี โหลด 918kiss ios infinity 888 เครดิต ฟรี gclub md 15 ส ปิ น ฟรี r casino วิธี เล่น แบ ล็ ค แจ็ ค การ เล่น โป ก เกอร์ ออนไลน์ หลักการ เล่น ไฮโล ดาวน์โหลด kiss918 galaxy casino online เกม โป ก เกอร์ ออนไลน์ spartacus casino เว็บ หวย เจษฎา ล็ อ ต โต้ 2ni2 สล็อต gatorama online casino วิธี กด ส ปิ น coin master hex casino sbobet slots wm casino bet เว็บ เจษฎา หวย วิธี หา ส ปิ น ฟรี coin master มา ค่า ร่า ่ lsm99 ทาง เข้า sbothai8 100 ฟรี ส ปิ น coin master ดาว โหลด 981kiss slot party ส ปิ น ฟรี coin master ios ล่าสุด แจ็ ค พอ ต gclub 24 casino online rich 777 casino double u casino free chip โบนัสฝากเงินครั้งแรก 108% สูงสุด 5,000 บาท ให้สล็อตฟรี 15 ครั้ง พร้อมโบนัสสูงถึง 5,000 บาท! สล็อต แจก ฟรี วัน เกิด sbobet ios gclub ฟรี 500 2018 jetsadabet เอ เย่ น ไหน ดี pantip fun88 แจก เสื้อ บอล goliathcasino ufa แจก เครดิต ฟรี 100 ไม่ ต้อง ฝาก ilucky casino ช่อง ทาง เข้า จี คลับ สล็อต หมุน ฟรี ใน google รับ ไป เลย ฟรี เครดิต 100 บาท ลิ้ ง ค์ ส ปิ น coin master 8vy9 gclub168 home index 35x สล็อต เว็บ jetsada เกม บิงโก ราคา coin master ฟรี ส ปิ น zodiac slot login fun88 casino plus big gaming casino สล็อต happyluke กลุ่ม เครดิต ฟรี ไม่ ต้อง แชร์ 918kiss ios โหลด ไม่ ได้ gclub88888 ทาง เข้า เกมสล็อต เครดิต ฟรี ไม่ ต้อง ฝาก fifa เครดิต ฟรี winsor ติด ตั้ง gclub ล็ อ ต โต้ วี ไอ พี เข้า ระบบ เว็บ บา คา ร่า จี คลับ 918kiss ดาวน์โหลด android bs88 casino โบนัส แนะนำ เพื่อน e16811 ทาง เข้า gclub มือ ถือ android sboibc888 ถอนเงิน คลับ 6666 เครดิต ฟรี 100 ไม่ ต้อง แชร์ 2019เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร โป ก เกอร์ เงิน จริง slot io 365 slot sbo168 เข้า ไม่ ได้ สล็อต แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ w2 99lsm huone casino fun88 esports โปร โม ชั่ น pussy888 แจก เครดิต ฟรี 300 หา ส ปิ น coin master ฟรี lsm99 up วิธี เก็บ ส ปิ น coin master ส ปิ้ น ฟรี coin master gclub888888 auto www gclub6666 ิ beer789 เล่น เกม poker online ฟรี jetsadabet ใหม่ coin master ส ปิ น ฟรี ไม่ จํา กัด sbobet ผ่าน มือ ถือ lsm99 ทาง เข้า poipet ฟรี คา สิ โน lsm99 เครดิตฟรี50 918kiss hack download โบนัส ไม่ ต้อง ฝาก เงิน ancient egypt slot โค้ด ส ปิ น coin master ฟรี lsm99 sport dafabet 28 sbobet168 เข้า ไม่ ได้ ฮ อ ลิ เดย์ ปอย เปต คา สิ โน khuyến mãi happyluke gclub24 สล็อต เครดิต ฟรี เทิ ร์ น 1 เท่า 15 ส ปิ น ฟรี ส ปิ้ น coin master ฟรี ฟรี เค ดิ ต ไม่ ฝาก ไม่ แชร์ ดาวน์โหลด 918kissauto ล๊ อ ต โต้ 999 all new gclub fun88 asia gclub1988 gclubs agent slot ทาง fun88 royalonlien casino best sboibc888 ทาง เข้า เค ดิ ต ฟรี ไม่ ต้อง แชร์ 777 gate casino wm casino 555 ถอนเงิน fun88 gclub call บา คา ร่า ทํา เทิน sboibc888 สมัคร m560bet บิงโก แบบ หมุน lsm99bet ส ปิ น ฟรี coin master ios GCLUB jetsadabet ดี ไหม pantip เครดิตฟรีแค่สมัครล่าสุด jetsadabet ยี่ กี สมัคร poipet happyluke 888 สมัคร บอล ฟรี สมัคร sbocopa m81 sbobet joker888 casino การ หา ส ปิ น ฟรี mafia ฝาก 1 บาท ทาง เข้า happyluke ล่าสุด k9win casino mg slot168 เว็บ ซื้อ หวย เจษฎา sbobet 158 จี คลับ ฟรี รับ เครดิต ฟรี 300 ยิง ปลา 888 918kiss สมัคร ท รู วอ เลท dafabet ไว กิ้ ง inferno star slot 918kiss สมัคร สมาชิก ใหม่ แจก ส ปิ น ฟรี coin master casino lux วิธี แทง ไฮโล ให้ ถูก ป๊อก เด้ง ออนไลน์ ฟรี เครดิต ไม่ ต้อง ฝาก แอ ป ล็ อ ต โต้ วี ไอ พี โป็ ก เกอร์ เกม คี โน gamemun88 sbobet888 mobile reel rush 2 slot เครดิตฟรีแค่สมัคร ทาง เข้า lsm เครดิต ฟรี สมัคร รับ ทันที ส ปิ น เกม coin master ฟรี ทาง เข้า sbobet789 lsm99click sbobet88888 ทาง เข้า live casino house ฟรี 300 lsm99click isoftbet casino 588ws สมัคร ts911 แจก เครดิต ฟรี jetsadabet 777 18bet casino galaxy casino online gclubs แจก ส ปิ น ฟรี coin master วัน นี้ ww77 casino โปร โม ชั่ น วัน เกิด คา สิ โน ส ปิ้ น ฟรี coin master gclub logo jetsadabet 999 viking clash slot สมัคร ปุ๊บ รับ เครดิต ฟรี 7msbobet ่ lsm99 ruby888 android ทาง เข้า gclub8888 โป ก เกอร์ ลํา ดับ ไพ่เล่น โป ก เกอร์ ออนไลน์ เงิน จริง jetsadabet ปิด l ส โบ เบ ท แจก ฟรี ส ปิ น coin master joker เครดิต ฟรี 2019 ข่าวกีฬา highroller casino bonus w88 live casino ปอย เปต ออนไลน์ โรล ลิ่ ง บา คา ร่า auto slot 918 thai casino online ทาง เข้า sbobet 365 โหลด ส ปิ น ฟรี coin master UFABET coin master รับ ส ปิ น ฟรี ปั่น ส ปิ น ฟรี coin master joker ฟรี เครดิต ไม่ ต้อง ฝาก 2020 jetsadabet ยี่ กี sbobet iphone โรล ลิ่ ง บา คา ร่า เว็บ คา สิ โน ปอย เปต โค๊ ด ส ปิ น coin master เว ป fun88 sbobetv8 sbobet google sites ufa casino 55 ติดต่อ lsm99 SBFPLAY99 ไฮโล ออนไลน์ พื้นบ้าน เครดิต ทดลอง เล่น ฟรี 500 บาท เครดิตฟรี50 rt สล็อต best casino slots bingo & poker joker slot gaming dafabet 888 คลับ มือ ถือ สล็อต ฟรี เครดิต 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ io slot ทาง เข้า บา คา ร่า gclub lsm99 คือ ไฮโล มือ ถือ การ พนัน live house casino เล่น ก่อน ไม่ ต้อง ฝาก w12 lsm99 info index php login joker เครดิต ฟรี 2019 สูตร coin master dafabet pc สล็อต ฝาก 50 รับ 250 แจก ส ปิ น ฟรี coin master วัน นี้ ism99 ทาง เขา sbobet เกม coin master ส ปิ น ฟรี ฝาก ขั้น ต่ำ 20 ฟรี 100 โปรโมชั่นฝากเงินครั้งแรก รับโบนัส 100% hex online casino http ab24hr allbet asia com login jetsadabet 555 วิธี ได้ spin coin master lsm99 เว็บ ตรง เกม คี โน mister bit casino เกมสล็อต g ครับ 88888 โป้ ก เกอร์ ออนไลน์ scr888 ฟรี เครดิต link lsm99 www1 lsm99 net โค้ด ฟรี ส ปิ น coin gclub88888 ทาง เข้า โบนัสแนะนำเพื่อน royalfever gclub เล่น ไฮโล ให้ ได้ เงิน pantip 99gclub sbobet88 สมัคร เกม บิงโก ราคา แทง หวย เจต เครดิต ฟรี สล็อต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ เกม coin master ส ปิ น ฟรี gclub next เครดิต ฟรี ไม่ ต้อง ฝาก fifa happyluke 2018 668dg casino สปินฟรี coin master ฟรี เข้า sbo ไม่ ได้ ส ปิ น ฟรี coin master ios ล่าสุด super high roller sbo333 มือ ถือ mafia88 สมัคร scg casino casino plus คา สิ โน โปร โม ชั่ น โปร โม ชั่ น dafabet ลิ้ ง เข้า ส โบ โปร ส ปิ้ น เกม coin master ส โม เบ ท 789 lsm99club โปร ส ปิ้ น เกม coin master k club casino เค ดิ ต ฟรี แค่ สมัคร 3win8 ฟรี เครดิตฟรี เครดิต 100 ไม่ ต้อง ฝาก ib888 คา สิ โน 7msbobet สมัคร ส โบ เบ็ ต เข้า ระบบ ส โบ เบ็ ต ยี่ กี่ jetsada เครดิต ฟรี nx ลิงค์ รับ ส ปิ น ฟรี coin master ล่าสุด ล็อกอิน fun88 ทาง เข้า sbobet ca lsm99s เค ดิ ต ฟรี ถอน ได้ 2020 virgin88 เครดิต ฟรี สมัคร สมาชิก 918kiss โบนัส 100 fun88 ทาง เข้า ล่าสุด เว็บ บา คา ร่า จี คลับ gtr gclub ส โบ เบ็ ต 222 เข้า sbo ไม่ ได้ เว ป jetsada sbo ทาง เข้า สมัคร ปุ๊บ รับ เครดิต ฟรี virgin88 เครดิต ฟรี เข้า เว็บ lsm99 zulabet casino รู น แทง ค์ ถึก ๆ casino 3d แอ พ ส ปิ น ฟรี king roman casino wildslots casino marathon casino เว็บ ปอย เปต 168 lsm99 9 คา สิ โน โร เยล sbobet games blackjack vip casino joker online บา คา ร่า ออนไลน์ ปอย เปต ยี่ กี jetsadabet ทาง เข้า ส โบ 888 jetsadabet หวย ufabet สล็อต casino f ทาง เข้า happyluke ทาง เข้า lsm ล่าสุด โบนัส ฝาก เงิน ครั้ง แรก สล็อต หมุน ฟรี ใน google รับ ไป เลย ฟรี เครดิต 100 บาท ราคา ไหล sbobet สมัคร fan88joker123 ฟรี เครดิต ไม่ ต้อง ฝาก ทาง เข้า sbo188 สล็อต แจก ฟรี sbobet cz fun88 ทาง เข้า 2019 sbobetsh 777 agent lsm99 ทาง เข้า 9988gclub แอ พ แจก ส ปิ น ฟรี coin master สมัคร บอล ฟรี เครดิต gclub44 auto ให้สล็อตฟรี 15 ครั้ง พร้อมโบนัสสูงถึง 5,000 บาท! โหลด 918kiss ios sofortüberweisung casino วิธี ส ปิ น ฟรี coin master dragon club casino วิธี โกง ส ปิ น ใน coin master เว็บ บา คา ร่า จี คลับ โบนัสฝากเงินครั้งแรก 108% สูงสุด 5,000 บาท ส โบ เบ็ ต 88 ลิ้ ง ส โบ เบ ท แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2563 lavagame888 เครดิต ฟรี fun88 ทาง เข้า 2018 วัน นี้ วิดีโอเกม isoftbet slots gclub111 sbobetbeer777 แจก โค้ด ส ปิ น coin master ufabet สล็อต gclub 998 royal ruby888 coin master หา ส ปิ น ฟรี สมัคร 918kiss ฟรี เครดิต royal online 666 happyluke สล็อต 918kiss33 ดาวน์โหลด หมุน ส ปิ น ฟรี coin master grandxo99 jetsadabet ล่ม m168 casino reel keeper slot sbobet777 line slot party ฮ อ ลิ เดย์ พา เล ซ ปอย เปต คา สิ โน ปอย เปต ดี ที่สุด ทาง เขา sbobet sbo888 ทาง เข้า jackie casino ส ปิ น ฟรี coin master ios ล่าสุด เจ ษ แทง หวย lsm99vip 168 gclub lsm99 king dafabet poker pantip โบนัสฟรีสปิน ฟรี เค ดิ ต ไม่ ฝาก ไม่ แชร์ joker เครดิต ฟรี 2019 gclub8888 สล็อต เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ sbobet1688 lsm99game โบนัสเครดิตฟรี ไม่ต้องฝาก sbo24hr ทาง เข้า เครดิต หวย ฟรี zulabet casino บริการ gclub lsm2558 สมัคร สล็อต เครดิต ฟรี เทิ ร์ น 1 เท่า sbobet 789 โกง ฟรี ส ปิ น coin master แจก ฟรี ส ปิ น 2020 coin master lsm99 ทาง ไลน์ ลิงค์ บา ค่า ร่า เว ป ล็ อ ต โต้ วี ไอ พี แจก ส ปิ น ฟรี coin master หิ นิำะ ซื้อ หวย jetsadabet lsm99 ออนไลน์ แอ พ ส ปิ น ฟรี coin master ios เว็บ แทง บอล sbobet american poker 90 mg slot168 วิธี ทํา ส ปิ น coin master โป ก เกอร์ เงิน จริง โบนัส เครดิตฟรี แบบไม่ต้องฝากเงิน 1xbet casino online http ab24hr allbetasia com login babe casino m u16888com happyluke ฝาก เงิน เว็บ jetsadabet ปิด ยืนยันเบอร์ รับเครดิตฟรี cw marketing bv หวย ยี่ กี เจษฎา เบ ท เจษฎา lotto gclub678 casino neosurf เข้า sbobet มือ ถือ ไม่ ได้ โปร เกม coin master ส ปิ น gclub เอ เย่ น lsm99 sport ทาง เข้า ส โบ เบ็ ต ล่าสุด sbobet v1 ล็ อ ต โต้ วัน รอยัล ออนไลน์ 888 jetsadabet rerun เข้า ฟัน 88 918kiss โหลด ได้ ส ปิ น ฟรี coin master หวย ออนไลน์ jetsadabet 999 gclub สล็อต 10 บาท ได้ 100 fun88 ทาง เข้า 2019 ฟรี โป ก เก อ poker เงิน จริง android วิธี ได้ ส ปิ น coin master ฟรี ป๊อก เด้ง เครดิต ฟรี ไม่ ต้อง ฝาก ทำ รายการ ฝาก lsm99 auto918kiss ทาง เข้า เว็บ gclub casino monopoly live jetsadabet หวย ทาง เข้า fun88 pc virgin88 เครดิต ฟรี เจ ษ ฏา เว ป slot magic casino lsm99 info 9988gclub casino asia 999 บิงโก ซื้อ ที่ไหน ทาง เข้า จี คลับ ใหม่ ทาง เข้า sbobet 365 เก็บ ส ปิ น coin master ฮ อ ลิ เดย์ ปอย เปต bet net casino เหรียญ coin master ฟรี joker888 casino แจก ฟรี ส ปิ น 2020 coin master jetsadabet ดี ไหม pantip 2016 ราคา gclub4 g2g9 casino live casino house ฟรี 300 เครดิตฟรี ไม่มี เงื่อนไข lsm99cash ทาง เข้า gclublotto versailles gold slot เว็บ บอล sbobet 918kiss download android 2020 lsm99 คือ 2ni2 สล็อต แอ พ แจก ส ปิ น เกม coin master ทาง เข้า ส โบ เบ็ ต ล่าสุด casino maxbet วิธี โปร coin master เว็บ เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แจก ส ปิ น coin sbobet สมัคร สมาชิก ขอ โบนัส lsm999 สมัคร reactoonz2 2bcasino หา ส ปิ น ฟรี fun788 ทาง เข้า spinal tap slot web jetsadabet ct855 live casino ส โม เบ ท 777 ib888 คา สิ โน poker เงิน จริง android slot หมุน วง ล้อ ฟรี greenx88 ฟรี ส ปิ น โบนัส เครดิตฟรี แบบไม่ต้องฝากเงิน magic slot machine ทาง เข้า sboasia เข้า ส โบ สมัคร 10 รับ 100 สมัคร เว็บ fun88 ct855 live casino สล็อต ออนไลน์ pantip คา สิ โน ปอย เปต 777 สมัคร sbobet 222 wwwbeer789 qq1x2 casino เว็บ หวย เจษฎา วิธี ได้ ส ปิ น coin master ฟรี ให้สล็อตฟรี 15 ครั้ง พร้อมโบนัสสูงถึง 5,000 บาท! sbobet online mobile rt สล็อต สมัคร ปุ๊บ รับ เครดิต ฟรี เครดิต ฟรี สมัคร รับ ทันที gclub456 ซื้อ หวย jetsadabet เครดิตฟรีไม่ต้องฝากไม่ต้องแชร์ gclub5555 jetsadabet lottovip k9win ดาวน์โหลด ฟรี ส ปิ น 15 joker ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 123play casino bet356 casino fin88 game เจ ษ ฏา เว ป สมัคร เว็บ lsm ส ปิ้ น ฟรี coin master ฟรี การ ทำ ลูกเต๋า coin master ส ปิ น ฟรี 918kiss download 2020 k9win casino slot 333 ทาง เข้า royal online โปร ส ปิ น coin master fun888 casino sbobet 279 jetsadabet ปิด เว็บ ไพ่ แบ ล็ ค แจ็ ค วิธี เล่น บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น bacc1688 ทาง เข้า coin master ส ปิ น ฟรี android เสีย บา คา ร่า 4000 casino crash sbobet222 มือ ถือ dafabet ios ส ปิ น coin master ฟรี agent slot lsm99 ถอน โบนัสฟรีสปิน เกม poker ออนไลน์ lsm99co เว ป ล็ อ ต โต้ วี ไอ พี royal casino v2 เว ป ล็ อ ต โต้ คา สิ โน เติม true wallet 668dg casino happyluke ดี ไหม เกม ไฮโล เขย่า ทาง เข้า gclub มือ ถือ เครดิตฟรีแค่สมัคร daxio casino ส โบ้ เบ็ ต เค ดิ ต ฟรี 200 เจษฎา bet ลิงค์ รับ ส ปิ น ฟรี coin master beer555 shangri la เครดิต ฟรี super gclub เค ดิ ต ฟรี 200 เว ป เจษฎา เบ ท วิธี เก็บ ส ปิ น coin master http ab24hr allbet asia com login jetsadabet user login goliathcasino บา ค่า ร่า bet spartan slot sbobet ninja bettilt casino gclub plaza pssuy888 ทาง เข้า gclub888 wildslots casino โล ยั ล คา สิ โน ฝาก ถอน วิธี กด ส ปิ น coin master สล็อต sagame เว็บ บา คา ร่า จี คลับ super gclub แจก เครดิต ฟรี 100 ไม่ ต้อง แชร์ sbobet356 สล็อต ยิง ปลา เครดิต ฟรี 100 ไม่ ต้อง แชร์ sbobet 2019 10 casino dafabet poker pantip gclub789 สมัคร ปุ๊บ รับ เครดิต ฟรี สล็อต 168g คาสิโน โบนัสดีที่สุด รอยัล ออนไลน์ v2 dafabet link คี โน คือ happyluke slot โปรโมชั่นฝากเงินครั้งแรก รับโบนัส 100% lsm99 คืน ยอด เสีย ทาง เข้า ส โบ 888 blackjack วิธี เล่น คา สิ โน โปร โม ชั่ น โบนัสพิเศษแทงเสมอ รับเพิ่ม 17,777 บาท ไม่อั้น รับ เครดิต ฟรี 300 lsm99 next casino municipal md123 918kiss แอ พ royal online happyluke ได้ เงิน จริง ไหม sbobet online mobile ทาง เข้า สำรอง sbobet sbobet google sites ism99 game gatorama online casino telegram casino เครดิต ฟรี nx หา ส ปิ น coin master ฟรี เครดิต ฟรี ไม่ ต้อง ฝาก ufa วิธี กด ส ปิ น coin master 999lsm login casino wm เครดิต ฟรี สล็อต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ royal online ios เจษฎา เบ ท happyluke ฟรี 300 บาท g2g9 casino energoonz gclub free sbobet138 zig zag 777 casino happy สล็อต สมัคร fun88 jetsadabet 1688 sl casino wm88 casino winner55 สล็อต โค้ด ส ปิ น coin master วัน นี้ สมัคร sbobet ทาง เข้า happyluke ล่าสุด 168galaxy slot แอ พ เล่น poker กด รับ ส ปิ น ฟรี coin master k9win สมัคร ค่าย จี คลับ ฟรี ส ปิ น 15 บา ค่า ร่า jetsada จ่าย กำถั่ว จี คลับ SBOBETV8 live casino house ฟรี 300 sbobet ca1 lsm99 ถอน ทาง เข้า รอยัล ออนไลน์ bacc1688 ทาง เข้า dafabet fun88 sbobet 777com ทาง เข้า gclub ล่าสุด ส ปิ น ฟรี coin master ล่าสุด live casino house ฟรี 300 เว็บ บา คา ร่า ปอย เปต บอล สด sbobet ลัก กี้ ซิก บา คา ร่า สล็อต เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ จี คลับ เล่น ผ่าน เว็บ สมัคร 10 รับ 100 ib888 คา สิ โน สล็อต ฝาก ถอน วอ เลท ทาง เข้า fun88 2020 ไพ่ แบ ล็ ค แจ็ ค วิธี เล่น thai poker pro 666 poker royal online ios โบนัส คืน เงิน เครดิตฟรีแค่สมัคร สล็อต เครดิต ฟรี ถอน ได้ best88 สล็อต beer789com จี คลับ ผ่าน เน็ต pssuy888 sbobet game ทาง เข้า sbobet asia คา สิ โน ฝาก 1 บาท ได้ 100 ฝาก 10 บาท รับ 100 วอ เลท ทํา เทิ ร์ น บา คา ร่า เว็บ เจ ษ หวย ส ปิ้ น ฟรี coin master ios วิธี ส ปิ น coin master ฟรี คา สิ โน เครดิต ฟรี ไม่ ต้อง ฝาก 2020 dafabet poker โบนัสพิเศษแทงเสมอ รับเพิ่ม 17,777 บาท ไม่อั้น คา สิ โน ปอย เปต 777 multifly slot fun88 ดี ไหม pantip
      สล็อต ทดลอง โร ม่า| เทคนิค การ ยิง ปลา ออนไลน์| สล็อต ช้าง| 88 casino online| เล่น แค ง ได้ เงิน จริง| lucky god ทดลอง เล่น| ทดลอง เล่น สล็อต live22| สล็อต ซื้อ ฟรี ส ปิ น ได้| ทดลอง pg slot| เกม ทํา เงิน จริง| slotv9 ทาง เข้า| สล็อต jackpot| ufa1688 ทาง เข้า| ทดลอง เล่น สล็อต ค่าย rt| super slot1234| ทาง เข้า โจ๊ก เกอร์ 888| fat santa slot| สล็อต ฮาโลวีน| เล่น ไพ่ ได้ เงิน| เว็บ เล่น เกม หาเงิน| บอล สด 789| gaminator play| แทง บอล สูง ต่ํา คือ| แจก โบนัส สล็อตแทง บอล 24| บอล 1x2 คือ| สล็อต แบบ ใหม่| ทดลอง ค่าย pg| mafia slot 2019| ทาง เข้า slot1668| บอล ส เต็ ป สูง ต่ํา วัน นี้| mafia88 เล่น ผ่าน เว็บ| เล่น เกม อะไร ได้ เงิน จริง 2020| เกมส์ ฟาร์ม ได้ เงิน จริง 2019| สล็อต 777 แพนด้าสล็อต roma เล่น ฟรี| ฝาก เงิน 918kiss| slot 10 บาท| www vegus168 memberbet com http mvegus168 memberbet net| สล็อต เครดิต ฟรี ใหม่ ล่าสุด| เล่น เกม ได้ เงิน จริง 2020| blackjack 3d| วิธี ยิง ปลา 918kiss| สล็อต super ufa| ทดลอง เล่น ได้ เงิน จริง| blackjack mit| 1.75 สูง ต่ํา| เกมส์ ออนไลน์ ได้ เงิน จริง พัน ทิป| เกม แค ง ได้ เงิน จริง| joker slot ใหม่ ล่าสุดlsm99 ยิง ปลา| แอ พ พนัน ออนไลน์ ได้ เงิน จริงKeyword| super slot1234| เกม แจก เงิน ฟรี| หมุน สล็อต ฟรี 2018| สกอร์ บอล สูง| th9 สล็อต| บอล ส เต็ ป ขั้น ต่ำ 10 บาท| slot mafia007| gta sa slot machine| เล่น เกม ได้ ตัง จริง| เว็บ สล็อต ออนไลน์ แจก เครดิต เล่น ฟรี 100| สล็อต ทดลอง| ทดลอง เล่น สล็อต dragon| fhm99 download| เล่น เกม โจ๊ก เกอร์ ผ่าน หน้า เว็บเว็บ โจ๊ก เกอร์ 777| pg slot ทดลอง เล่น| 1x2 & สอง โอกาส คือ| kuy joker slot|