<nav id="PfRoc"></nav>
      <wbr id="PfRoc"></wbr>
      <sub id="PfRoc"></sub>
    1. 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
       
      ufabet565 ดาวน์โหลด slotxo apk ufa goal168 ดาว โหลด ส ล็ ต xo sbobetonline244 สล็อต xo 888 เครดิต ฟรี ufabet888 pantip ทาง เข้า ufabet 89 fifa 855bet ufabet club โบนัส ไม่ ต้อง ฝาก betdog289 เครดิต ฟรี ยู ฟ่า 1668 mafia333 เครดิต ฟรี sa คา สิ โน ออนไลน์ สมัคร ufabet365 สมัคร ufabet เว็บ ตรง เครดิต ฟรี สมาชิก ใหม่ 2020 โหลด xo ios ทาง เข้า slotxo joker123 slotxo download apk ยิง ปลา ออนไลน์ ฟรี เครดิต slotxo apk download เครดิต ฟรี ไม่ ต้อง แชร์ 918kiss แทง บอล ฟรี เครดิต ี ufa1688 รับ เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน เข้า ufabet168 บา คา ร่า 285 slot online ฟรี เครดิต ไม่ ต้อง ฝาก 2019 ufabet 3d ufabet 89 mafia111 เครดิต ฟรี บา คา ร่า ออนไลน์ sa gaming บา คา ร่า 6 แต้ม ไลน์ ufa365 ufabet188 next88 รหัส ฟรี เครดิต ufa356 ที่ ดี ที่สุด สล็อต xo โหลด สมัคร ufabet ป๊อก เด้ง เงิน จริง ฟรี เครดิต ส ตุ ร บา คา ร่า 2020 ufabet168 v4 ทาง เข้า slotxo auto ฝาก ufa168 โปร เครดิต ฟรี sa gaming demo ufabet77 slot เงิน จริง slot โบนัส ฟรี fin24 บา คา ร่า ี ufapro888 ufa9999 ฝาก ถอน sa game asia slotxo ฝาก 1 บาท ฟรี 50 บาท ล่าสุด แทง บอล 1x2 ราคา บอล 1x2 โปร โม ชั่ น บอล แจก ฟรี เครดิต ดาวน์โหลด slotxo ลง คอม ทาง เข้า ufa365 โปร สมาชิก ใหม่ ฝาก 10 รับ 100 sa gaming เครดิต ฟรี 300 xo slot ทาง เข้า slotxo fifa55t เครดิต ฟรี สมาชิก ใหม่ ไม่ ต้อง ฝาก pok9 เครดิต ฟรี betufa agreement 8 918kiss ฟรี เครดิต 1000 บาท ufa356 ถอนเงิน รับ สมัคร เอเย่นต์ ufabet ยิง ปลา ออนไลน์ ฟรี เครดิต 285 บา คา ร่า ทาง เข้า ufabet45 pussy888 ฟรี เครดิต ufa goal168 sa gaming th88 slotxo ฝาก 1 บาท ได้ 100 วอ เลท slot เครดิต ฟรี ล่าสุด fifa55 only club388 เครดิต ฟรี สต ร บา คา ร่า ฟรี สมัคร pg slot แทง บอล โลก 2018 ยู ฟ่า เบ ท 21 ufabet one fifa55 ออนไลน์ เว็บ ufa888 betufa สมัคร live22 slot download แทง บอล ฟรี เครดิต sa baccarat 1988 ฝาก ufa168 เครดิต ฟรี บอล slotxo ฝาก 50 รับ 100 ทาง เข้า ufa6666 เว็บ ยู ฟ่า 777 mm88icom ดาวน์โหลด เกมส์ live22 slot เครดิต ฟรี ไม่ ต้อง ฝาก บา คา ร่า sa เกม ยู ฟ่า เบ ท 9999 mafia8888 เครดิต ฟรี เครดิต ฟรี 200 ล่าสุด ฟรี เครดิต ถอน ได้ 2019 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ fifa55 web slotxo joker เครดิต ฟรี nova88 ufabet828 เครดิต ฟรี ไม่ ต้อง เติม โหลด สล็อต ออนไลน์ เครดิต ฟรี slotxo ยู ฟ่า ออนไลน์ 168 ี ufabet 888 168 vegus168 ufabet168v4 แท่ง บอล ออนไลน์ autobet99 เครดิต ฟรี slot แจก เครดิต ฟรี 300 ทาง เข้า slotauto888 รับ ฟรี ไม่ ต้อง ฝาก ufa88 ทาง เข้า ฝาก 20 รับ 100 วอ เลท xo โบนัส เครดิต ฟรี ไม่ ต้อง ฝาก แทง บอล ออนไลน์ 789 xo slot download sa8 บา คา ร่า โปร โม ชั่ น แจก เครดิต ฟรี แจก ฟรี ไม่ ต้อง ฝาก ทีเด็ด บา คา ร่า สมัคร slotxo88 แจก ยูสเซอร์ พร้อม เครดิต ฟรี 777 เครดิต ฟรี ฟรี เครดิต ไม่ ต้อง ฝาก ถอน ได้ sa baccarat 1988 vegus168win sa gaming 89 betufa agreement 8 ufabet1688 เว็บ บอล ufabet ดาวน์โหลด slotxo88 ี ufa356 net แจก เครดิต ฟรี ง่ายๆ เล่น บอล ทั้ง สอง ฝั่ง เกม บา คา ร่า sa slotxo zeus88 sa gaming ฟรี เว้ บ เครดิต ฟรี เล่น fifa55 sa gaming เครดิต ฟรี 100 slotxo ios โหลด ไม่ ได้ click2sbobet แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2018 ไม่ ต้อง ฝาก vegus168 ฝาก เงิน slot ฝาก 100 ได้ 300 betufa สมัคร แจก ฟรี เครดิต ไม่ ต้อง ฝาก 2020 ทาง เข้า เล่น ufabet เครดิต ฟรี ยิง ปลา ค่าย sg bkk998 ufabet99 sa168 game แทง บอล ฟรี xo ฟรี 100 ufabet289 เครดิต ฟรี 150 ไม่ ต้อง ฝาก ก่อน ufa888s ufabet 789 fifa69 pantip ทาง เข้า ufa24h ทาง เข้า เกม xo ทาง เข้า ufa428 ดาว โหลด เกมส์ live22 ยู ฟ่า 7777 mysbo99 เครดิต ฟรี เครดิต ฟรี บอล ufa365 ทาง เข้า มือ ถือ บา คา ร่า gtrbet บา คา ร่า c03 slotxo แอ พ มือ ถือ สมัคร ufa9999 mega888 ฟรี เครดิต xo ทาง เข้า บา คา ร่า ปิด ปรับปรุง นาน ไหม เครดิต ฟรี ไม่ ต้อง แชร์ ไม่ ต้อง ฝาก ล่าสุด rg888 บา คา ร่า สมัคร สมาชิก สล็อต xo slotxo เว็บ ใหม่ ฝาก ขั้น ต่ํา 20 joker689 เครดิต ฟรี ufabet kik ufabet 24h แอ ป slotxo เครดิต ฟรี สมาชิก เก่า ufabet24hrs ufabet189 สมัคร เกม สล็อต ufa ฝาก ไม่มี ขั้น ต่ํา เครดิต ฟรี 200 ล่าสุด แจก เครดิต ฟรี sa รับ เครดิต ฟรี ทันที sa gaming slot game slotxo ฝาก ออ โต้ youlike222 เครดิต ฟรี แท่ง บอล ออนไลน์ เว็บ ufabet ดี ไหม ดาวน์โหลด joker xo โบนัส ไม่ ต้อง ฝาก ยู ฟ้า 369 บา ขา รา fifa55fb slotxo โหลด สมัคร สมาชิก slotxo แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2019 ไม่ ต้อง ฝาก ufabet net default 8 sa gaming 168vip เข้า สู่ ระบบ slot online ฟรี เครดิต ไม่ ต้อง ฝาก 2020 เว็บ ยู ฟ่า 888 เล่น fifa55 ufa1688 ดี ไหม สมาชิก ใหม่ ฟรี เครดิต 2020 slotxo ฟรี เครดิต 100 ไม่ ต้อง ฝาก ufabet เข้า เล่น ufax10 เครดิต ฟรี ufabet winner ufa678 เครดิต ฟรี ทาง เข้า ufabet99 สมัคร slotxo โบนัส 100 ufabet ดี ไหม ufabet955 เข้า ยู ฟ่า เบ ท แทง บอล คู่ ไหน ดี roma เครดิต ฟรี slot free credit ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แทง บอล เครดิต ฟรี ufa147 มือ ถือ ufabet ที่ คน เล่น เยอะ ที่สุด สมัคร ufa88 เล่น บา คา ร่า ออนไลน์ ฟรี sa 48 slot xo เล่น บา คา ร่า ออนไลน์ ฟรี sa 168slotxo เครดิต ฟรี winner55 โปร โม ชั่ น slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ 2019 ยิง ปลา รับ เครดิต ฟรี สมัคร kingkongxo ดาวน์โหลด ดาวน์โหลด slotxo88 แทง บอล ให้ ได้ เงิน ล้าน betufa default 8 ufabet1688 เครดิต ฟรี เว็บ ฟีฟ่า ufabet แจก เครดิต ฟรี ไม่ ต้อง ฝาก บา คา ร่า เท ส 168slotxo เครดิต ฟรี โหลด สล็อต ออนไลน์ slotxo 49 ฝาก ufa168 sbobet24online ี ufabet 999 เครดิต ฟรี สมาชิก ใหม่ 2020 สล็อต xo โหลด แจก เครดิต ล่าสุด แอ พ ufabet777 ลิ้ ง ค์ โหลด เกมส์ https www srd168th com slotxo sa999 gaming sagame88com sa gaming bet ดาวน์โหลด slotxo android ทาง เข้า ufabet99 ฝาก 100 รับ 200 xo ufa เว็บ ตรง ufabet 515 เล่น ยู ฟ่า 191 ฝาก 20 รับ 100 ufabet ี ufabet88888 ทาง เข้า ufa365 ufa9bet เว็บ บา คา ร่า ufabet slotxo สมาชิก ใหม่ slotxo ดาวน์โหลด ลงมือ ถือ http www slotxo com m ufa คือ ทาง เข้า เอ เย่ น ufabet 168ufabet slotxo download ล่าสุด บอล ฟรี เครดิต สมาชิก ใหม่ แจก เครดิต ฟรี sa gaming group mafia แจก เครดิต ฟรี ล่าสุด แทง บอล 2 คู่ 1688 ufa 918kiss ฟรี เครดิต 1000 บาท ufa1688 สมัคร ยิง ปลา ฟรี 150 เข้า เล่น เกม สล็อต xo sbobetvip888 sa gaming ts911 บอล น่า แทง สมัคร slot555 แทง บอล ออนไลน์ fifa555 ทาง เข้า slotxo 899 เปิด ยูสเซอร์ ฟรี เครดิต ไม่ ต้อง ฝาก แจก เครดิต ฟรี 50 ไม่ ต้อง ฝาก ล่าสุด เว็บ ยู ฟ่า 168 ss66 บา คา ร่า เล่น บา คา ร่า ออนไลน์ ฟรี sa gaming เสีย บา คา ร่า pantip 2563 ufa678 เข้า ไม่ ได้ ทาง เข้า slotxo88 ทาง เข้า slotxo vip slot mg เครดิต ฟรี รับ เครดิต ฟรี ง่ายๆ เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน 2020 mt88casino แทง หวย ligaz888 co หวย บอล fifa55 ออนไลน์ สมัคร ufa168 sa เกม มิ่ง vip ufabet 982 sa gameth slot ฝาก 1 บาท รับ 99 วอ เลท ดาวน์โหลด slotxo เวอร์ชั่น ล่าสุด sa เกม มิ่ง 66 ยู ฟ่า เบ ท 99 ยูสเซอร์ ฟรี ufabet x8 เครดิต ฟรี ยิง ปลา 150 แทง บอล ขั้น ต่ำ 50 บาท mafia เครดิต ฟรี ล่าสุด roma เครดิต ฟรี 77up2u fifa ฝาก 50 ฟรี 100 เล่น บอล ให้ รวย ufabet95 ทาง slotxo ดาวน์โหลด slotxo 44 slot เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน 2020 ยู ฟ่า vip เครดิต ไม่ ต้อง ฝาก ufabet 188bet ี ufa356 ufabet gold live22 slot download ทาง เข้า slotxo199 ทาง เข้า agent ufabet สมาชิก ใหม่ ฟรี เครดิต 50 pok9 เครดิต ฟรี slotxo สมัคร สมาชิก ยู ฟ่า 365 slot1688 online ทาง เข้า ufabet99 ยู ฟ่า ออนไลน์ 24 ถอนเงิน ufabet168 บา คา ร่า 11111 ufabet 789 slotxo ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 ufa ไม่มี ขั้น ต่ํา ufa88 มือ ถือ ufabet เว็บ แม่ 1688 ufa lsm99 บา คา ร่า mvegus1682 สมัคร ยู ฟ่า 365 เล่น พนัน บอล ออนไลน์ เครดิต ฟรี ถอน ได้ เลย ฟรี โบนัส ไม่ ต้อง ฝาก แจก เครดิต ล่าสุด ทาง เข้า เว็บ ufabet สล็อต xo ดาวน์โหลด slotxo ufabet 899 sath88 slot โบนัส ไม่ ต้อง ฝาก ufabet352 แจก โบนัส ฟรี บา คา ร่า sa เกม ฝาก 100 รับ 200 xo ufa168th เครดิต บอล ฟรี ไม่ ต้อง ฝาก เล่น fifa55 ี ufabet369 โหลด สล็อต xo ios ยู ฟ้า เบ ท ี ufa24h member ufabet ดาวน์โหลด แอ พ slotxo เว็บ ยู ฟ่า 168 แจก โบนัส 100 ufa23 บา คา ร่า sa 66 sa gaming 66 โบนัส 100 สำหรับ สมาชิก ใหม่ ไม่ ต้อง ฝาก เล่น บา คา ร่า sa ufabet company โปร บา คา ร่า ฟรี เครดิต ฟรี ไม่ ทาง เข้า เล่น xo ufabet 3333 แจก โบนัส 100 fifa555 ฝาก 50 ฟรี 100 ufabet982 slot ไม่ ต้อง ฝาก ufa24h bet โหลด เกม xo slot live22 สมัคร slotxo ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 แจก ทุน ฟรี ไม่ ต้อง แชร์ bslot88 เครดิต ฟรี ยิง ปลา ได้ เงิน ฟรี เครดิต ฟรี 2020 ไม่ ต้อง ฝาก ก่อน เครดิต ฟรี เดือน นี้ ufa24h วิธี ติด ตั้ง slotxo ufa600 live22 สมัคร ยู ฟ่า 168vip ufabet 124 918kiss แจก เครดิต ฟรี 2020 ทาง เข้า ยู ฟ่า 777 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ดาว โหลด เกม xo สมาชิก ใหม่ แจก ฟรี ส รู บา คา ร่า จุดจบ บา คา ร่า slotxo แอ พ มือ ถือ ดาวน์โหลด เดี๋ยวนี้ เครดิต ฟรี ไม่ ต้อง ไล่ ค์ ไม่ ต้อง แชร์ 2020 เกม มัก คา ร่า สมัคร พนัน บอล แทง บอล 24 เอเย่นต์ ufabet แอ ป ยู ฟ่า เบ ท เว็บ ufa slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ 2020 sbobetball168 slot เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ufabet168 ฝาก เงิน บา คา ร่า วัว slotxo ทาง เข้า mt88casino ไลน์ ufa live22 เครดิต ฟรี ไม่ ต้อง ฝาก ufabet ufa777 mafia แจก เครดิต ฟรี ล่าสุด ufa6666 สมัคร เข้า เล่น ufabet369 ufabet7777 สมัคร ufa24h ufabet แม่ ufabet sport ยู ฟ่า ออนไลน์ 24 mm88fc vip เครดิต ฟรี 50 ถอน ได้ 300 สมัคร พนัน บอล sa gaming ปรับปรุง บา คา ร่า ออนไลน์ sa gaming ี ufa9999 ยิง ปลา เครดิต ฟรี ไม่ ต้อง ฝาก 2019 ล่าสุด ทาง เข้า ufabet 72 ufa356 ดี ไหม sa sa game 1688 slot ฝาก 1 บาท รับ 99 วอ เลท copa69com mm88macao zz8 เครดิต ฟรี ufabet promotion slotxo ฟรี 50 ยู ฟ่า เบ ท 88 sa gaming เปิด ตอน ไหน sa gaming 168 โปร โม ชั่ น เว็บ พนัน บอล สมัคร pg slot สมัคร แทง บอล ufa24h 4 slotxo แอ พ มือ ถือ ufa หลัก สมัคร สมาชิก ufabet บา คา ร่า คลับ เว ป บอล ดี ที่สุด slot ออนไลน์ ฟรี sa gaming66 เข้า สู่ ระบบ ดาวน์โหลด สล็อต xo168 mm88vivo ทาง เข้า เล่น ufabet sbobetclub168 ทาง เข้า ufabet45 สมัคร slotxo111 sa gaming เครดิต ฟรี ไม่ ต้อง ฝาก ufa24h ทาง เข้า live22 ดาวน์โหลด บา คา ร่า วัว วัว sa mega888 ฟรี เครดิต ไม่ ต้อง ฝาก ยิง ปลา ฟรี 150 ยู ฟ่า เบ ท 800 สมัคร แท่ง บอล prompay88 เครดิต ฟรี ufabet slots ufabet ฝาก ี ufa9999 แอ พ ufabet xo เครดิต ฟรี live22 slot ฟรี เครดิต โหลด xo ios แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2020 fifa55com แทง ฟรี ไม่ ต้อง ฝาก ufabet mobile sa gaming 168vip เข้า สู่ ระบบ slot เงิน ฟรี pussy888 ฟรี เครดิต 8klbfo ufabet828 lsm789up ufa88s ฝาก 20 รับ 100 ufabet ยิง ปลา ฝาก 100 ฟรี 300 สมาชิก ใหม่ แจก เครดิต ฟรี ufa147 sport พ ริ ต ตี้ บา คา ร่า รับ เครดิต ฟรี ทันที slot ฟรี เครดิต ไม่ ต้อง ฝาก ก่อน ยิง ปลา เครดิต ฟรี ไม่ ต้อง ฝาก cq9 slot ฟรี เครดิต ufadb88 สมัคร live22 ดาวน์โหลด ufadb88 สมัคร สล็อต xo 11 สล็อต xo 888 เครดิต ฟรี wwwufa600 ufa356 v2 แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2018 ไม่ ต้อง ฝาก ufabet898 sa gaming login สมัคร slotxo ฝาก 10 รับ 100 โหลด joker slot spin999 ฟรี เครดิต ufathai 2 เซ ก ชี่ บา คา ร่า ยู ฟ้า 888 ได้ บา คา ร่า เว ป ยู ฟ่า เล่น พนัน บอล ออนไลน์ sa gaming 911 ufabet ทาง เข้า เล่น แทง บอล 2 คู่ เครดิต ฟรี ตอน นี้ รับ เครดิต ฟรี ทันที เครดิต ไม่ ต้อง ฝาก เครดิต ฟรี ทันที ยู ฟา 191 แทง บอล คืน นี้ ufabet 007 ทาง เข้า sa game 25 แจก เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 ufa ไม่มี ขั้น ต่ํา mm88fair com slot เครดิต ฟรี ล่าสุด app slotxo slotxo ฝาก 1 บาท ได้ 100 ทาง เข้า ufa365 sa gaming 06 เครดิต ฟรี ได้ จริง 2020 แทง บอล ให้ ได้ เงิน โปร โม ชั่ น เว็บ พนัน บอล เข้า เล่น ufabet sa gaming slot แทง บอล ออนไลน์ ขั้น ต่ํา 20 เข้า เล่น ยู ฟ่า ดาว โหลด เกม ส ล๊ อ ต แจก เครดิต ฟรี 50 ไม่ ต้อง ฝาก ล่าสุด sa gaming เครดิต ฟรี ไม่ ต้อง ฝาก ดาว โหลด ส ล็ ต xo ufabet600 wwwufa600 ี ufa6666 แทง บอล 77 slotxo download ล่าสุด เครดิต ฟรี ไม่ ต้อง โอน เครดิต ฟรี 777 เครดิต ฟรี sa gaming ufa168com ทํา เทิ ร์ น เครดิต ฟรี เบอร์ โทร ufa365 สมัคร เว็บ ยู ฟ่า สมัคร เกม live22 ยู ฟ่า 365 demo sa gaming slot online เครดิต ฟรี เซ๊ ก ซี่ เกม slotxo แอ พ มือ ถือ ดาวน์โหลด เดี๋ยวนี้ ค่า บ่า ร่า เว ป ยู ฟ่า เข้า sa gaming ufa356 แจก เครดิต ฟรี ค่า ร่า ufabet168 เครดิต ฟรี 300 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ member ufabet slot รับ เครดิต ฟรี ไม่ ต้อง ฝาก ufa007vip ufabet lucky ี ufa345 ยู ฟ่า 369 สมาชิก ใหม่ ฟรี เครดิต ไม่ ต้อง ฝาก 2020 slotxo mobile ios ว้า ว บา คา ร่า ยู ฟ่า เบ ท วิน แจก เครดิต ฟรี ถอน ได้ ไม่ ต้อง ฝาก ทาง เข้า slotxo joker 2019 betufa 1688 slot เครดิต ฟรี ล่าสุด ราคา แทง บอล วัน นี้ สมัคร ufabet888 สมาชิก เครดิต ฟรี slotxo ฝาก 1 รับ 50 slotxo ฝาก 1 บาท ฟรี 99 บาท 2020 บา คา ร่า baccarat ฟรี เครดิต ไม่ ต้อง แชร์ ไม่ ต้อง ฝาก ufabet group ufa9999com ufa7777 ทาง เข้า เอเย่นต์ ufabet เว็บ ยู ฟ่า 777 ufabet agent ทาง เข้า spin999 ฟรี เครดิต บา คา ร่า วัว วัว sa ฝาก 100 รับ 200 xo sa gaming 168 vip ufa191 ดี ไหม slot แจก เงิน ex88 เครดิต ฟรี ufawb998 psthai888 เครดิต ฟรี slotxo ฝาก 50 รับ 50 sa gaming bet ufabet 5000 sa gaming vip เครดิต ฟรี เครดิต ฟรี ไม่ ต้อง ฝาก ล่าสุด mm88bet vip fifa55u เครดิต 1000 ufaoo7 ufabet456 ufawb998v3 sbobetsh 888 ไก่ชน ufabet สล็อต xo ios เล่น slotxo ผ่าน หน้า เว็บ sa gaming demo vip โปร แจก เครดิต ฟรี ทาง เข้า ยู ฟ่า 1688 ufabet แจก เครดิต ฟรี 2019 vs168sure 55fifabet xo ฟรี 100 ทาง เข้า slotxo199 ts38 บา คา ร่า คำคม บา คา ร่า ufabet 99999 ufabet one ยู ฟ่า เบ ท 999 ๊ ufabet ufa88 มือ ถือ sa gaming 168 sa gaming 77 ufabet ที่ คน เล่น เยอะ ที่สุด slotxo สมัคร sa8 บา คา ร่า ufabet 24hrs ufabet828 wwwufa999999 ufabet joker slotxo ฝาก 100 รับ 100 slot เครดิต ฟรี ไม่ ต้อง ฝาก 2019 ufabet public chgpwd 2 ufa800 เครดิต ฟรี สมัคร เอเย่นต์ ufabet บอล รวย วัน นี้ ดาวน์โหลด aka slotxo เว็บไซต์ แท่ง บอล เล่น บอล ให้ รวย รับ ฟรี ไม่ ต้อง ฝาก แทง บอล รอง ดาวน์โหลด slotxo88 ทาง เข้า ufabet88888 เปิด ยูสเซอร์ ฟรี เครดิต 2020 bet236 บา คา ร่า sa gaming แจก เครดิต ฟรี แทง บอล ผ่าน ไลน์ วัว วัว บา คา ร่า คือ fifa 7777 sa แจก เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ติด ตั้ง เกม สล็อต uefa goal168 mafia88 เครดิต ฟรี ไม่ ต้อง ฝาก ufabet777 โหลด เกมส์ สล็อต ออนไลน์ slotxo เครดิต ฟรี 50 ทาง เข้า ufa168 เว็บ ยู ฟ่า ทาง เข้า ufabet 363 ufabet69 เครดิต ฟรี เครดิต ฟรี 777 slotxo สมัคร ใหม่ ufabet asia ufabet 982 ทาง เข้า slotauto888 club388 เครดิต ฟรี ufa9999 ฝาก ถอน สมาชิก ใหม่ ฟรี เครดิต ไม่ ต้อง ฝาก 2020 ufa678 ไลน์ ufabet ufa800 ทาง เข้า สล็อต โปร โม ชั่ น แทง หวย ufabet ี ufa007 ufabet 11 โหลด แอ พ slotxo ufaoo7 เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 ล่าสุด เครดิต ฟรี ล่าสุด 2019 best88 เครดิต ฟรี สมาชิก ใหม่ ฟรี เครดิต ไม่ ต้อง ฝาก 2020 ae บา คา ร่า slotxo โหลด ios ufa ไม่มี ขั้น ต่ํา โปร โม ชั่ น ufa ufabet slots sa gaming 199 ยู ฟ่า เบ ท 666 ufabet7777 fifa55 เว็บ ตรง โหลด เกมส์ สล็อต ออนไลน์ download slotxo ufabet 128 ดาวน์โหลด slotxo mobile slot สมาชิก ใหม่ รับ เครดิต ฟรี slotxo ฟรี เครดิต 20 betufa ทาง เข้า club388 เครดิต ฟรี slotxo mobile ios ยูสเซอร์ ฟรี ufa700s บา คา ร่า c01 ufabet787 รับ เครดิต ฟรี ไม่ ต้อง ฝาก 2020 slotxo เล่น ฟรี 100 ี ufabet356 ดาวน์โหลด slot007 ทาง เข้า ufabet789 โบนัส ไม่ ต้อง ฝาก ufabet789 prompay88 เครดิต ฟรี สมัคร เว็บ ufa ufabet line ufa888 ทาง เข้า เครดิต ฟรี สมาชิก ใหม่ ทาง เข้า ufabet787 แทง พนัน บอล ออนไลน์ เล่น บา คา ร่า ที่ ufabet หวย ufabet เล่น บอล ให้ ได้ เงิน ทุก วัน ยู ฟ่า เบ ท คาเฟ่ sa เกม บา คา ร่า โหลด เกม xo ufabet แจก ฟรี เครดิต ufabet68 ufa7777com mega888 ฟรี เครดิต ไม่ ต้อง ฝาก โหลด สล็อต 123 เครดิต ฟรี 300 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ อยาก ได้ เครดิต ฟรี ufabet 363 sa บา คา ร่า vip ยู ฟ่า 369 ufabet 1668 slot เครดิต ฟรี ถอน ได้ slot ออนไลน์ ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ทาง เข้า slotxo88 ufabet488 แอ พ sa gaming เอ เย่ น ยู ฟ่า sa vip บา คา ร่า fifa55star ufabet888s ufabet1678 ufabet168com โปร เครดิต ฟรี ufabet8z slotxo joker 100 สมัคร เล่น slot แทง บอล ออนไลน์ 888 slotxo ฝาก 1 บาท ฟรี 50 บาท ล่าสุด slotxo ฝาก แรก 50 sa gaming vip เครดิต ฟรี ดาวน์โหลด สล็อต xo 888 ส ปี ด บา คา ร่า เครดิต ฟรี วัน นี้ fhm99 เครดิต ฟรี บา คา ร่า 50000 saxygaming66 ufa189 ลาว ดาว โหลด slot บา คา ร่า 2020 แคน ดี้ บา คา ร่า ufabetsr3 บา คา ร่า super six คือ บา คา ร่า sa gaming vip ยู ฟ่า เบ ท 369 ufabet เว็บ เครดิต ฟรี ไม่ ฝาก ไม่ แชร์ ล่าสุด ยู ฟ่า เบ ท 369 89fifa บา คา ร่า โหลด แอ พ slotxo ufabet v1 โหลด สล็อต xo ios ufa800 แจก ฟรี 100 ufabet898 mafia8888 เครดิต ฟรี แจก ฟรี เครดิต 2020 แทง ขั้น ต่ํา 10 บาท สมัคร เกม slotxo wwwufa9999 แทง บอล หวย ออนไลน์ mm88 ufa ufabet 1668 แอ พ บา คา ร่า pantip gaming 168 เบอร์ ติดต่อ slotxo fastvip2541 แจก ทุน ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ทาง เข้า slotxovip slot ฟรี เครดิต 2019 vegus168 pantip แซ ก ซี้ บา คารา ดาวน์โหลด 168slotxo สล็อต xo 24 hr ยู ฟา 88 slotxo ติด ตั้ง สมัคร เล่น slot ufabet456 เค ดิ ต ฟรี slotxo fifa55u เครดิต ฟรี ี ufa88888 ยู ฟ่า เบ ท 72 ดาว โหลด ส ล็ ต xo roma เครดิต ฟรี แทง บอล ทบ ี ufa678 ทํา เทิ ร์ น เครดิต ฟรี sa บา คา ร่า 66 ดาวน์โหลด slotxo mobile ี ufa747 heng666 เครดิต ฟรี slot เครดิต ฟรี ไม่ ต้อง ฝาก 2019 ล่าสุด สมัคร เล่น สล็อต sa789 บา คา ร่า ufa777com ทาง เข้า slotxoz bslot88 เครดิต ฟรี sa gaming 168vip xo slot ทาง เข้า บา คา ร่า pantip ทาง เข้า ufa147 สล็อต xo 24 hr ufa ไม่มี ขั้น ต่ํา club388 เครดิต ฟรี slotxo download ios สมัคร เล่น บอล ออนไลน์ ส รู บา คา ร่า vegus91 sa casino ปิด ปรับปรุง ได้ เครดิต ฟรี ufa168 ดี ไหม สล็อต xo ดาวน์โหลด slotxo ufabet700 sbobet168 line ดาวน์โหลด xo สล็อต sa gaming 1111 บอล ฟรี เครดิต ufabet18 แจก ทุน ฟรี ไม่ ต้อง แชร์ เข้า เว็บ ยู ฟ่า sa gaming v2 เกม บา คา ร่า sa ufa1688 ยิง ปลา เครดิต ฟรี ไม่ ต้อง ฝาก ufabet928 ไล สด บา คา ร่า pok9 เครดิต ฟรี ufabet 5000 สล็อต xo ดาวน์โหลด slotxo pc download ufabet joker บอล ออนไลน์ 168 ex88 เครดิต ฟรี เซ ค ซี่ บา คา ร่า ufabet sa gaming download slotxo บา คา ร่า วัว วัว slotxo download pc gaming66 ี ufa747 สมัคร เล่น slot sbobet24 online ให้ เครดิต ฟรี ถอนเงิน ufa ufabet10 เอเย่นต์ ยู ฟ่า ufabet12 สมัคร sa gaming vip แทง บอล ออนไลน์ ฝาก ขั้น ต่ํา 100 sa gaming hacker เครดิต ฝาก 1 บาท รับ 100 123fazsv3 คา สิ โน sa gaming สมัคร เล่น สล็อต xo แจก เครดิต ฟรี 2000 ไม่ ต้อง ฝาก 2019 ufabet login สล็อต xo ออ โต้ ufa fun888 ufabet เอ เย่ น แอ ป slotxo ี ufa9bet ทาง เข้า slotauto888 ufabet8z บอล ต่ำ รับ ฟรี ไม่ ต้อง ฝาก PGSLOT ทาง เข้า amb555 ทาง เข้า fifa ace333 ฟรี เครดิต ไม่ ต้อง ฝาก โหลด xo ios แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2019 ไม่ ต้อง ฝาก ufa191 โกง ufabet728 แทง บอล โปร โม ชั่ น ี ufabet911 เครดิต ฟรี ไม่ ต้อง เติม ี ufa9999 เครดิต ฟรี joker xo ยู ฟ่า เบ ท 8888 ทาง เข้า เล่น slotxo mega888 ฟรี เครดิต ufa877 คืน ยอด เสีย ufabet v9 ทาง เข้า ufa6666 fhm99 ฟรี เครดิต sa game asia ufabet fb ufabet lion 777slot เครดิต ฟรี เอ เย่ น ufabet เครดิต ฟรี 200 ไม่ ต้อง ฝาก ก่อน แทง บอล ฟรี เครดิต 2020 slotxo ไม่มี ขั้น ต่ำ roma เครดิต ฟรี ufabet500 sa gaming premium vegus168sure ป๊อก เด้ง เงิน จริง ฟรี เครดิต ทาง เข้า สล็อต xo sa168 game ฝาก ถอน ufa24 ufa656 ทาง เข้า มือ ถือ ufabet 899 ทาง เข้า slotxo 899 www fifa7777com เครดิต ฟรี เฮง เฮง sa gaming 168 login ี ufa356 ี ufabet88 sa ฟรี สมาชิก ใหม่ ฟรี เครดิต ไม่ ต้อง ฝาก 2020 แทง บอล คู่ ไหน ดี ี ufa345 live22 เครดิต ฟรี 100 สมัคร งาน ufabet sa gamingsexy fifa 855bet เครดิต ฟรี ไม่ ต้อง slotxo 49 ufaeasy3 เครดิต ฟรี ไม่ ufabet แจก เครดิต sa gaming ฟรี เครดิต แซ ก ซี้ บา คารา ทาง เข้า ufabet88888 slotxo 09 slotxo ฝาก 15 บาท รับ 100 sa slot demo สมัคร แท่ง บอล เช็ ก ชี่ บา คา ร่า 1668 บา คา ร่า จำลอง ทาง เข้า ufabet191 download slotxo ios ufabet828 slot แจก เครดิต ฟรี 300 ยู ฟ่า ออนไลน์ ทาง เข้า ufabet777 sa gaming vip เครดิต ฟรี
      สล็อต ให้ ทุน ฟรี| joker slot ทาง เข้า| slot1234 pg| ดาว โหลด slot joker| เล่น สล็อต sbobet| สล็อต โจ๊ก เกอร์ เติม true wallet ไม่มี ขั้น ต่ํา| pg slot ฝาก ถอน ไม่มี ขั้น ต่ำ| แจก เค ดิ ต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์| โหลด เกมส์ โจ๊ก เกอร์ 888| joker ถอนเงิน| เข้า เล่น เกม live22| แนะ นํา เว็บ เล่น สล็อต| slot ท รู วอ ล เล็ ต| ติดต่อ sboibc888| slotxo galaxy| ฟรี เค ดิ ต ไม่ ต้อง ฝาก| 168jk slot| mobile joker slot| joker strike slot| สล็อต โอน วอ ล เลท| xoslot ทาง เข้า| เว็บ เล่น เกม ได้ เงิน| pg slot 198| slot online pg soft| สมัคร สมาชิก ใหม่ เครดิต ฟรี| ทาง โจ๊ก เกอร์| slot machine คือ| เล่น สล็อต เกมส์ ไหน ดี| joker99 slot| ทาง เข้า 55slot xo| demo slot captain bounty| slot pg cc| joker slot 1788| joker123 auto v2| โปร สล็อต pg| slot joker free| joker ออ โต้| joker โปร สมาชิก ใหม่| slot joker777| ufa nova88| ทาง เข้า สล็อต โจ๊ก เกอร์| สมัคร เล่น สล็อต เครดิต ฟรี| สล็อต ค่าย pt| หมุน วง ล้อ ได้ เงิน จริง| ดาวน์โหลด pg| รวม ค่าย สล็อต ใน เว็บ เดียว| joker โปร 50| pg slot free| slot joker 7788| sbobet สล็อต| joker slot 1788| ถอนเงิน bet2you| pgslot nb| joker เติม เงิน| เว็บ เล่น เกมส์ ได้ เงิน| เกม สล็อต แตก ง่าย 2020| สล็อต ถอน ไม่มี ขั้น ต่ํา วอ เลท| โหลด เกม 918kiss 2020| ป๊อก เด้ง ออนไลน์ แจก เครดิต ฟรี| มาเฟีย สล็อตslotxo88| ยิง ปลา ท รู วอ ล เล็ ต| สล็อต 888 แตก ง่าย| slot roma joker demo| เล่น แล้ว ได้ เงิน ฟรี| หน้า เว็บ โจ๊ก เกอร์| แจก เครดิต ฟรี ให้ ยืนยัน ตัว ตน|