1. <tr id="c794"></tr>
          <center id="c794"></center>
        2. 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
           
          ufabet5000 ทาง เข้า ufabet 89 เล่น บอล ufabet998 ufa เบ ท เครดิต ฟรี 200 ล่าสุด ทาง เข้า ufabet88 ufabet007 แทง บอล ฟรี เครดิต 100 ทาง เข้า สล็อต xo fifa แทง บอล แทง บอล ฟรี เครดิต 2020 ดาวน์โหลด slotxo asia ufabet77 ufa888com เล่น บา คา ร่า sa ufabet ฝาก 100 918kiss เครดิต ฟรี 30 ทาง เข้า ufa777 slot ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ วิธี ดาวน์โหลด slotxo slot แจก เครดิต ฟรี 300 ufabet955 betufa mm88fifa sa เกม 77 slot free credit ไม่ ต้อง ฝาก 2020 sa gaming เครดิต ฟรี ไม่ ต้อง ฝาก ufabet 115 v2 ฝาก 50 รับ 200 ไม่ ต้อง ทํา เทิ ร์ น ufabet987 บา คา ร่า คือ เกม อะไร ฝาก 50 รับ 150 ไม่ ต้อง ทํา เทิ ร์ น ล่าสุด ufabet pr รับ เครดิต ฟรี 100 ไม่ ต้อง ฝาก โปร โม ชั่ น บอล แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2018 slotxoth download แจก เครดิต ฟรี ถอน ได้ ufawb998 slot แจก ฟรี เครดิต mysbo99 เครดิต ฟรี ยู ฟ่า เบ ท 888 ี ufabet168 เครดิต ฟรี ไม่ ฝาก ก่อน mafia88 เครดิต ฟรี 50 ufabet 24 ยู ฟ่า ออนไลน์ 168 เครดิต ฟรี 300 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ slotxo 49 ฟรี เครดิต 50 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ สมัคร สมาชิก แทง บอล ออนไลน์ ฟรี เครดิต ถอน ได้ 2019 885ufabet เว็บ ยู ฟ่า 168 คา สิ โน sa gaming mafia เครดิต ฟรี ใหม่ ล่าสุด wwwufa6666 ยู ฟ่า ออนไลน์ ไลน์ บา คา ร่า บา คา ร่า วัน ละ 500 เครดิต ฟรี ไม่ ยุ่งยาก 2020 ี ufa777 ยู ฟ่า เบ ท 666 slotxo ฟรี 100 ฝาก เงิน ufa888 sbobetonline244 แทง ฟุตบอล ออนไลน์ ฝาก ufabet บา คา ร่า ไทเป ligaz24th เล่น ยู ฟ่า มังกร บา คา ร่า ufabet99 ี ufa356 ufabet dna ufa55net ufa877 คืน ยอด เสีย เว็บ บอล ufabet u ฟ่า 888 บา คา ร่า win915 แทง บอล ทบ เครดิต ฟรี 2020 ไม่ ต้อง ฝาก ก่อน แจก เครดิต ฟรี ใหม่ ล่าสุด ยู ฟ่า เบ ufa168 มือ ถือ หวย บอล ยิง ปลา เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ fifa 855bet ดาวน์โหลด แอ พ slotxo fifa551234 เครดิต ฟรี วัน นี้ sa แกม มิ ง แทง ฟุตบอล ออนไลน์ ufabet company ดาวน์โหลด slot007 แทง บอล 24 ace333 ฟรี เครดิต ไม่ ต้อง ฝาก holiday palace ฟรี เครดิต ufabet 123 โปร โม ชั่ น สล็อต ออนไลน์ ยู ฟ่า เบ ท 356 ถอนเงิน ufa191 แจก เครดิต ฟรี 200 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 ufa678 หวย ทาง เข้า slotauto888 ยู ฟ่า เบ ท 88888 slotxo สมาชิก ใหม่ ufa69b sa baccarat 1988 ufa365v2 โบนัส ฟรี ไม่ ต้อง ฝาก ib88 เครดิต ฟรี แทง บอล ขั้น ต่ำ ยู ฟา 777 winner55 โปร โม ชั่ น สมัคร เล่น สล็อต xo vegus5g ยิง ปลา ฝาก 100 ฟรี 300 slot ฝาก 1 บาท รับ 99 วอ เลท fifa555pro ufa191 มือ ถือ mm88fc pantip ufabet 55 แทง บอล ออนไลน์ 24 ชม แทง บอล ขั้น ต่ำ 100 โปร โม ชั่ น copa69 ยิง ปลา ฟรี เครดิต ไม่ ต้อง ฝาก ล่าสุด ยิง ปลา ออนไลน์ ฟรี เครดิต แทง บอล สอง ฝั่ง ทาง xo ufabet 100 ฟรี 100 vegus96 บา คา ร่า ufabet แทง บอล กิน ค่า น้ํา เครดิต ฟรี 300 ไม่ ต้อง ฝาก slot ไม่ ต้อง ฝาก ก่อน ี ufa888 รับ โบนัส ฟรี ไม่ ต้อง ฝาก เข้า เล่น เกม สล็อต xo ufabet777 356 แจก เครดิต ฟรี ใหม่ ล่าสุด เว็บ ยู ฟ้า เครดิต 100 ไม่ ต้อง ฝาก sa gaming 66 pantip ทาง เข้า amb555 วิธี โหลด สล็อต wwwufa9999com slotxo ฝาก 10 บาท ดาวน์โหลด slotxo 888 mt88casino สมัคร ufabet88 sa gaming เข้า ไม่ ได้ เครดิต ฟรี ไม่ ต้อง โปร โม ชั่ น ufa โบนัส ฟรี ไม่ ต้อง ฝาก sa gaming link fin24 บา คา ร่า id line ufabet เบ ท ยู ฟ่า ufa191 ยิง ปลา ufabet268 slotxo ใหม่ ล่าสุด แอ พ slotxo fifa55 แทง บอล ออนไลน์ ufa98s ี ufa ufabet365s สมัคร sa gaming66 สมัคร สมาชิก สล็อต xo โหลด สล็อต 123 slot ฝาก ครั้ง แรก แทง บอล fifa555 ufa55bet fifa55 หวย บอล ดี ดาวน์โหลด สล็อต xo 888 slotxo เครดิต ฟรี ไม่ ต้อง แชร์ ทาง เข้า ufa428 gaming บา คา ร่า sa gaming slot login ufabet ufabet 5g แทง บอล โลก โบนัส ไม่ ต้อง ฝาก ufa911 เครดิต ฟรี ถอน ได้ ufa แทง บอล แทง บอล ฟรี เครดิต 2020 เข้า sa gaming ไม่ ได้ vegus168 vegus69 รับ เครดิต ฟรี ง่ายๆ slot สมาชิก ใหม่ รับ เครดิต ฟรี สมัคร สมาชิก สล็อต xo s ทาง เข้า slotxo แจก ฟรี เครดิต 2020 แทง บอล ไม่ ให้ เสีย ufa365 โหลด แอ พ slotxo เว ป บอล ฝาก ขั้น ต่ํา 100 ufabet เครดิต ฟรี ไม่ ต้อง ฝาก 168slotxo เครดิต ฟรี ufa365 สล็อต เซ๊ ก ซี่ บา คา ร่า เกมส์ 66 mafia แจก เครดิต ฟรี ล่าสุด โปร แทง บอล lsm77 เครดิต ฟรี เครดิต ฟรี ได้ จริง 2020 เว็บ พนัน ยู ฟ่า ufabet9x ufabet28 cq9 slot ฟรี เครดิต slot รับ เครดิต ฟรี ไม่ ต้อง ฝาก ufa356 เครดิต ฟรี 100 line ufabet live22 ดาวน์โหลด หา เครดิต ฟรี ufabet login fifa1234 ufabet pantip เข้า ufa365 ี ufa747 tbsbet 2562 ufabet แม่ tbsbet 2562 คา สิ โน ufabet แทง บอล แม่น ๆ ทาง เข้า ufa678 fifa 9999 แทง บอล ขั้น ต่ำ บา คา ร่า sa77 เครดิต ฟรี ได้ จริง 2020 fifa555 ทาง เข้า มือ ถือ สมัคร 168slotxo ufabet6666 โปร โม ชั่ น ฟุตบอล แอ ป slotxo ufabet sa gaming ufa191 สมัคร ยิง ปลา ฟรี เครดิต ไม่ ต้อง ฝาก ล่าสุด ี ufascr ยิง ปลา เครดิต ฟรี ไม่ ต้อง ฝาก เครดิต ฟรี 200 ล่าสุด ฟรี เครดิต 2019 fifa555pro บา ร่า คา ดาวน์โหลด slotxo apk sa gaming vip เข้า สู่ ระบบ สมัคร เอเย่นต์ ufabet ufabet live ufabet188 ทาง เข้า xo mobile sa เกม 77 สล็อต xo โหลด โปร โม ชั่ น แทง บอล เครดิต ฟรี ไม่ ต้อง ฝาก slot เปิด ยูสเซอร์ ฟรี เครดิต 2020 ufabet365s แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2018 ไม่ ต้อง ฝาก ufabet777 ทาง xo 77uponline ufabet ทาง เข้า เล่น เครดิต ฟรี ไม่ ต้อง ฝาก ล่าสุด ขาย ยู ส ufabet ทาง เข้า ufabet191 เครดิต ฟรี ใหม่ ล่าสุด 2020 ยูสเซอร์ ฟรี slot เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน ฝาก 88 รับ 300 xo prompay88 เครดิต ฟรี fifa แทง บอล thaisbobet99 ufabet1688 สมัคร เข้า เล่น ยู ฟ่า slotxo ios แทง หวย แทง บอล ทาง เข้า ufa88 ufawb998 ufabet cb8 mm88hunter slotxo ฝาก 99 ได้ 300 ยู ฟ่า bet ฟรี เครดิต 2019 ไม่ ต้อง ฝาก บา คา ร่า ออนไลน์ ufabet สมัคร สมาชิก ยู ฟ่า เบ ท เครดิต ฟรี ถอน ได้ ufa9999 ฝาก ถอน 885ufabet บา คา ร่า ไทเป ฝาก ถอน ufa168 ถอนเงิน ufa191 ufabet 72 ดี ไหม เว็บ กา บอล mt88casino slotxo แอ พ มือ ถือ ดาวน์โหลด เดี๋ยวนี้ slotxo 50 รับ 100 โปร โม ชั่ น บอล ออนไลน์ ufabet955 ทาง เข้า ufabet ล่าสุด mafia567 เครดิต ฟรี เว ป บอล ฝาก ขั้น ต่ํา 100 slot ฝาก 5 บาท ฟรี 99 บาท ufa191 ยิง ปลา sa game casino online ufabet แจก เครดิต ฟรี ฝาก 20 รับ 100 วอ เลท xo sa gaming เข้า ไม่ ได้ ss66 บา คา ร่า slotxo เกม ฟรี ufa55 รับ เครดิต ฟรี ไม่ ต้อง ฝาก slotxo ออ โต้ ถอนเงิน ufabet1688 ufabet 115 เล่น บา คา ร่า ออนไลน์ ฟรี sa gaming fifa55 fifa555 เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 ล่าสุด ufabet 988 ufabet sport ufa800 แจก เครดิต ฟรี r1 ufabet ป๊อก เด้ง แจก ฟรี 300 fifa55 เครดิต ฟรี สมาชิก เก่า ufabet 8888 ี ufabet88 แอ พ slotxo ufabet688 ดาวน์โหลด สล็อต xo 888 หวย บอล วิธี ติด ตั้ง slotxo เข้า เว็บ ufabet365 ฝาก ufa168 slot ฟรี เครดิต ไม่ ต้อง ฝาก ก่อน ดาวน์โหลด สล็อต ออนไลน์ betufa main เครดิต ฟรี 400 slotxo แอ พ มือ ถือ ufabet xxx slot free 888 sa gaming 1 rb88 slot sa1688 game แจก เครดิต ฟรี ไม่มี เงื่อนไข thaisbobet99 เว็บ ufa191 แทง บอล ออนไลน์ 789 แทง บอล ยูโร ufabet168 vip แทง บอล ให้ ได้ เงิน ล้าน holiday บา คา ร่า ufabet เว็บ casino sa gaming เปิด ยูสเซอร์ ฟรี เครดิต ไม่ ต้อง ฝาก เว ป ยู ฟ่า mafia แจก เครดิต ฟรี ล่าสุด sa baccarat 1988 เครดิต ฟรี บอล 8klbfo prompay88 เครดิต ฟรี ufathai 2 ยิง ปลา เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ รับ เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ufabet 555 ยู ฟ่า 888 ทาง เข้า เค ดิ ต ฟรี slotxo fifa55 sport ทาง เข้า ufa428 ufa1168 918kiss ฟรี เครดิต 1000 บาท 2020 slot รับ เครดิต ฟรี ไม่ ต้อง ฝาก ufabet อัน ไหน ดี โหลด xo บา คา ร่า วัน ละ 500 ดาวน์โหลด xo สล็อต ufabet1688 สมัคร สมาชิก ฟรี เครดิต ไม่ ต้อง ฝาก ถอน ได้ ufabet lucky ี ufabet co ยู ฟ่า เบ ท 999 ี ufabet1688 เกมส์ ที่ มี ของ เรา slotxo สล็อต xo ฝาก 1 บาท ufabet888s ยู ฟ่า เบ ท ทาง เข้า pkk123 เครดิต ฟรี บา คา ร่า ออนไลน์ sa gaming แทง บอล เว็บ ตรง slotxo ทาง เข้า เล่น เช็ ก ชี่ บา คา ร่า 1668 ufabet 747 betufa สมัคร ลอง เล่น sa gaming slot ฝาก 5 บาท ฟรี 99 บาท ไม่ ต้อง ฝาก ก่อน ถอน ได้ ufabet เครดิต ฟรี ไม่ ต้อง ฝาก lsm99 10 บาท six4bet ufa800 ทาง เข้า โหลด เกม slotxo xo slot download app slotxo 918kiss แจก เครดิต ฟรี 2020 ufabet1688 ดี ไหม ฟรี โบนัส ไม่ ต้อง ฝาก ufa9999s fifa55bet แทง บอล ออนไลน์ ขั้น ต่ํา 20 www ufa 7777 ufabet หลัก member ufabet สมัคร สล็อต xo 888 เข้า เล่น เกม xo ufa ฝาก ไม่มี ขั้น ต่ํา slot ฝาก 5 บาท ได้ 100 ทาง เข้า ufabet88 ทาง xo slot online ฟรี เครดิต ไม่ ต้อง ฝาก ล่าสุด 2020 ี ufa188 แทง บอล true wallet ufabet ไลน์ เล่น บอล ผ่าน เน็ต สล็อต xo 888 เครดิต ฟรี ufabet agent login เครดิต 100 ไม่ ต้อง ฝาก แทง บอล 24 แจก โบนัส 100 ยู ฟ่า เบ ท 123 เล่น บา คา ร่า ออนไลน์ ฟรี sa ดาวน์โหลด slotxo เวอร์ชั่น ล่าสุด slotxo android betufa default 8 fifa555cash ี ufa9999 sa gaming99 slotxo pc download fifa55fifa55 ดาวน์โหลด slotxo เวอร์ชั่น ล่าสุด databet88 เครดิต ฟรี ราคา แทง บอล วัน นี้ sa gaming ts911 ยิง ปลา ออนไลน์ ฟรี เครดิต fifa888 เครดิต ฟรี ufa365 ฝาก เช็ ก ชี่ บา คา ร่า 66 สมัคร sa เข้า เว็บ ufabet ไม่ ได้ เกม บา คา ร่า คือ เกม gclub scr888th เครดิต ฟรี บอล 1x2 เสีย บา คา ร่า 10000 ufa888 ทาง เข้า slot free เครดิต slotxo apk download รับ เครดิต ฟรี ไม่ ต้อง ฝาก 2020 sa gaming ปรับปรุง เว็บ ufa24h โปร แจก เครดิต ฟรี ดาวน์โหลด แอ พ slotxo ufabet1688 ทาง เข้า เว็บ ยู ฟ่า 365 ฟรี เครดิต ไม่ ต้อง แชร์ ไม่ ต้อง ฝาก สมัคร ยู ฟ่า เบ ท 168 เล่น fifa55 ufabet อัพเดท เครดิต ฟรี ทันที แจก เครดิต ล่าสุด เครดิต ฟรี 300 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ sa game vip โปร เครดิต ฟรี สมัคร ufabet369 ufabet 2018 slotxo download apk fifa55sport บา คา ร่า เกม ยิง ปลา fifa55 ออนไลน์ ufabet69 เครดิต ฟรี ufabet ออ โต้ แทง บอล 89 slotxo ฝาก 1 รับ 50 spin999 ฟรี เครดิต ไลน์ ยู ฟ่า เบ ท ดาว โหลด เกม slotxo เว็บ ufa168 สมัคร สล็อต เครดิต ฟรี ไม่ ต้อง ฝาก 200 ufabet หลัก ufabet 3333 ufabet 89 ufabet services angel88 เครดิต ฟรี ufabet2020 ufabet ฝาก วอ เลท เครดิต ฟรี playstar ufabet public chgpwd 2 sa เกม มิ่ง slotxo เล่น ฟรี sa gaming bet เครดิต ฟรี slotxo แทง บ lsm99 ขั้น ต่ำ 10 บาท ทาง เข้า ufabet45 fifa55gol ทาง เข้า slotxo mobile บา คา ร่า 2019 เข้า เล่น ยู ฟ่า ยู ฟ่า ออนไลน์ ี ufa007 ทาง เข้า ufa69 เข้า ระบบ sa gaming 918kiss แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ 2020 sa gaming ปิด แทง บอล true wallet บา คา ร่า gaming แจก โบนัส 100 ี ufabet777 ทีเด็ด บา คา ร่า รับ เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ยู ฟ่า ออนไลน์ 168 รับ เครดิต ฟรี สมาชิก ใหม่ บา คา ร่า เซ๊ ก ซี่ ทาง เข้า betufa บา คา ร่า คลับ แทง หวย ligaz888 co สุต บา คารา เครดิต ฟรี ใหม่ ล่าสุด 2020 ทาง เข้า ufabet8 แทง บอล สอง ฝั่ง ยิง ปลา sa gaming บา คา ร่า 50000 lsm99 ขั้น ต่ํา 10 บาท แทง บอล ให้ ได้ เงิน sa gaming ดี ไหม slotxo android ufabet1688 agreement 8 wwwufa9999 เบ ท 88 slotxo ดาวน์โหลด ios sbobet888 line ี ufa88 ี ufa9bet แจก เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 slotxo bonus ดาวน์โหลด slotxo 44 app slotxo สมัคร ufa69 แทง สด สด ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ รับ เครดิต ฟรี ถอนเงิน จาก ufabet ี ufa345 188bet ฟรี เครดิต 2019 ฝาก 1 รับ 100 918kiss xo slot ทาง เข้า เครดิต ฟรี สมาชิก ใหม่ 2020 ufabet1688 agreement 8 ufa168 มือ ถือ ts77 บา คา ร่า แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2562 slot ฝาก ทาง เข้า ufa345 tbsbet line ufabet711 slotxo download ios xo ฟรี 100 ufa168 มือ ถือ บา คา ร่า 63 สล็อต 1234 joker ดาวน์โหลด fifabet55 ufabet ฟรี เครดิต ufabet lion ufabet 369 เว ป บอล ออนไลน์ ฝาก 20 รับ 100 วอ เลท xo slotgame66 เครดิต ฟรี โปร สล็อต joker สมาชิก ใหม่ รับ เครดิต ฟรี ไม่ ต้อง ฝาก live22 สมัคร ฝาก 1 รับ 100 918kiss เข้า เกม slotxo บา คา ร่า ค่า คอม สูง slotxo mobile download เครดิต ฟรี ยิง ปลา 150 ถอนเงิน ufa ufabet799 เครดิต ฟรี ทํา เทิ ร์ น 2020 roma เครดิต ฟรี ป๊อก เด้ง เงิน จริง ฟรี เครดิต ufabet ฝาก ขั้น ต่ำ 100 แจก ฟรี ไม่ ต้อง ฝาก ก่อน mafia88 เครดิต ฟรี 50 สมัคร ยู ฟ่า 191 ufabet1688 เครดิต ฟรี ยิง ปลา เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ล่าสุด ufa191 ยิง ปลา ี ufa747 ufabet747 slot ออนไลน์ ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ส ปี ด บา คา ร่า เครดิต ฟรี สมาชิก ใหม่ slotxo download apk รับ เครดิต ฟรี สมาชิก ใหม่ เครดิต ฟรี เฮง เฮง ufa9999s slotxo899 ดาวน์โหลด เปิด ยูสเซอร์ ฟรี ถอนเงิน ufa168 แอ พ ufabet บา คา ร่า 345 slotxo ฝาก ครั้ง แรก 100 ยู ฟ่า เบ ท มือ ถือ ufabet168 v4 ทาง เข้า ufathai แทง บอล ออนไลน์ fifa55 ufa369vip ufabet บา คา ร่า lsm99 บา คา ร่า sa gaming 222 บอล ออนไลน์ 789 free เครดิต ฟรี 777 เครดิต ฟรี sa เกม 66 slotxo joker โปร 100 โหลด slotxo ล่าสุด โหลด เกมส์ สล็อต xo slotxo คืน ยอด เสีย เข้า เว็บ ufabet แจก เครดิต ฟรี 2019 ไม่ ต้อง แชร์ เครดิต ฟรี ไม่ ฝาก ยู ฟ่า 365s บา ค่า ร่า เครดิต ฟรี scr888th เครดิต ฟรี mm88fifa slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน ufabet77fc sa game th สมัคร ufa777 ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ล่าสุด โหลด สล็อต 22 ufabet777 ดี ไหม แทง บอล ผ่าน วอ เลท ฟรี เครดิต ไม่ ต้อง ฝาก ถอน ได้ ทาง ufabet แทง บอล คู่ ไหน ดี ufabet cnv3 mafia488 ฟรี เครดิต slot ไม่ ต้อง ฝาก ฝาก ขั้น ต่ํา 10 ufabet 5g live22 เครดิต ฟรี 100 ยู ฟ่า เบ ท 99 โบนัส วัน เกิด ไม่ ต้อง ฝาก แอ ป ยู ฟ่า เบ ท ี ufabet 356 แจก เครดิต ล่าสุด ี ufa999 ฝาก 200 ฟรี 300 ทาง เข้า ufabet999 แทง บอล ไม่ ต้อง ฝาก ufabet line รับ เครดิต ฟรี ง่ายๆ ufa888a ดาว โหลด เกม สล็อต xo ทาง เข้า joker xo atm slot เครดิต ฟรี แจก เครดิต ล่าสุด บา คา ร่า sa gaming ทาง เข้า เล่น ufabet สล็อต xo สมัคร แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2018 ไม่ ต้อง ฝาก ยิง ปลา เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ บา คา ร่า sa 66 rt slot เครดิต ฟรี sa gaming 89 slot ฟรี เครดิต 2019 arma935 baccarat ufabet168 vip เครดิต ฟรี ได้ จริง 2020 เครดิต ฟรี 100 ล่าสุด 2020 โหลด แอ พ สล็อต xo ทาง เข้า ufabet777 บา คา ร่า sa gaming 77 slotxo ฝาก 29 รับ 100 mm88gol ufa7777 ทาง เข้า ufabet agreement 8 sa gaming 1 บา คา ร่า holiday fifa55f สมัคร ufa7777 บา คา ร่า ล็อค ยู ส เครดิต ฟรี 300 ไม่ ต้อง ฝาก แทง บอล สอง ฝั่ง ฟรี เครดิต ฟรี slot เครดิต ฟรี ล่าสุด ี agent ufabet ทาง เข้า เล่น ufabet เล่น fifa55 บา คา ร่า ใน โทรศัพท์ ดาวน์โหลด เกมส์ สล็อต ออนไลน์ สมาชิก เครดิต ฟรี slotxo สมัคร สมาชิก ได้ เครดิต ฟรี เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 sa เกม vip sa gaming vip เครดิต ฟรี ฟรี เครดิต 200 ไม่ ต้อง ฝาก slot เครดิต ฟรี ไม่ ต้อง ฝาก 2019 เครดิต ฟรี slot เอ เย่ น ufa thaisbobet99 แทง บอล ขั้น ต่ำ 100 ufa24h ดี ไหม ufabet cash ufabet 115 เช็ ก ชี่ บา คา ร่า 168 เครดิต ฟรี 400 เข้า เล่น เกม xo แทง บอล คู่ ไหน ดี ufa356 เครดิต ฟรี 100 ดาวน์โหลด slotxo ลง คอม ufa191 ฝาก ขั้น ต่ํา ufabet mobile slotxo free สมัคร พนัน บอล ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ บา คา ร่า ล็อค ยู ส slotxo ฝาก 1 บาท ได้ 100 ดาวน์โหลด aka slotxo เล่น บอล ให้ ได้ เงิน ทุก วัน สมัคร xo ufa678 สมัคร เครดิต บอล ฟรี ไม่ ต้อง ฝาก เซ ค ซี่ บา คา ร่า ติด ตั้ง slotxo แอ น ด รอย ด์ สมัคร 168slotxo โหลด สล็อต 22 ี ufa747 ufa ufabet มาเฟีย เครดิต ฟรี ล่าสุด แอ พ สล็อต ios บา คา ร่า 918kiss sa gaming เครดิต ฟรี 300 slot wallet เครดิต ฟรี เครดิต ฟรี ไม่ ต้อง ฝาก ต้อง แชร์ ทาง เข้า เล่น ufabet ufo888 บา คา ร่า xo slot download สมัคร ufa9999 77up2u ufabet6666 ufabet android ได้ เครดิต ฟรี ufabet 24 แทง บอล ฟรี 300 ufa007s slotxo โปร ดีๆ slot แจก เครดิต ฟรี 300 sa เกม มิ่ง รับ เครดิต ฟรี xo sa gaming เครดิต ฟรี ไม่ ต้อง ฝาก slotxoth download fifa55hb สมัคร แท่ง บอล ufabet 111 gaming66 แจก เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 fifa55god ทาง เข้า betufa เครดิต ฟรี สมาชิก ใหม่ slot สมัคร เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน ล่าสุด ufabet ฝาก ขั้น ต่ำ 24sboonline ทาง เข้า ufa369 xe88 เครดิต ฟรี ไม่ ต้อง ฝาก ฟรี เครดิต 200 ไม่ ต้อง ฝาก web fifa55 ufa88 pantip ufabet369 fifa แทง บอล ufabet default 8 smart ฟรี เครดิต บอล sa gaming line ufabet18 ดาวน์โหลด สล็อต บา คา ร่า ฟรี 2020 fifa5555 หวย ufathai 777 เช็ ก ชี่ บา คารา ราคา แทง บอล ไฮโล ufabet ยู ฟ่า เบ ท 982 ufa88 ทาง เข้า download slotxo android ufaoo7 ufabet 1168 xo slot download บอล ออนไลน์ 77up ทํา เทิ ร์ น เครดิต ฟรี www ufa777 con ตั้ง slotxo mafia111 เครดิต ฟรี ufabet mvp เว็บ ufa356 ufabet555 ex88 เครดิต ฟรี slotxo เข้า เกม เครดิต ฟรี มา ใหม่ ี ufa356 slotgame66 เครดิต ฟรี ufabet ฝาก 100 บา คา ร่า 918 ufabet158 สตู ร บา คารา ฟรี หวย ufa betufa สมัคร slotxo 2 เข้า ufa168 ทาง เข้า ufa8888 บา คา ร่า เปิด กี่ โมง โหลด สล็อต ออนไลน์ สมัคร slotxo111 ufabet 800 slotxo โปร ดีๆ สมัคร สมาชิก ufa gclub777 เช็ ก ชี่ บา คา ร่า slotxo ทาง เข้า เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ล่าสุด 2020 ufabet352 slotxo zeus88 ufa ufabet slot ฟรี เครดิต ไม่ ต้อง ฝาก เครดิต ฟรี slotxo live22 โหลด เครดิต ฟรี ไม่ ต้อง เติม สมัคร slotxo รับ เครดิต ฟรี ไม่ ต้อง ฝาก เครดิต ฟรี เว็บ ยู ฟ้า ยู ฟ่า เบ ท เครดิต ฟรี บา คา ร่า ออนไลน์ ufabet แทง บอล 1x2 ดาวน์โหลด เกม สล็อต mysbo99 แทง บอล ขั้น ต่ํา 50 ufabet 428 fifa55 คืน ยอด เสีย sa game casino online เซ ค ซี่ บา คา ร่า slot online ฟรี เครดิต 2019 ufabet พัน ทิป แทง บอล 24 เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน ล่าสุด บา คา ร่า sa gaming 66 เล่น บอล ออนไลน์ วิธี ดาวน์โหลด slotxo ฟรี เครดิต บอล sa gaming vip เครดิต ฟรี ี ufabet88888 slotxo joker 100 slotxo download ios แจก ฟรี เครดิต sa คา สิ โน เว็บ ufa777 ฟรี เครดิต ไม่ ต้อง ฝาก 2019 ufa ออนไลน์ ฟรี โบนัส ไม่ ต้อง ฝาก เครดิต ฟรี 100 ล่าสุด ลิ้ ง ufabet แทง บอล เครดิต ฟรี slotxo ฝาก 1 รับ 50 ฝาก 20 รับ 100 ufabet 918kiss เครดิต ฟรี 30 ufabet 21 ยู ฟา 88 เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 แอ พ slot ได้ เงิน จริง ufa678 ตํา รา บา คา ร่า ufabet ใหม่ สมาชิก ใหม่ รับ ฟรี เครดิต ทาง เข้า เล่น 168slotxo ดาว โหลด เกม slotxo mafia แจก เครดิต ฟรี ล่าสุด จี คลับ ผ่าน ท รู วอ ล เล็ ท โหลด slotxo apk ufabet2_888 เปิด ยูสเซอร์ ฟรี ไม่ ต้อง ฝาก ufabet 99999 ufa147 มือ ถือ fifa55bet sa gaming 5 วิ โบนัส 100 บาท สำหรับ สมาชิก ใหม่ ยู ฟ่า เบ ท vip ได้ เครดิต ฟรี ลิ้ ง ufabet slotxo โหลด next88 รหัส ฟรี เครดิต ufathai 777 ufabet 100 ดาวน์โหลด xo สล็อต ufa7777com ดาว โหลด เกม สล็อต xo ufa191 มือ ถือ slot เครดิต ฟรี ไม่ ต้อง ฝาก fifa55 คืน ยอด เสีย สมาชิก ใหม่ รับ ฟรี เครดิต โบนัส ฟรี เครดิต slotxo ฝาก 1 บาท ฟรี 50 บาท ล่าสุด สมัคร เกม สล็อต สล็อต xo ฝาก วอ ล เล็ ต vegus168 live ufa168 มือ ถือ ufabet18 ดาวน์โหลด slotxo เวอร์ชั่น ล่าสุด sa บา คา ร่า vip fhm99 ฟรี เครดิต slotxo ฝาก 100 รับ 100 เล่น บา คา ร่า ที่ ufabet บอล ออนไลน์ 789 sa casino ปิด ปรับปรุง ฝาก 100 รับ 200 xo sath88 คา สิ โน ufabet dna ี ufascr download slotxo pc บา คา ร่า ออนไลน์ sa gaming hatyaiisc888 sa game 25 gaming 168 บา คา ร่า มังกร slot ฝาก 100 ได้ 300 slot เงิน ฟรี mafia88 เครดิต ฟรี 50 เอ เย่ น ufabet โปร โม ชั่ น ufa เข้า เกม xo เครดิต ฟรี 200 ไม่ ต้อง ฝาก ก่อน fifa แทง บอล เครดิต ฟรี ง่ายๆ sa gaming 777 ทาง เข้า ufa8888 slotxo joker เครดิต ฟรี ดาว โหลด เกม xo slot ufathai 6 sa เกม มิ่ง 66 sa168 game ยู ฟ่า เบ ท เครดิต ฟรี slotxo ฝาก 5 บาท ฟรี 99 บาท ล่าสุด สล็อต xo สมัคร เล่น บา คา ร่า sa แอ พ sa gaming slotxo ไม่มี ขั้น ต่ำ sa gaming ถอนเงิน sa เกม มิ่ง บา คา ร่า คลับ sa game 25 ฝาก ขั้น ต่ํา 10 เว็บ พนัน ออนไลน์ uefa ufa191 สมัคร 885ufabet โปร โม ชั่ น เว็บ พนัน บอล ทาง เข้า slotxo199 mega888 ฟรี เครดิต ไม่ ต้อง ฝาก 2019 แจก เครดิต จุดจบ บา คา ร่า เครดิต ฟรี ทันที โบนัส วัน เกิด ไม่ ต้อง ฝาก ยู ฟา 88 slot รับ เครดิต ฟรี ไม่ ต้อง ฝาก ยูสเซอร์ ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ สมัคร เว็บ ยู ฟ่า ufabet main ufa24h 4 โหลด สล็อต 123 ufabet777 ดี ไหม เครดิต ฟรี ไม่ ต้อง ฝาก 2020 วัว วัว บา คา ร่า คือ ufabet เว็บ บอล ออนไลน์ บา คา ร่า sa 66 mafia แจก เครดิต ฟรี 50 แจก เครดิต ฟรี ใหม่ ล่าสุด คูปอง sa gaming วิธี โหลด สล็อต sa gaming โปร โม ชั่ น ยู ฟ้า 678 xo slot ทาง เข้า slotxo ฝาก 25 รับ 100 winwin893 slotxo3k แทง บอล คืน นี้ fifa55mini ยู ฟ่า เบ ท คาเฟ่ ทาง เข้า ufabet168 มือ ถือ
          สูตร การ เล่น บา คา ร่า ฟรี| สูตร บา คา ร่า sa gaming 2020 ล่าสุด| ทีเด็ด บอล เต็ง 4| ฟรี สูตร บา คา ร่า| 888 ทีเด็ด บอล วัน นี้| ทีเด็ด บอล มาเล ย์ แม่น ยํา สูง| เค ดิ ต ฟรี ไม่ ต้อง แชร์ ไม่ ต้อง ฝาก ก่อน ล่าสุด| ข่าว ฟุตบอล ออนไลน์| วิเคราะห์ บอล สด วัน นี้ ล้ม โต๊ะ| ทีเด็ด บอล ส เต็ ป 5 คู่| สูตร บา คา ร่า sa gaming88| ทีเด็ด บอล ราย เดือน| ทรรศนะ บอล วัน นี้ ครับ| http สูตร บา คา ร่า ใช้ได้ จริง com| สูตร บา คา ร่า 888 ฟรี| ทีเด็ด บอล วัน ทู บอล| สูตร บา คา ร่า st911| ส เต็ ป เซียน 100| เซียน ส เต็ ป ผล บอล สด| สูตร บา ค่า ร่า ฟรี| สูตร บา คา ร่า ฟรี เซ็กซี่| สูตร copa88| สูตร fifa55atm| ข่าว กีฬา สยาม กีฬา siamsport| บา คา ร่า สูตร ai| บอล เด็ด บอล แม่น วัน นี้| เครดิต ฟรี 2020 jdb| slot free 88| sa สูตร| วิเคราะห์ สกอร์ บอล สูง ต่ํา วัน นี้| สูตร เสือ มังกร sa| ที่ เด็ด 4 เทพ| ตาราง บา คา ร่า sa| สูตร เสือ มังกร ai| ufabet สูตร| บอล เดี่ยว คืน นี้| สูตร บา คา ร่า bm hacker| ตาราง บา คา ร่า sa| บอล เต็ง วัน นี้ 100| ข่าว กื ฬา วัน นี้| สูตร บา คา ร่า lsm895| odd บา คา ร่า ด อ ท คอม| วิเคราะห์ บอล 4 คู่ วัน นี้| ทีเด็ด บอล สาย เขียว| ลง ทะเบียน รับ เครดิต ฟรี ไม่ ต้อง ฝาก| ข่าว กีฬา ช่อง 7 วัน นี้| สูตร ทบ บา คา ร่า| วิ เค ราะ บอล ล้ม โต้| ทีเด็ด บอล asiabookie| ทีเด็ด บอล ชุด สปอร์ต แมน| ทีเด็ด ฟุตบอล ต่าง ประเทศ| บอล ชุด ล้ม โต๊ะ| สูตร บา คา ร่า fifa| ทีเด็ด บอล 8 เซียน วิเคราะห์| โปรแกรม บา คา ร่า sa| ระบบ ai บา คา ร่า| ที่ เด็ด บอล ชุด 3 ตัว| สูตร บา คา ร่า 2019 ฟรี sa| สูตร บา คา ร่า 2020 sa| สปอร์ต พูล ตัว จริง| เซียน บอล 3| ที่ เด็ด 3 คู่| ฟัน ธง บอล 4 เซียน| สูตร บา คา ร่า dna 2019 ฟรี| เซียน ส เต็ ป 69 บ้า บอล| บา คา ร่า มี สูตร|