<form id="qHAAS"><th id="qHAAS"></th></form><nav id="qHAAS"></nav>

    <nav id="qHAAS"></nav>

              A playground for University of Bologna Students and a 6-days seminar about digital tools.

              Digital generative tools are a very important part of architectural education. Andrew Kudless during his conference at SimAE was telling about chinese traditional woodcraftsmen: they spend their first two years of apprentice in making their own tools. Today, we have a large pool of digital ready made tools, built to respond to more or less specific problems or tasks, while keeping a level of flexibility and personalization. The majority of these tools have hidden capabilities, which can only be accessed bypassing the conventional interface and getting close to the machine logic of programming or building parametric components which generate shapes. Thus, seriality, differentiation, complexity can be implemented in architectural projects through code, in order to exploit the power of algorithmic based complex systems which are the basis of biological systems.


              But, before going through such complexity, we must start with simple tasks and simple rules. Before playing seriously we need practice. This is the playground where a bunch of students will start to practice, a pool where they will share their results and questions. Maybe the stuff here that will be posted will seem obvious or naive to the navigated code-monkey, but, as I mentioned before, we all start from the basics and this is intended as a place to start. However, any comment and contribution is appreciated.

              Playground is open, let's play! _ Alessio

              2.11.09

              L-system [test]

              Working on the same principles of my last post I realized a new script based on self-learning system.
              The concept is easy. A simple L-system start to grown randomly from a seed, and after every generation it try to touch other L-systems, that are growing from different one seed.

              [edit]
              I forgot to explain some aspects. In this script singles L-system recive a feedback from others, because configuration of every generation depend on configuration of previous one.
              Unlike my previous script there isn't only one final perfect configuration, but infinity ones... because every random event of system "A" affects other systems in next generation, thus itself in following one.
              [/edit]


              Option Explicit
              ' Script written by Alessandro Zomparelli
              ' alessandro.zomparelli@gmail.com
              ' http://alessandrozompa.altervista.org/
              ' Script version domenica 1 novembre 2009 14.40.18

              Call Main()
              Sub Main()
              'picking seed points
              Dim arrSeed, arrSub
              ReDim arrSeed(0)
              arrSeed(0)=Rhino.GetObjects("pick seed points",1)

              'defining number of branch
              Dim dblBrN
              dblBrN=Rhino.GetInteger("number of branches",2,1)

              'defining number of branch generation
              Dim dblBranch
              dblBranch=Rhino.GetInteger("number of branch generation",3,1)
              ReDim Preserve arrSeed(dblBranch)

              Dim arrData, dblVote, arrVote
              ReDim arrData(dblBranch), arrVote(0)

              'defining number of generations and amount of mutation between following generations
              Dim dblGen, dblMut, strLine
              dblGen=Rhino.GetInteger("set number of generations",100,2,10000)
              dblMut=Rhino.GetReal("set mutation value",2,0.1,100)

              Call Rhino.EnableRedraw(False)

              'starting evolution system
              Dim i,j,z,k,y,m,a

              Dim dblDis, arrDist, strC1, strC2
              ReDim arrDist(0)

              'generation of different layers
              Dim strL1: strL1="lines"
              Call Rhino.AddLayer(strL1)

              'evaluation of distance between seed points for a better L-System scale
              dblDist=Rhino.Distance(Rhino.PointCoordinates(arrSeed(0)(0)),Rhino.PointCoordinates(arrSeed(0)(1)))
              For i=0 To ubound(arrSeed(0))
              For j=0 To ubound(arrSeed(0))
              If i<>j Then
              If Rhino.Distance(Rhino.PointCoordinates(arrSeed(0)(i)),Rhino.PointCoordinates(arrSeed(0)(j)))<>0 Then
              arrSeed(i)=arrSub
              End If
              arrData(i)=arrSub
              For j=0 To ubound(arrSeed(i))
              arrData(i)(j)=array(0,array(0,0,0),array(0,0,0),dblDis)
              Next
              Next


              For z=0 To dblGen-1
              Call Rhino.Print(int(z*100/(dblGen-1))&"%")
              For i=1 To dblBranch
              'generation of branches
              For j=0 To ubound(arrSeed(i-1))

              For y=0 To dblBrN-1
              'defining vector scattering direction
              arrData(i)(j*(dblBrN)+y)(2)=array(arrData(i)(j*(dblBrN)+y)(1)(0)+dblMut*(dblGen-z)/dblGen*(rnd-rnd),arrData(i)(j*(dblBrN)+y)(1)(1)+dblMut*(dblGen-z)/dblGen*(rnd-rnd),arrData(i)(j*(dblBrN)+y)(1)(2)+dblMut*(dblGen-z)/dblGen*(rnd-rnd))

              'propotional scaling factor
              arrData(i)(j*(dblBrN)+y)(2)=Rhino.VectorUnitize(arrData(i)(j*(dblBrN)+y)(2))
              arrData(i)(j*(dblBrN)+y)(2)=Rhino.VectorScale(arrData(i)(j*(dblBrN)+y)(2),arrData(i)(j*(dblBrN)+y)(3)/i/3)
              arrSeed(i)(j*(dblBrN)+y)=Rhino.CopyObject(arrSeed(i-1)(j),arrData(i)(j*(dblBrN)+y)(2))

              'drawing last generation
              If z=dblGen-1 Then
              strLine=Rhino.AddLine(Rhino.PointCoordinates(arrSeed(i-1)(j)),Rhino.PointCoordinates(arrSeed(i)(j*(dblBrN)+y)))
              Call Rhino.objectlayer(strLine,strL1)
              If i=1 Then
              strC1=Rhino.AddCircle(Rhino.PlaneFromNormal(Rhino.PointCoordinates(arrSeed(i-1)(j)),arrData(i)(j*(dblBrN)+y)(2)),arrData(i-1)(j)(3)/20/i)
              Else
              strC1=Rhino.AddCircle(Rhino.PlaneFromNormal(Rhino.PointCoordinates(arrSeed(i-1)(j)),arrData(i)(j*(dblBrN)+y)(2)),arrData(i-1)(j)(3)/40/(i-1))
              End If
              strC2=Rhino.AddCircle(Rhino.PlaneFromNormal(Rhino.PointCoordinates(arrSeed(i)(j*(dblBrN)+y)),arrData(i)(j*(dblBrN)+y)(2)),arrData(i)(j*(dblBrN)+y)(3)/40/i)
              Call Rhino.AddLoftSrf(array(strC1,strC2))
              If i=1 Then
              Call Rhino.AddSphere(Rhino.PointCoordinates(arrSeed(i-1)(j)),arrData(i-1)(j)(3)/20/i)
              'Else
              ' Call Rhino.AddSphere(Rhino.PointCoordinates(arrSeed(i-1)(j)),arrData(i-1)(j)(3)/30/(i-1))
              End If
              Call Rhino.AddSphere(Rhino.PointCoordinates(arrSeed(i)(j*(dblBrN)+y)),arrData(i)(j*(dblBrN)+y)(3)/40/i)
              Call Rhino.DeleteObjects(array(strC1,strC2))
              End If

              'for display colors of different generation
              'If z/10=int(z/10) Then
              ' strLine=Rhino.AddLine(Rhino.PointCoordinates(arrSeed(i-1)(j)),Rhino.PointCoordinates(arrSeed(i)(j*2+y)))
              ' Call Rhino.ObjectColor(strLine, RGB(255-255/dblGen*z,0,255/dblGen*z))
              'End If
              Next
              Next

              'recordn data of individual branches
              For j=0 To ubound(arrSeed(i-1))
              For y=0 To dblBrN-1
              a=-1
              'defining votes for branches generated from different seeds
              For k=0 To ubound(arrSeed(i-1))
              If int(k/(dblBrN^(i-1)))<>int(j/(dblBrN^(i-1))) Then
              For m=0 To dblBrN-1
              a=a+1
              ReDim Preserve arrVote(a), arrDis(a+1)
              'defining a vote for element efficiency
              arrVote(a)=(Rhino.Distance(PointCoordinates(arrSeed(i-1)(j)),Rhino.PointCoordinates(arrSeed(i-1)(k)))-Rhino.Distance(Rhino.PointCoordinates(arrSeed(i)(j*(dblBrN)+y)),Rhino.PointCoordinates(arrSeed(i-1)(k))))
              'recording distance from detected points
              arrDist(a)=Rhino.Distance(PointCoordinates(arrSeed(i-1)(j)),Rhino.PointCoordinates(arrSeed(i-1)(k)))
              Next
              End If
              Next
              dblVote=Rhino.Max(arrVote)

              'recording dist for nearest point
              For k=0 To ubound(arrVote)
              If arrVote(k)=dblVote Then
              arrDist(a+1)=arrDist(k)
              End If
              Next

              'recording data about the new element
              If dblVote>arrData(i)(j*(dblBrN)+y)(0) Then
              arrData(i)(j*(dblBrN)+y)(0)=dblVote
              arrData(i)(j*(dblBrN)+y)(1)=arrData(i)(j*(dblBrN)+y)(2)
              arrData(i)(j*(dblBrN)+y)(3)=arrDist(a+1)
              End If
              Next
              Next

              Next
              For i=1 To dblBranch
              Call Rhino.DeleteObjects(arrSeed(i))
              Next

              Next
              Call Rhino.LayerVisible(strL1,False)
              Call Rhino.EnableRedraw(True)
              Call Rhino.Print("100%")

              End Sub

              31.10.09



              Like human body and ant colony, later generations reduce scattering for a more accurate configuration. Studying countless generations, the family should reach the target specified.

              Specifying different rules for worms should be possible to study emergent systems whose behavior is not predictable from the study of individual elements, like organic complexity L-systems.




              Option Explicit
              ' Script written by Alessandro Zomparelli
              ' alessandro.zomparelli@gmail.com
              ' http://alessandrozompa.altervista.org/
              ' Script version venerdì 30 ottobre 2009 16.59.03

              Call Main()
              Sub Main()
              Dim strTarget, arrFamily, arrTarget, n
              n=Rhino.GetInteger("set number elements",20,2,100)

              ReDim arrFamily(n), arrTarget(2)
              arrFamily(0)=Rhino.GetObject("pick starting point")
              'check for starting point
              If Rhino.IsPoint(arrFamily(0))=False Then
              Exit Sub
              End If
              strTarget=Rhino.GetObject("pick target point")
              'check for target point
              If Rhino.IsPoint(strTarget)=False Then
              Exit Sub
              End If
              arrTarget=Rhino.PointCoordinates(strTarget)

              Dim dblDist
              dblDist=Rhino.Distance(Rhino.PointCoordinates(arrFamily(0)),arrTarget)

              'defining number of generations and amount of mutation between following generations
              Dim dblGen, dblMut
              dblGen=Rhino.GetInteger("set number of generations",100,2,1000)
              dblMut=Rhino.GetReal("set mutation value",2,0.01,100)

              'defining an array to collect data about different family
              Dim arrData
              ReDim arrData(n)

              'defining a value for better step-element of different family
              Dim dblVote

              'defining counters, array for data recording and an array for scattering direction
              Dim i, j, arrVect, arrVect0, arrRec
              ReDim arrVect(2), arrVect0(2), arrRec(1)

              'defining random data for first generation
              For j=1 To n
              arrVect=array(rnd-rnd,rnd-rnd,rnd-rnd)
              dblVote=0
              arrData(j)=array(dblVote,arrVect)
              Next

              Dim strLine

              'starting evolution system
              For i=0 To dblGen-1

              Call Rhino.EnableRedraw(False)
              'starting family growning
              For j=1 To n
              arrRec=arrData(j)
              arrVect0=arrRec(1)
              arrVect=array(arrVect0(0)+dblMut*(dblGen-i)/dblGen*(rnd-rnd),arrVect0(1)+dblMut*(dblGen-i)/dblGen*(rnd-rnd),arrVect0(2)+dblMut*(dblGen-i)/dblGen*(rnd-rnd))
              arrVect0=Rhino.VectorUnitize(arrVect)
              arrVect=Rhino.VectorScale(arrVect0,dblDist/n)
              'generation of new element of the family
              arrFamily(j)=Rhino.CopyObject(arrFamily(j-1),arrVect)
              strLine=Rhino.AddLine(Rhino.PointCoordinates(arrFamily(j-1)),Rhino.PointCoordinates(arrFamily(j)))
              Call Rhino.ObjectColor(strLine, RGB(255-255/dblGen*i,0,255/dblGen*i))

              If Rhino.Distance(Rhino.PointCoordinates(arrFamily(j)),arrTarget)arrRec(0) Then
              arrData(j)=array(dblVote,arrVect)
              End If
              End If
              Next
              For j=1 To n
              Call Rhino.DeleteObject(arrFamily(j))
              Next

              Call Rhino.EnableRedraw(True)
              Next

              End Sub

              12.6.09

              tens.tesselation


              Here some other surface tesselation experiments, I have already posted the first one but now it is fixed (no more Rhino.command!). Anyway there is not a relevant physics accuracy in both scripts, take them just as tries.





















              ' CASE 10 SURFSTARS

              Sub surfstars(strsurf,upar,vpar)
              upar = upar*5
              vpar = vpar*5
              Dim dblheight : dblheight = rhino.getreal("extrusion height?" ,.05)
              If isnull (dblheight) Then Exit Sub
              Dim attrpoint : attrpoint = rhino.getobject("point attractor",1)
              Dim arrpoint : arrpoint = rhino.PointCoordinates(attrpoint)
              Call rhino.enableredraw(False)
              Dim i, j
              Dim uvalone(1), uvaltwo
              Dim arrUone, arrVone
              Dim arrpttemp, pointtwo
              Dim pt1, pt2, pt3, pt4, pt5, pt6, PT7, Pt8, pt5b, pt6b, pt7b, pt8b, ptc1, ptc2, pt1c, pt2c, pt3c, pt4c
              ReDim matrix (upar, vpar)
              Dim tempt
              arruone = array (0,0)
              arrVone = array (0,0)
              Dim strcell, arrct, arrptsurf, arrnorm, arrnormend,arrnormenddown, arrline, strcell2
              Dim pt1b,pt2b,pt3b,pt4b
              If rhino.IsSurface(strsurf) Then
              arruone = rhino.surfacedomain(strsurf,0)
              arrVone = rhino.surfacedomain(strsurf,1)
              End If
              For i=0 To upar
              For j=0 To vpar
              uvalone(0)= ((arruone(1)-arruone(0))/upar)*i
              uvalone(1) = ((arrVone(1)-arrVone(0))/vpar)*j
              arrpttemp = rhino.EvaluateSurface(strsurf,uvalone)
              matrix(i,j) = arrpttemp
              Next
              Next
              Dim oct1, oct2, oct3, oct4, arrlinehuge, arrel1, arrel2, arrdom, midplane, midcircle1, midcircle2
              Dim rn, crvtemp, dbldist

              For i = 1 To upar-1
              For J=0 To vpar-1
              pt1 = matrix(i,j)
              pt2 = matrix(i+1,j)
              pt3 = matrix(i,j+1)
              pt4 = matrix(i+1,j+1)
              pt5 = array( (pt1(0)+pt2(0))/2,(pt1(1)+pt2(1))/2,(pt1(2)+pt2(2))/2)
              pt6 = array( (pt2(0)+pt4(0))/2,(pt2(1)+pt4(1))/2,(pt2(2)+pt4(2))/2)
              pt7 = array( (pt3(0)+pt4(0))/2,(pt3(1)+pt4(1))/2,(pt3(2)+pt4(2))/2)
              pt8 = array( (pt1(0)+pt3(0))/2,(pt1(1)+pt3(1))/2,(pt1(2)+pt3(2))/2)
              ptc1 = array( (pt5(0)+pt7(0))/2,(pt5(1)+pt7(1))/2,(pt5(2)+pt7(2))/2)
              ptc2 = array( (pt6(0)+pt8(0))/2,(pt6(1)+pt8(1))/2,(pt6(2)+pt8(2))/2)
              dbldist = rhino.Distance(ptc1,arrpoint)
              dbldist = Rhino.Log10 (dbldist*3)
              If dbldist<1 dbldist ="">
              pt5b = array( pt5(0)+(ptc1(0)-pt5(0))/(dbldist),pt5(1)+(ptc1(1)-pt5(1))/(dbldist),pt5(2)+(ptc1(2)-pt5(2))/(dbldist))
              pt6b = array( pt6(0)+(ptc2(0)-pt6(0))/(dbldist),pt6(1)+(ptc2(1)-pt6(1))/(dbldist),pt6(2)+(ptc2(2)-pt6(2))/(dbldist))
              pt7b = array( pt7(0)+(ptc1(0)-pt7(0))/(dbldist),pt7(1)+(ptc1(1)-pt7(1))/(dbldist),pt7(2)+(ptc1(2)-pt7(2))/(dbldist))
              pt8b = array( pt8(0)+(ptc2(0)-pt8(0))/(dbldist),pt8(1)+(ptc2(1)-pt8(1))/(dbldist),pt8(2)+(ptc2(2)-pt8(2))/(dbldist))

              Call rhino.AddCurve(array(pt1,pt2,pt4,pt3,pt1),1)
              strcell = rhino.addcurve(array(pt1,,pt5b, pt2,pt6b, pt4, pt7b,pt3,pt8b,pt1),1)

              arrct = array( (pt4(0)+pt1(0))/2,(pt4(1)+pt1(1))/2,(pt4(2)+pt1(2))/2)
              arrptsurf = rhino.SurfaceClosestPoint(strsurf,arrct)
              arrnorm = rhino.SurfaceNormal(strsurf,arrptsurf)
              arrnorm = rhino.VectorScale(arrnorm, dblheight)
              arrnormend = rhino.PointAdd(arrct,arrnorm)
              arrnormenddown = rhino.Pointsubtract(arrct,arrnorm)
              crvtemp = rhino.AddSrfPt(array(pt1,arrnormend,pt5b))
              crvtemp = rhino.AddSrfPt(array(pt5b,arrnormend,pt2))
              crvtemp = rhino.AddSrfPt(array(pt2,arrnormend,pt6b))
              crvtemp = rhino.AddSrfPt(array(pt6b,arrnormend,pt4))
              crvtemp = rhino.AddSrfPt(array(pt4,arrnormend,pt7b))
              crvtemp = rhino.AddSrfPt(array(pt7b,arrnormend,pt3))
              crvtemp = rhino.AddSrfPt(array(pt3,arrnormend,pt8b))
              crvtemp = rhino.AddSrfPt(array(pt8b,arrnormend,pt1))

              crvtemp = rhino.AddSrfPt(array(pt1,arrnormenddown,pt5b))
              crvtemp = rhino.AddSrfPt(array(pt5b,arrnormenddown,pt2))
              crvtemp = rhino.AddSrfPt(array(pt2,arrnormenddown,pt6b))
              crvtemp = rhino.AddSrfPt(array(pt6b,arrnormenddown,pt4))
              crvtemp = rhino.AddSrfPt(array(pt4,arrnormenddown,pt7b))
              crvtemp = rhino.AddSrfPt(array(pt7b,arrnormenddown,pt3))
              crvtemp = rhino.AddSrfPt(array(pt3,arrnormenddown,pt8b))
              crvtemp = rhino.AddSrfPt(array(pt8b,arrnormenddown,pt1))
              arrline = rhino.AddLine(pt1,pt2)
              arrdom=rhino.CurveDomain(arrline)
              midplane=rhino.CurvePerpFrame(arrline,arrdom(0))
              midcircle1=rhino.AddCircle(midplane,0.09)
              midplane=rhino.CurvePerpFrame(arrline,arrdom(1))
              midcircle2=rhino.AddCircle(midplane,0.09)
              Call rhino.AddLoftSrf (Array(midcircle1,midcircle2))
              arrline = rhino.AddLine(pt3,pt4)
              arrdom=rhino.CurveDomain(arrline)
              midplane=rhino.CurvePerpFrame(arrline,arrdom(0))
              midcircle1=rhino.AddCircle(midplane,0.09)
              midplane=rhino.CurvePerpFrame(arrline,arrdom(1))
              midcircle2=rhino.AddCircle(midplane,0.09)
              Call rhino.AddLoftSrf (Array(midcircle1,midcircle2))

              Next
              Next

              Call rhino.deleteobject(strsurf)
              Call rhino.EnableRedraw(True)
              End Sub



              '----- CASE 11 SURFholetens -----


              Sub SURFholetens (strsurf,upar,vpar)
              Dim dblheight : dblheight = rhino.getreal("elements height?" ,.6)
              Dim attrpoint : attrpoint = rhino.Getobject("attractor",1)
              Dim attrpointcoord : attrpointcoord= rhino.pointcoordinates(attrpoint)
              If isnull (dblheight) Then Exit Sub
              Call rhino.enableredraw(False)
              Dim i, j
              Dim uvalone(1), uvaltwo
              Dim arrUone, arrVone
              Dim arrpttemp, pointtwo
              Dim pt1, pt2, pt3, pt4, pt5, pt6, pta, ptb, ptc,ptd
              ReDim matrix (upar, vpar)
              Dim tempt
              arruone = array (0,0)
              arrVone = array (0,0)
              Dim arrct, arrptsurf, arrnorm, arrnormend, arrline
              If rhino.IsSurface(strsurf) Then
              arruone = rhino.surfacedomain(strsurf,0)
              arrVone = rhino.surfacedomain(strsurf,1)
              End If
              For i=0 To upar
              For j=0 To vpar
              uvalone(0)= ((arruone(1)-arruone(0))/upar)*i
              uvalone(1) = ((arrVone(1)-arrVone(0))/vpar)*j
              arrpttemp = rhino.EvaluateSurface(strsurf,uvalone)
              matrix(i,j) = arrpttemp
              Next
              Next
              Dim dbldist
              Dim strquad1,strcentr,strquad2,strcell, midline,midcircle1,midcircle2, midplane,arrdom,ptmid
              Dim midp1,midpoint1
              Dim midp2,midpoint2
              For i = 1 To upar-2 Step 3
              For J=0 To vpar-2 Step 4
              pt1 = matrix(i,j)
              pt2 = matrix(i+1,j)
              pt3 = matrix(i+2,j+1)
              pt4 = matrix(i+1,j+2)
              pt5 = matrix(i,j+2)
              pt6 = matrix(i-1,j+1)
              pta = matrix(i-1,j)
              ptb = matrix(i+2,j)
              ptc = matrix(i+2,j+2)
              ptd = matrix(i-1,j+2)
              strcell = rhino.AddCurve(array(pt6,pt1,pt2,pt3,pt4,pt5,pt6),2)
              strquad1 = rhino.AddCurve(array(pta,ptb,ptc,ptd,pta),1)
              Call rhino.objectcolor(strquad1,rgb(255,255,255))'bianco
              arrct = array( (pt6(0)+pt3(0))/2,(pt6(1)+pt3(1))/2,(pt6(2)+pt3(2))/2)
              arrptsurf = rhino.SurfaceClosestPoint(strsurf,arrct)
              dbldist=rhino.Distance(arrct,attrpointcoord)
              dbldist = Rhino.Log10 (dbldist*7)
              If dbldist < dbldist ="">
              strcell = rhino.scaleobject(strcell,arrct,array(0.95/dbldist,0.95/dbldist,0.95/dbldist))
              arrnorm = rhino.SurfaceNormal(strsurf,arrptsurf)
              arrnorm = rhino.VectorScale(arrnorm, dblheight)
              arrnormend = rhino.PointAdd(arrct,arrnorm)
              arrline = rhino.AddLine(arrct,arrnormend)
              Call rhino.AddLoftSrf(array(strcell,strquad1))
              strquad2=rhino.copyObject(strquad1,arrct,arrnormend)
              strcentr=rhino.copyobject(strcell,arrct,arrnormend)
              Call rhino.addloftsrf(array(strquad2,strcentr))
              Call rhino.addloftsrf(array(strquad2,strquad1))
              Call rhino.addloftsrf(array(strcentr,strcell))

              midp1 = array((ptd(0)+ptc(0))/2,(ptd(1)+ptc(1))/2,(ptd(2)+ptc(2))/2)
              midp2 = array((pta(0)+ptb(0))/2,(pta(1)+ptb(1))/2,(pta(2)+ptb(2))/2)
              ptmid= array((arrct(0)+arrnormend(0))/2,(arrct(1)+arrnormend(1))/2,(arrct(2)+arrnormend(2))/2)
              midpoint1=rhino.addpoint(midp1)
              midpoint2=rhino.AddPoint(midp2)
              Call rhino.MoveObjects(array(midpoint1,midpoint2),arrct,ptmid)
              midp1=rhino.PointCoordinates(midpoint1)
              midp2=rhino.PointCoordinates(midpoint2)
              midline = rhino.AddLine(midp1,midp2)
              arrdom=rhino.CurveDomain(midline)
              midplane=rhino.CurvePerpFrame(midline,arrdom(0))
              midcircle1=rhino.AddCircle(midplane,dblheight/6)
              midplane=rhino.CurvePerpFrame(midline,arrdom(1))
              midcircle2=rhino.AddCircle(midplane,dblheight/6)
              Call rhino.AddLoftSrf (Array(midcircle1,midcircle2))
              Call rhino.DeleteObjects (array(arrline,strquad1,strcentr,strquad2,strcell,midpoint1,midpoint2,midline,midcircle1,midcircle2))
              Next
              Next
              For i = 2.5 To upar-2 Step 3
              For J=2 To vpar-2 Step 4
              pt1 = matrix(i,j)
              pt2 = matrix(i+1,j)
              pt3 = matrix(i+2,j+1)
              pt4 = matrix(i+1,j+2)
              pt5 = matrix(i,j+2)
              pt6 = matrix(i-1,j+1)
              pta = matrix(i-1,j)
              ptb = matrix(i+2,j)
              ptc = matrix(i+2,j+2)
              ptd = matrix(i-1,j+2)
              strcell = rhino.AddCurve(array(pt6,pt1,pt2,pt3,pt4,pt5,pt6),2)
              strquad1 = rhino.AddCurve(array(pta,ptb,ptc,ptd,pta),1)
              Call rhino.objectcolor(strquad1,rgb(255,255,255))'bianco
              arrct = array( (pt6(0)+pt3(0))/2,(pt6(1)+pt3(1))/2,(pt6(2)+pt3(2))/2)
              arrptsurf = rhino.SurfaceClosestPoint(strsurf,arrct)
              dbldist=rhino.Distance(arrct,attrpointcoord)
              dbldist = Rhino.Log10 (dbldist*7)
              If dbldist < dbldist ="">
              strcell = rhino.scaleobject(strcell,arrct,array(0.95/dbldist,0.95/dbldist,0.95/dbldist))
              arrnorm = rhino.SurfaceNormal(strsurf,arrptsurf)
              arrnorm = rhino.VectorScale(arrnorm, dblheight)
              arrnormend = rhino.PointAdd(arrct,arrnorm)
              arrline = rhino.AddLine(arrct,arrnormend)
              Call rhino.AddLoftSrf(array(strcell,strquad1))
              strquad2=rhino.copyObject(strquad1,arrct,arrnormend)
              strcentr=rhino.copyobject(strcell,arrct,arrnormend)
              Call rhino.addloftsrf(array(strquad2,strcentr))
              Call rhino.addloftsrf(array(strquad2,strquad1))
              Call rhino.addloftsrf(array(strcentr,strcell))
              midp1 = array((ptd(0)+ptc(0))/2,(ptd(1)+ptc(1))/2,(ptd(2)+ptc(2))/2)
              midp2 = array((pta(0)+ptb(0))/2,(pta(1)+ptb(1))/2,(pta(2)+ptb(2))/2)
              ptmid= array((arrct(0)+arrnormend(0))/2,(arrct(1)+arrnormend(1))/2,(arrct(2)+arrnormend(2))/2)
              midpoint1=rhino.addpoint(midp1)
              midpoint2=rhino.AddPoint(midp2)
              Call rhino.MoveObjects(array(midpoint1,midpoint2),arrct,ptmid)
              midp1=rhino.PointCoordinates(midpoint1)
              midp2=rhino.PointCoordinates(midpoint2)
              midline = rhino.AddLine(midp1,midp2)
              arrdom=rhino.CurveDomain(midline)
              midplane=rhino.CurvePerpFrame(midline,arrdom(0))
              midcircle1=rhino.AddCircle(midplane,dblheight/6)
              midplane=rhino.CurvePerpFrame(midline,arrdom(1))
              midcircle2=rhino.AddCircle(midplane,dblheight/6)
              Call rhino.AddLoftSrf (Array(midcircle1,midcircle2))
              Call rhino.DeleteObjects (array(arrline,strquad1,strcentr,strquad2,strcell,midpoint1,midpoint2,midline,midcircle1,midcircle2))
              Next
              Next
              Call rhino.DeleteObject(strsurf)
              Call rhino.EnableRedraw(True)
              End Sub
               
              แจก เครดิต ฟรี ไม่มี เงื่อนไข sa เกม มิ่ง บา คา ร่า wwwufa6666 slotxo ฝาก 9 บาท รับ 100 fifa55gen เครดิต ฟรี 200 ล่าสุด เครดิต ฟรี 300 ไม่ ต้อง ฝาก ดาวน์โหลด joker xo ufabet991 betufa ทาง เข้า บา คา ร่า mm88us ยู ฟ่า เบ ท 789 gaming vip sbobetstep4 ฝาก 50 รับ 150 ไม่ ต้อง ทํา เทิ ร์ น ล่าสุด บา คา ร่า ae slotxo ฟรี เครดิต 20 โปร เครดิต ฟรี ufa369v2 slot เครดิต ฟรี ถอน ได้ สล็อต โปร โม ชั่ น บอล รอง น่า เล่น ufabet111 ufabet88s mafia8888 เครดิต ฟรี ทาง เข้า slotxo vip ยู ฟ่า เบ ท 123 ดาวน์โหลด เกมส์ สล็อต ออนไลน์ เว็บ พนัน บอล ออนไลน์ slot credit free ทาง เข้า เกม xo zz8 เครดิต ฟรี ufabet 1999 slotxo bonus 100 wwwufa999999 ufa9999com sa gaming 06 ufabet rich แทง บอล ได้ เงิน จริง ufabet72 บา คา ร่า เครดิต ฟรี ไม่ ต้อง แชร์ 918kiss ให้ เครดิต ฟรี เครดิต ฟรี เฮง เฮง ufa ufabet เครดิต ฟรี บอล mega888 ฟรี เครดิต slot ฝาก 1 บาท รับ 99 วอ เลท บอล เดี่ยว เริ่ม ขั้น ต่ำ 1 บาท ี ufabet777 บา คา ร่า ออ โต้ ทาง เข้า ufabet45 ts911ep3 ี ufabet แอ พ ufabet sa gaming vip เข้า สู่ ระบบ sa gaming group เข้า เกม slotxo เครดิต ฟรี ไม่ ต้อง แชร์ ไม่ ต้อง ฝาก ก่อน slot ได้ เงิน จริง sbobet168 ทาง เข้า เล่น https slotauto888 com ufabet 72 ดี ไหม ทาง เข้า เล่น 168slotxo thaisbobet99 fifa551234 แทง บอล ออนไลน์ i99win ทาง เข้า fifa555 สมัคร เล่น สล็อต ออนไลน์ สมาชิก ใหม่ ฟรี เครดิต 2020 ฝาก ถอน ufabet168 ufabet ufa777 mm88fc slot เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ufabet 100 ฟรี 100 เครดิต ฟรี ยิง ปลา 150 เครดิต ฟรี ยิง ปลา ไม่ ต้อง ฝาก 2020 ล่าสุด ดาวน์โหลด สล็อต live22 โหลด สล็อต xo ios ฝาก 50 รับ 150 ไม่ ต้อง ทํา เทิ ร์ น ล่าสุด fifa69 roma เครดิต ฟรี slot ฝาก ครั้ง แรก slotxo mobile ios สล็อต xo ทาง เข้า บา คา ร่า ใน โทรศัพท์ โหลด แอ พ สล็อต xo ฝาก 50 รับ 100 ไม่ ต้อง ทํา เทิ ร์ น ดาวน์โหลด joker xo ufabet72 ทาง เข้า ufabet fc ทาง เข้า ufa7777 บา คา ร่า 2019 แทง บอล ขั้น ต่ำ 100 เว็บ ufabet888 เครดิต ฟรี ใหม่ ล่าสุด ไม่ ต้อง แชร์ ufabet วอ เลท เว็บ ฟีฟ่า ยู ฟ่า 356 เท ส บา คา ร่า รับ เครดิต ฟรี ถอน ได้ ufa678 เครดิต ฟรี ibcbetstep เครดิต ฟรี สล็อต xo fin24 บา คา ร่า ยู ฟ่า เบ ท 007 ยู ฟ่า เบ ท 123 slot mg เครดิต ฟรี ufabet ถอนเงิน เว็บ ufa spin999 เครดิต ฟรี ยู ฟ่า เบ ท 168 vip สมัคร xo ufa600s ยู ฟ่า เบ ท 88888 sa gaming77 ๊ ufa สมัคร สล็อต xo1234 ufathai 6 หวย บอล sa gaming เครดิต ฟรี ทาง เข้า ufa345 sbothai8 ufa356 แจก เครดิต ฟรี ufabet joker ufa356 ที่ ดี ที่สุด databet88 8 เครดิต ฟรี สล็อต xo ufabet อัพเดท เว็บ ufa191 เครดิต ฟรี ไม่ ต้อง แชร์ ไม่ ต้อง ฝาก ก่อน sa36 gaming ฟรี เครดิต ไม่ ต้อง ฝาก ถอน ได้ เครดิต ฟรี 50 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ล่าสุด ufabet928 เครดิต ถอน ได้ ทาง เข้า ufa6666 vegus168 live slot007 ดาวน์โหลด เครดิต ฟรี ไม่ ต้อง ฝาก slot ufabet group sa gaming ฝาก 50 รับ 150 ทาง เข้า ufa69 แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ ไม่ ต้อง แชร์ เครดิต ฟรี ตอน นี้ เซ็ ค ซี่ บา คา ล่า faz123 บา คา ร่า ufabet7777 ufabet 879 บอล ออนไลน์ 55 เครดิต ไม่ ต้อง แชร์ ufabet700 918kiss ฟรี เครดิต 1000 บาท บา คา ร่า ออนไลน์ sa gaming ดาวน์โหลด เกมส์ สล็อต ออนไลน์ โหลด slotxo ios ยู ฟ่า เบ ท 8 sbobet88888 ex88 เครดิต ฟรี บา คา ร่า คลับ fifa55u เครดิต ฟรี โปร บา คา ร่า แท่ง บอล download slotxo ios ดาวน์โหลด slotxo ios แทง บอล true wallet เบ ท 888 slotxo โปร แจก โบนัส 100 ufa356 ฝาก ทาง เข้า ฟีฟ่า 555 สมัคร fifa55 ี ufabet 999 sa gaming demo มังกร บา คา ร่า ufabet 115 ทาง เข้า เกม slotxo ufabet scr ดาว โหลด slot slotxo joker สมัคร ใหม่ ี ufa007 slot 999 เครดิต ฟรี ufabet88888vip slotxo ฝาก 15 บาท รับ 100 โบนัส เครดิต ฟรี ไม่ ต้อง ฝาก ufa auto 168 ยู ฟ่า ออนไลน์ 168 มังกร บา คา ร่า แทง บอล fifa555 ufabet ฝาก ถอน เอง ดาว โหลด slot ufabet18 sbobet285 pantip ถอนเงิน ufabet168 ค่า ร่า บอล 168 เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 ค่า บ่า ร่า ufabet global เปิด ยู ส ใหม่ รับ เครดิต ฟรี แทง บอล ให้ รวย 1ufabet เครดิต ฟรี ufabet cnv3 ีี ufabet1688 ยู ฟ้า เบ ท ufabet ถูก กฎหมาย ไหม ufabet999 แท่ง บอล ออนไลน์ เล่น ยู ฟ่า 191 แทง บอล สด รับ เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน ufabet agreement 8 โปร ฟรี เครดิต ufabet ฝาก วอ เลท มาเฟีย เครดิต ฟรี ล่าสุด sa casino ฝาก 50 รับ 150 fifa6886 slotxo 09 แจก ฟรี ไม่ ต้อง ฝาก ทาง เข้า เว็บ ยู ฟ่า fifa555pro slot ฟรี เครดิต 2019 ufabet12 slot ฝาก 1 บาท รับ 99 วอ เลท ค่า สิ โน ออนไลน์ ufa69 เว ป ยู ฟ่า ufabet 256 ufabet888 ดาวน์โหลด xo บา คา ร่า c01 ufabet ตัว แม่ 77up line mafia88 เครดิต ฟรี 50 next88 รหัส ฟรี เครดิต member ufabet xo123 เครดิต ฟรี slotxo ฝาก 9 บาท รับ 100 วอ เลท บา ร่า คา หวย ufa ยู ฟ่า เบ ท 99 ufabet ฝาก 20 รับ 100 sa789 บา คา ร่า โหลด แอ พ slotxo เครดิต ฟรี 10 รับ 100 สมัคร เว็บ ufabet1688 เครดิต ฟรี sa gaming jokerslotz999 เครดิต ฟรี ufabet799 ufa356 ฝาก ufabet352 เข้า ยู ฟ่า เบ ท โปร โม ชั่ น copa69 ฝาก 1 บาท ฟรี 99 บาท 2020 ยู ฟ่า เบ ท 9999 แจก เครดิต ฟรี 50 ไม่ ต้อง ฝาก ล่าสุด mafia แจก เครดิต ฟรี 50 บาท ufa168 สมัคร โปร บา คา ร่า sa slotxo899 ดาวน์โหลด ตั้ง slotxo slot ฟรี เครดิต 2019 ส ตุ ร บา คา ร่า 2020 ufabet ฝาก ขั้น ต่ํา ufabet 363 slot เครดิต ฟรี 2019 สล็อต xo 11 sa game casino online เล่น บอล ให้ ได้ เงิน ทุก วัน แอ ป sa gaming jokerslotz999 เครดิต ฟรี ดาวน์โหลด สล็อต ยู ฟ่า เบ ท 191 st911 บา คา ร่า เบอร์ โทร ufa365 sa gaming เปิด ตอน ไหน แทง บอล ออนไลน์ ไม่มี ขั้น ต่ำ slotxo ฝาก 10 รับ 100 วอ เลท ฝาก 1 บาท รับ โบนัส 99 ล่าสุด ยู ฟ่า เบ ท 72 เสีย บา คา ร่า 5000 แอ พ slot ได้ เงิน จริง ดาว โหลด เกม slotxo sa gaming เปิด กี่ โมง ี ufabet007 8 pg slot โหลด เกม slotxo ดาวน์โหลด slotxo 2020 crown98 slot เครดิต ฟรี ufabet 688 ดาวน์โหลด aka slotxo ufabet 579 ufa168 มือ ถือ แทง ฟุตบอล เว็บ ufa007 sa gaming vip ยิง ปลา ฟรี 150 บา คา ร่า เซ๊ ก ซี่ slotxo ติด ตั้ง เว็บไซต์ ยู ฟ่า sa gaming 07 ดาวน์โหลด xo ดาว โหลด เกม ส ล๊ อ ต แทง บอล ออนไลน์ i99win เปิด ยูสเซอร์ ฟรี ี ufa6666 ดาวน์โหลด slotxo เวอร์ชั่น ล่าสุด 77up บอล zz8 เครดิต ฟรี เล่น บอล ให้ รวย สมัคร slotxo111 สมาชิก ใหม่ ฟรี เครดิต ล่าสุด บา คา ร่า ทุน 500 บา คา ร่า excel fifa55asia ufabet 1668 ทาง เข้า ufa8888 slotxo ใหม่ แทง ขั้น ต่ํา 10 บาท agent ufabet sa gaming ts911 ufabet 55 ufabet1688 public chgpwd 2 ทาง เข้า ufabet191 ี ufabet88 แทง บอล ฟรี เครดิต 2020 เครดิต ฟรี slot ufabet728 vegus96 เว็บ ยู ฟ่า 168 web บอล ufa678 ดี ไหม ี ufabet ufabet agreement 8 แอ ป sa gaming ufa1688 สมัคร แทง บอล ออนไลน์ w88 ฝาก 1 บาท รับ โบนัส 99 ล่าสุด แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2018 บา คา ร่า มังกร วัว วัว บา คา ร่า คือ ufa877 คืน ยอด เสีย บา คา ร่า sa vip sbobet8888888 เครดิต ฟรี สล็อต xo แจก เครดิต ฟรี ปี ใหม่ ufa356 สมัคร เครดิต ฟรี วัน นี้ ดาวน์โหลด เกมส์ สล็อต ออนไลน์ sbobetball168 ยู ฟ่า เบ ท 666 pantip บา คา ร่า เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 ล่าสุด ลิ้ ง ค์ โหลด เกมส์ https www srd168th com slotxo ได้ บา คา ร่า mm88wim ufabetsr3 st911 บา คา ร่า ทาง เข้า slotxo88 บอล fifa55 ส ปี ด บา คา ร่า s16 ufabet main สมัคร pg slot slot ฟรี เครดิต ไม่ ต้อง ฝาก ยิง ปลา รับ เครดิต ฟรี live22 แจก เครดิต ฟรี ufabet ไลน์ วิธี ติด ตั้ง slotxo ตํา รา บา คา ร่า ufabet facebook เครดิต ถอน ได้ ฝาก 100 ฟรี 100 บอล ufabet728 77up2u สมัคร agent ufabet ufabet368 ufabet168 มือ ถือ โหลด เกม xo slot slotxo ใหม่ ล่าสุด slotxo ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ufa007s sa gaming ดี ไหม pantip slot 999 เครดิต ฟรี slotxo โปร 10 ยู ฟ่า เบ ท 8 sa gamingsexy ทาง เข้า ufabet787 918kiss แจก ฟรี เครดิต live777th slot online live22 slot download แจก เครดิต ฟรี 500 ไม่ ต้อง ฝาก 2020 ล่าสุด เครดิต ฟรี ใหม่ joker xo 555 สมัคร สล็อต ออ โต้ ดาวน์โหลด slotxo apk เข้า เกม สล็อต xo ทาง เข้า สล็อต xo www ยู ฟ่า เบ ท โบนัส ฟรี ไม่ ต้อง ฝาก download slotxo ios fifa55 sport slotxo แอ พ มือ ถือ ยู ฟ่า เบ ท 88888 แจก เครดิต ฟรี จริง ufa356 แจก เครดิต ฟรี สมัคร ufabet slot credit free live22 เครดิต ฟรี ไม่ ต้อง ฝาก แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2019 ไม่ ต้อง ฝาก ป๊อก เด้ง เงิน จริง ฟรี เครดิต เว็บ ufa24h แทง บอล ด้วย บัตร ท รู เครดิต ฟรี ยู ฟ่า sa เกม บา คา ร่า ufa ทาง เข้า gclub985 เข้า เล่น ufabet ทาง เข้า เอเย่นต์ ยู ฟ่า เบ ท บา คา ร่า วัว เครดิต 100 ไม่ ต้อง ฝาก sa gaming เล่น ฟรี ufa168 สมัคร ufa88 มือ ถือ ดาวน์โหลด สล็อต xo 888 ufabet หลัก xe88 เครดิต ฟรี ไม่ ต้อง ฝาก slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2018 แทง บอล โลก ufa356 เครดิต ฟรี 100 ufabet v3 slot เครดิต ฟรี ล่าสุด เครดิต ฟรี ก่อน ฝาก ufabet16 รับ เครดิต ฟรี ไม่ ต้อง ฝาก 2020 แทง บอล ขั้น ต่ำ 1 บาท โปร ฟรี เครดิต แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2019 ไม่ ต้อง ฝาก เกม มัก คา ร่า สมัคร สล็อต xo slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน เครดิต ฟรี ไม่ ต้อง ฝาก ล่าสุด ทาง ยู ฟ่า บา คา ร่า ประกันภัย เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ล่าสุด ไม่ ต้อง แชร์ xo slot download เว ป บอล ฝาก ขั้น ต่ํา 100 i99pro sa gaming99 ufa98s แจก ทุน ฟรี ไม่ ต้อง แชร์ ufa88d ทาง เข้า เว ป ยู ฟ่า 191 sbobet24online sa gaming 07 sa gaming 222 ทาง เข้า ufa678 ทาง เข้า ufabet88888 โหลด เกม live22 ligaz888 ยู ฟ่า เบ ท เครดิต ฟรี เข้า เกม xo เว ป ufa365 สล็อต xo ทาง เข้า sa gaming 911 slotxo ออ โต้ วิธี ดาวน์โหลด slotxo sa แจก เครดิต ฟรี ไม่ ต้อง ฝาก ล่าสุด ufa ออนไลน์ เล่น พนัน บอล ออนไลน์ ทาง เข้า ufa8k betufa 1688 ufabet19 ace333 ฟรี เครดิต ไม่ ต้อง ฝาก แอ พ ufabet sa casino ฝาก 50 รับ 150 บา คา ร่า c03 ufabet win666 ufabet95 sa gaming แจก เครดิต ฟรี ufabet1688 agreement 8 บา คา ร่า 6 แต้ม ufa191 มือ ถือ ufabet ฝาก ขั้น ต่ำ บา คา ร่า excel fifa55u เครดิต ฟรี ยู ฟ้า 007 ยู ฟ่า เบ ท คาเฟ่ fifa55555 รับ เครดิต ฟรี 2020 www123fazcom ufabet ค่า คอม สมัคร สมาชิก ยู ฟ่า เบ ท ufabet เว็บ หลัก เข้า เกม xo โบนัส ไม่ ต้อง ฝาก ufabet โกง บา คา ร่า sexy66 สมัคร เล่น slot ทาง เข้า เอ เย่ น ufa บา คา ร่า ประกันภัย ี ufa9999 sa gaming hacker wwwufa9999com sa gaming 50 รับ 150 ยู ฟ่า เบ ท 007 slot online ฟรี เครดิต ไม่ ต้อง ฝาก 2019 ให้ เครดิต ฟรี sa gaming โปร โม ชั่ น sa gaming 168s sbothai8 next88 รหัส ฟรี เครดิต เครดิต แจก ฟรี ไม่ ต้อง ฝาก 77uponline ดาวน์โหลด แอ พ slotxo ดาว โหลด ส ล็ ต xo slotxo ดาวน์โหลด ios ลิ้ ง ค์ โหลด เกมส์ https www srd168th com slotxo ดาวน์โหลด สล็อต xo ios 188bet ฟรี เครดิต 2019 slot รับ เครดิต ฟรี ไม่ ต้อง ฝาก ยู ฟ่า เครดิต ฟรี ufabet1688 เครดิต ฟรี live777th slot online วิธี ติด ตั้ง slotxo ufabet main แทง บอล ฟรี 300 ufabet198 fifa55th fifa55 พ ริ ต ตี้ บา คา ร่า slotxo joker 100 roma เครดิต ฟรี ทาง slotxo เกม บา คา ร่า sa แทง ฟุตบอล ออนไลน์ mafia8888 เครดิต ฟรี เครดิต ฟรี ได้ จริงๆ slot ได้ เงิน จริง sagaming99 ufa991 sa gaming login ฝาก 100 ฟรี 100 บอล slot ฝาก 100 ได้ 300 บา คา ร่า ราคา ถูก ทาง เข้า เว็บ slotxo ufa168 ทาง เข้า ufabet ufabet66 เล่น แทง บอล ufabet โกง slot ไม่ ต้อง ทํา เทิ ร์ น thaibet789 เครดิต ฟรี เข้า เล่น ufa ทาง เข้า ufabet bslot88 เครดิต ฟรี ยู ฟ่า เบ ท มือ ถือ ดาวน์โหลด slotxo88 ufabet268 สล็อต xo 24 hr sa gaming 99 ufabet887 ufa365v2 ทาง เข้า ufabet cnv3 ทาง เข้า ufa955 สมัคร แท่ง บอล ufabet777 ทาง เข้า ufa007 188bet ฟรี เครดิต 2019 slotxo ฝาก 5 บาท ฟรี 99 บาท 2020 ฟรี เครดิต 200 ไม่ ต้อง ฝาก ufabet10 ufabet982 ดาวน์โหลด slotxo ลง คอม ufabet pr rg888 บา คา ร่า สล็อต xo ios มาเฟีย เครดิต ฟรี ล่าสุด แทง บอล ฟรี sa vip บา คา ร่า วัว วัว บา คา ร่า คือ บา คา ร่า mm88us ยู ฟ่า vip ทาง เข้า slotxo auto ลอง เล่น sa gaming slotxo โบนัส 200 www ยู ฟ่า เบ ท เสีย บา คา ร่า 1000 แทง บอล ขั้น ต่ำ 20 บาท ufa6666 มือ ถือ sa168 game ี ufa188 ufabet360 เข้า เล่น เกม slotxo ufa365 v2 ufabet 555 เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ล่าสุด ไม่ ต้อง แชร์ i99pro เครดิต ฟรี ถอน ได้ slot เครดิต ฟรี 2019 slot ฟรี เครดิต ไม่ ต้อง ฝาก ก่อน slotxo สมัคร รับ เครดิต ฟรี joker ี ufa7777 คูปอง ufabet บา คา ร่า โทรศัพท์ ี ufabet6666 slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ 2020 สมาชิก ใหม่ รับ ฟรี เครดิต slot แจก เครดิต ฟรี 300 โปร เครดิต ฟรี สมัคร เว็บ ufa สมัคร slotxo111 แจก โบนัส ฟรี แอ พ บา คา ร่า ios ยูสเซอร์ ฟรี สมัคร ufa88 xo download ufabet slots pok9 เครดิต ฟรี ขาย ยู ส ufabet บา คา ร่า mm88us บา คา ร่า เซ๊ ก ซี่ ดาวน์โหลด สล็อต แอ พ slotxo ufabet แนะนำ เพื่อน ufabet 256 ufabet ฝาก ขั้น ต่ํา บรา ค่า ร่า slotxo ฝาก 100 ฟรี 100 wwwufa7777com สมัคร ufabet888 slotxo โหลด xo แจก เครดิต ฟรี sa เกม บา คา ร่า แจก เครดิต ฟรี 30 ufabet500 ดาวน์โหลด slotxobkk ยู เบ ท slot รับ เครดิต ฟรี ไม่ ต้อง ฝาก sa gaming premium sa game 168 vip ดาวน์โหลด slotxo pc ฟรี เครดิต ไม่ ต้อง ฝาก 2019 xo slot เครดิต ฟรี คา สิ โน sa ufatexas55 slot เครดิต ฟรี ถอน ได้ เสีย บา คา ร่า 1000 เว็บ ยู ฟ่า 365 live22 slot ฟรี เครดิต ยู ฟ่า เบ ท 9999 ufa988bet ทาง เข้า slotxo auto sa gaming ฟรี 300 ufabet เว็บ หลัก ไม่ ต้อง ฝาก ก่อน ถอน ได้ ufabet168 ดี ไหม slotxo ฝาก ไม่มี ขั้น ต่ํา ufabet16 slotxo ฝาก 5 บาท ฟรี 99 บาท ล่าสุด คูปอง sa gaming เกม บา คา ร่า 66 ufa600 เข้า ufa345 ทาง เข้า ฟีฟ่า 555 บา คา ร่า 2020 fifa55 rmua fifa5555 หวย sbobetclub168 ufa หลัก ฟรี เครดิต ไม่ ต้อง ฝาก ก่อน 2020 ดาวน์โหลด เกมส์ สล็อต slotxo88 angel88 เครดิต ฟรี ufabet666 vip2541 ฝาก เงิน 20 www ufabet auto ทาง เข้า ี ufabet ทาง เข้า ี ufabet sbobetstep5 ufabet lucky slot ไม่ ต้อง แชร์ โหลด เกม xo slot ufabet ไฮโล ยิง ปลา เครดิต ฟรี ไม่ ต้อง ฝาก 2019 ล่าสุด ทาง เข้า ufa678 สล็อต xo ฝาก 1 บาท เครดิต ฟรี ใหม่ ล่าสุด 2020 สมัคร ufabet บา ขา รา ufabet ใหม่ ufa969 บา คา ร่า โทรศัพท์ wwwufa6666 ufabet168 id line ทาง เข้า ยู ฟ่า เบ ท 888 ฝาก 100 รับ 200 xo เครดิต ฟรี ไม่ ฝาก web168v3 เช็ ก ซี่ บา คา ล่า ufabet688 sa gaming slot เล่น บา คา ร่า sa ฟรี เครดิต บอล ทาง เข้า ufa95 ufabet promotion ยู ฟ่า เบ ท 99 9bet บา คา ร่า ufa ไม่มี ขั้น ต่ํา slotxo ดาวน์โหลด ลงมือ ถือ http www slotxo com m สมัคร ufabet1688 สมัคร เล่น เกม สล็อต heng555 ฟรี เครดิต ดาวน์โหลด slotxo ล่าสุด เว ป บอล ดี ที่สุด 918kiss ฟรี เครดิต 1000 บาท 2020 สมัคร สล็อต 10 บาท ดาวน์โหลด เกม สล็อต live22 บา ค่า ร่า เครดิต ฟรี เครดิต ฟรี 200 ล่าสุด slot ออนไลน์ ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ เครดิต ฟรี mafia ใหม่ ล่าสุด fifa55u ไลน์ เครดิต ฟรี ไม่มี ขั้น ต่ำ ufabet bet slotxo ฝาก 5 บาท ฟรี 99 บาท ล่าสุด fifa55k fifa55 เครดิต ฟรี 100 ทาง เข้า ufabet787 sa gaming 168vip เข้า สู่ ระบบ ufa7777 ทาง เข้า ยู ฟ่า 168 ี ufa747 mafia8888 เครดิต ฟรี เปิด ยูสเซอร์ ฟรี เครดิต 2020 แจก เครดิต ฟรี 100 บาท สำหรับ สมาชิก ใหม่ scr888th slotxo ios เล่น ไม่ ได้ ufabet dna เช็ ก ชี่ บา คา ร่า 1688 ยู ฟ่า เบ ท 1688 สมัคร สล็อต xo mm88fc vip ทาง เข้า ufabet1688 บา คา ร่า pantip เปิด ยูสเซอร์ รับ เครดิต ฟรี ufabet24hr ufa600 ufabet world รับ เครดิต ฟรี xo ufabet บา คา ร่า ออนไลน์ betufa ทาง เข้า วิธี ติด ตั้ง slotxo slot ฟรี เครดิต ไม่ ต้อง ฝาก 2019 jokerslotz999 เครดิต ฟรี แทง ฟุตบอล ออนไลน์ ufa168 ฝาก ถอน เสีย บา คา ร่า แจก เงิน ฟรี 2019 เว็บ บา คา ร่า ufabet ufa147 ทาง เข้า แทง บอล 10 fifa55 only slot roma เครดิต ฟรี ดาวน์โหลด joker xo live777th slot online mm88bet vip ี ufa9bet แทง สด สด สล็อต xo download slot เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน ยู ฟ่า แจก เครดิต ฟรี แทง บอล w88 ufabet 1168 ufabet ฝาก 100 ฟรี 100 ufabet เบอร์ โทร แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2019 บา คา ร่า ออนไลน์ ufabet ดาวน์โหลด joker xo สตู ร บา คารา ฟรี ยิง ปลา ฟรี เครดิต ไม่ ต้อง ฝาก ล่าสุด แทง บอล ให้ ได้ เงิน ล้าน สมัคร เอเย่นต์ sa ufa7777 สมัคร ufabet345 ufa888com เข้า เล่น เกม xo slotxo เปิด ใหม่ แทง บอล 168 ทาง เข้า fifa slotxo เล่น ผ่าน หน้า เว็บ 918kiss ฟรี เครดิต 1000 บาท 2020 ทาง เข้า เว็บ ufa slotxo โปร สมาชิก ใหม่ slotxo ใหม่ ล่าสุด ufa9999 ฝาก ถอน ufatexas89 บา คา ร่า จำลอง ufabet168v2 ufabet56 สมัคร ufa24h ufabet24hrs หา เครดิต ฟรี บา คา ร่า 1 six4bet ufabet1688 line fifa55hd ufawb998v3 แทง พนัน บอล ออนไลน์ mafia88 เครดิต ฟรี 50 วิธี โหลด สล็อต sa gamingbet fifa55hb สมัคร xo ไฮโล sa next88 รหัส ฟรี เครดิต wwwvegus168 ts38 บา คา ร่า เครดิต ฟรี ถอน ง่าย 2020 เว็บ ufa191 fifa888 slot เครดิต ฟรี ไม่ ต้อง ฝาก 2019 ล่าสุด ี ufapro888 slotxo 09 ufabet2499 ufabet cn เครดิต ฟรี 100 ล่าสุด ts911ep3 vegus168 ฝาก เงิน โหลด เกม slot แทง บอล ออนไลน์ ไม่มี ขั้น ต่ํา บา คา ร่า เท ส 285 บา คา ร่า โหลด สล็อต 123 slotxo ฟรี 100 ufa888 เครดิต ฟรี web ufabet main ยู ฟ่า เบ ท 8 ยิง ปลา ออนไลน์ ฟรี เครดิต ufabet login ดาวน์โหลด slotxobkk ยู ฟ่า ออนไลน์ 24 แอ พ แทง บอล ufabet เข้า ไม่ ได้ แจก เครดิต ฟรี ใหม่ ล่าสุด ดาวน์โหลด สล็อต sa gaming vip เครดิต ฟรี sa gaming hacker ฟรี รับ เครดิต ฟรี ง่ายๆ แอ พ slotxo gaming vip รับ เครดิต ฟรี 100 ไม่ ต้อง ฝาก pkk123 เครดิต ฟรี all pg slot ufa69 ดี ไหม ufa168 สมัคร เว็บไซต์ แท่ง บอล แจก ฟรี ไม่ ต้อง ฝาก sa gaming 689 บา คา ร่า baccarat slotxo pc download ี ufa9bet sa ฝาก 50 ได้ 150 sa1688 game slotxo899 ดาวน์โหลด ยู ฟ่า เบ ท ออนไลน์ ufabet898 แทง บอล เครดิต ฟรี ถอนเงิน ufa slotxo 56 หาเงิน จาก บา คา ร่า pantip ufabet1246 sa gaming 4g slotxo899 ดาวน์โหลด สมัคร sa ufabet thaivip ยู ฟ่า เบ ท 72 ufa365 ทาง เข้า มือ ถือ ี ufa1688 แซ ก ซี่ บา คา ร่า sa เกม 66 บา คา ร่า sa ufabet เว็บ แม่ บีบ บา คา ร่า sa casino ฝาก 50 รับ 150 บา คา ร่า excel ยุ ฟา เบส 888 slotxo android สมัคร ufabet ออนไลน์ sa gaming vip demo แจก เครดิต ฟรี จริง เครดิต ฟรี fhm99 pussy888 ฟรี เครดิต fifa55co เครดิต ฟรี ไม่ ต้อง เครดิต ฟรี ถอน ง่าย 2020 บา คา ร่า เกม ยิง ปลา บา คา ร่า 6 แต้ม slotxo รับ เครดิต ฟรี สมัคร สล็อต 1234 ี ufa เว็บ ตรง ยู ฟ่า เกมส์ มา ส คา ร่า ufabet007 ทาง เข้า ยู ฟ่า 356 ufabet168v2 ufa678 ดี ไหม slot online เครดิต ฟรี ฝาก 1 รับ 100 918kiss slotxo ติดต่อ ทาง เข้า ufabet787 sa บา คา ร่า vip ี ufathai ฟรี โบนัส ไม่ ต้อง ฝาก xo แจก เครดิต ฟรี mafia8888 เครดิต ฟรี ufabet 115 v2 แทง บอล ออนไลน์ 888 แทง บอล คู่ ไหน ดี slotxo ติดต่อ slotxo รับ โปร 100 fifa55r คา สิ โน sa super77up ufabet168 vip หา เครดิต ฟรี บา คา ร่า ฟรี 2020 ufa ไม่ ผ่าน เอเย่นต์ pussy888 ฟรี เครดิต ufabet มือ ถือ joker689 เครดิต ฟรี sa gaming 199 โหลด slotxo sa8 บา คา ร่า ฟรี เครดิต 50 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แทง บอล เว็บ ตรง ฟี ฟ้า 555 ทาง เข้า ufa955 ufa24h bet ไลน์ ufa365 ยู ฟ่า 7777 ดาวน์โหลด slotxo joker ทาง เข้า ufabet 89 ufapro888 pantip ทาง เข้า ufabet88888 i99max เว็บ ยู ฟ้า ดาวน์โหลด slotxo ล่าสุด ติด ตั้ง slotxo โปร โม ชั่ น sbobet777 ww ufa777 mega888 ฟรี เครดิต ไม่ ต้อง ฝาก 2020 slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2018 โปร 100 slotxo betufa 168 ufabet998 เครดิต ฟรี ไม่ ฝาก ไม่ แชร์ ล่าสุด ทาง เข้า เล่น เกม slotxo sa gaming v2 ทาง เข้า ufa24 slotxo download ล่าสุด ufa ไม่มี ขั้น ต่ํา sa gaming demo เครดิต ฟรี ตอน นี้ เว็บไซต์ ยู ฟ่า ดาวน์โหลด slotxo ล่าสุด ufabet cn ufabet ทาง เข้า รับ เครดิต ฟรี 100 ไม่ ต้อง ฝาก รับ เครดิต ฟรี ง่ายๆ เว็บ ufa191 agent ufabet 918kiss แจก เครดิต ฟรี 2020 บา คา ร่า มา วิน slot007 ดาวน์โหลด เครดิต ฟรี ไม่มี ขั้น ต่ำ ufabet คือ ยู ฟ่า เบ ท 999999 slot ฟรี เครดิต 300 เล่น บอล ออนไลน์ pantip ufabet 123 ทาง เข้า ufa888 ufaclub8 ufabet 1988 http www ufabet บรา ค่า ร่า บา คา ร่า 1 ufabet1688 สมัคร ufa356 v2 ทาง เข้า เกม xo ufabet787 ufabet8k ทาง เข้า ufabet356 slotxo ทาง เข้า เล่น โหลด joker slot สล็อต xo 555 slotxo ฝาก 50 copa69 sbobetonline244 live22 เครดิต ฟรี 2020 heng666 เครดิต ฟรี แทง บอล ออนไลน์ ขั้น ต่ํา 20 ufabet คืน ยอด เสีย 918kiss แจก ฟรี เครดิต สมาชิก ใหม่ ฟรี เครดิต ไม่ ต้อง ฝาก 2020 บา คา ร่า 11111
              บอล เต็ง ประจำ วัน| วิเคราะห์ บอล สูง ต่ํา แม่น ๆ| step7m ทีเด็ด บอล ส เต็ ป| ทีเด็ด บอล เดี่ยว คืน นี้| อั ลก อริ ทึม บา คา ร่า 2019| โปรแกรม สูตร บา คา ร่า ฟรี 2019| ที่ เด็ด 4 เทพ| ข่าว กีฬา เล ส เตอร์| บ้าน ผล บอล ทีเด็ด 4 เซียน| ทีเด็ด บอล ชุด ทีเด็ด บอล เต็ง| โปรแกรม คํา น วณ บา คา ร่า pantip| วิเคราะห์ บอล วัน นี้ ทุก ลีก ล้ม โต๊ะ| บอล รอง เน้น ๆ ๆ| สาม เทพ เซียน ส เต็ ป| ทรรศนะ บอล สูง ต่ํา วัน นี้| สูตร ฟรี sa| สี่ เซียน ผล บอล| โปรแกรม สูตร บา ค่า ร่า sa ฟรี| สูตร บา ค| ทีเด็ด บอล ชุด 3 คู่ วัน นี้| วิเคราะห์ บอล วัน นี้ ฟรี| ข่าว ฟุตบอล ไทยรัฐ| joker ฟรี 100| สูตร บา ค่า ร่า ทุน น้อย| สูตร sexygame1688| sa gaming ai| ด ทีเด็ด บอล วัน นี้| บอล เด็ด 100 เปอร์ เซ็น| ราคา สปอร์ต พูล วัน นี้| วิเคราะห์ บอล วัน นี้ เซียน ฮอต| sanook ข่าว กีฬา| สูตร บา คา ร่า ฟรี ด อ ท คอม| ทรรศนะ บอล vip| ทีเด็ด บ้าน ผล บอล คืน นี้| บ้าน บอล เด็ด 100| เว็บ พนัน ออนไลน์ 88| วิเคราะห์ ทีเด็ด ฟุตบอล วัน นี้| โปรแกรม บา คา ร่า sa| สูตร บา คา ร่า ได้ ผล จริง ไหม| บอล เต็ง ต่าง ประเทศ| อ่าน ข่าว สยาม กีฬา| ผล บอล ที่ เด็ด วิเคราะห์ บอล| fifa55fc สูตร| คลิป ทีเด็ด ฟุตบอล| sa game lobby สูตร| วัน เกิด รับ เครดิต ฟรี| สาม เทพ บอล เด็ด| ทีเด็ด บอล เจ ลีก| ทีเด็ด บอล ชุด 4 ตัว ล้ม โต๊ะ ทีเด็ด บอล 4 คู่| สยาม กีฬา ราย วัน สปอร์ต พูล| ที เด็ด สกอร์ สูง| ทีเด็ด บอล 3 ไม้| วิเคราะห์ สกอร์ สูง ต่ำ สปอร์ต พูล| ทีเด็ด บอล เต็ง วัน นี้ 69| สูตร บา คา ร่า sa168| ทีเด็ด บอล ลีก วัน| โปรแกรม บ่อนแตก| วิเคราะห์ ผล บอล วัน นี้ แม่น ๆ| สูตร บา คา ร่า มา วิน| ราคา บอล สปอร์ต แมน| วิเคราะห์ บอล สูง แรก วัน นี้| ที เดด บอล ชั ว| บอล ชุด วัน นี้ แม่น ๆ| สูตร บา คา ร่า พา เล่น| ข่าว กีฬา ใหม่| การ โกง บา คา ร่า|