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
                   
                  mas888 ฟรี เครดิต maxwin99 เครดิต ฟรี slotxo 7 vegus168 vip slotxo king189 เครดิต ฟรี ล่าสุด 2020 slotxo png xo slot cafe 918kiss v8 918kiss 123 slot 69 918kiss888 slot mafia928 slotxo 5g สมัคร mm88bet สล็อต 1234 ฝาก 10 รับ 100 fin888 เครดิต ฟรี ไฮโล ออนไลน์ ได้ เงิน จริง สล็อต xo123 เครดิต ฟรี 120 vegus16 joker hunter 888 fin888 เครดิต ฟรี slot4u xo slot22th xo fifa555fc mario slotxo ไฮโล ขั้น ต่ำ 5 บาท ทาง เข้า fifa55m slot joker89 z8 เครดิต ฟรี slot ฟรี เครดิต 100 เครดิต ฟรี ไม่ ฝาก ไม่ แชร์ 2020 slotxo pgslot เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน ไม่ ต้อง แชร์ กติกา รู เล็ ต slot35 joker kiss918 auto nikigame789 mafia ฟรี เครดิต ไม่ ต้อง ฝาก big win 777 live22 1234 fin888 เครดิต ฟรี slot ฝาก 19 บาท ได้ 100 star slot ไพ่ โป ก เกอร์ mvegus1682 memberbet net logincontroller mm88bet com deposit slotxo kd 888 joker ไฮโล ออนไลน์ w88 slot king99 918kiss club gaming world slot 918kiss ฝาก ขั้น ต่ํา 50 บาท slot 1688 slotxo เครดิต 50 สล็อต xo 191 joker456 เครดิต ฟรี สล็อต ฝาก ถอน ไม่มี ขั้น ต่ำ วอ เลท slot joker ฝาก 20 รับ 100 24th slot scr99th 918kiss สล็อต ฝาก อัตโนมัติ slotxo exp win55 เครดิต ฟรี ไพ่ โป ก เกอร์ ออนไลน์ slotxo lucky god2 30 ฟรี เกม fifa55na แบ ล็ ค แจ็ ค ไพ่ slot super สล็อต ยู ฟ่า 777 joker gaming 888 สยาม โป ก เกอร์ ฝาก 10 รับ 100 xo slot678 เกม ไพ่ 21 gott7 slot 918kiss ฝาก true wallet luk666 เครดิต ฟรี เกม ส ล็ slotxo ฝาก ถอน อัตโนมัติ 918kiss โปร โม ชั่ น boxing slot slotxo 10 ได้ 100 joker ถอน ไม่มี ขั้น ต่ํา เครดิต ฟรี 50 บาท ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ joker slot demo เครดิต ฟรี แอด ไลน์ agent 918kiss slot48 918kiss allbet asia 918kiss 100 ฟรี 100 สมัคร ฟรี เครดิต ฟรี เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน ไม่ ต้อง แชร์ 918 ออ โต้ ไฮโล ขึ้น คู่ slotxoth22 fortuna slots fifa555god แทง ไฮโล มือ ถือ slotxo69thai slot 66 wwwufa24h mega888 download 2019 3xbet เครดิต ฟรี slotxo 24 slot ฝาก 25 รับ 100 joker hunter 888 xoclub99 xo live22 slotxo ฝาก 20 ได้ 100 slot joker 100 slot vip 99 ึึึึ 77up 918kiss เครดิต ฟรี 100 918 คือ สมัคร vegus168 โปร 100 918kiss สล็อต xo วอ ล เลท ไฮโล สูง ต่ํา slotxo ฝาก วอ ล เลท เครดิต ฟรี 918kiss ส ล๊ อ ต xo1234 สล็อต xo ท รู วอ ล เล็ ต fifa55 ดี ไหม สมัคร เอ เย่ น vegus168 big joker slot 777 slot game คา สิ โน ไพ่ ดั ม มี่ live22 ฝาก ไม่มี ขั้น ต่ำ เครดิต ฟรี 200 ไม่ ต้อง แชร์ slotxo 111 slotxo mod apk slot2xl slot24hr fifa55 คา สิ โน เข้า เว็บ fifa55 24th slotxo slotxo 999 8 bit slot xo joker xo slotcafe ฝาก ผ่าน วอ ล เลท ไม่มี ขั้น ต่ํา slotxo เข้า เล่น joker slot ฝาก 10 รับ 100 เล่น เกม สล็อต xo slot999 xo ฝาก 500 ฟรี 200 avenger98 เครดิต ฟรี pg slot โปร ทุน น้อย slotxo 918kiss slotxo xo โป็ ก เกอร์ ออ น ไล 918kiss โปร www fifa777 com aladdin slot pgslot1234 dafabet slot slot free credit no deposit สล็อต xovip slot slotxo slotxo ฝาก 10 รับ 100 ล่าสุด โจ๊ก 888 slotxo 2xl live22 ฝาก 10 รับ 100 ฝาก ถอน 918kiss slot969 vegus16 pay96 slot เล่น xo slot joker live22 fifa555bonus 168 slotxo 918kiss เครดิต ฟรี 100 ไม่ ต้อง ฝาก 2020 หลักการ แทง ไฮโล slotxo ที่ ดี ที่สุด 918kiss ถอน ไม่มี ขั้น ต่ํา slot hd ฟรี เครดิต ไม่ ต้อง ฝาก ก่อน ไม่ ต้อง แชร์ databet88 agent สล็อต xo 88 918kisskingdom joker123 ไม่มี ขั้น ต่ํา fifa55 ดู ทีวี ออนไลน์ mega888 download 2019 click slotxo slot5g 12ww เครดิต ฟรี ace333 เครดิต ฟรี ไฮโล pantip monster joker slot slotxo24th สล็อต 777 คา สิ โน ออนไลน์ xo game slot dreamtech slot สมัคร ฟรี เครดิต ไม่ ต้อง แชร์ รู เล็ ต 11 แถว เล่น ไพ่ ได้ เงิน จริง 2019 918kissauto 2 918kiss เครดิต ฟรี 50 winner99 เครดิต ฟรี 918kiss money slot punpun fifa55fifa555 tss911 เครดิต ฟรี slotxo แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2019 skywind slot slot joker ฝาก ไม่มี ขั้น ต่ํา 918kiss เครดิต ฟรี 300 ไม่ ต้อง ฝาก เครดิต ฟรี mega888 slot joker ฝาก ถอน ไม่มี ขั้น ต่ํา slot ฟรี 100 slot เครดิต ฟรี 2020 ไม่มี เงื่อนไข ไพ่ โป ก เก อ 918kisskiss918 99slot slot โปร ฝาก 10 บาท เว็บ แทง บอล fifa55 bbet99 เครดิต ฟรี เอ เย่ น 918kiss fifa55 แจก เครดิต ฟรี ลูกค้า เก่า ไฮโล ออนไลน์ w88 ufa800 ไฮโล 86slot slots 500 ava slot slotxo ฟรี เครดิต ไม่ ต้อง ฝาก เติม เครดิต slotxo 918kiss star v2 slot cat88 ฝาก เงิน live22 1234 slot slot joker 1234 slot1688 pantip ไพ่ โป๊กเกอร์ สมัคร ฟรี เครดิต slot69 mafia999 slot เกม ไฮโล ออนไลน์ ได้ เงิน จริง slotxo889 scr888 online casino 789 game slot joker xo th 918kissauto download best slot slotxoslotxo ดู ทีวี ออนไลน์ fifa55 918kisswallet slotxo เติม เงิน wallet สล็อต 888 คา สิ โน ออนไลน์ slotxo ฝาก 20 รับ 100 โปร โม ชั่ น ยิง ปลา แอ พ ไฮโล สั่ง ได้ เข้า fifa55 11 ไฮโล 2020 slotxo line joker slot999 เครดิต ฟรี 200 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2pj slot 2xl slot joker โจ๊ก 888 918 แจก เครดิต ฟรี ไฮโล ส กิ ด 3 หน้า vscr888 2pj slot เครดิต ฟรี 3000 3win8 ฟรี เครดิต slot777 ฟรี เครดิต payslot 918kiss ฟรี fortune 918kiss mafia55 เครดิต ฟรี 50 fifa55 reward เครดิต ฟรี ไม่ ต้อง แชร์ ล่าสุด fifa55ez hungry 918kiss ไพ่ ออนไลน์ slot bet online ป๊อก เด้ง เครดิต ฟรี หมุน วง ล้อ slotxo slotxo 11 เครดิต ฟรี 918 หา เครดิต ฟรี เล่น slot joker เครดิต ฟรี เติม เกม slotxo แป น ไฮโล slotxo pro slot mobile live22 ไม่มี ขั้น ต่ํา เครดิต ฟรี ไม่ ทํา เทิ ร์ น joker demo slotxo สล็อต joker slot ไม่มี ขั้น ต่ํา อั่ ง เปา สล็อต xo slot joker ฝาก ไม่มี ขั้น ต่ํา slot 2019 เกม ไฮโล y8 fifa55we slot lucky god รู เล็ ต ออนไลน์ มือ ถือ ไฮโล ออนไลน์ 888 เติม เงิน slotxo fifa55na หน้า เว็บ xo เครดิต เล่น ฟรี คา สิ โน ป๊อก เด้ง fortuna slots slots v riches666 เครดิต ฟรี ไพ่ แบ ล็ ค แจ็ ค 2pj slot slotxo ทุน น้อย joker game slot ฟรี 200 ไม่ ต้อง ฝาก ฟุตบอล เสมือน จริง 918kiss ฟรี เครดิต slotxo51 fifa55 ดี ไหม slotxo 88th mvegus1682 memberbet net 918kiss44 หน้า เว็บ xo มาเฟีย 123 เครดิต ฟรี 918kiss lucky slotxo mo slotxo mafia slot111 luk666 เครดิต ฟรี r35 xo slot slotxo สล็อต ฝาก 10 บาท รับ 100 slot เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ slot tiger 918kiss เวอร์ชั่น ใหม่ slot35 scr888 สมัคร ฟรี เครดิต wwwufa24h เครดิต ฟรี pussy888 สมัคร เว็บ บอล fifa55 fifa55 ทดลอง เล่น ไลน์ mm88bet open365 ฟรี เครดิต 77slot ufa800 ไฮโล fifa55u ทาง เข้า เครดิต ฟรี ทํา เทิ ร์ น น้อย slotxo98 casino online jackpot 918kiss เครดิต ฟรี 100 gclub เครดิต ฟรี ถอน ได้ 2020 ไฮโล ออนไลน์ ดี ที่สุด slot 66 slot 66 slot777 เครดิต ฟรี g9 slot แอด มิ น 918kiss คา สิ โน ออนไลน์ 918kiss slotxo casino slotxo 828 pgslot789 slotxo true wallet ไม่มี ขั้น ต่ํา joker slotxo 24th บอล เสมือน จริง mega888 download 2019 joker ฝาก ถอน ไม่มี ขั้น ต่ํา databet88 pantip 48 slot เล่น ไพ่ ได้ เงิน จริง 2019 slot168 ฟรี เครดิต ทาง เข้า fifa888 live22 easy slot เครดิต ฟรี q9win slot situs slot joker123 slot999 live22 918kiss slotxo ไฮโล png แทง ไฮโล ให้ ได้ เงิน ทาง เข้า ฟีฟ่า 8888 69slot game slot 66 world1688s slot slotxo joker123 slotxo asia slotxo 639 slot999 xo 918kissauto sagame66 ดี ไหม ace333 slot slot เครดิต ฟรี 100 happyslot88v1 xo24hr mario slotxo slotxo 4u slot jackpotxo เกม ไฮโล เครดิต ฟรี ไม่ ยุ่งยาก เกม สล็อต xo ออนไลน์ 918kiss 1234 ไฮโล ฟรี เครดิต เครดิต ฟรี ไม่ ต้อง ฝาก แชร์ gclub ฟรี เครดิต ไม่ ต้อง ฝาก 2019 slot เครดิต ฟรี 2020 สล็อต xo11 scr888 918kiss download คา สิ โน ออนไลน์ ป๊อก เด้ง sg game เครดิต ฟรี joker live22 joker slotxo 24th 918kiss me 2 918kiss download ios ล่าสุด ไม่ ฝาก ไม่ แชร์ เติม เงิน เข้า สล็อต fifa55bonus fifa slot slotxo หน้า เว็บ 550ww เครดิต ฟรี slot 888 casino ฝาก 10 รับ 100 joker xo สมัคร ได้ เครดิต ฟรี testament slot 918kiss me pantip the best slot auto gclub 918 fifa55 สมัคร slot megaways เติม เกม slotxo 2pigs xo 918kisstm mafia808 slot xo slot 777 slot ฝาก 20 บาท รับ 100 77up club 918kiss ท รู วอ เลท mm88bet com deposit เครดิต ฟรี 600 slotxo โบนัส 100 เทิ ร์ น 2 เท่า 918kissauto v4 godslotxo สล็อต ฝาก ถอน ไม่มี ขั้น ต่ำ วอ เลท ฟรี เครดิต ไม่ แชร์ fifa555 สมัคร สล็อต xo44 joker slot 456 เครดิต ฟรี 99 สล็อต xo แจก เครดิต ฟรี ไม่ ต้อง ฝาก best slotxo lucky god progressive demo slotxo ฝาก 20 บาท รับ 100 joker slot ไม่มี ขั้น ต่ํา slot555 เกม พา รวย lucky live22 สมัคร fifa7777 918kiss วอ ล เลท เกม สล็อต 22 dollar star slot ดา ฟา เบ ท เครดิต ฟรี fifa55 แจก เครดิต ฟรี 200 black slot golden monkey slot fifa55ez โป ก เกอร์ ออ น ไล 7vip slotxo joker 2pigsslot สมัคร เอเย่นต์ fifa55 slot โปร ฝาก 10 รับ 100 918kiss android android fifa55 palace 918kiss download ios สมัคร 300 ฟรี 100 do123 918kiss www918kiss slotxo ฝาก 10 ได้ 100 ไฮโล apk fifa55 เข้า ไม่ ได้ pgslot66 เครดิต ฟรี otp fifa ทาง เข้า เครดิต ฟรี 888 555 slotxo world 1688 slot kingslots fifa55hot เว กั ส 168 hd gclub เครดิต ฟรี ถอน ได้ 168 xo qtech slot สมัคร เว็บ บอล fifa55 ฟีฟ่า 777 คา สิ โน ออนไลน์ ดั ม มี่ slotxo 191 เครดิต ฟรี 200 918 live22 เล่น สล็อต xo live22 ฝาก ถอน ไม่มี ขั้น ต่ํา best88 สมัคร live22 ถอนเงิน gclub ฟรี เครดิต ไม่ ต้อง ฝาก เล่น สล็อต xo หน้า เว็บ slot 20 รับ 100 สล็อต 999 คา สิ โน ออนไลน์ fifa55 โดน จับ ฟรี ไม่ ต้อง ฝาก ก่อน slotxo king189 situs slot joker123 winner55 เครดิต ฟรี xo live22 168bet ฟรี เครดิต hack918kiss slot ฝาก ไม่มี ขั้น ต่ํา mafia88 เครดิต ฟรี ไม่ ต้อง แชร์ slot โบนัส slot joker โปร 100 เครดิต ฟรี 918 tss911 เครดิต ฟรี slot sagame66 slotxo star ฟรี เครดิต เดือน เกิด 918kiss ฝาก true wallet slotxo 828 เติม เงิน เข้า สล็อต slot joker ฝาก ไม่มี ขั้น ต่ํา bet365 เครดิต ฟรี slotxo ฝาก 1 รับ 100 ไฮโล ออนไลน์ 5 บาท dslot slot โปร ฝาก 10 บาท สมัคร ฟรี เครดิต ฟรี คา สิ โน ไพ่ ดั ม มี่ xo slot1234 gclub เครดิต ฟรี ถอน ได้ 918kiss ฟรี ufa800 สูตร joker slotxo ฝาก 19 รับ 100 slotso isc888 เครดิต ฟรี slot เกม slot spk slotxo q9win ฟรี เครดิต p168 slot 918kiss แตก ง่าย 2020 เครดิต ฟรี ไม่ ต้อง ฝาก แชร์ joker xo auto สล็อต xo99 joker slot 888 สล็อต xo เครดิต ฟรี ไม่ ต้อง แชร์ xo slot1688 kiss918 ฟรี เครดิต slotxo 169 ไฮโล ออนไลน์ 5 บาท slotxo สล็อต เครดิต ฟรี 10 ตัวแทน live22 12ww เครดิต ฟรี q9win slot ฝาก 20 รับ 100xo เครดิต ฟรี ไม่ ต้อง ทํา เท ริน xo ฝาก ผ่าน วอ เลท 8 bit slot xo 918kisskiss918 ไลน์ mm88bet fafafa2 เล่น sbobet ฟรี joker666 slot xo slot168 เครดิต ฟรี 133 บาท โป ก เกอร์ ออนไลน์ slot cq9 best xo slot ฟีฟ่า 55 ทาง เข้า fifa55 hack918kiss slotplay88 sg เครดิต ฟรี slot sagame66 xo24hr winner55 เครดิต ฟรี สล็อต xo ท รู วอ ล เล็ ต slot xo168 fifa55 goalclub สล็อต xobkk mafia808 slot 918kiss slotxo slot เครดิต ฟรี ไม่ ต้อง แชร์ 48 slotxo slot joker689 ไฮโล ลูกเต๋า slotxo หมุน วง ล้อ สล็อต ได้ เงิน จริง เข้า บัญชี จริง nasa slot slotxo 11 ไฮโล ขั้น ต่ำ 1 บาท slotxo ฝาก 20 รับ 100 xo เล่น ผ่าน เว็บ เว็บ เล่น บา ค่า ร่า ufa800 918kiss เครดิต ฟรี 100 slotxo blue slot2you 918kiss android download สมัคร เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ สล็อต เติม true wallet ไม่มี ขั้น ต่ำ 2021 เครดิต ฟรี ไม่ หลอก แชร์ โจ๊ก เกอร์ ฟรี เครดิต agentfifa55 จุดอ่อน รู เล็ ต ไม่ ต้อง ฝาก เว็บ โจ๊ก เกอร์ 888 918 slot online ฟรี เครดิต 918kiss playstar slot 918kiss ฝาก ท รู วอ เลท 918kiss เครดิต ฟรี ไม่ ต้อง ฝาก mafia เครดิต ฟรี ไม่ ต้อง แชร์ slotxo24h หมุน วง ล้อ joker123 ลูกเต๋า ไฮโล slot โปร ฝาก 10 รับ 100 slot kiss918 ด ค ร ดิ ต ฟรี ฝาก 5 บาท ฟรี 99 บาท 918kissgrand ฝาก 1 บาท ฟรี scr888 สมัคร www918kiss xoslotz1688 ไลน์ slotxo joker slot เครดิต ฟรี ไม่ ต้อง ฝาก slotxo อัน ไหน แตก ง่าย คา สิ โน ออนไลน์ สุด ฮิต kiss918 auto live22 ฝาก ไม่มี ขั้น ต่ํา megaways xo เล่น หน้า เว็บ thai918kiss fif55u slot yakuza slotxo ฟรี เครดิต 300 918kiss บน pc win88 เครดิต ฟรี joker xo auto รู เล็ ต เครดิต ฟรี slot1688 empire slot 168slotxo pantip 918kiss วอ ล เลท slot ฝาก ถอน ไม่มี ขั้น ต่ำ ufa slot slotxo หน้า เว็บ ยู ส ฟรี 918 35 slot joker slotxo vip poker เล่น 918kiss ฟรี 200 mbk slot wms slot slotxo 22th ไฮโล ส กิ ด 3 หน้า เว็บ fifa555 slot เครดิต ฟรี ไม่ ต้อง แชร์ slotxo 101 2in2 เครดิต ฟรี mbk slot slotxo kd 918kissauto alert slot88vip slotxo ฝาก 20 บาท รับ 100 สล็อต xo เครดิต ฟรี 100 ไม่ ต้อง แชร์ ไฮโล ขึ้น คู่ ยู ส ฟรี 918 2xl slot joker xo โจ๊ก เกอร์ เว็บ บอล ufa365 joker123cc slotxo 7777 mega888 ไทย 999 super slot เติม เกม slotxo สมัคร เครดิต ฟรี 200 s9 slotxo หา เครดิต ฟรี ไม่ ต้อง แชร์ gclub 918kiss empire slot joker123 ฟรี เครดิต ไม่ ต้อง ฝาก ไพ่ โป๊ก เก อ 918kiss 333 ไพ่ โป ก เกอร์ 1 v9 slot mega888 malaysia ไม่ ต้อง ฝาก mm88bet com deposit xo thai888 คา สิ โน ออนไลน์ เติม true wallet ไม่มี ขั้น ต่ำ เว็บ ฟีฟ่า 888 เครดิต ฟรี 10 joker โปร โม ชั่ น 918kissauto big win slot tss911 เครดิต ฟรี คา สิ โน ออนไลน์ เติม true wallet ไม่มี ขั้น ต่ำ slot24hr สล็อต xo ฝาก ถอน ไม่มี ขั้น ต่ำ สล็อต xo11 เล่น โป ก เกอร์ ออนไลน์ mafia345 เครดิต ฟรี slotxo mo โจ ก เกอร์ 888 คา สิ โน xo slot true wallet ฝาก ถอน ไม่มี ขั้น ต่ํา ไฮโล 5 บาท สล็อต xo 191 winner99 เครดิต ฟรี winner55 เครดิต ฟรี fifa5555 ดี ไหม grand918kiss 888 โจ๊ก เกอร์ 918kissthailand slotxo แจก เครดิต ฟรี 2019 เกมส์ ไฮโล เหมือน จริง monday 918kiss joker888 เครดิต ฟรี xo slot vip slot red เซียน รู เล็ ต ยู ส เท ส slotxo bbet99 เครดิต ฟรี kiss918 allbet slot1234pg ufa365 เข้า ไม่ ได้ ้ เครดิต ฟรี เล่น โป ก เกอร์ ออนไลน์ thai918kiss gclub เครดิต ฟรี slotxo auto win win slot แอ พ ไฮโล สั่ง ได้ 918kiss me 2 ทาง เข้า ฟีฟ่า 55u xo ฝาก ผ่าน วอ เลท สมัคร live22 auto www918kiss slot1234pg 2xl slot สมัคร ฟรี เครดิต รู เล็ ต ราคา playstar slot เสือ มังกร ออนไลน์ มือ ถือ star slot all slot mafia เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ joker slot1234 slotxo 777 th slotxo ฝาก ถอน อัตโนมัติ gom88bet ไฮโล apk joker123 ไม่มี ขั้น ต่ํา 918kiss ผ่าน เว็บ เครดิต ฟรี 2563 joker918kiss slotxo365 lucky slotxo ลิ้ ง เข้า fifa55 slot hd เครดิต ฟรี 18 918kissscr888 เซียน รู เล็ ต สมัคร ฟรี เครดิต slotxo jb xo slot cafe dl19 918kiss rad slotxo mm88bet sport & casino cherry slot fifa55 สมัคร lucky slot ไฮโล ไฮเทค คือ jokerslot99 เครดิต ฟรี joker xo slot แป น ไฮโล slot 345 slot top game เล่น ไพ่ เงิน จริง slotxo kd 918kiss ฝาก ขั้น ต่ํา 50 บาท สล็อต xo game ฟีฟ่า 888 เครดิต ฟรี 100 ไม่ ต้อง แชร์ 2020 สล็อต xo เครดิต ฟรี 100 ไม่ ต้อง แชร์ slot hall fifa555 เครดิต ฟรี ไม่ ต้อง ฝาก joker123 slotxo download 918kiss ล่าสุด gclub 918 fifa55club sagame168th เครดิต ฟรี rad slotxo เกมส์ สล็อต gclub 918 เครดิต ฟรี 2563 2in2 slot joker เติม true wallet ไม่มี ขั้น ต่ํา mafia ไม่ ต้อง แชร์ ฝาก เงิน live22 เครดิต ฟรี ทํา เทิ ร์ น slotxo168 918kiss คือ 918kiss วอ ล เลท slotxo หน้า เว็บ slotxo สล็อต ฝาก 10 บาท รับ 100 โจ๊ก เกอร์ เครดิต ฟรี winner55 เครดิต ฟรี ไม่ ต้อง ฝาก slot555 joker megaways demo ฝาก 5 บาท ฟรี 99 บาท p168 slot 8richd เครดิต ฟรี scr888th v5 slot เครดิต ฟรี 50 slotxo xs fifa555 sport โปร โม ชั่ น joker betway slot sbobet ฟรี เครดิต ล่าสุด เล่น ไพ่ โป ก เกอร์ ออนไลน์ slotxo88v8 joker ฝาก ไม่มี ขั้น ต่ํา โจ๊ก เกอร์ ฟรี เครดิต live22 ฝาก ไม่มี ขั้น ต่ํา slot joker โปร โม ชั่ น slot 777 free apk slotxo slot48 slot joker789 ฝาก 10 รับ 100 wallet คา สิ โน ป๊อก เด้ง slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ไฮโล sicbo เกม slot slot ฝาก 15 รับ 100 slot xo168 2in2 slot slotxo joker123 สล็อต xo 99 เล่น ฟรี ถอน ได้ สล็อต ออนไลน์ xo สมัคร เครดิต ฟรี slotjoker888 slotxo 24 gclub เครดิต ฟรี เล่น แบ ล็ ค แจ็ ค ออนไลน์ samuraixo sg game เครดิต ฟรี slot48 la slot slot4u xo slotxo ฝาก 5 บาท ฟรี 99 บาท วอ เลท sagame168th เครดิต ฟรี slot 1668 pay96 slot สล็อต xo เครดิต ฟรี ไม่ ต้อง ฝาก ถอนเงิน ได้ joker xo th slotxo ฝาก 10 บาท รับ 100 ล่าสุด ถอน เงิน slotxo เครดิต ฟรี 918kiss 918kiss ฟรี เครดิต slot playlive88 slotxo ฝาก true wallet ufa24h register fifa55 คา สิ โน slot live22 ฝาก 10 รับ 100 slot joker69 168slotxo 2 joker888 เครดิต ฟรี คา สิ โน ไพ่ ดั ม มี่ bonus slotxo mafia ฟรี เครดิต ไม่ ต้อง ฝาก เกม 168slotxo lucky777 เครดิต ฟรี mega win slot xo slot 888 เครดิต ฟรี ใช้ บัตร ประชาชน 918kiss ถอน ไม่มี ขั้น ต่ํา rg888 slot roma slotxo ึึ 77up slotxo ฟรี เครดิต ไม่ ต้อง ฝาก 2019 เครดิต ฟรี ฝาก 20 slotxo ฝาก 10 918 ฝาก ถอน ออ โต้ slot vip xo 10 รับ 100 918kiss 168 https slotxo vip mega888 download 2019 slotxo live22 mafia66 เครดิต ฟรี slotxo ฝาก 10 รับ 100 ล่าสุด siamslotxo 918kiss แจก อั่ ง เปา slotxo988 918kiss ฟรี 200 เล่น slotxo หน้า เว็บ live22 ฝาก ถอน ไม่มี ขั้น ต่ํา 35 joker slot เครดิต ฟรี ไม่มี เงื่อนไข 2020 เว็บ fifa555 slotxo lucky god 2 ยิง ปลา ไม่มี ขั้น ต่ำ 918kissstar 55 slot เครดิต ฟรี ใช้ บัตร ประชาชน slot joker 1234 918kiss แจก เครดิต ฟรี 168slotxo auto slotxo 1234 ฟรี เครดิต 100 ไม่ ต้อง ฝาก 2563 โบนัส เงิน ฝาก auto slot 999 918kiss ใหม่ slotxo 888 winner55 ฟรี เครดิต b2y เครดิต ฟรี 2020 สล็อต xo แจก เครดิต ฟรี ไม่ ต้อง ฝาก slot bet betway เครดิต ฟรี 1234 live22 slot 35 grand918kiss slot joker 100 คิ ส 918 สล็อต xo 236 โปร โม ชั่ น ยิง ปลา ฝาก วอ เลต ไม่มี ขั้น ต่ํา มังกร เสือ คา สิ โน ออนไลน์ https www slot12 com member slotxo 918kissauto alert 12ww เครดิต ฟรี slot joker xo สมัคร สมาชิก vegus168 fm99bet เครดิต ฟรี สล็อต xo311 gclub slot jackpot pgslot1234 เครดิต ฟรี 999 เกม แบ ล็ ค แจ็ ค slotxo 11 slot jitu mm88bet com deposit the moon 918kiss ไฮโล คลาสสิค slotxo ฝาก 10 vikings slot 918kiss เวอร์ชั่น เก่า slotxo 9 slot ฝาก 50 ฟรี 50 slot ฝาก wallet fifa55crown สมัคร เครดิต ฟรี 100 918kiss allbet ไฮโล ได้ เงิน จริง บ่อน ไฮโล ออนไลน์ เว็บ 918kiss slotv9 live22 pgslot88 live22 โปร โม ชั่ น เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ slot4u xo slot4 fifa55 hot 918kiss แจก เครดิต ฟรี ไม่ ต้อง ฝาก เครดิต ฟรี mafia 2020 joker โปร โม ชั่ น live22 ฝาก ไม่มี ขั้น ต่ำ 918kiss ฟรี 1000 b2y เครดิต ฟรี ไม่ ต้อง แชร์ เครดิต ฟรี slotxo lucky god2 30 ฟรี เกม payslot joker slot 888 918kiss เครดิต ฟรี 3000 918kiss monkey 918kiss slots xo allbet http slotxo 918kissworld vip slotxo คา สิ โน ออนไลน์ สุด ฮิต fifa55kick slot 789 vip spin slot cq9 slots epic slot ฝาก ผ่าน วอ ล เลท ไม่มี ขั้น ต่ำ slot ฝาก ถอน ไม่มี ขั้น ต่ํา joker true wallet ไม่มี ขั้น ต่ำ โจ ก เกอร์ 888 เว็บ slotxo เกม สล็อต roma 186 slotxo slotxo1 slot auto alert
                  fun88com| สล็อต playstar| slot 918kiss auto| สมัคร เค ดิ ต ฟรี ไม่ ต้อง ฝาก| สมัคร fan88joker123 ฟรี เครดิต ไม่ ต้อง ฝาก| sbobet777 มือ ถือ| ufabet สล็อต| 918kiss เครดิต ฟรี 500918kiss เครดิต ฟรี 100 ไม่ ต้อง ฝาก 2020| 918kiss ดาวน์โหลด| สมาชิกใหม่ ฝากครั้งแรก รับโบนัส 150%| รู น สาย แท๊ ง ค์| fun88asia1| ส ปิ น ฟรี coin master ฟรี ios| รับ ฟรี ส ปิ น coin master| โหลด mega888| gclub promotion| ้ happyluke| slotxo89| โบนัส ฟรี เค ดิ ต| เข้า sbobet มือ ถือ ไม่ ได้| สูตร เพิ่ม ส ปิ น coin master| จี คลับ ผ่าน เว็บ| เกม โป ก เก อ| เจษฎา เบ ท vip| lsm99| joker เครดิต ฟรี 2019| โบนัส เว็บ พนัน ออนไลน์| เครดิตฟรีแค่สมัครล่าสุด| รอยัล คา สิ โน ออนไลน์| qq808 casino| เอา ส ปิ น ฟรี coin master ios| roma casino| สมาชิก ใหม่ ลง ทะเบียน เพื่อ รับ โบนัส แรก เข้า| รับ ส ปิ้ น coin master| เจษฎา แทง หวย| casino evolution gaming| ส็ ลอด| fun88 ios| สล็อต แจก ฟรี| ทาง เข้า 24sbo| แจก ส ปิ น coin| 7msbobet| สล็อต แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2020| casino riviera las vegas| campobet casino| รับ ส ปิ น ฟรี coin master ฟรี| mg slot168| เข้า lsm99| ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด| coin master รับ ส ปิ น ฟรี| 918kiss สมัคร auto| lsm99bet| ลิ้ ง ส โบ มือ ถือ| join slot| ส ปิ น coin master ฟรี| ลิ้ ง เข้า ส โบ| maxcasino| ลูกเต๋า กระดาษ| lsm99online| gclub ios| คา สิ โน โร เยล| สล็อต ขั้น ต่ำ 1 บาท| เกม ไฮโล เขย่า| เข้า ไม่ ได้ sbobet| pssuy888| ibc9 casino jackpot|