• <form id="N6v9"><span id="N6v9"></span></form>
        <wbr id="N6v9"></wbr>
      1. <nav id="N6v9"><code id="N6v9"><meter id="N6v9"></meter></code></nav><em id="N6v9"><span id="N6v9"></span></em>
        <nav id="N6v9"></nav>

        <form id="N6v9"><legend id="N6v9"></legend></form>

        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
         
        gclub2go ทีเด็ด sbobet sbo wm casino bet CASINO สมัคร ส โบ เบ็ ต 888 gclub god 918kiss เกม ไหน แตก ง่าย สุด marathon casino เครดิตฟรี niki casino จี คลับ ฟรี casino touring รู น แทง ค์ เข้า เว็บ jetsadabet ไม่ ได้ ทาง เข้า sbobet168 gclub line mafia slot ล่าสุด 918kiss สมัคร auto ทาง เข้า ส โบ เบ็ด fun788 มือ ถือ สล็อต สมัคร ฟรี เครดิต 100 ฟรี ส ปิ น coin master bbb gclub happyluke info ทาง เข้า sbobetasia online ส โบ โมบาย สมัคร fin88 world gclub 24 casino online poker ออนไลน์ เงิน จริง ทาง เข้า sbobet agent 918kiss download ios 2020 sahara nights slot lsm99 เข้า ไม่ ได้ รอยัล คา สิ โน 88 ฝาก 10 บาท รับ 100 วอ เลท casino best ฟรี ส ปิ น coin master ฟรี รับ ส ปิ น coin master เครดิต ฟรี สมัคร รับ ทันที 918kiss 918kiss kiss918 vipเครดิต ฟรี เทิ ร์ น 1 เท่า 2020 เติม 100 ฟรี 300 หา ส ปิ้ น ฟรี coin master โบนัสฝากเงินครั้งแรก 108% สูงสุด 5,000 บาท slot1688com ไฮโล ออนไลน์ ไม่มี ขั้น ต่ำ คลับ จี 888 gclub ทาง เข้า ลิ้ ง dafabet gclub700 เว็บ หวย เจษฎา sbobet88899 ทาง เข้า จี 24 casino online ฝาก 19 รับ 100 ล่าสุด วิธี แทง หวย เจษฎา ทํา เทิ ร์ น บา คา ร่า ดาวน์โหลด mega888 918kiss hack unlimited sbobet เว็บ ตรง ส lsm99 ทาง เข้า lsm2558 jetsadabet รีวิว ทาง เข้า sbo365 pic5678 คอม fan88 2020 jetsada 888 casino sms deposit mafia ฝาก 1 บาท ล็ อ ต โต้ 1000 โค้ด เกม coin master ฟรี วัน นี้ เครดิต ฟรี 150 2020918kiss ฟรี เครดิต 1000 บาท lsm99 ฝาก ถอน หวย เว็บ เจษฎา dafabet fun88 ทาง เข้า sboibc888 แจก ส ปิ น ฟรี coin master ฟรี สล็อต ค่าย ไหน ดี pantip casino havana night casino royal online 6666 dafabet 888 ลิ้ ง sbobet web jetsadabet sbobet97 live casino house ฟรี 300 บาท ไม่ ต้อง ฝาก ก่อน ชนะ ถอน ได้ 819 kiss apk slot สมัคร รับ เครดิต ฟรี ทีเด็ด ส โบ เบ็ ต 888 ป๊อก เด้ง เครดิต ฟรี ไม่ ต้อง ฝาก login jetsadabet เกม ไพ่ โป ก เกอร์ ลิ้ ง ส ปิ น ฟรี coin master 2020 ฮ อ ลิ เดย์ พา เล ซ ปอย เปต lsm99 ออนไลน์ coin master ส ปิ น ฟรี ไม่ จํา กัด เครดิต ฟรี 100 ไม่ ต้อง แชร์ 2019เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร www123vip casino วิธี เอา ส ปิ น coin master ฟรี ทาง เข้า lsm lsm99 โปร โม ชั่ น sbobet โปร โม ชั่ น สมาชิก ใหม่ mega ball casino fun88 ทาง เข้า 2018 วัน นี้ เว็บ jetsadabet pantip เข้า จี คลับ มือ ถือ jetsadabet ฝ โป้ ก เก อ slot android ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด 2020 ดาวน์โหลด scr888 เวอร์ชั่น ล่าสุด slots joker โป ก เกอร์ เกม แทง หวย เจต เครดิต ฟรี joker123 สมัคร สมาชิก happyluke gclub ป๊อก เด้ง royal888 casino สมัคร แทง บอล ออนไลน์ ฟรี casino dices dafabet คือ เครดิต หวย ฟรี lsm99 new tarzan slot ทาง เขา sbobet gclub free สล็อต lsm99 เครดิต ฟรี 500 บาท เค ดิ ต ฟรี วัน นี้ w88 สล็อต sbobet25 เครดิต ฟรี ไม่ ต้อง ฝาก ufa ทาง เข้า เว็บ gclub ราคา บิงโก sbobet casino แทง หวย เจต ส ปิ น ไม่ จํา กัด coin master royal online 88888 วิธี เล่น ไฮโล pantip jetsadabet รีวิว ทาง เข้า sbobet8888 แจก ฟรี 100 บาท ไม่ ต้อง ฝาก เครดิต สล็อต ฟรี ไม่ ต้อง ฝาก wwwbeer789 lux casino american poker 90 แจก เครดิต ฟรี 100 ไม่ ต้อง แชร์ วิธี หา ส ปิ น coin master ดาวน์โหลด 918kiss ios gclub886 โปร เครดิต 100 เจ ษ แทง หวย ล็ อ ต โต้ 77 ล็ อ ต โต้ วิธี ได้ ส ปิ น ฟรี coin master 88 สล็อต casino hackers jetsadabet 1688 9988 gclub บา คา ร่า คอมมิชชั่น คือ สล็อต ยิง ปลา เครดิต ฟรี 100 ไม่ ต้อง แชร์ แบบ บิงโก รับ ส ปิ น coin master gclub87 tournament bonus บา คา ร่า ทํา เทิน โปร ส ปิ น coin คา สิ โน เครดิต ฟรี 2020 gclub next ฟรี ส ปิ น สมาชิกใหม่ โปร โม ชั่ น เกม ออนไลน์ w88 mobile casino ยี่ กี่ jetsada สล็อต 88 ฟรี เครดิต สล็อต ยู ฟ่า 191 ติด ตั้ง 918kiss ios สูตร coin master ฟรี ล็ อ ต โต้ สมัคร แทง บอล ฟรี live22 ios 2020 tomato555 ซิก โบ ออนไลน์ มือ ถือ sbobet เพิ่ม ส ปิ น coin master pantip สล็อตฟรี coin master ฟรี ส ปิ น ล่าสุด เอา ส ปิ น coin master ฟรี ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด facebook fun88 โร เยอ ร์ คา สิ โน สมัคร สมาชิก ใหม่ รับ เครดิต ฟรี 100 918kiss install ios โค๊ ด ส ปิ น ฟรี xog สล็อต สล็อต ขั้น ต่ํา 100 แทง หวย เว็บ เจ ษ การ เล่น ไพ่ โป๊กเกอร์ scr 918kiss android download ufa casino 55 โบนัสฟรีสปิน mega888 auto slot สล็อต 918kiss ฟรี เครดิต ไม่ ต้อง ฝาก ล่าสุด 2019 เว ป ล็ อ ต โต้ 888 lsm99 ฝาก แอ พ เล่น ไฮโล sbobetcom สมัคร สมาชิก ใหม่ รับ เครดิต ฟรี ไม่ ต้อง ฝาก gclub bet สล็อต ทุน ฟรี gclub8888 มือ ถือ sbobet888 wm casino 555 ทาง เข้า gclub sbobetbeer777 เอ เย่ น lsm99 poker online เว็บ ไหน ดี lsm99 ฝาก ถอน สมัคร ยูสเซอร์ ฟรี lsm99 ล่าสุด club388 casino เค ดิ ต ฟรี ไม่ ต้อง แชร์ วิธี ทํา ส ปิ น ฟรี coin master แอ ปรับ ส ปิ น ฟรี ส ปิ น ฟรี coin master ios ล่าสุด gemix casino ส ปิ น ฟรี coin master ฟรี ไม่ จํา กัด เว็บ หวย ออนไลน์ jetsadabet ทาง เข้า sbo888 เครดิต ฟรี ib888live22 เครดิต ฟรี ฝาก เงิน fun88 ปอย เปต 589 เล่น poker online เงิน จริง coin master แจก ส ปิ น ฟรี jetsadabet หวย gclub tv sbobet dragon fall slot บา คา ร่าไฮโล ออนไลน์ ได้ เงิน จริง ผ่าน มือ ถือ 9999lsm vegasberry casino สล็อต ฝาก ขั้น ต่ำ 20 บาท lsm999 ทาง เข้า sbo ทาง เข้า ทาง เข้า sbobet88899 เกม ไพ่ 21แอ พ เกม ไฮโล ได้ เงิน จริง สมัคร บอล ฟรี เครดิต เครดิต ฟรี 300 2020 sbo333 มือ ถือ เว็บ หวย เจษฎา ใหม่ 918kiss ฝาก 10 รับ 100 ล่าสุด gclub casino มือ ถือ galaxy casino online casino monopoly live โป้ ก เกอร์ ออนไลน์ เว็บ บา คา ร่า จี คลับ pssuy888 royal online 777 แอ ปรับ ส ปิ น ฟรี coin master ทาง เข้า sbothai8 7kasino ดาวน์โหลด mega888 ล่าสุด เสื้อ fun88 คืน ยอด เสีย สล็อต agent casino fun88 โปร วัน เกิด duel casino เว็บ ปอย เปต คา สิ โน sbo888 ทาง เข้า sbo fun788 ทาง เข้า rich slot 918kiss download pc วิธี หา ส ปิ้ น coin master ส ปิ่น ฟรี สมัคร sbobet 222 royal casino เครื่องมือ ระบบ ตัวแทน gclub886 คา สิ โน ปอย เปต ดี ที่สุด เว็บ lsm99 bacc6666 สมัคร ทาง เข้า บา คา ร่า gclub jetsadabet ล่ม ๋ jetsadabet fun88 ถอนเงิน ไม่ ได้ สล็อต หมุน ฟรี ใน google รับ ไป เลย ฟรี เครดิต 100 บาท sbo888 มือ ถือ infinity888 casino gclub700 lsm99 ฝาก ถอน roma casino สมัคร ปุ๊บ รับ เครดิต ฟรี คา สิ โน ปอย เปต 777 668dg casino หา กลุ่ม ไลน์ เครดิต ฟรี สมัคร เว็บ lsm เข้า ระบบ sbobet เกม พนัน ไฮโล ส ปิ น ฟรี coin master ios ล่าสุด เว ป lsm99 ทาง เข้า sbobet ใหม่ poker เงิน จริง android pic5678 คอม poipet 555 playlive88 live22 sbobet16888 ลิ้ ง dafabet หิ นิำะ lsm99 info jetsadabet เอ เย่ น ไหน ดี gclubfree สมัคร 999lsm sbobet25 gclub next jetsadabet 777 beer555 gclub บน มือ ถือ https www gclub casino com bacc6666 m gclub mobile android got slot ทาง เข้า sbobet slot android จี คลับ 5555 sbobet game ทาง จี คลับ sbobeton จี คลับ คา สิ โน รับ ส ปิ น ฟรี coin master ios enerdzi casino w77 casino เจษฎา หวย ออนไลน์ โป ก เกอร์ ลํา ดับ ไพ่ jetsadabet โอน เงิน ผิด สล็อต หมู หวย เจต fun88 กีฬา hex casino spartan slot ส โบ เบ็ ต 888 เว็บ jetsadabet fun555 login โบนัสคาสิโน ไม่ต้องฝากเงิน euromania online casino gclub88888 ทาง เข้า มือ ถือ สล็อต ฟรี เครดิต 100 2020 sbothai mobile หมุน ส ปิ น ฟรี coin master lsm99 info gclub8888 auto เครดิต ฟรี ไม่ ต้อง ฝาก jdb ฝาก ถอน รอยัล วิธี ทํา ส ปิ น coin master จี คลับ ฟรี ไฮโล ออนไลน์ พื้นบ้าน ส ปิ น ฟรี coin master ios ทาง เข้า sbobet ล่าสุด เครดิต ฟรี joker123 ทาง เข้า จี คลับ ผ่าน เว็บ สล็อต playstar ib888 คา สิ โน คา สิ โน จี คลับ k9win online casino สล็อต ออนไลน์ fifa55 สล็อต 918 เติม true wallet ไม่มี ขั้น ต่ํา live22 ฝาก 50 รับ 100 918kiss download android 2020 sbobet a mega888 auto slot lsm99 bet ลิ้ ง ส ปิ น ฟรี coin master วัน นี้ fun788 login สล็อต ฟรี เครดิต ล่าสุด เครดิต ฟรี 100 ไม่ ต้อง แชร์ 2019 sbobet casino live best casino slots bingo & poker สมัคร รับ เครดิต ฟรี ล่าสุด แจก ส ปิ้ น coin master 918kiss เทิ ร์ น 1 เท่าdafabet ฟรี 300 2019 fun88 ทาง เข้า 2019 ฟรี สูตร คํา น วณ หวย ยี่ กี jetsadabet 7 diamonds casino ลิ้ ง ค์ รับ ส ปิ น coin master ขอ ส ปิ น ฟรี coin master gclub4 sbobet ibc 888 สมัคร live22th ลิ้ ง ฟรี ส ปิ น coin master 888 dragons happyluke รับ ส ปิ น ฟรี coin master ios vip jetsadabet wwwlsm99 ufa แจก เครดิต ฟรี 100 ไม่ ต้อง ฝาก ส โบ เบ็ ต 88 สล็อต royal online v2 แทง หวย ออนไลน์ เจต แอ ปรับ ส ปิ น ฟรี coin master วิธี กด ส ปิ น coin master ไฮโล ออนไลน์ ได้ เงิน จริง ผ่าน มือ ถือ คลับ จี 888 สมัคร sbobet888 casino 100 918kiss เล่น ฟรี เครดิต ฟรี ไม่ ต้อง ฝาก fifa fbi5836m gclublotto poipet 555 สล็อต ฝาก ถอน วอ เลท gclub official lsm99 up ราคา บอล ไหล sbobet การ เพิ่ม ส ปิ น coin master gclub casino มือ ถือ winner55 มือ ถือ casino plus scr888th fun88 คำ ค้นหา ที่ แนะนำ เพิ่มเติม ล็ อ ต โต้ คือ เล่น ก่อน ไม่ ต้อง ฝาก สมัคร fun88 เครดิต ฟรี ufa ถอนเงิน ส โบ เแ สีิ lsm99 คา สิ โน spinser casino casino monopoly live เครดิต ฟรี ทำ เทิ ร์ น ถอน ได้ 35x สล็อต การ หา ส ปิ น ฟรี royalfever gclub kkkk99 net แทง หวย เว ป เจต แจก ส ปิ น coin kiss777th gclub logo dafabet ไว กิ้ ง sbobetnew sbobet rich88 ฟัน 88 ล็อกอิน sbobet777 มือ ถือ ทาง เข้า ส โบ เบ็ด เครดิต ฟรี สมัคร รับ ทันที สล็อต โบนัส 200 โปร โม ชั่ น คา สิ โน ปอย เปต ทาง เข้า lsm ทาง เข้า จี adameve casino sbobet88899 cw marketing bv sbothaiclub ทาง เข้า รับ ส ปิ น ฟรี coin master วัน นี้ ufa แจก เครดิต ฟรี 100 ไม่ ต้อง ฝาก lsm99 agent ทาง เข้า sbobet999 ทาง เข้า รับ ส ปิ น ฟรี coin master วัน นี้ star77 casino casino flash jetsadabet รีวิว ล็ อ ต โต วี ไอ พี ลูกเต๋า วิธี ได้ ส ปิ น เกม coin master jetsadabet ถอนเงิน ไม่ ได้ สล็อต ค่าย bng 168 gclub วิธี โกง ส ปิ น ใน coin master เว็บ เจษฎา เบ ท สมัคร ivip9 เว ป ล็ อ ต โต้ สมัคร เกม สล็อต ออนไลน์ วิธี เล่น แบ ล็ ค แจ็ ค ไลน์ gclub เว็บ เจษฎา ใหม่ lucky neko slot 918kiss 918kiss kiss918 vipเครดิต ฟรี เทิ ร์ น 1 เท่า 2020 หา ฟรี ส ปิ น coin master 918kiss เติม เงิน วอ เลต ล่าสุด 2019 ส ปิ น coin master ฟรี ฝาก lsm99 สล็อต เติม ผ่าน วอ เลท สล็อต k9win sbobetcom happyluke ดี ไหม viking clash slot sboibc888 ทาง เข้า วิธี เก็บ ส ปิ น coin master sbobet555 สล็อต เครดิต ฟรี ล่าสุด 2020 gclub466 ทาง เข้า ส โบ 888 สมัคร mega888 สล็อต เติม 10 รับ 100 slottojam เค ดิ ต ฟรี บา คา ร่า 2020 เค ดิ ต ฟรี 50 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ sbobet rich88 จี คลับ คืน ยอด เสีย www99lsm สมัคร ส โบ lsm99 9 lsm99 login จี คลับ เล่น ผ่าน เว็บ สล็อต 808 ฮ อ ลิ เดย์ พา เล ซ ปอย เปต สมัคร sbobet คา สิ โน เข้า เล่น royal online สมัคร ยูสเซอร์ ฟรี เครดิต วิธี หา ส ปิ น coin master สมัคร ใหม่ รับ เครดิต ฟรี ทันที 2020 ทาง เข้า sbothai8 รับ ส ปิ น ฟรี เกม coin master หา ส ปิ้ น coin master lsm99 สมัคร สปินฟรี coin master ฟรีไม่จํากัด รับ ส ปิ น coin master แอ พ แจก ส ปิ น ฟรี coin master spinal tap slot lsm99 register gclub 16888 wm casino ดาวน์โหลด เล่น ก่อน ไม่ ต้อง ฝาก blackjack วิธี เล่น ทาง เข้า รอยัล ออนไลน์ sbobet เข้า ไม่ ได้ เว็บ แจก ส ปิ น coin master gclub the one สูตรพนัน sbobet365 ทาง เข้า joker allbet24hr gclub 99 ยืนยัน เบอร์ รับ เครดิต ฟรี 168 gclub gclub goldenslot รอยัล จี คลับ ส โบ เบ็ ต 168 ทํา เทิ ร์ น บา คา ร่า ดาวน์โหลด เกม 918kiss 35x สล็อต sbobet 359 joker 888 slot sbobet129 wildslots casino เข้า ส โบ ไม่ ได้ sbobetasia online ล็ อ ต โต้ 1000 fun88151 หา ส ปิ้ น coin master may casino sbo888 มือ ถือ เว็บ แทง ฟุตบอล เจต ฏ ดา เบส 123sbobet เครดิต ฟรี 100 ไม่ ต้อง แชร์ 2019 สล็อต playstar เว็บ จี คลับ fun88 ทาง เข้า pc คลับ 6666 แทง หวย ออนไลน์ เจษฎา coin master โปร ส ปิ น ฟรีสล็อตออนไลน์ casino zeppelin ก ฟ ด ฟิำะ ลิ้ ง fun88 เกม poker ออนไลน์ เว็บ หวย เจษฎา ใหม่ fun88 ฝาก เงิน เจษฎา lotto สปินฟรี coin master pantip สล็อต เครดิต ฟรี ถอน ได้ โปร โม ชั่ น pussy888 casino 3d สมัคร lsm99 สมัคร สมาชิก 918kiss ดาว โหลด เกม 918kiss มือ ถือ sbobet888 mafia88 สมัคร fun88 ทาง เข้า fun555 ทาง เข้า คา สิ โน แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ เครดิต ฟรี nx bs88 casino poipet โปร โม ชั่ น เค ดิ ต ฟรี 50 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ gclub45 โบนัส แนะนำ เพื่อน เว ป jetsada jetsadabet allnew555 temple slot jetsadabet 1688 jetsadabet pantip รีวิว สล็อต ขั้น ต่ำ 1 บาท sbobet 433 jetsadabet vip 1 คือ โบนัส เงิน คืน ท รู 918kiss สมัคร auto happyluke info วิธี ส ปิ น coin master E-Sport โบนัสต้อนรับ 100% สูงสุดถึง 1,000 บาท สูตร เพิ่ม ส ปิ น coin master เข้า เล่น จี คลับ 168 สล็อต หมุน ฟรี ใน google รับ ไป เลย ฟรี เครดิต 100 บาท 855 casino bacc1688 มือ ถือ แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 แค่ สมัคร live22 ฟรี เครดิต ไม่ ต้อง ฝาก 2019 fun555 ทาง เข้า joker ฟรี เครดิต ไม่ ต้อง แชร์ dafabet มือ ถือ โปร สล็อต 20 รับ 100 vip fun88 918kissauto co mafia slot เครดิต ฟรี ไม่ ต้อง แชร์ fun88 esports สล็อต ทุน ฟรี เว็บ แทง หวย เจต ทาง เข้า sbo มือ ถือ gclubpros เกมสล็อต w88 สล็อต lsm99 ดี ไหม เค ร ฟรี ไม่ ต้อง ฝาก 2020 99 gclub spinal tap slot red ping win สล็อตฟรี winner55 สล็อต lsm99online สมัคร sbobet189 918kiss เกม ไหน แตก ง่าย สุด coin ส ปิ น ฟรี qq888 casino joker ฟรี เครดิต ไม่ ต้อง ฝาก 2020 jetsadabet สมาชิก ทาง เข้า sbobet1688 gclub คืน ยอด เสีย 10 fun88 esports สล็อต happyluke 918kiss ดาวน์โหลด android โค้ด รับ ส ปิ น ฟรี coin master gclub4 casino dome แจก ส ปิ น coin master ฟรี ทาง เข้า sbothaiclub แจ กลิ้ง ส ปิ น ฟรี coin master โบนัส เครดิต ฟรี แบบ ไม่ ต้อง ฝาก เงิน เค ดิ ต ฟรี ถอน ได้ 500 สล็อต ฝาก 50 รับ 250 a3ccc gclub dragon fall slot รับ ส ปิ น ฟรี coin master ios alpha222 mobile sbo365 มือ ถือ k9win online casino a3ccc gclub campobet casino เค ดิ ต ฟรี แค่ สมัคร fun888 casino สล็อต 88888 ไลน์ lsm99 royalfever gclub สล็อต แตก ง่าย ทุน น้อย slot888th เว็บ ไฮโล แจก ฟรี สล็อต วอ ล เลท ดาวน์โหลด kiss918 โหลด 918kiss android gclub world casino elite bs88 casino gclub88888 ทาง เข้า มือ ถือ facebook fun88 เข้า ส โบ เบ็ ต 888 ib888 คา สิ โน tumbet casino สล็อต แจก เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ สมัคร เค ดิ ต ฟรี gclubs royalonine sbobet747 lsm999 sakura slot gemix casino r casino 777www casino สล็อต ฝาก 100 รับ 300 gclub casino มือ ถือ สล็อต ฝาก 20 บาท ได้ 100 ล่าสุด ปอย เปต 555 casino f casino sky vegas dragon club casino jetsadabet เอ เย่ น ไหน ดี pantip ทาง เข้า จี คลับ ล่าสุด สมัคร สมาชิก ใหม่ รับ เครดิต ฟรี 100 ib888 เข้า สู่ ระบบ sbobet77th ฟรี ส ปิ้ น thai poker pro สล็อต เติม 10 รับ 100 โกง ฟรี ส ปิ น coin master scr888 login honey honey honey slot scr888 login manekichi casino slottojam casino sbobet ibc sbobet8888 ทาง เข้า jetsadabet login sbo555 ไว้ใจ ได้ วิธี เอา ส ปิ น coin master ฟรี ทาง เข้า เว็บ lsm เค ดิ ต ฟรี 200 9999lsm com gclub call center rov รู น แทง ค์ m168 casino ไอ ดี ไลน์ lsm99 เว็บ ปอย เปต ดี ไหม คืน ยอด เสีย สล็อต การ เพิ่ม ส ปิ น coin master sbobet 789 เว็บ แทง หวย เจษฎา เบ ท ตัวแทน royal casino 123 plus casino gclub69 918kiss apk ล่าสุด วิธี เล่น แบ ล็ ค แจ็ ค สล็อต happyluke เค ดิ ต ฟรี แค่ สมัคร สล็อต ออนไลน์ ufa345th บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น สล็อต ฝาก วอ เลท ไม่มี ขั้น ต่ํา 918kiss apk ล่าสุด 888 dragons happyluke m beer 777 happy live22 สมัคร สมาชิก lsm99 สล็อตฟรี ทาง เข้า sbobet 24 เล่น gclub ผ่าน เว็บ welcome 10 casino gclub casino คา สิ โน ออนไลน์ lsm99 sport โค้ด รับ ส ปิ น ฟรี coin master สมัคร สมาชิก lsm99 โบนัส ฝาก เงิน pic5678 คอม live22 ios 2020 979 gclub spinomenal slots โปร ส ปิ้ น coin master สมัคร fun88 ลิ้ ง ส โบ มือ ถือ รับ เพิ่ม ส ปิ น coin master 168 gclub daxio casino เว็บ แจก ส ปิ น coin master เติม 100 ฟรี 300 บิงโก แบบ หมุน ไอ ดี ไลน์ lsm99 ส โบ 168 สมัคร poipet เอา ส ปิ น coin master ฟรี เล่น poker online ส ป ริ้น ฟรี coin master poipet คา สิ โน เกม โป ก เกอร์ ออนไลน์ lsm99th hex casino 918kiss hack download ฮ อ ลิ เดย์ ปอย เปต gclub cash www lsm2558 comwww lsm99 bet lsm99 info www fun88 com vn gclub god เครดิต ฟรี 150 2020918kiss ฟรี เครดิต 1000 บาท fun88 ถอนเงิน ช้า happyluke ฟรี 300 บาท k9win สมัคร สมาชิก king roman casino สล็อต เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ sbobet559 ปอย เปต 99 casino splendido สล็อต ฝาก วอ เลท ไม่มี ขั้น ต่ํา เค ดิ ต ฟรี 2020 ล่าสุด สล็อต แตก จริง สล็อต sagame66 918kiss ฝาก 10 รับ 100 ล่าสุด jetsadabet 999 หวย เว็บ เจ ษ happyluke pantip beer555 mobile jetsadabet เข้า ระบบ ไม่ ได้ คา สิ โน ฝาก 1 บาท ได้ 100 ฝาก gclubauto web jetsadabet สมัคร lsm999 ทาง ไลน์ gclub casino online มือ ถือ sbfplay 99 รอยัล คา สิ โน จี คลับ ทาง เข้า royal online สล็อต ฝาก 50 รับ 250 โบนัสฟรีเคดิต joker ฟรี เครดิต ไม่ ต้อง ฝาก 2020 โปร ส ปิ้ น coin master sbo888 สมัคร วิธี หมุน ส ปิ น coin master royal v2 online beer777 con หา ส ปิ น ฟรี coin master ios 9999lsm ทีเด็ด ส โบ joker เครดิต ฟรี 2019 เข้า จี คลับ มือ ถือ เว็บ lsm gclubwin แจก ฟรี ส ปิ น coin master ส โบ เบ็ ต 88888 poker 5 ใบ king roman casino เว็บ เจษฎา หวย โบนัสพิเศษแทงเสมอ รับเพิ่ม 17,777 บาท ไม่อั้น wwwlsm99 เข้า ส โบ เบ็ ต ทาง มือ ถือ fun88 ล็อกอิน gclubtg ผ่าน เว็บ fun88 แจก เสื้อ บอล sbobet16888 3win8 ฟรี เครดิตฟรี เครดิต 100 ไม่ ต้อง ฝาก เค ดิ ต ฟรี ล่าสุด ไม่ ต้อง แชร์ เค ดิ ต ฟรี 200 ทาง เข้า 24sbobet เว็บ หวย jetsada ส โบ เบ็ ต 789 โค้ด เกม coin master ฟรี วัน นี้ gemix casino ส ป ริ้น ฟรี coin joker ฟรี เครดิต ไม่ ต้อง แชร์ gclub88888 ทาง เข้า มือ ถือ potato222 mobile รู น สาย แท๊ ง ค์ fin88 casino jetsadabet 1688 วิธี เพิ่ม ส ปิ น coin master ios ดาวน์โหลด mega888 ล่าสุด coin master ส ปิ น ฟรี วิธี ส ปิ น coin master ฟรี แอ พ ล็ อ ต โต้ pic5678 กด รับ ส ปิ น ฟรี coin master ส ปิ น ฟรี fun88asia1 โกง ฟรี ส ปิ น coin master เล่น ก่อน ไม่ ต้อง ฝาก ลิงค์ รับ ส ปิ น ฟรี coin master สมัคร sbobet โดยตรง เว ป เจษฎา เบ ท สล็อต เครดิต ฟรี 500 ถอน ได้ รู น แทง ค์ ถึก ๆ mister bit casino สูตร coin master gclub god ลิ้ ง ค์ ส ปิ น coin master โปร ฟรี ส ปิ น coin master doxxbet casino online ทาง เข้า gclub ใหม่ ล่าสุด เข้า ส โบ แจก ฟรี เครดิต สล็อต เล่น สล็อต ฟรี ไม่ ต้อง ฝาก live casio วิธี เอา ส ปิ น coin master โป ก เกอร์ เกม jetsadabet รีวิว sbobet128 ww88 สล็อต แจก ส ปิ้ น coin master mafia สล็อต มา ใหม่ รอยัล คา สิ โน th live casino house fun555 login สล็อต เครดิต ฟรี วัน เกิด gclub55555 โป ก เกอร์ เงิน จริง bacc1688 ทาง เข้า เข้า sbo888 หวย ออนไลน์ jetsada gclub444 มือ ถือ sbobet888 royalsbobet jetsadabet allnew999 coin master แจก ส ปิ น ฟรี บา คา ร่า 1688 เครดิต ฟรี http ab24hr allbet asia com login bg casino online สมัคร รับ เครดิต ฟรี 2020 sbobetcom northern sky slot โบนัสฟรีสปิน รวม ทาง เข้า sbo live22 ios 2020 เกม บิงโก ราคา โล ยั ล คา สิ โน ฝาก ถอน เทพ เอเชีย ฟรี ส ปิ น slot party 918kiss เครดิต ฟรี 500918kiss เครดิต ฟรี 100 ไม่ ต้อง ฝาก 2020 สล็อต 918kiss เติม true wallet ไม่มี ขั้น ต่ํา gclub45 เล่น royal online v2 wm casino 555 สล็อต playstar vscr888 ฝาก เงิน โบนัสพิเศษแทงเสมอ รับเพิ่ม 17,777 บาท ไม่อั้น วิธี ทํา ให้ ได้ ส ปิ น เยอะ ๆ coin master gclub royal 456 sbobet168 club gclub466 ลิ้ ง เข้า ส โบ m u16888com คา สิ โน ไม่ ต้อง ฝาก เงิน 918kiss download 2019 ios fun788 ทาง เข้า รอยัล คา สิ โน 777 ส โบ เ fun88 ทาง เข้า 2018 วัน นี้ beat casino net 888 casino ทาง เข้า fun888 สมัคร sbobet ออนไลน์ ฝาก 19 รับ 100 ล่าสุด โต โย ต้า ร็ อ ค โค่ แค ป auto slot 918 wm casino 555 casino neosurf lsm999 ทาง เข้า 999lsm ทาง เข้า sboasia royal online ทาง เข้า evolution slot sbothaiclub m beer 777 99a gclub168 Sbobet casino สูตร เพิ่ม ส ปิ น coin master การ เล่น ไพ่ โป๊กเกอร์ crazy genie slot ทาง เข้า รอยัล คา สิ โน รับ ส ปิ น coin master sbobet premier ฟรี เครดิต mafia gclub คืน ยอด เสีย สมัคร สมาชิก ฟรี เครดิต lsm99 ทดลอง เล่น huone casino www1 lsm99 net sbobet 2019 sboibc มือ ถือ ฟรี ส ปิ น ฟรี 918kiss ไอ โฟน mister bit casino mm8bet ทาง เข้า sbobet fun88 ทาง เข้า royal gclub online 9999lsm com https ab24hr allbetasia com login php ทาง เข้า sbobet ล่าสุด campo casino ลิ้ ง เข้า sbo ส ปิ น ฟรี coin master ฟรี ios sbobet8910 royal online เข้า ไม่ ได้ ทาง เข้า sbobet ล่าสุด ลิ้ ง ส ปิ น ฟรี ทาง เข้า sbobet asia ทาง เข้า sbo24 หมุน ส ปิ น ฟรี coin master megaway slots กระดาษ ลูกเต๋า wm casino bet casino online ต่าง ประเทศ blackjack วิธี เล่น เค ดิ ต ฟรี ไม่ แชร์ ww88 สล็อต 979 gclub สมัคร 918kissauto zulabet casino เล่น บา คา ร่า จี คลับ sbobet333 เข้า ไม่ ได้ 888 dragons happyluke khuyến mãi happyluke โปร โม ชั่ น pussy888 ส ปิ น ฟรี coin master ios ล่าสุด โค้ด ส ปิ น coin master วัน นี้ pussy888 android lsm99 center สมัคร สล็อต ฝาก 99 รับ 201 ww88 สล็อต เว็บ บา คา ร่า จี คลับ black jack วิธี เล่น รู น แทง ค์ doyser เค ดิ ต ฟรี ไม่ ต้อง ทํา เทิ ร์ น lsm99 ฝาก ขั้น ต่ํา เครดิต ฟรี luck lsm99today happyluke ฟรี 300 บาท
        เครดิต ฟรี 100 ไม่ ต้อง ฝาก 2019เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร| ฟรีสล็อตออนไลน์| rich 777 casino| แจก เงิน ฟรี 300| เว็บ หวย เจษฎา ใหม่| thaifun88| king roman casino| เค ดิ ต ฟรี ถอน ได้ 500| highroller casino| เว็บ พนัน ออนไลน์ ปอย เปต| spinal tap slot| เกม โป้ ก เกอร์| เล่น จี คลับ ออนไลน์| ส โม เบส| สมัคร สมาชิก ใหม่ 918kiss| จี คลับ ผ่าน เว็บ| mega slot casino| โปร ส ปิ น coin| สมาชิก gclub| jetsadabet rerun| 10 casino| bacc1688 ทาง เข้า| ขอ โบนัส| online casino s| ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด 2020| เข้า sbo ไม่ ได้| Sbobet casino| all casino บา คา ร่า| ลิ้ ง sbobet| คา สิ โน ใน ปอย เปต| slot หมุน วง ล้อ ฟรี| โบนัส แนะนำ เพื่อน| 918kiss hack android| roma casino| gclubtg| โปร เกม coin master ส ปิ น ไม่ จํา กัด| casino hackers| ยืนยัน เบอร์ รับ เครดิต ฟรี| funbet casino| fun88thai| 918kiss download pc| 777 live casino| ทาง เข้า sbo24hr| rolet casino| 7msbobet| 918kiss slot game download| ปอย เปต 977| jetsadabet เปลี่ยน เอ เย่ น| เครดิตฟรีไม่ต้องฝากไม่ต้องแชร์| สล็อต happyluke| ทาง เข้า fun555| 100 casino| เข้า jetsadabet| เว็บ ส ปิ น ฟรี coin master| slot plus| lsm9999| sboibc888 สมัคร| แจก ส ปิ้ น coin master| casino maxbet| lsm99 โปร โม ชั่ น| แจก โค้ด ส ปิ น coin master| rov รู น แทง ค์| fun888 มือ ถือ| คา สิ โน เติม true wallet ไม่มี ขั้น ต่ํา| สล็อต ขั้น ต่ำ 1 บาท| pay slot|