<nobr id="6nm3"></nobr>

      <sub id="6nm3"></sub>

      <th id="6nm3"></th>

      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
       
      เว็บ หวย เจษฎา pantip gclub md แจ กลิ้ง ส ปิ น ฟรี coin master ส โบ เบ็ ต 168 joker ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ รอยัล คา สิ โน ส ปิ น วัน นี้ my slot เว็บ เจ ษ หวย คา สิ โน โปร โม ชั่ น วัน เกิด เว็บ ปอย เปต pantip 9988 gclub agent casino เครดิตฟรี50 เค ดิ ต ฟรี 500 เล่น จี คลับ ออนไลน์ เกม ออนไลน์ v2 เกม คี โน casino monopoly live โปร ส ปิ น coin master tiki fruits slot fun88 แอ พ เค ดิ ต ฟรี ฝาก 1 บาท โบนัสฝากเงินครั้งแรก 108% สูงสุด 5,000 บาท เครดิต คา สิ โน ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 สล็อต ฝาก เงิน ท รู้ วอ เลท lms99 online สล็อต ไม่มี ขั้น ต่ำ ฟรี โบนัส high roller poker เข้า เล่น gclub สมัคร วัน นี้ รับ เครดิต ฟรี 2020 coin master ส ปิ น ฟรี android virgin88 เครดิต ฟรี หิ นิำะ 888 เครดิตฟรี50 rt สล็อต royal gclub online slot maker ล็ อ ต โต้ 888 สล็อต sagame jetsadabet รีวิว ปิดบัญชี บา คา ร่า ทาง เข้า เอเย่นต์ gclub โปร เพิ่ม ส ปิ น coin master youlike777 coin master ส ปิ น ฟรี ไม่ จํา กัด 888sbobet เค ดิ ต ฟรี ไม่ ต้อง แชร์ เครดิต ฟรี ไม่ ต้อง เท ริน mb casino วิธี เล่น แบ ล็ ค แจ็ ค 35x สล็อต โป ก เกอร์ เงิน จริง ทาง เข้า sboasia i slot เค ดิ ต ฟรี ล่าสุด ไม่ ต้อง แชร์ วิธี ได้ ส ปิ น ฟรี coin master sbobet มือ ถือ spin 996 casino เครื่องเล่น บิงโก lotto jetsada megawins ล็ อ ต โต้ วัน sbobet7777 สมัคร ปุ๊บ รับ เครดิต ฟรี hercules slot เค ดิ ต ฟรี 500 ยิง ปลา จี คลับ sbobet7777 sb0bet888 lord casino fun88 สมัคร ทาง เข้า sbo222 platino casino high roller lsm99 ฝาก ถอน ace333 ฟรี เครดิต 2019 ที่ หมุน บิงโก gclub900 wm casino 555 gclub ป๊อก เด้ง sbobet5678 สล็อต ที่ แตก บ่อย สล็อต เครดิต ฟรี 20 บาท การ ทำ ลูกเต๋า tumbet casino สมัคร 918kiss me ้ sbobet fun555 ทาง เข้า ปอย เปต 147 โปร โม ชั่ น dafabet tek789 เข้า ไม่ ได้ หวย เจษฎา 1688 สมัคร pay69 แจก ฟรี ส ปิ น coin master เข้า sbo kiss777th sbobet777 สมัคร จี คลับ gclub ฟรี 15 แทงบอล UFABET โล ยั ล คา สิ โน ทาง เข้า sbothai8 ทาง เข้า happyluke ฟรี 300 coin master ส ปิ น ฟรี android pic5678 mobile mrvegas casino เครดิต ฟรี คา สิ โน 2020 สมัคร pay69 double u casino free chip bbb 1688 royal สมัคร scr888 ฟรี เครดิต แอ พ ล็ อ ต โต้ gclub10 jetsadabet รีวิว happyluke คา สิ โน gclub online casino วิธี เพิ่ม ส ปิ น ใน เกม coin master betzela casino spin 996 casino สมัคร สมาชิก ใหม่ รับ เครดิต ฟรี ไม่ ต้อง ฝาก จี คลับ รอยัล เว็บ หวย เจ ษ ฏา เบ ท ทาง เข้า เอ เย่ น lsm99 โป้ ก เก อ ลิ้ ง ส ปิ น ฟรี coin master 2020 blackjack android รวม ทาง เข้า sbo เค ดิ ต ฟรี 50 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ lucky neko slot เอ เย่ น ส โบ แทงบอล SBOBET fun88fun88 รวย ล็ อ ต โต้ เครดิต ฟรี luck วิธี ทํา ส ปิ น ฟรี coin master gclub4 สูตรพนัน k9win สมัคร รับ ส ปิ้ น coin master spinner casino casino 3d เว็บ หวย ออนไลน์ jetsadabet gclub55555 ทาง เข้า sbobet24hr gclub 456 l ส โบ เบ ท ทำ ลูกเต๋า กำถั่ว จี คลับ casino lucky 7 ทาง เข้า sbo8888 เค ดิ ต ฟรี ทํา เทิ ร์ น casino muchbetter jadwal bola sbobet star cluster slot หวย เจษฎา ออนไลน์ ส โบ 888 เว็บ ism99 หมุน สล็อต ฟรี 2019 คา สิ โน ฟรี ส ปิ น kkkk99 net โค๊ ด ส ปิ น ฟรี login fun88 jetsadabet 222 สล็อต เติม 10 รับ 100 โบนัสฝากเงินครั้งแรก 108% สูงสุด 5,000 บาท เค ดิ ต ฟรี 2020 gclub7 fin88 casino แอ พ เล่น ไฮโล fun788 ทาง เข้า gclub free แจก ฟรี 100 ไม่ ต้อง แชร์ 123 ปอย เปต hub88 casino coin master ส ปิ น ฟรี android แจก ส ปิ น ฟรี coin master ฟรี เว็บ ปอย เปต ดี ไหม แจก เงิน ฟรี 300 กลุ่ม เครดิต ฟรี ไม่ ต้อง แชร์ รู น แทง ค์ ถึก ๆ high roller slot poipet 977 เข้า sbobet777 big gaming casino โหลด 918kiss android สล็อต ออนไลน์ pantip ib888 คา สิ โน beer555 mobile inferno star slot สล็อต ฟรี เครดิต 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ส โบ เบ็ ต เข้า ไม่ ได้ ดาวน์โหลด 918kissauto 819 kiss apk วิธี ได้ spin coin master kclubs online casino beer777 mega888tm เว็บ โป๊กเกอร์ สล็อต 918 เติม true wallet ไม่มี ขั้น ต่ํา รับ ส ปิ น ฟรี coin master ไม่ จํา กัด ไฮโล ออนไลน์ ไม่มี ขั้น ต่ำ รับ spin ฟรี coin master hub88 casino gsm casino ทาง เข้า bacc666 สล็อต ออนไลน์ 168 lsm99 ถอนเงิน ขั้น ต่ำ เกม โป ก เก อ slot สมัคร ใหม่ ได้ รับ เครดิต ฟรี ไม่ ต้อง ฝาก gclub promotion pussy888 เครดิต ฟรี poipet 555 ทีเด็ด ส โบ แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 แค่ สมัคร เครดิต ฟรี 100 ไม่ ต้อง แชร์ 2019 เครดิต ฟรี luck casino flash สมัคร สมาชิก ใหม่ รับ เครดิต ฟรี ไม่ ต้อง ฝาก lsm99 ทดลอง เล่น w77 casino คา สิ โน โปร โม ชั่ น วัน เกิด เกม ไพ่ โป ก เกอร์ ออนไลน์ indukbola casino fox sbobet88 สมัคร black jack วิธี เล่น ล อ ต โต วัน วิน เซอร์ คา สิ โน ปอย เปต โบนัสพิเศษแทงเสมอ รับเพิ่ม 17,777 บาท ไม่อั้น รับ ส ปิ้ น coin master ลัก กี้ ซิก บา คา ร่า lsm99 center บา คา ร่า เว็บ ปอย เปต agent slot all casino บา คา ร่า สมัคร sbobet คา สิ โน jetsadabet โอน เงิน ผิด sbobet3333 royal online v2 8888 gclub89 lsm สมัคร happyluke คา สิ โน agent sbobet สมัคร เกม สล็อต ออนไลน์ 4579 ล็ อ ต โต้ ทาง เข้า sbobet 365 โปร โม ชั่ น alpha88 star gclub sbobet888 สมัคร empire777 รีวิว ทาง เข้า sb0 แอ ปรับ ส ปิ น ฟรี coin master gclub 99 โปรโมชั่นฝากเงินครั้งแรก รับโบนัส 100% ทาง เข้า sbobet777 โบนัส ฟรี เค ดิ ต เครดิต ฟรี ufa thai casino online เว็บ พนัน บอล sbobet รับ ส ปิ น ฟรี coin master วัน นี้ โบนัส free spin k9win สล็อต วิดีโอเกม ฝาก 300 ฟรี 500 เว็บ แทง ฟุตบอล sbobet 777com ดาวน์โหลด 918kissauto gclub bet โป๊ก เก อร go crazy casino 1688 gclub shangri la สล็อต gclub line สมัคร สล็อต รับ เงิน ฟรี ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด ios สมัคร รับ เครดิต ฟรี 2020 jetsadabet เข้า สู่ ระบบ fun88 รีวิว sahara nights slot สล็อต sagame66 jadwal bola sbobet gemix casino ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด ios kiss918 ดาวน์โหลด แทงบอลออนไลน์ฟรี เว ป เจษฎา เบ ท เครดิต สล็อต ฟรี ไม่ ต้อง ฝาก spinal tap slot สมัคร จี คลับ 666 pssuy888 1000 ล็ อ ต โต้ ฟัน 88 ล็อกอิน casino bit casinomodule ไฮโล เขย่า สด จี คลับ ผ่าน เน็ต lsm99 ทาง ไลน์ เข้า ฟัน 88 เครดิต ฟรี สล็อต ไม่ ต้อง ฝาก เว ป ล็ อ ต โต้ 888 vip jetsadabet คา สิ โน lsm99 bocasino http ab24hr allbet asia com login เกม poker ออนไลน์ เค ดิ ต ฟรี 500 หา ส ปิ้ น coin master โปร ส ปิ้ น coin master black jack วิธี เล่น 918kiss 888 apkเครดิต ฟรี ไม่ ต้อง แชร์ เติม 100 ฟรี 300 ฝาก ขั้น ต่ำ 20 ฟรี 100 lsm99club gold vip casino สล็อต แจก เครดิต ฟรี 300 รีวิวเว็บคาสิโนออนไลน์ royal online 6666 918kiss เทิ ร์ น 1 เท่าdafabet ฟรี 300 2019 ทาง เข้า sbobet 365 เจษฎา หวย ออนไลน์ pic5678 mobile 918kiss 918kiss kiss918 vipเครดิต ฟรี เทิ ร์ น 1 เท่า 2020 ทีเด็ด sbobet sbo เครดิต ฟรี ไม่ ต้อง ฝาก fifa lsm999 ทาง เข้า มือ ถือ บิงโก แบบ หมุน สมัคร fun88 เครดิต ฟรี winsor สมัคร 918kiss ท รู วอ เลท royal online 558 sbobetnet เอ เย่ น จี คลับ gclubrich77 นางฟ้า fun88 ทาง เข้า lsm65 lsm99 โปร โม ชั่ น โป ก เก อร 918kiss ios เล่น ไม่ ได้ 2020 coin master ฟรี ส ปิ น ล่าสุด fun88 vip โปร โม ชั่ น lsm99 กด รับ ส ปิ น ฟรี coin master โบนัสฝากเงินครั้งแรก 108% สูงสุด 5,000 บาท รู น แท๊ ง ค์ rov ดาวน์โหลด เกม 918kiss sbobetmix รับ ส ปิ น ฟรี coin master ไม่ จํา กัด ทาง เข้า sbobet444 เหรียญ coin master ฟรี lsm99click royal casino v2 LSM99 รับ ส ปิ น coin master ี จี คลับ live casino house ฟรี 300 ส ปิ น ฟรี coin master โปร สมัคร joker1888 หวย เจต wwwsbo666 สล็อตฟรี ติด ตั้ง gclub ส ปิ น ฟรี วัน นี้ ฝาก ผ่าน ท รู วอ เลท จี คลับ เล่น ผ่าน เว็บ สล็อต เครดิต ฟรี เทิ ร์ น 1 เท่า 333 sbobet lsm bet 99 ฟรี สล็อต ออนไลน์ m168 casino หิ นิำะ dafabet 99 live casino house เค ดิ ต ฟรี ไม่ ต้อง แชร์ sbobet888 ทาง เขา sbobet แจก ส ปิ น ฟรี coin master วัน นี้ เว็บ ปอย เปต 168 winner55 แจก 100 ฝาก ถอน รอยัล เค ดิ ต ฟรี ไม่มี เงื่อนไข sbobet ninja casino bit http ab24hr allbetasia com login ทาง เข้า fun88 สล็อต ฟรี เครดิต 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ส ปิ น ฟรี coin master ฟรี sboasia ทาง เข้า สมัคร บอล ออนไลน์ ฟรี แจก ส ปิ น ฟรี coin master mister bit casino เกม ไฮโล เขย่า สูตร คํา น วณ หวย ยี่ กี jetsadabet ลิ้ ง แจก ส ปิ น ฟรี coin master ส โบ เบ็ ต มือ ถือ royal online 888 ฝาก 50 ฟรี 50 ถอน ไม่ อั้น ufa casino 168v1 ส ปิ น ฟรี coin master ล่าสุด คลับ 6666 niki casino 5 dragon slot เล่น poker online ฟรี สล็อต ฝาก น้อย รับ 100 ufa casino 55 สล็อต angel88 คี โน คือ gclub mobile android fun88com www99lsm เว็บ บอล sbobet slot party kiss918 ดาวน์โหลด สล็อต ฝาก วอ เลท ไม่มี ขั้น ต่ํา เล่น poker online เข้า sbo ไม่ ได้ คา สิ โน จี คลับ ส โบ เบ ท ทาง เข้า เข้า เว็บ ส โบ gclub1988 dafabet 888 happyluke ดาวน์โหลด ฟรี ส โบ เบ็ ต 88888 kkkk99 net c9bet99 cw marketing bv bet soft ปอย เปต 99 สล็อต ฟรี เครดิต 2019 เข้า lsm99 go crazy casino sbobet888 ทาง เข้า happyluke login แทง หวย ออนไลน์ เจษฎา ทาง เข้า เอ เย่ น lsm99 แจก ส ปิ น coin master ฟรี dafabet พัน ทิป โกง ฟรี ส ปิ น coin master online v2 โบนัส แรก เข้า sbothai mobile joker ฟรี เครดิต ไม่ ต้อง แชร์ jetsada 888 นางฟ้า fun88 sbobet rich88 แอ พ แจก ส ปิ น coin master gclub44 auto ส ปิ้ น ฟรี coin master สมัคร k9win เครดิต ฟรี คา สิ โน 2020 โบนัส คืน เงิน http ab24hr allbet asia com login แจก ส ปิ น coin master ฟรี วิธี ขาย ส ปิ น coin master sbobet5555 scr 918kiss android download เค ดิ ต ฟรี ไม่มี เงื่อนไข สล็อต เครดิต ฟรี ถอน ได้ เค ดิ ต ฟรี ถอน ได้ 2020 ่ jetsada wm casino bet sbobet 2016 ขอ โบนัส lavagame888 เครดิต ฟรี all casino บา คา ร่า gclub4 หมุน ส ปิ น ฟรี coin master กำถั่ว จี คลับ สล็อต เครดิต ฟรี เทิ ร์ น 1 เท่า ่ เจษฎา เบ ท coin master ฟรี ส ปิ น ios รู น rov แทง ค์ โค้ด ส ปิ น coin master วัน นี้ เว็บ lsm99 สล็อต ฝาก ไม่มี ขั้น ต่ำ coin master ส ปิ น ฟรี ไม่ จํา กัด app gclub สมัคร ใหม่ รับ เครดิต ฟรี ทันที 2020 สูตร เพิ่ม ส ปิ น coin master joker888 casino ทาง เข้า sbobet online gsm casino แอ พ ส ปิ น ฟรี lms99 online รอยัล ออนไลน์ 888 สมัคร ส โบ เบ ท bacc6666 สมัคร gclub ป๊อก เด้ง โบนัส แรก เข้า sbobet888 mobile เค ดิ ต ฟรี 200 sbobetasia online วิธี กด ส ปิ น coin master lsm99 mobile คา สิ โน วอ เลท ฝากเงินครั้งแรกรับโบนัส 200% สูงสุด 8,000 บาท เกม ไพ่ 21แอ พ เกม ไฮโล ได้ เงิน จริง vscr888 ฝาก เงิน th9 casino ฟรี ส ปิ น coin master ฟรี เข้า ส โบ มือ ถือ sbobet560 เข้า ส โบ เบ็ ต 888 เว็บ ส ปิ น ฟรี coin master jetsadabet vip lsm99 center นางฟ้า fun88 918kiss 918kiss kiss918 vipเครดิต ฟรี เทิ ร์ น 1 เท่า 2020 ฝาก ขั้น ต่ำ 20 ฟรี 100 ฝาก 100 รับ 300 ล่าสุด jetsadabet login เกม lsm99 วิธี เก็บ ส ปิ น coin master fun88a วิธี ได้ ส ปิ น ฟรี coin master หา ส ปิ้ น coin master lsm99 9 coin master ส ปิ น ฟรี red ping win happyluke ดาวน์โหลด ฟรี หวย เจษฎา vip กระดาษ ลูกเต๋า pussy888 เครดิต ฟรี blackjack android ส โบ 168 สูตร เพิ่ม ส ปิ น coin master จี คลับ 6666 359 sbobet joker ฟรี เครดิต ไม่ ต้อง แชร์ เอา ส ปิ น ฟรี coin master ios วิธี รับ ส ปิ น ฟรี coin master ios แจก ส ปิ น coin master ล่าสุด ราคา บอล sbobet วัน นี้ 777ww4 casino gclub คืน ยอด เสีย ทุก สัปดาห์ เจษฎา เว็บ หวย แจก โปร ส ปิ น coin master รับ ส ปิ น ฟรี coin master ไม่ จํา กัด คา สิ โน ปอย เปต ดี ที่สุด ปอย เปต 977 ข่าวกีฬา ib888 คา สิ โน ถอนเงิน fun88 ฝากเงินครั้งแรกรับโบนัส 200% สูงสุด 8,000 บาท บิงโก แบบ หมุน quick casino gclub678 โบนัส วี ไอ พี jetsadabet pantip super high roller เล่น poker เว็บ ไหน ดี ฟรี ส ปิ น ฟรี lsm99online ล๊ อ ต โต้ วัน ตัวแทน gclub best88 สล็อต gclub link บา คา ร่า ปอย เปต pantip sbo888 มือ ถือ เครดิตฟรี ไม่มี เงื่อนไข crowncas gclub466 live22 โปร สมาชิก ใหม่ ป๊อก เด้ง ออนไลน์ ฟรี เครดิต ไม่ ต้อง ฝาก gclub เอ เย่ น โปร ฟรี ส ปิ น coin master สล็อต 5555 sbobet138 fa fa fa slot coin master ส ปิ น ไม่ จํา กัด ไฮโล ออนไลน์ ไม่มี ขั้น ต่ำ live casino house ดี ไหม sbobet 8x คา สิ โน ออนไลน์ ปอย เปต wwwlsm99 สล็อต ฟรี เครดิต 100 2020 md123 918kiss gclub app diamond inferno slot บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น ทาง เข้า happyluke 88 สล็อต รับเลย 100% โบนัสแรกเข้าสล็อต, กีฬา,​ คาสิโน สูงสุด 10,000 บาท สมัคร poipet สมัคร live22th ทาง เข้า 24sboonline ทาง เข้า sbothai8 sofortüberweisung casino วิธี หา ส ปิ้ น coin master sky slot เกม โป๊กเกอร์ ออนไลน์ gclub bet หาสปินฟรี coin master แจก ฟรี ส ปิ น เกม coin master 899 online casino เครดิตฟรีไม่ต้องฝากไม่ต้องแชร์ gclub god high roller poker jetsadabet 168 happyluke ทาง เข้า xn88 casino สมัคร ใหม่ รับ เครดิต ฟรี ทันที 2020 คา สิ โน ไม่ ต้อง ฝาก เงิน ล อ ต โต happyluke ทาง เข้า temple slot sbobet ทีเด็ด สมัคร lsm999 lara croft slot วิธี ทํา ส ปิ น coin master หา กลุ่ม ไลน์ เครดิต ฟรี ให้สล็อตฟรี 15 ครั้ง พร้อมโบนัสสูงถึง 5,000 บาท! line lsm99 lsm99 game ้ happyluke สมัคร รับ เครดิต ฟรี ไม่ ต้อง แชร์ 918kiss ดาวน์โหลด slot สมัคร ใหม่ ได้ รับ เครดิต ฟรี ไม่ ต้อง ฝาก ทาง เข้า เอ เย่ น sbo หวย เจษฎา เบ ท ทาง เข้า sbo188 slotv online casino สล็อต playstar โปร ส ปิ้ น coin master freebet casino best casino slots bingo & poker jetsadabet ปิด pantip ทาง เข้า ส โบ 8888 sbobet888 ทาง เข้า ล่าสุด agent lsm99 ทาง เข้า ทาง เข้า จี คลับ มือ ถือ vscr888 ฝาก เงิน ติด ตั้ง 918kiss ios sbobet ibc 888 ballchockdee เครดิต ทดลอง เล่น ฟรี 500 บาท fun88 2019 ส ปิ่น ฟรี สล็อต ออนไลน์ fifa55 sbo ทาง เข้า ล่าสุด สมัคร เค ดิ ต ฟรี ไม่ ต้อง ฝาก may casino คา สิ โน เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ทาง เข้า lsm99 gclub holiday dafabet fun88 โบนัสเครดิตฟรี ไม่ต้องฝาก sbo168 เข้า ไม่ ได้ เข้า เว็บ lsm99 casino live house สล็อต แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ ส โม เบส 888 sbobet สมัคร ใหม่ 123 plus casino สล็อต w88 เค ร ฟรี ไม่ ต้อง ฝาก 2020 สมัคร สล็อต รับ เงิน ฟรี jetsadabet login ทาง เข้า sbobet77 casino elite mafia88 สมัคร เล่น gclub ผ่าน เว็บ welcome ลิ้ ง เข้า sbo เข้า sbobet777 เครดิต ฟรี luck ทาง เข้า sbobet888 m onlinesbobet หา ส ปิ น ฟรี ส โบ เบ ท gclub มือ ถือ ทาง เข้า คา สิ โน ฟรี เครดิต ไม่ ต้อง ฝาก 2020 slot777 casino โค้ด ส ปิ น ฟรี coin master วิธี โหลด 918kiss ios ส ปิ้ น ฟรี coin master สล็อต 918kiss ฟรี เครดิต ไม่ ต้อง ฝาก ล่าสุด 2019 coin master free spins วัน นี้ ninja slots sbobet129 วิธี ได้ ส ปิ น coin master beer789 lsm99 line สล็อต เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ โป ก เก อร เครดิต ฟรี สมัคร รับ ทันที best casino slots bingo & poker royalsbobet ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด tournament bonus สูตร คํา น วณ หวย ยี่ กี jetsadabet โปร เครดิต 100 บา คา ร่า ออนไลน์ ปอย เปต bbb gclub กด รับ ส ปิ น ฟรี coin master ปอย เปต 99 คา สิ โน ปอย เปต 777 vscr888 ฝาก เงิน แจ กลิ้ง ส ปิ น ฟรี coin master sbobetbeer777 slot หมุน วง ล้อ ฟรี การ เล่น โป๊กเกอร์ ดาวน์โหลด mega888 jetsadabet ปิด ปรับปรุง 99 จี คลับ 99gclub sbobet347 gatorama online casino wm88 casino เครดิตฟรีแค่สมัครล่าสุด ถอนเงิน ส โบ เข้า ระบบ sbobet gclub line sbobet16888 รับ ส ปิ น ฟรี coin master ฟรี lsm9999 ทาง เข้า king roman casino วิธี เล่น แบ ล็ ค แจ็ ค ลิงค์ บา ค่า ร่า sbobet rich88 สล็อต ค่าย ไหน ดี pantip kclubs online casino casino dome download 918kiss ios 2019 casino offline สล็อต 918 เติม true wallet ไม่มี ขั้น ต่ํา bbb gclub ทาง เข้า ส โบ เบ็ ต มือ ถือ fun88 สมัคร แอ พ ส ปิ น ฟรี sboibc888 ถอนเงิน วิธี ขาย ส ปิ น coin master jetsadabet เอ เย่ น ทาง sbobet888 ทาง เข้า บา คา ร่า 1688 f1 gclub tournament bonus โบ เบ็ ต rt สล็อต ส โป เบส livescore sbobetonline ส็ ลอด mrbit bet 918kiss ฝาก 10 รับ 100 ล่าสุด ป๊อก เด้ง เครดิต ฟรี ไม่ ต้อง ฝาก บา คา ร่า ทํา เทิน bonus dafabet sb0bet bbb 1688 royal agent slot sbobet88899 sbobet168 มือ ถือ fun88asi ทาง เข้า เว็บ lsm99 toptally casino jadwal bola sbobet โค๊ ด ส ปิ น ฟรี สมัคร สล็อต รับ โบนัส ฟรี gclub466 happyluke login birthday bonus หวย เจต พัน ทิป 88 สล็อต lsm ทาง เข้า happyluke รีวิว halloween casino ทาง เข้า ส โบ 888 ดาวน์โหลด mega888 ราคา บอล สด sbobet ฟัน 88 ล็อกอิน โกง ส ปิ น ใน coin master 123play casino ลิ้ ง ส โบ beer777 pc pic5678 mobile เกม lsm99 สล็อต หมู สมัคร รับ เครดิต ฟรี ล่าสุด xoslotzv3 casino best ฝาก 1 บาท รับ 100 ล่าสุด 2020 ufa casino 55 เครดิต สล็อต ฟรี ไม่ ต้อง ฝาก เกม บิงโก ตัวเลข เครดิต หวย ฟรี สมัคร เค ดิ ต ฟรี เติม 100 ฟรี 300 รับ ส ปิ้ น coin master สมัคร scr888 ฟรี เครดิต เจ ษ แทง หวย สมัคร รับ เครดิต ฟรี ไม่ ต้อง แชร์ แจก ฟรี ส ปิ น coin master ดาว โหลด เกม 918kiss iosเครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร happyluke ได้ เงิน จริง ไหม หา ฟรี ส ปิ น coin master jetsadabet ดี ไหม pantip 918 plus apk 918kiss ios 2020 download โบนัสแนะนำเพื่อน สมัคร สล็อต โบนัส 100 lsm99co jetsadabet คือ สมัคร แทง บอล ฟรี ฮ อ ลิ เดย์ พา เล ซ ปอย เปต สล็อต 981kiss g2g9 casino สูตร คํา น วณ หวย ยี่ กี jetsadabet สล็อต ออนไลน์ fifa55 live22 โปร สมาชิก ใหม่ gclub558 ทาง เข้า sbobet online slot party แอ ป ส ปิ น ฟรี 918 download ios 808 casino happyluke แจก 300 สมัคร รับ เครดิต ฟรี 2020 ถอนเงิน jetsadabet 918 เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัครfun888 ฟรี 300 sbobet168 เข้า ไม่ ได้ ลูกเต๋า กระดาษ coin master ส ปิ น ฟรี 2020 เข้า fun88 pssuy888 ลิ้ ง ส ปิ น ฟรี coin master ล่าสุด แจก ฟรี ส ปิ น เกม coin master gclub bet poker online เกม dafabet poker ios ตัวแทน royal casino สล็อต สมาชิก ใหม่ ิ beer777 918kiss hack download bet sensation casino sbobet โปร โม ชั่ น สมัคร 918kiss ท รู วอ เลท slotland 198 ส โม เบ ท 777 ปอย เปต 777 การ เล่น ไพ่ โป ก เกอร์ slotv9 รับ 100 play jojo casino lsm99 ถอนเงิน ขั้น ต่ำ วิธี แทง หวย เจษฎา สล็อต 911 pssuy888 สล็อต 918kiss เติม true wallet ไม่มี ขั้น ต่ํา jetsadabet 8888 เข้า เว็บ ส โบ เบ็ ต lsm99 2019 สมัคร แทง บอล ออนไลน์ ฟรี gclub 16888 9k yeti slot joker game casino โค้ด รับ ส ปิ น ฟรี coin master รอย อ จี คลับ สมัคร ยูสเซอร์ ฟรี เครดิต fun88 ถอนเงิน ไม่ ได้ potato222 mobile lsm99 net fun888 asia coin master ส ปิ น ฟรี ไม่ จํา กัด www fun88 asia com vn live casino house ดี ไหม เก็บ ส ปิ น coin master bg casino online www560bet เครดิต ฟรี 100 ถอน ได้ 2561 sbobet v1 diamond vip casino ฟรี ส ปิ้ น lsm99 net สล็อต เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ line happyluke 918kiss download 2019 ios ลูกเต๋า กระดาษ ufagalaxy88 sbobetsh 777 qq288 casino 918kiss apk ล่าสุด casino splendido joker เครดิต ฟรี 2019 รอย อ จี คลับ สปินฟรี coin master ฟรี โปร ส ปิ น coin master ทาง เข้า เล่น lsm99 ดาว โหลด เกม 918kiss iosเครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร ฟรี ส ปิ น 15 fun88 ทาง เข้า 2019 ทีเด็ด ส โบ เบ็ ต bet soft เว ป lsm99 ทาง เข้า ส โบ เบ็ ต bbb 1688 royal micro knights slot เค ดิ ต ฟรี 200 lsm99 login หา เค ดิ ต ฟรี sbobet999 ส ปิ น ไม่ จํา กัด coin master เล่น เกม poker online ฟรี ดาวน์โหลด แอ พ happyluke gclub ฟรี 15 สล็อต คืนสูงสุด 7% happyluke ทาง เข้า k9win สมัคร เจษฎา เบ ท หวย royal online 6666 ฟรี ส ปิ น coin master ios sbobet168 เข้า ไม่ ได้ jetsada หวย jetsadabet ฝ วิธี เล่น black jack ส ปิ น ฟรี coin master ฟรี ios ฟรี ส ปิ น coin มือ ถือ sbobet888 สล็อต ฟรี เครดิต 2019 ไฮโล เขย่า สด casino sbobet live ไฮโล ออนไลน์ ได้ เงิน จริง ผ่าน มือ ถือ 918kiss hack unlimited casino sun mega888tm ทาง เข้า ส โบ เบ ท www w2 lsm99 โปร ส ปิ น ฟรี coin master casino splendido rating casino ค่าย จี คลับ lsm99 asia gclub7 auto slot 918 เทพ เอเชีย ฟรี ส ปิ น happyluke คา สิ โน ออนไลน์ poipet ฟรี สล็อต วอ ล เลท gclub free agentgclub โปร เครดิต 100 รับ ส ปิ น ฟรี coin master ios a3ccc gclub ทาง เข้า lsm ล่าสุด รับ เครดิต ฟรี 500 gclub111 99gclub 128coffee sbobet ตัวแทน gclub เว็บ เจษฎา ล็ อ ต โต้ วิธี หา ส ปิ้ น coin master 99 จี คลับ สมัคร บอล ฟรี เครดิต sbobet777 คอม lsm99 เกม 918kiss download pc หวย เจษฎา สมัคร เกม สล็อต ออนไลน์ happy สล็อต sbobet 666 jetsadabet ยี่ กี สล็อต มังกร 888 fun88mobile m777 casino mobile ทาง เข้า จี คา สิ โน โปร โม ชั่ น วัน เกิด lsm99 เข้า ไม่ ได้ lsm2558 ล็ อ ต โต้ one แอ ปรับ ส ปิ น ฟรี royal คา สิ โน เอา ส ปิ น ฟรี coin master ios pic5678 มือ ถือ ซื้อ หวย เว็บ เจ ษ SBOBETV8 เค ดิ ต ฟรี 2020 casino sun รู น rov แทง ค์ sbobet128 gclub558 ทาง fun88 lsm99 ฝาก ขั้น ต่ํา แจ็ ค พอ ต gclub gclub call รับ ส ปิ น coin master casino crazy time เข้า jetsadabet lsm99 max ฟรี ส ปิ้ น ลิ้ ง แจก ส ปิ น coin master download 918kiss ios 2020 รับ ฟรี ส ปิ น coin master jetsadabet222 jetsadabet new da vinci slot mafia slot เครดิต ฟรี ไม่ ต้อง แชร์ เว็บ ส โบ เบ็ ต sbothaiclub ทาง เข้า ufa356 com สมัคร สมาชิก ufabet slot 918kiss auto gtr gclub สล็อต ขั้น ต่ำ 1 บาท hub88 casino
      ยู ฟ่า 911| เครดิต ฟรี ตอน นี้| slotxo ฝาก 5 บาท ฟรี 99 บาท ล่าสุด| บอล ออนไลน์ 77up| mm88wim| ufa191 สมัคร| หวย บอล| ยู ฟ่า เบ ท 168 vip| บา คา ร่า excel| รับ เครดิต ฟรี ทันที| ufa678 จ่าย จริง ไหม| six4bet| slot ฝาก 1 บาท รับ 99 วอ เลท| ufabet| สมัคร สมาชิก สล็อต ออนไลน์| แทง บอล ออนไลน์ ไม่มี ขั้น ต่ำ| โปร โม ชั่ น บอล ออนไลน์| ufabet global| sa คา สิ โน ออนไลน์| slotxo โปร ฝาก ครั้ง แรก| ufa คือ| scr888th เครดิต ฟรี| โหลด สล็อต live22| mega888 ฟรี เครดิต ไม่ ต้อง ฝาก 2019| โปร บา คา ร่า sa| ufabet5| บา คา ร่า b2y| โหลด xo ios| live22 เครดิต ฟรี| บา คา ร่า ufabet| 123ufabet| wwwufa999999| fifabet55| lsm99 ฝาก ขั้น ต่ำ| slotxo เว็บ ใหม่| ufa369vip| ทาง เข้า ยู ฟ่า bet| atm slot เครดิต ฟรี| ufabet9999| ufabet888| โหลด เกม สล็อต slotxo live22| xo123 เครดิต ฟรี| ติด ตั้ง เกม สล็อต| แทง บอล 88| ฟรี โบนัส ไม่ ต้อง ฝาก| ี ufascr| ยู ฟ่า เบ ท คาเฟ่| จี คลับ ผ่าน ท รู วอ ล เล็ ท| ฟรี เครดิต ไม่ ต้อง แชร์ ไม่ ต้อง ฝาก| ดาว โหลด เกม สล็อต xo| slotxo 09| pussy888 แจก เครดิต ฟรี| ดาว โหลด ส ล็ ต xo| fifa55gen| ยูสเซอร์ ฟรี| แท่ง บอล| ufabet ฝาก ขั้น ต่ำ| เข้า เว็บ ufabet365| sa gaming demo| slotxo ฝาก 1 บาท ฟรี 50 บาท ล่าสุด| mafia เครดิต ฟรี ล่าสุด| ufabet rich| sa เกม ด อ ท คอม| ทาง เข้า ufa7777| เว็บ ยู ฟ่า bet| เข้า เว็บ ยู ฟ่า|