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
                         
                        แทง บอล วอ เลท โหลด สล็อต ออนไลน์ ี ufafever ufabet เว็บ บอล ออนไลน์ slotxo 2 ufa911 mm88fair com หวย ufabet ทาง เข้า สล็อต ufa168 มือ ถือ บอล ออนไลน์ 77up sa gaming99 six4bet สต ร บา คา ร่า ฟรี เอเย่นต์ ยู ฟ่า download slotxo ยิง ปลา แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2019 สมัคร งาน ufabet แทง บอล แทง บอล บัตร ท รู รับ เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน แทง บอล 99 ufabet 999999 jdb289 เครดิต ฟรี slot เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน 2020 ยู ฟ่า เบ ท 007 slotxo899 ดาวน์โหลด sa gaming hacker บา คา ร่า s บา คา ร่า ล่าสุด ฟรี เครดิต แทง บอล ฟรี เครดิต ถอน ได้ 2019 xo slot download ufabet711 sa เกม ด อ ท คอม ดาวน์โหลด สล็อต xo 888 แจก เครดิต ฟรี จริง ฝาก 50 ฟรี 100 slotxo ๊ ufa168 slot house เครดิต ฟรี ทาง เข้า ยู ฟ่า 191 ufabet ออ โต้ www fifa555 ดาว โหลด เกม ส ล๊ อ ต แจก ฟรี ไม่ ต้อง ฝาก ก่อน แทง บอล lsm99 slot ฝาก 5 บาท ได้ 100 ufabet แม่ slotxo 56 แทง บอล แบบ 1x2 ufa356 ดี ไหม www ยู ฟ่า เบ ท slot เครดิต ฟรี ไม่ ต้อง ฝาก 2020 เกม บา คา ร่า คือ โปร โม ชั่ น บอล ออนไลน์ slotxo อันดับ 1 รับ เครดิต ฟรี ทันที 918kiss แจก เครดิต ฟรี 2020 แทง บอล sbobet888 เปิด ยู ส ฟรี เครดิต ufabet slots ฟรี เครดิต 2019 เว็บ บอล ufa fifa55sup xo123 เครดิต ฟรี ufabet 3d www ยู ฟ่า เบ ทด อ ท คอม บา คา ร่า ใน โทรศัพท์ slot แจก เครดิต ฟรี 300 fifa55 fifa555 ดาวน์โหลด slotxobkk ี ufa678 vegus168 login live22 เครดิต ฟรี 100 vegus168sure sa gaming 168 บา คา ร่า วัว วัว sa ดาวน์โหลด slot007 แจก เครดิต ฟรี สมาชิก เก่า เครดิต ฟรี ได้ จริงๆ ufabet27 ทาง เข้า slotxoz รับ สมัคร เอเย่นต์ ufabet ufabet super sport ดาวน์โหลด slotxo เวอร์ชั่น ล่าสุด 77uponline ufabet678 เล่น บอล แบบ นัก ลงทุน เว็บไซต์ แท่ง บอล 123bet เครดิต ฟรี บา คา ร่า ยิง ปลา vegus168 memberbet net sath88 slot slot ฟรี โบนัส ufabet12 ufa6556 เล่น บอล ทั้ง สอง ฝั่ง ufabet369vip ufabet xxx สล็อต xo ฝาก 1 บาท ทาง xo sexybaccarat66 เครดิต ฟรี ไม่ สมัคร เอ เย่ น ufa บา คา ร่า ปลอม รับ เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ufabet live ufabet ufabet168v2 joker999 เครดิต ฟรี ไฮโล ufabet เซ๊ ก ซี่ บา คา ร่า fifa55 members สมัคร เล่น บอล ออนไลน์ สมัคร slot555 เครดิต ฟรี fhm99 มังกร บา คา ร่า ดาว โหลด เกม slot joker ufabet agreement 8 โบนัส เครดิต ฟรี เว็บ พนัน ยู ฟ่า slotxo apk download sa gaming เครดิต ฟรี ไม่ ต้อง ฝาก sa game lobby ไลน์ แทง บอล slotxo เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน ufabet เว็บ ตรง slot ฝาก 100 รับ 100 ufabet 888888 mafia111 เครดิต ฟรี ทาง เข้า xo slot ราคา บอล fifa89 บา คา ร่า 2019 ufa147 sport ดาวน์โหลด slotxobkk slot ฝาก ยู ฟ่า เบ ท คาเฟ่ เข้า เล่น เกม xo slotxo ios download sa gaming เล่น ฟรี ufabet 1168 slotxo โหลด ถอนเงิน ufabet168 mobile ufabet ufabet agent ทาง เข้า เว็บ ยู ฟ่า 369 สมาชิก ใหม่ ฟรี เครดิต 50 โปร ufa pg slot สมัคร sa คา สิ โน ออนไลน์ ดาวน์โหลด joker xo เล่น บา คา ร่า sa เข้า เว็บ ยู ฟ่า สล็อต โปร sbobet24hr โหลด เกม สล็อต slotxo live22 ทาง เข้า เล่น https slotauto888 com slotxo เครดิต ฟรี 50 แทง บอล รอง เปิด ยูสเซอร์ ฟรี เครดิต บา คา ร่า วัว วัว sa slot ฝาก 1 บาท ฟรี 99 บาท 2020 ล่าสุด betufa default smart ufa888info ufabet 9889 ufabet 800 joker689 เครดิต ฟรี slot ฝาก 1 บาท ฟรี 99 บาท 2020 ล่าสุด mafia เครดิต ฟรี ล่าสุด โปร โม ชั่ น เว็บ พนัน บอล wwwufa9999 ไลน์ ufa ยิง ปลา เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ufabet auto 123fazsv3 mt88casino โหลด เกม slotxoth บา คา ร่า xo ufabet99999 ufa8texas ฝาก 10 รับ 100 ไม่ ต้อง ทํา เทิ ร์ น sahacker888 slot1688 ฟรี เครดิต บา คา ร่า sa gaming 66 ดาวน์โหลด xo สล็อต ufa877 คืน ยอด เสีย ufabet88888vip fifa55k บอล fifa55 เว็บ ufa ทาง เข้า เล่น ufabet บา คา ร่า sa gaming 77 ดาวน์โหลด 168slotxo www ufabet cc slotxo สมัคร ใหม่ ติด ตั้ง xo เว ป ยู ฟ้า แจก เครดิต ฟรี จริง kg88 บา คา ร่า รับ เครดิต ฟรี ไม่ ต้อง ฝาก ufabet sa gaming sa66 คา สิ โน เครดิต ฟรี วัน นี้ ufabet cash ไม่ ต้อง ฝาก เครดิต ฟรี sun34444 slot ฝาก 5 บาท ได้ 100 โปร โม ชั่ น sa gaming ufabet991 sath88 คา สิ โน เว็บ พนัน บอล ออนไลน์ ufabet1688 line เครดิต ฟรี ล่าสุด 2019 แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2020 slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2019 ไม่ ต้อง แชร์ slot ฝาก 5 บาท ได้ 100 ufa365 pantip เล่น บา คา ร่า ที่ ufabet เครดิต ฟรี 150 ไม่ ต้อง ฝาก ก่อน ufabet1246 โปร โม ชั่ น เครดิต ฟรี สมาชิก ใหม่ ฟรี เครดิต ถอน ได้ 2019 เครดิต ฟรี ไม่ ต้อง ฝาก slot ligaz24th แทง บอล ฟรี เครดิต ไม่ ต้อง ฝาก แทง ต่ำ ดาวน์โหลด สล็อต xo 888 slotxo app ufabet5000 ถอนเงิน ufabet สมัคร สมาชิก เกม สล็อต ยู ฟ่า เบ ท 21 sa gaming คา สิ โน ออนไลน์ slotxo ฝาก 1 บาท ฟรี 50 บาท ล่าสุด pg slot demo เบอร์ โทร ufa365 mafia88 เครดิต ฟรี 50 มา คา ร่า 168 55fifabet fifa55gol เว็บ บอล ราคา ดี mvegus1682 ทาง เข้า เกม xo สมัคร ufabet777 ufabet 5g เครดิต ฟรี 200 ไม่ ต้อง ฝาก ก่อน ufabet36 ดาวน์โหลด xo โปร โม ชั่ น ufabet โปร โม ชั่ น copa69 ยู ฟ่า เบ ท 356 ufabet เว็บ slot ฟรี โบนัส คา สิ โน ออนไลน์ sa gaming slotxo เว็บ ใหม่ ไลน์ vip2541 ufabet997 pussy888 ฟรี เครดิต โปร โม ชั่ น ufa slot1688 ฟรี เครดิต เว็บ bet911 slot เงิน ฟรี ufabet19 heng555 ฟรี เครดิต slotxo ฝาก 1 บาท ได้ 100 วอ เลท bet236 บา คา ร่า ได้ เครดิต ฟรี ufabet id line ufa988bet ufabet365 ทาง เข้า เปิด ยูสเซอร์ ฟรี ไม่ ต้อง ฝาก ufabet789 ติด ตั้ง เกม สล็อต fifa55u ufa69 ดี ไหม เข้า ระบบ sa gaming บา คา ร่า 188bet ufabet pantip ufa345 24hr ufabet88 เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ล่าสุด ไม่ ต้อง แชร์ slot เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน 2020 www123fazcom ทาง เข้า ufabet88888 sa gaming 50000 168 vegus168 แจก ฟรี เครดิต 2020 แทง บอล ผ่าน ไลน์ รับ เครดิต ฟรี ง่ายๆ ufawb998 ufa มือ ถือ fifa6886 เครดิต ฟรี ถอน ได้ ไม่ ต้อง ฝาก best88 เครดิต ฟรี ufabet บริษัท แม่ download slotxo apk ดาวน์โหลด slotxo ล่าสุด nova88 แทง บอล ออนไลน์ ฟรี เครดิต เข้า ufabet168 สมัคร งาน ufabet ufa678 pantip ufa หลัก mm88wim ไลน์ vip2541 ดาว โหลด เกม xo slot ufa991 ufabet แทง บอล คู่ ไหน ดี slotxo app บา คา ร่า sa 66 login ufa slotxo โหลด เครดิต ฟรี ไม่ ฝาก ไม่ แชร์ ล่าสุด slotxo ฝาก 50 บา คา ร่า วัว ทาง เข้า ฟีฟ่า 555 แจก เครดิต ฟรี 2000 ไม่ ต้อง ฝาก 2019 เครดิต ฟรี ถอน ได้ เลย ี ufabet88888 เกม มัก คา ร่า ufa agent ทาง เข้า แจก เครดิต ฟรี 100 บาท สำหรับ สมาชิก ใหม่ scr888th แจก เครดิต ฟรี ถอน ได้ ไม่ ต้อง ฝาก ufabet เข้า ไม่ ได้ แทง บอล ขั้น ต่ำ 50 บาท ex88 เครดิต ฟรี ufabet45 ufabet ไลน์ เบ ท 88 ufa189 ลาว slotxo pc download เครดิต ฟรี 777 ถอนเงิน ufabet slot สมัคร 10 บาท slot เครดิต ฟรี ล่าสุด บา คา ร่า อัตโนมัติ ทาง slotxo รับ เครดิต ฟรี สมาชิก ใหม่ แทง บอล ได้ เงิน จริง ufabet69 ufabet fb fifa 7777 ดาวน์โหลด joker xo pay69 slot เครดิต ฟรี ufabet227 แจก เงิน ฟรี 2019 ทาง เข้า agent ufabet ดาว โหลด เกม slotxo ufabethero บอล ออนไลน์ 789 atm slot เครดิต ฟรี บา คา ร่า วัน ละ 500 slot online ฟรี เครดิต 2020 ทาง เข้า เล่น xo slot ตํา รา บา คา ร่า ดาว โหลด เกม slot joker ufabet slots ดาวน์โหลด slotxo88 ี ufabet88888 slotxo โปร ดีๆ สล็อต ออนไลน์ ios slotxo เครดิต ฟรี ไม่ ต้อง ฝาก 2020 ufabet 789 fifa55 members เซ๊ ก ซี่ เกม fifa55u เครดิต ฟรี เข้า ยู ฟ่า เบ ท slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2018 เบอร์ โทร ufa365 ufabet 21 ufabet company ufa7777 สมัคร เอ เย่ น ufa ทาง เข้า ufabet88 mmm88bet เกม gclub ดาว โหลด เกม slotxo มา คา ร่า 168 สมาชิก ใหม่ เครดิต ฟรี แจก เครดิต ฟรี 2020 ไม่ ต้อง ฝาก ก่อน ไลน์ ufa365 เว็บ บอล ufabet ดาวน์โหลด สล็อต 22 ufabet demo sa gaming login แทง บอล เดี่ยว ค่า บ่า ร่า slotxo ฝาก 9 บาท รับ 100 เครดิต ฟรี 2020 ไม่ ต้อง ฝาก ก่อน แทง บอล ฟรี เครดิต ufabet แจก เครดิต ฟรี 2019 แท่ง บอล ออนไลน์ รับ เครดิต ฟรี joker www ufa777 con แจก ฟรี ไม่ ต้อง ฝาก ยู ฟ่า เบ ท 1168 mafia333 เครดิต ฟรี เครดิต บอล ฟรี ไม่ ต้อง ฝาก slot ฝาก 1 บาท ฟรี 99 บาท 2020 ล่าสุด ฟรี โบนัส ไม่ ต้อง ฝาก free เครดิต ฟรี sa gaming 77 แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2018 ทาง เข้า xo slot vegus111 ufabet เครดิต ฟรี 100 สมัคร slotxo ฝาก 10 รับ 100 เปิด ยูสเซอร์ ไม่มี ขั้น ต่ำ ufa991 โปร ฟรี เครดิต สล็อต xo ออนไลน์ ufabet88888vip ฟรี เครดิต ถอน ได้ 2019 web fifa55 ี ufa9bet ufabet68 ติด ตั้ง เกม สล็อต slotxo ทาง เข้า เว ป ยู ฟ้า ufabet1688 ดี ไหม ดาว โหลด ส ล็ ต xo ทาง เข้า slotxovip ufa356 pantip สมัคร แท่ง บอล แจก เครดิต ฟรี สมาชิก ใหม่ บา คา ร่า sa 66 ufabet828 mega888 ฟรี เครดิต line vip2541 โปร สล็อต joker ฝาก 10 รับ 100 ไม่ ต้อง ทํา เทิ ร์ น slot007 ฟรี เครดิต แจก โบนัส 100 slot เครดิต ฟรี ไม่ ต้อง ฝาก 2020 slotxo pc download โหลด xo ios แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 ล่าสุด บอ ท บา คา ร่า sa slot24th slotxo sa gaming 86 ufa24h ทาง เข้า ufabet888 สมาชิก ใหม่ แจก ฟรี mm8bet pantip sbothai ทาง เข้า ufabet168vip sa gaming 99 ufa คือ บอ ท บา คา ร่า ฟรี แทง บอล ไม่ ต้อง ฝาก บีบ บา คา ร่า sa gamingth ufabet demo บา คา ร่า วัว วัว sa ี ufabet007 โปร สล็อต joker ยู ฟ่า ออนไลน์ 168 ดาวน์โหลด slotxo ลง คอม slotxo ฝาก 1 บาท ฟรี 99 บาท ล่าสุด sa gaming ฝาก 50 รับ 150 แทง บอล ฟรี ไม่ ต้อง ฝาก ufa1688 ดี ไหม sa gaming 168 vip เข้า สู่ ระบบ pg slot สมัคร web แทง บอล สมัคร เอ เย่ น ufa สล็อต xo 24 hr แจก โบนัส ฟรี ทาง เข้า ยู ฟ่า 365 บา คา ร่า holiday palace fifa55 เว็บ ตรง mega888 ฟรี เครดิต ไม่ ต้อง ฝาก 2020 ufabet cn ี ufa345 sa gaming ปิด fifa55gol แจก เครดิต ฟรี ใหม่ ล่าสุด fifa55pro slot รับ เครดิต ฟรี เครดิต ฟรี ได้ จริงๆ ติด ตั้ง slotxo แอ น ด รอย ด์ ufabet อัน ไหน ดี แจก ยูสเซอร์ พร้อม เครดิต ฟรี 2019 ไม่ ต้อง ฝาก โบนัส ฟรี เครดิต slotxo เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ufabet มือ ถือ ufabet agent ทาง เข้า วัน นี้ แทง บอล คู่ ไหน ดี แทง บอล 1x2 ยู ฟ่า 191 ฝาก ถอน เครดิต ฟรี ไม่ ต้อง ไล่ ค์ ไม่ ต้อง แชร์ 2020 slot แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ 2020 แทง บอล vip slotxo ios โหลด ไม่ ได้ 89fifa บา คา ร่า แทง บ pgslot game คา สิ โน sa gaming บา ค่า ร่า ฟรี เครดิต ไม่ ต้อง ฝาก ufabet 3333 แท่ง บอล ออนไลน์ pok9 เครดิต ฟรี ufabet 21 sa แกม มิ ง ยูสเซอร์ ฟรี slotxo เล่น ฟรี 100 slot ฝาก 1 บาท รับ 99 วอ เลท ลิ้ ง โหลด slotxo slotxo ฝาก 25 รับ 100 แจก เครดิต ฟรี 30 sbobet888888 เว ป บอล ดี ที่สุด sa เกม 77 sbobet222 เข้า เล่น เกม xo xo เครดิต ฟรี vegus168 memberbet net รับ เครดิต ฟรี ถอน ได้ ufabet sa gaming เว บ เครดิต ฟรี ไม่ ต้อง แชร์ ufabet168 vip mt88casino http www ufabet download slotxo ทาง เข้า ufabet999 แอ ป slotxo บา คา ร่า เปิด กี่ โมง เข้า เว็บ ufabet slot ไม่ ต้อง ฝาก บา คา ร่า sa เกม ทาง เข้า ufa007 slotxo joker เครดิต ฟรี ทาง เข้า ufa88 tbsbet line ufabet3 mafia เครดิต ฟรี ใหม่ ล่าสุด ufabet 8 แทง บอล รวย ไล สด บา คา ร่า สล็อต xo ดาวน์โหลด slotxo ufabet 77 sa gaming เล่น ฟรี สล็อต xo 24 hr fifa55fifa55 ufabet บา คา ร่า xo123 เครดิต ฟรี heng666 เครดิต ฟรี fifa55 fifa555 ufa888 pantip โหลด แอ พ สล็อต xo แทง บอล 100 sa gaming 1688 เข้า สู่ ระบบ เครดิต ฟรี วัน นี้ แอ ป บอล ออนไลน์ fifa55u ไลน์ sagame88com gaming vip ฟรี เครดิต ไม่ ต้อง ฝาก ก่อน บา คา ร่า โจ๊ก เกอร์ บา คา ร่า sa350 live22 ฝาก 100 รับ 100 เครดิต ฟรี เดือน นี้ ufabet 089 agent ufabet1688 ยู ฟ่า เบ ท 999 zz8 เครดิต ฟรี ufabet บริษัท แม่ แทง บอล ทบ แทง บอล ออนไลน์ i99win mm88vip พัน ทิป ufabet987 ทาง เข้า เอเย่นต์ ยู ฟ่า เบ ท ดาวน์โหลด slotxo pc ไฮโล ufabet ยู ฟ่ ส เบ ท fifa55 เครดิต ฟรี สมาชิก เก่า ยู ฟ่า เบ ท 8 sa gaming v2 ufabet บา คา ร่า ออนไลน์ ดาว โหลด เกม xo เครดิต ไม่ ต้อง แชร์ ฝาก ufa168 sbobet888888888 ถอนเงิน ufa th slotxo ฝาก 29 รับ 100 slotxo ฝาก แรก 50 แทง บอล ออนไลน์ i99win joker689 เครดิต ฟรี เช็ ก ชี่ บา คา ร่า 1688 ี ufabet369 ufa ทาง เข้า slotxo joker โปร 100 กา บอล ออนไลน์ ufabet agent ทาง เข้า ufabet เบอร์ โทร ufabet 24 ทาง เข้า ufa95 fifa55t ดาว โหลด เกม live22 slotxo ดาวน์โหลด ลงมือ ถือ http www slotxo com m www ufax10 ufa88 คา สิ โน 123ufabet ufa678 สมัคร ufabet28 สมัคร สมาชิก slotxo สมาชิก เครดิต ฟรี slot ฝาก 1 บาท ฟรี 99 บาท 2020 ล่าสุด ฟรี เครดิต ไม่ ต้อง ฝาก ก่อน sa casino games ยิง ปลา ฟรี 150 ufabet728 บา คา ร่า ฟรี 2020 ufabet v1 slotgame66 เครดิต ฟรี ยู ฟ่า เว็บ slot online ฟรี เครดิต ไม่ ต้อง ฝาก 2019 บา คา ร่า c03 ดาวน์โหลด slotxobkk เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 ufabet ฝาก slotxo 1 ufabet เครดิต ฟรี เครดิต ฟรี sa gaming จุดจบ บา คา ร่า เว็บไซต์ ยู ฟ่า betdog289 เครดิต ฟรี สล็อต xo download mm88icom ufabet8k สุต บา คารา ufabet ฝาก 100 ฟรี 100 fifa55 sport ufa888 เว็บไซต์ บอล mafia slot เครดิต ฟรี 2020 สมาชิก ใหม่ แจก เครดิต ฟรี เปิด ยู ส ฟรี เครดิต แอ พ บา คา ร่า pantip gaming66 ufabet1688 main ufa1168 ufa356 ที่ ดี ที่สุด ufabet default 8 smart ufa9999s slot ออนไลน์ ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ mm88fair com เครดิต ฟรี ยู ฟ่า ufa345 24hr ฝาก 50 รับ 150 ไม่ ต้อง ทํา เทิ ร์ น ล่าสุด ป๊อก เด้ง เงิน จริง ฟรี เครดิต แทง บอล วัน นี้ เล่น พนัน บอล ออนไลน์ bet ufabet วิธี ติด ตั้ง slotxo ufabet ใหม่ ยู ฟ่า เบ แอ พ slot ได้ เงิน จริง club388 เครดิต ฟรี แทง บอล ขั้น ต่ำ 50 บาท slotxo ฝาก 50 รับ 50 บอ ท บา คา ร่า ฟรี ufabet 100 สล็อต xo 24 hr www ยู ฟ่า เบ ท ufabet360 sa gaming 5 วิ แอ พ สล็อต ios slotxo apk download vegus168 ฝาก เงิน fifa55m เล่น บา คา ร่า sa slot ฝาก 100 รับ 100 โปร โม ชั่ น แจก เครดิต ฟรี แจก เครดิต ฟรี 2019 ไม่ ต้อง แชร์ mafia เครดิต ฟรี ใหม่ ล่าสุด slot เครดิต ฟรี ไม่ ต้อง ฝาก 2019 xo slot ฟรี เครดิต ไม่ ต้อง ฝาก รับ เครดิต ฟรี slotxo app ดาวน์โหลด xo สล็อต mafia slot เครดิต ฟรี 2020 ไอ ดี ไลน์ ufabet slotxo เครดิต ฟรี 2020 ufabet uefa sa gaming บา คา ร่า slotxo สมัคร ufacasino168 download slotxo pc ufabet999 slot999 ฟรี เครดิต ufa9bet รับ เครดิต ฟรี 300 ไม่ ต้อง ฝาก rt slot เครดิต ฟรี แทง บอล vip line vip2541 แทง บอล m8bet แทง บอล วัน นี้ คู่ ไหน ดี ufa800 ดี ไหม pantip ufabet default 8 smart เล่น slotxo ผ่าน หน้า เว็บ ufa88 ทาง เข้า slotxo 09 slot ฝาก 1 บาท ฟรี 99 บาท 2020 ล่าสุด sun34444 ทาง เข้า ufabet45 sa gaming 1688 เข้า สู่ ระบบ เซ๊ ก ซี่ บา ค่า ร่า เกมส์ 66 ฟรี เครดิต ไม่ ต้อง ฝาก ก่อน ufabet88888vip sa gaming 86 เครดิต ฟรี slotxo joker ufabet 5g fifa55 เครดิต ฟรี สมาชิก เก่า ว้า ว บา คา ร่า ufa369 ถอนเงิน sagame1688 demo บา คา ร่า ยู ฟ่า 168 fifa55 only ฝาก 1 รับ 100 918kiss แจก โบนัส ฟรี แทง บอล 100 แจก ฟรี ไม่ ต้อง ฝาก สมัคร เล่น เกม สล็อต สล็อต xo ฟรี เครดิต ufabet kik ufabet v9 สมัคร ufa365 เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 แทง หวย เครดิต ฟรี แจก เครดิต 2020 www123fazcom ทาง เข้า ufa95 six4bet แทง บอล ให้ ได้ เงิน fifa555king เครดิต ฟรี ไม่ ต้อง ไล่ ค์ ไม่ ต้อง แชร์ 2020 แจก ฟรี เครดิต slot สมาชิก ใหม่ รับ เครดิต ฟรี ufalion 168 ยู ฟ้า 007 ufa55 เครดิต ฟรี สล็อต xo download บา คา ร่า วัว วัว fifa55hb 168 slotxo download ยิง ปลา ได้ เงิน ฟรี เครดิต ฟรี ใหม่ ล่าสุด ไม่ ต้อง แชร์ ufabet ขั้น ต่ำ 100 ufabet ฝาก วอ เลท slotxoth download โหลด แอ พ slotxo ทาง เข้า เกม สล็อต xo บา คา ร่า s ติด ตั้ง สล็อต xo 1ufabet เครดิต ฟรี ยู ฟ่า เบ แทง บอล ออนไลน์ i99win ufabet แม่ ufabet12 live22 ฟรี เครดิต ไม่ ต้อง ฝาก 2020 fifa55sup โหลด เกม slotxoth sa game 25 เครดิต ฟรี ล่าสุด 2019 ufabet2_888 ดาวน์โหลด slotxo สํา ห รับ android ฝาก 50 ฟรี 100 slotxo 918kiss ฟรี เครดิต 1000 บาท 2020 mega888 ฟรี เครดิต ไม่ ต้อง ฝาก 2019 allslotking เครดิต ฟรี fifa 855bet เว็บ บอล ยู ฟ่า สมาชิก ใหม่ ฟรี เครดิต ไม่ ต้อง ฝาก 2020 slot รับ เครดิต ฟรี ไม่ ต้อง ฝาก sa gaming 66 77up2u ี ufabet6666 ไลน์ ligaz888 สมัคร ufa9999 ฟรี เครดิต ไม่ ต้อง ฝาก 2019 ufabet158 prompay88 เครดิต ฟรี mega888 ฟรี เครดิต ไม่ ต้อง ฝาก 2019 slotxo ดาวน์โหลด ufabet ลิ้ ง ufa991 sbobetclub168 รับ เครดิต ฟรี joker คา สิ โน ufabet slot house เครดิต ฟรี betufa public chgpwd 2 slotxo ใหม่ โหลด xo ios แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2562 ufabet99999 เซ ก ชี่ บา คา ร่า เว็บ ยู ฟ่า 369 ฝาก 1 บาท รับ โบนัส 99 ล่าสุด บา คา ร่า 918 slotxo ฝาก 9 บาท รับ 100 วอ เลท เข้า เล่น ufa ufa777com ติด ตั้ง เกม สล็อต เข้า ufa365 slotxo ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 เว็บ บอล ufabet sa gaming เครดิต ฟรี ยิง ปลา รับ เครดิต ฟรี บา ค่า ร่า เครดิต ฟรี โปร โม ชั่ น แจก เครดิต ฟรี ทาง เข้า เล่น ยู ฟ่า เบ ท เครดิต ฟรี slot fifa55fifa55 เข้า sa gaming ไม่ ได้ ทาง เข้า ufabet 7777 slot เครดิต ฟรี 2019 สมาชิก ใหม่ ฟรี เครดิต 300 ufabet 72 ดี ไหม gclub985 bet ufabet ufa888 club 918kiss แจก ฟรี เครดิต slot rb88 slot เครดิต ฟรี ไม่ ต้อง ฝาก 2019 ufabet777 ฝาก 50 รับ 200 ไม่ ต้อง ทํา เทิ ร์ น ufabet แจก เครดิต ฟรี 2020 ยิง ปลา เครดิต ฟรี 150 รับ เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 โปร เครดิต ฟรี slotxo ดาวน์โหลด แจก ฟรี 100 ไม่ ต้อง ฝาก ufabet winner บา คา ร่า จำลอง slotxo ฝาก 1 บาท ได้ 100 วอ เลท ufabet887 ufabet 89 slotxo ios โหลด ไม่ ได้ agent ufabet ufabet111 เข้า เว็บ ยู ฟ่า 48 pg slot sa gaming v2 ยู ฟ่า เบ ท 99 ถอนเงิน ufa เว็บไซต์ ยู ฟ่า ทาง เข้า ufa678 บา คา ร่า ทุน ฟรี เข้า sa gaming ufabet slots isc123 โปร โม ชั่ น ทาง xo แทง บอล ไม่มี ขั้น ต่ำ เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 ล่าสุด ฝาก 1 บาท รับ โบนัส 99 ล่าสุด วัน นี้ แทง บอล คู่ ไหน ดี สู ค ร บา คารา บอล รวย วัน นี้ สล็อต xo โหลด ufabet ถอนเงิน ufabet2020 โหลด xo สล็อต xo โหลด ทาง เข้า ufabet888 บา คา ร่า เสีย ufabet แจก เครดิต โบนัส เครดิต ฟรี ไม่ ต้อง ฝาก ufa fun888 ไม่ ต้อง ฝาก รับ เครดิต ฟรี fifa แทง บอล ดาวน์โหลด joker xo รับ เครดิต ฟรี joker ทาง เข้า ufa800 ufabet888888 wwwufa7777com แทง บอล fifa55 มาเฟีย เครดิต ฟรี ล่าสุด ufabet thai88 แจก ฟรี เครดิต ทาง เข้า slotxo ฝาก ถอน sa บา คา ร่า vip ufa777 สมัคร xo slot download 918kiss ฟรี เครดิต 1000 บาท 2020 สมาชิก ใหม่ แจก เครดิต ฟรี เครดิต ฟรี ได้ จริง 2020 โบนัส เครดิต ฟรี ไม่ ต้อง ฝาก fifa55 click ufabet168 ทาง เข้า ลอง เล่น sa gaming ติดต่อ สล็อต xo ufa98s แจก เครดิต ฟรี cq9 slot ฟรี เครดิต เว็บ ufabet99 เครดิต ฟรี ไม่ ต้อง ฝาก ล่าสุด sa gaming 07 แทง ออนไลน์ 789 สมัคร เกม สล็อต winbetth888 ทาง เข้า ufa365 บา คา ร่า super six คือ เซ๊ ก ซี่ บา ไลน์ ufa lsm77 เครดิต ฟรี fifa55k ติดต่อ live22 แทง ฟรี ไม่ ต้อง ฝาก ufabet services แอ พ slotxo kingkongxo slotxo สมัคร ufabet เว็บ ตรง แอ ป slotxo ufabet 5000 ufa79g mafia88 เครดิต ฟรี ไม่ ต้อง ฝาก ป๊อก เด้ง แจก ฟรี 300 pok9 เครดิต ฟรี ufa2bet เครดิต บอล ฟรี สมัคร เล่น สล็อต ออนไลน์ สล็อต โปร mm8bet pantip ufa656 ทาง เข้า มือ ถือ ทาง เข้า เล่น xo slot แทง บอล lsm99 slot ไม่ ต้อง แชร์ ี ufa777 เครดิต ฟรี ค่าย sg fifa55t sa gaming 66 เข้า สู่ ระบบ ufa888 auto แจก โบนัส ฟรี ufabet แจก เครดิต ufabet188 ไม่ ต้อง ฝาก รับ เครดิต ฟรี ufabet2 ดาวน์โหลด xo บา คา ร่า โทรศัพท์ ไลน์ ufabet โปร โม ชั่ น แจก เครดิต ฟรี เครดิต ฟรี สมาชิก เก่า sa gaming vip เข้า สู่ ระบบ ufabet ใหม่ สล็อต xo ออนไลน์ ทาง เข้า ufa7777 รับ เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน แทง บอล แม่น ๆ ufabet agent ทาง เข้า สล็อต xo ฝาก 1 บาท ราคา บอล 1.8 เข้า เว็บ ยู ฟ่า เบ ท sa games 66 เว็บ แทง บอล ufabet slot เครดิต ฟรี 2019 ดาวน์โหลด slotxo 44 vegus168 live sa slot demo slotxo ใหม่ ล่าสุด ufabet แจก เครดิต ฟรี sa เกม vip รับ เครดิต ฟรี ถอน ได้ เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 ล่าสุด โปร สมาชิก ใหม่ ฝาก 10 รับ 100 สล็อต xo 24 hr ufabet ฝาก 50 รับ 100 บา คา ร่า win915 ทาง เข้า ufabet999 สล็อต xo ฝาก 1 บาท slot ได้ เงิน จริง เครดิต ไม่ ต้อง ฝาก ทาง เข้า เล่น xo ทาง เข้า ufa800 mm88vip sa casino ปิด ปรับปรุง login ufa โปร โม ชั่ น ufa slotxo ฝาก ครั้ง แรก 100 slotxo bonus 100 slot โบนัส ฟรี live22 โหลด vegus168 ฝาก เงิน บอล เดี่ยว เริ่ม ขั้น ต่ำ 1 บาท mm88bet pantip fifa55fifa55 ufabet1688 main ufa356 pantip โปร โม ชั่ น ufa mafia567 เครดิต ฟรี sa gaming vip สมาชิก ใหม่ แจก เครดิต ฟรี แทง บอล 20 บาท ufabet ฝาก ถอน เอง แทง บอล เครดิต ฟรี บา คา ร่า เช็ ก ชี ทาง เข้า ufa8888 ufabet369vip ufabetsup สมัคร ufabet888 slot free credit ไม่ ต้อง ฝาก 2020
                        ยูสเซอร์ ลอง เล่น 918kiss| เกม ยิง ปลา lsm99| เกม ยิง ปลา เจ้า สมุทร| roma slot 777| สล็อต โอน wallet| เกม ยิง ปลา xo| ยิง ปลา fishing war| สล็อต หมุน ฟรี 2020| บา คา ร่า ปอย เปต| line sbobet| เว็บ สล็อต เล่น ฟรี| โหลด เกม สล็อต 1688| ถอนเงิน ใน เกม สล็อต| เกม สล็อต ออนไลน์ 666| คา สิ โน ท รู วอ เลท| เกม สล็อต ค่าย ไหน ดี| สมัคร สล็อต jdb| 22 สล็อต| wm casino| club 777 casino| ebet casino| ลอง เล่น เกม ฟรี| dada99thai| เกม ยิง ปลา ได้ เงิน จริง เครดิต ฟรี| สล็อต ไม่ ต้อง โหลด| w88 ยิง ปลา| หมุน ฟรี สล็อต| เกม ยิง ปลา ยอด นิยม| epicwin slot| โหลด มาเฟีย 88| สล็อต ยืนยัน ตัว ต้น รับ เครดิต ฟรี| ค่าย สล็อต ใหม่| sbobet ไม่มี ขั้น ต่ํา| สล็อต โร ม่า| joker slot ทั้งหมด| joker เล่น ผ่าน เว็บ| joker slot 123 th| สล็อต 168| slot pg demo| เกม สล็อต ค่าย pg| เว็บ สล็อต มา ใหม่| สล็อต ฝาก 10 บาท ได้ 100| เกม สล็อต ฝาก ถอน ไม่มี ขั้น ต่ํา| sath88 สล็อต| mafia999 เกม พา รวย| เกมส์ ยิง ปลา เล่น แล้ว ได้ เงิน| ยิง ปลา พัน ทิป| สล็อต mb| allwin casino| ยิง ปลา ออนไลน์ ได้ เงิน จริง| betnet casino| joker123 ผ่าน เว็บ| เกม สล็อต 333| แอ พ สล็อต ยืนยัน ตัว ตน รับ เครดิต ฟรี| เว็บ ถอน ไว| ww777 casino| สล็อต ใหม่ ล่าสุด| ยิง ปลา 918| gtr casino| โปร ยิง ปลา| สล็อต จ่าย จริง| เล่น เกม ตก ปลา ได้ เงิน จริง| สล็อต 91| หมุน สล็อต ให้ ได้ เงิน| live22 เล่น หน้า เว็บ| สมัคร ใหม่ รับ เครดิต ฟรี ทันที|