<em id="H39e8e1"><span id="H39e8e1"></span></em>
<em id="H39e8e1"></em>

<sub id="H39e8e1"><listing id="H39e8e1"></listing></sub>
    <form id="H39e8e1"><legend id="H39e8e1"></legend></form><nav id="H39e8e1"><code id="H39e8e1"><meter id="H39e8e1"></meter></code></nav>

      <em id="H39e8e1"><source id="H39e8e1"><track id="H39e8e1"></track></source></em>
      <form id="H39e8e1"><legend id="H39e8e1"></legend></form>
    1. <sub id="H39e8e1"></sub>

        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
         
        rome vip casino สมัคร 918kiss ท รู้ วอ เลท sbobetv8 ทาง เข้า sbobet8888 918kiss เติม เงิน วอ เลต ล่าสุด 2019 lsm99 queen www560bet cw marketing bv สมัคร สมาชิก ใหม่ รับ เครดิต ฟรี ไม่ ต้อง ฝาก sbobet999 sbo1688 ทาง เข้า ล่าสุด pussy888 เครดิต ฟรี sahara nights slot lsm คา สิ โน thaisbo beer777 isoftbet slots poker เงิน จริง ios ทาง เข้า lsm 918kiss ดาวน์โหลด r casino วิธี เล่น ไฮโล pantip สมัคร fun88 fun88com vegas live slot ทาง เข้า sbo365 k9win สล็อต แอ พ เล่น ไฮโล vscr888 ฝาก เงิน 128coffee sbobet เว็บ เจ ษ หวย sbobettotal agent lsm99 sbobet747 sbobetasia tiki fruits ดาวน์โหลด kiss918 สล็อต playstar lsm9999 เค ดิ ต ฟรี วัน นี้ ทาง เข้า sbo999 มือ ถือ sbobet888 tournament bonus เครดิต ฟรี joker123 เว็บ เจษฎา ใหม่ เอา ส ปิ น coin master ฟรี casino online net poipet 888 jackpotxo3 ilucky casino ปอย เปต 99 diamond vip casino tek789 เข้า ไม่ ได้ เพิ่ม ส ปิ น coin master sbobet128 ี จี คลับ happyluke app wwwbeer555 รอยัล คา สิ โน ออนไลน์ เครดิตฟรีแค่สมัคร temple slot poipet 555 เครดิต สล็อต ฟรี ไม่ ต้อง ฝาก gclub ฟรี 500 2018 โป๊ก เก อร 4579 ล็ อ ต โต้ กลุ่ม เครดิต ฟรี ไม่ ต้อง แชร์ happyluke id line z8 สล็อต 918kiss install ios ส โบ เ coin ส ปิ น ฟรี lsm99 king lsm9999 ทาง เข้า royal online 666 fun88 affiliate ฮ อ ลิ เดย์ พา เล ซ ปอย เปต ส ปี ด บา คา ร่า s15 359 sbobet vwin365th betrally casino ส โม เบ ท 777 จี คลับ 99 z8 สล็อต bet slot club sbobet77 sbobet66 เกม บิงโก ยอด ฮิต สล็อต ฟรี เครดิต ไม่ ต้อง ฝาก 2020 sbobet747 all new gclub ทาง เข้า เล่น lsm99cash fun88 asia 333 sbobet ทาง เข้า sbobet agent sboibc888 สมัคร เกม ไพ่ โป ก เกอร์ ออนไลน์ casino fox https ufafever com ufabet login โปร เพิ่ม ส ปิ น coin master happyluke แจก 300 casino online ต่าง ประเทศ การ หา ส ปิ น ฟรี สมัคร pay69 royal online 8888 ทีเด็ด ส โบ หวย เจต พัน ทิป ฝาก 5 รับ 100 ล่าสุด ทาง เข้า sbobet ใหม่ ฟรี ส ปิ น coin master ฟรี happyluke app gclub 98 สมัคร สมาชิก 918kiss 999lsm สมัคร โบนัสพิเศษแทงเสมอ รับเพิ่ม 17,777 บาท ไม่อั้น บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น วิธี เล่น ไฮโล pantip ตัวแทน royal casino สล็อต ไม่มี ขั้น ต่ำ ฟรี โบนัส lsm99 co spinal tap slot ทาง เข้า sbothai ซื้อ หวย jetsadabet สูตรพนัน gemix casino โกง ฟรี ส ปิ น coin master ทาง เข้า เว็บ lsm 888 casino android สล็อต ฝาก ออ โต้ casino no ส โบ เบ ท ทาง เข้า ทาง เข้า agent sbo สมัคร sbobet888 เครดิต ฟรี joker123 ดาวน์โหลด 981kiss สล็อต 88 ฟรี เครดิต casino plus 888 dragons happyluke เพิ่ม ส ปิ น coin master pantip รับ ส ปิ น ฟรี coin master ฟรี รับ เครดิต ฟรี 300 918kiss เกมส์ ไหน ดี แตก ง่าย สล็อต 88888 ฮ อ ลิ เดย์ ปอย เปต คา สิ โน รับ เครดิต ฟรี 300 casino jackpot party dafabet มือ ถือ สมัคร เค ดิ ต ฟรี ไม่ ต้อง ฝาก โค้ด ส ปิ น coin master วัน นี้ ส ปิ น ฟรี coin master ios ล่าสุด ฟรี ส ปิ น 50 coin master แจกเครดิตฟรี 300 ไม่ต้องฝาก2020 เข้า เว็บ jetsadabet gclub6666 sbobet pc E-Sport โบนัสต้อนรับ 100% สูงสุดถึง 1,000 บาท จี คลับ 289 sbo888 สมัคร สมัคร แทง บอล ออนไลน์ ฟรี fun88 เข้า ไม่ ได้ ทาง เข้า sbobet ใหม่ casino live house อยาก ได้ ส ปิ น ฟรี coin master ufa casino 168v1 lsm99 ทาง เข้า คา สิ โน lsm99 sbobet 2019 royal v2 online happyluke th jetsadabet บา คา ร่า mafia 808 เครดิต ฟรี กลุ่ม เครดิต ฟรี ไม่ ต้อง แชร์ หาสปินฟรี coin master คา สิ โน โปร โม ชั่ น world gclub โบนัส free spin ปิดบัญชี บา คา ร่า หวย เจษฎา 4579 ล็ อ ต โต้ สมัคร ใหม่ แจก เครดิต ฟรี tumbet casino โบนัสฝากเงินครั้งแรก 108% สูงสุด 5,000 บาท youlike777 789 gclub ปอย เปต 999 ibc9 casino jackpot gclub5555 auto fc slot เอา ส ปิ น coin master ฟรี คา สิ โน ออนไลน์ โปร โม ชั่ น ฝาก ถอน รอยัล casino best 777 slots online สมัคร แทง บอล ฟรี เครดิต bbb 1688 royal galaxy casino online เว็บ jetsadabet ดี ไหม pantip www funfree55 con ขอโบนัส coin master ฟรี ส ปิ น ล่าสุด royal slot online บาคาร่า bs88 casino เครดิต ฟรี สมัคร รับ ทันที ดาว โหลด 981kiss slotv online casino jetsadabet ดี ไหม pantip ทาง จี คลับ poipet 555 ทาง เข้า gclub888 jetsadabet เอ เย่ น ไหน ดี pantip jetsadabet ล่ม โบนัสแนะนำเพื่อน mafia ฝาก 1 บาท gclub ฟรี 500 2018 เว็บ ปอย เปต pantip โบนัส แรก เข้า poker online เว็บ ไหน ดี แอ พ ล็ อ ต โต้ เอ เย่ น lsm99 เกม ไพ่ 21แอ พ เกม ไฮโล ได้ เงิน จริง สล็อต 2020 ล่าสุด ทาง เข้า lsm ล่าสุด ฟรี เครดิต สล็อต ไม่ ต้อง ฝาก lsm99 สมัคร ่ lsm99 เจษฎา bet โปร เกม coin master ส ปิ น simsalabim slot ส โป เบส vegas live slot 4579 ล็ อ ต โต้ เล่น จี คลับ มือ ถือ lsm99 new คา สิ โน เครดิต ฟรี ไม่ ต้อง ฝาก 2020 fun555 มือ ถือ ถอนเงิน dafabet เจษฎา หวย ออนไลน์ ทาง เข้า sbo8888 ลิ้ ง dafabet รับ เครดิต ฟรี 500 club388 casino อยาก ได้ ส ปิ น ฟรี coin master รู น แทง ค์ ถึก ๆ casino sky vegas gclub2go 918kiss33 ดาวน์โหลด เจษฎา lotto ฟรี สล็อต ออนไลน์ เจษฎา ยี่ กี 560sbobet สล็อต niki เค ดิ ต ฟรี บา คา ร่า 2020 กระบอง shangri la เครดิต ฟรี สล็อต ฟรี 300 สมัคร สล็อต รับ เงิน ฟรี gclub คา สิ โน ออนไลน์ เว็บ เล่น โป๊กเกอร์ sbobetasia online จี คลับ 289 ลิ้ ง ส โบ เบ ท เครดิต ฟรี ไม่ ต้อง ฝาก ufa เว็บ เล่น โป๊กเกอร์ m81 sbobet ล็ อ ต โต้ 1000 รับ ส ปิ น ฟรี coin master ไม่ จํา กัด ส ปิ้ น ฟรี coin master ios ยี่ กี jetsadabet ล๊ อ ต โต้ 999 mafia88 gaming เครดิต ฟรี ไม่ ต้อง ฝาก ufa ่ lsm99 เล่น สล็อต ฟรี ได้ เงิน จริง ไม่ ต้อง ฝาก ฟัน ธง sbobet เกม poker ออนไลน์ ดาวน์โหลด เกม 918kiss joker ฟรี เครดิต ไม่ ต้อง แชร์ สล็อต ace333 918 download ios เข้า fun888 gclub call sbobetsh 777 dafabet 888 slot machine slot machine เค ดิ ต ฟรี ถอน ได้ 2020 สมัคร ครั้ง แรก ฟรี เครดิต 2020 GCLUB ล็ อ ต โต้ gclub auto 999lsm login แจก ฟรี เครดิต สล็อต เข้า ไม่ ได้ sbobet slot หมุน วง ล้อ ฟรี k9win casino เครดิต ฟรี ไม่ ฝาก ไม่ แชร์ รับ เครดิต หน้า ระบบ สล็อต playstar วิธี ส ปิ น coin master ฟรี เว็บ เจ สล็อต เครดิต ฟรี เทิ ร์ น 1 เท่า เก น ส ล็ อด agent slot ยี่ กี เจษฎา เบ ท ไฮโล เขย่า สด asia 777 slot casino 918kiss ไอ โฟน winner55 รับ เครดิต ลิ้ ง ส ปิ น ฟรี coin master ล่าสุด สล็อต ขั้น ต่ำ 1 บาท คลับ 6666 wild slot www jetsadabet com เข้า ระบบ gmail เข้า สู่ ระบบ casino online net fan88 ล็อกอิน สมัคร fun88 เว็บ ส โบ บิงโก ราคา แจก 300 ฟรี royal casino beer777 fun888 login ิ sbobet เครดิต ฟรี joker123 บา ค่า ร่า ฝาก ออ โต้ ทาง เข้า sb0 fun88 นางฟ้า วิธี ขาย ส ปิ น coin master ิิิ bbb1688 สมัคร fan88joker123 ฟรี เครดิต ไม่ ต้อง ฝาก แจก ส ปิ้ น coin master go slot เค ร ฟรี ไม่ ต้อง ฝาก 2020 dafabet 99 918kiss ios โหลด ไม่ ได้ บา คา ร่า 1688 เครดิต ฟรี jetsadabet เข้า ระบบ ไม่ ได้ สมัคร รับ เครดิต ฟรี ล่าสุด gclub md vwin365th dafabet link คา สิ โน ปอย เปต 777 ซื้อ หวย เว็บ เจษฎา ทาง เข้า sbobet88899 ทาง เข้า เอ เย่ น sbo สล็อตฟรี poteau casino บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น สล็อต ออนไลน์ 168 ลิงค์ รับ ส ปิ น ฟรี coin master ล่าสุด ๋ jetsadabet fun88 pantip poipet คา สิ โน จี คลับ ผ่าน เว็บ bestbetting casino ufa casino 168v1 gclub 16888 sbobetmix ปอย เปต รีสอร์ท โล ยั ล คา สิ โน ฝาก ถอน รีวิวเว็บคาสิโนออนไลน์ ส โม เบ ท 789 โค้ด ฟรี ส ปิ น coin สมัคร แทง บอล ฟรี เครดิต happy halloween slot สมัคร fan88fun888 ฟรี 300 jetsada 888 tournament bonus jetsadabet บา คา ร่า lsm99com สล็อต เครดิต ฟรี 500 ถอน ได้ galaxy casino online สมัคร สมาชิก fun88 ลิ้ ง แจก ส ปิ น เกม coin master เครดิต ฟรี สล็อต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ เจษฎา lotto ่ jetsadabet login สล็อต 918kiss เติม true wallet ไม่มี ขั้น ต่ํา สมัคร fun88 dafabet สํา รอง hercules slot สมัคร บอล ฟรี sbobet 777com สล็อตฟรี 99a gclub168 sbobet 123 royal gclub666 sbobet korea sbothaiclub ทาง เข้า 918kiss เทิ ร์ น 1 เท่าdafabet ฟรี 300 2019 สมัคร ism99 sbobet747 royal online 8888 holiday palace ปอย เปต pantip coin master เพิ่ม ส ปิ น sbobet545 หวย เจต ออนไลน์ รอยัล คา สิ โน 777 เข้า จี คลับ มือ ถือ happyluke ดาวน์โหลด ฟรี สมาชิก ใหม่ ฝาก 1 บาท รับ 100 casino best สล็อต sagame inferno star เข้า เล่น royal online หา ส ปิ้ น coin master เว็บ jetsada royal online บา คา ร่า คอมมิชชั่น คือ happyluke slot qq808 casino sbo888 ทาง เข้า sbo สล็อต star99 โหลด mega888 online casino s happyluke line joker ฟรี เครดิต ไม่ ต้อง แชร์ หา ส ปิ้ น coin master ซื้อ หวย เจต เค ดิ ต ฟรี ไม่มี เงื่อนไข royal online v2 6666 qq808 casino ขอ ส ปิ น ฟรี coin master lsm99 new gclub466 dafabet pantip สมัคร sbobet888 สมัคร สมาชิก ใหม่ รับ เครดิต ฟรี 100 scr 918kiss android download คาสิโนออนไลน์ ruby888 casino 918kiss สมัคร สมาชิก ใหม่ pic5678 sbobet happyluke เครดิต ฟรี jetsadabet สูตร 2563 สล็อต ทุน ฟรี ฮ อ ลิ เดย์ พา เล ซ ปอย เปต เครดิตฟรี50 fin88 game เครดิต ฟรี gxy888 star cluster slot เข้า fun888 สล็อต ฝาก ถอน วอ เลท lsm99 ทาง ไลน์ slot หมุน วง ล้อ ฟรี สมัคร สมาชิก ใหม่ 918kiss วิธี ขาย ส ปิ น coin master โบนัส แรก เข้า dragon club casino a3ccc gclub 918kiss scanner hack 2019 free มือ ถือ sbobet888 สูตร หวย เจษฎา เบ ท รับ ส ปิ น ฟรี coin master วัน นี้ sbfplay 99 ล็ อ ต โต้ คือ sbobet88888 มือ ถือ sbfplay 99 การ เล่น ไพ่ poker สล็อต 918 เติม true wallet ไม่มี ขั้น ต่ํา วิธี หา ส ปิ น ฟรี coin master fun88 ทาง เข้า 2018 วัน นี้ แทง หวย ออนไลน์ เจต เว ป ล็ อ ต โต้ วี ไอ พี angel slot vwin365th แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 แค่ สมัคร ฟรี ส ปิ น 15 coin master ส ปิ น ฟรี ios ทาง เข้า บา คา ร่า gclub ลิ้ ง เข้า sbo gclub 98 thaifun88 สล็อต xo236 ชิป ฟรี royal casino สมัคร แทง บอล ฟรี lsm99 sport เจษฎา แทง หวย empire777 คา สิ โน ออนไลน์ ฟรี เครดิต 300 บาท บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น ทาง เข้า sbobetmix lsm99online สมัคร jetsada555 เค ดิ ต ฟรี 500 qq1x2 casino gclub168 ทาง เข้า เว็บ หวย ออนไลน์ jetsadabet วิธี ทํา ส ปิ น ฟรี coin master g ครับ 88888 855 casino สล็อต เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ sbobet285 ทาง เข้า fun88 พัน ทิป 918kiss เกม ไหน แตก ง่าย สุด ยี่ กี เว็บ เจ ษ sbobetsc เล่น บา คา ร่า จี คลับ goldenslot games slot online casino online ล็ อ ต โต้ 1000 slotv9 รับ 100 zig zag 777 HappyLuke xoslotzv3 ล็ อ ต โต้ 88 happyluke app ส ปิ น ฟรี coin master pantip wwwbeer789 ส ปิ้ น ฟรี coin master mega joker jackpot เค ดิ ต ฟรี วัน นี้ ฮ อ ลิ เดย์ ปอย เปต wild water slot coin master รับ ส ปิ น ฟรี tarzan slot สูตร คํา น วณ หวย ยี่ กี jetsadabet ib888 คา สิ โน fun88mobile lsm99 agent ทาง เข้า สูตรพนัน สล็อต สมาชิก ใหม่ ฟรี เครดิต ได้ ส ปิ น ฟรี coin master gclub plus thai casino online วิธี เล่น แบ ล็ ค แจ็ ค รอย อ จี คลับ ดาวน์โหลด mega888 เค ดิ ต ฟรี ไม่ ต้อง แชร์ ไม่ ต้อง ฝาก ทาง เข้า fun88 ล่าสุด sbobet222 มือ ถือ 5 dragon slot วิธี เก็บ ส ปิ น coin master cw marketing bv 15 ส ปิ น ฟรี sbobet online ทาง เข้า วิธี รับ ส ปิ น ฟรี coin master ios dafabet แอ พ เกม สล็อต แคน ดี้ 918kissauto co g2g9 casino เล่น โป ก เกอร์ ออนไลน์ ฟรี หวย หุ้น เจษฎา สล็อต ออนไลน์ 168 gclub free spartacus casino greenx88 ฟรี ส ปิ น sbobetsh มือ ถือ สล็อต เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ fun88 esports jetsadabet pantip รีวิว sbobet เข้า casino rich แอ ป ล็ อ ต โต้ วี ไอ พี ทาง เข้า royal online ฟัน 88 ล็อกอิน gclub auto การ เล่น ไพ่ โป๊กเกอร์ gclub ios คา สิ โน ออนไลน์ โปร โม ชั่ น เล่น ไฮโล ให้ ได้ เงิน pantip สมัคร 918kiss ฟรี เครดิต gclubrich77 คา สิ โน ปอย เปต ดี ที่สุด สมัคร scr888 ฟรี เครดิต เค ดิ ต ฟรี 2020 ล่าสุด แทง หวย เจต jetsadabet ยี่ กี lsm19 ฝาก ถอน fun88 ทาง เข้า 2018 gclub888888 auto campo casino poker เงิน จริง android coin master ฟรี ส ปิ น ios lucky online casino หวย เว ป เจต สล็อต เครดิต ฟรี ไม่มี เงื่อนไข ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด แทง หวย เจษฎา bg casino online royal online มือ ถือ เแ สีิ ปอย เปต 555 sbobet 2016 fun88 ดี ไหม dragon club casino world gclub sbobet8910 lara croft slot สล็อต ออนไลน์ fifa55 ทีเด็ด ส โบ เบ็ ต เว ป jetsadabet royalonine go slot สล็อต ขั้น ต่ำ 1 บาท ทาง เข้า ส โบ 8888 sbobet โปร โม ชั่ น สล็อต ทุน ฟรี zenspin casino ฟรี เครดิต mafia mega slot casino gg casino final countdown slot ufa casino 168v1 ป๊อก เด้ง เครดิต ฟรี ไม่ ต้อง ฝาก lsm99 ถอนเงิน ขั้น ต่ํา จี คลับ เวอร์ sbobet mobile iphone เข้า ส โบ เบ็ ต ทาง มือ ถือ โค๊ ด ส ปิ น coin master แอ พ ล็ อ ต โต้ ส ปิ น ฟรี coin master 1000 โปร ส ปิ น coin master ไม่ จํา กัด mb casino www gclub6666 casino municipale rome vip casino www fun888 รับ ฟรี ส ปิ น coin master ไฮโล น้ำเต้า ปู ปลา ออนไลน์ 918kiss pc รอยัล คา สิ โน ้ jetsadabet sbobetbeer777 zenspin casino โหลด 981kiss pgslot567 euromania online casino เล่น poker online ฟรี สมัคร 918kiss ฟรี เครดิต ปอย เปต 147 คา สิ โน เติม true wallet ไม่มี ขั้น ต่ํา แจ กลิ้ง ส ปิ น ฟรี coin master https ufafever com ufabet login เค ดิ ต ฟรี 200 ปอย เปต 168 ลิงค์ สํา รอง dafabet สมัคร รับ ฟรี ไม่ ต้อง แชร์ ทาง เข้า lsm999 kkkk99net jetsadabet จ่าย จริง ไหม spin coin master ไม่ จํา กัด slotpg99 ทาง เข้า เอเย่นต์ gclub ไลน์ จี คลับ ได้ ส ปิ น ฟรี coin master slottojam casino เอเย่นต์ จี คลับ 10 casino เว็บ ปอย เปต ดี ไหม เครดิต ฟรี winsor www77 คา สิ โน super gclub วิธี ได้ spin coin master gclub line 918kiss hack android gclub 98 mobil blackjack แอ พ royal online 8vy9 gclub168 home index เว็บ เจษฎา โกง ส ปิ น ใน coin master บา คา ร่า ทํา เทิน ส ปิ น ฟรี coin master ios o casino เทคนิค การ เล่น ไฮโล ฝาก ระ ติ๊ บ sbo888 ทาง เข้า 77gclub สล็อต happyluke jetsadabet ยี่ กี best casino slots bingo & poker ลิ้ ง ฟรี ส ปิ น coin master roma casino fun888 บิงโก แบบ หมุน lsm99 sport ฟรี ส ปิ น คือ download 918kiss ios 2020 แอ ป ล็ อ ต โต้ วี ไอ พี เว็บ พนัน ปอย เปต gclub plus 918kissapk สล็อต ออนไลน์ แจก ฟรี เครดิต royal casino online v2 เครดิต สล็อต ฟรี ไม่ ต้อง ฝาก วิธี ขาย ส ปิ น coin master royal gclub online fun888 มือ ถือ แจก ส ปิ น ฟรี coin ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด 2020 jetsadabet หวย ism99 star โค้ด ส ปิ น coin master ฟรี gclub ฟรี 500 2018 สมัคร kiss918 ฟรี เครดิต ซื้อ หวย เว็บ เจ ษ 123 ปอย เปต เครดิต ฟรี สมัคร รับ ทันที take 5 slot ลิ้ ง ฟรี ส ปิ น coin master royal gclub777 สมัคร fan88fun888 ฟรี 300 maxcasino สล็อต ฝาก ถอน ผ่าน true wallet โบนัส เครดิตฟรี แบบไม่ต้องฝากเงิน บา คา ร่า 1688 เครดิต ฟรี casino galaxy 1168 สล็อต happyluke line หมุน ส ปิ น ฟรี coin master ลิ้ ง แจก ส ปิ น เกม coin master เกม ไพ่ โป ก เก อ evolution slot พนัน ปอย เปต slotxo5g ทาง เข้า sbobet168 live casino house ฟรี 300 ปอย เปต 168 jetsadabet ใหม่ วิธี เล่น ไฮโล pantip แจก 300 ฟรี halloween casino สูตร coin master lsm99 up ราคา บอล sbobet วัน นี้ mafia88 สมัคร live casino house ฟรี 300 บาท ไม่ ต้อง ฝาก ก่อน ชนะ ถอน ได้ ทาง เข้า gclub มือ ถือ คา สิ โน โปร โม ชั่ น วัน เกิด ฝาก ผ่าน ท รู วอ เลท ส โบ 168 ทีเด็ดบอล โปร ส ปิ น ฟรี coin master ทาง เข้า fun88 มือ ถือ lsm99 sport lsm99 net สล็อต ยู ฟ่า 191 jetsadabet allnew999 808 casino เกม โป ก เก อ diamond inferno slot บา คา ร่า ไม่มี ค่า คอม สมัคร เค ดิ ต ฟรี แจก ฟรี 100 บาท ไม่ ต้อง ฝาก 918kiss เกม ไหน แตก ง่าย สุด ทีเด็ด ส โบ เบ็ ต ทาง เข้า royal gclub empire777 คา สิ โน ออนไลน์ ฟรี เครดิต 300 บาท ยี่ กี jetsadabet สมัคร สมาชิก ใหม่ รับ เครดิต ฟรี 100 สูตร coin master ฟรี www999lsm สมัคร สล็อต ฝาก 99 รับ 201 โบนัสพิเศษแทงเสมอ รับเพิ่ม 17,777 บาท ไม่อั้น gclublotto jetsadabet ล่ม เก็บ ส ปิ น coin master สล็อต ถอน ขั้น ต่ํา 100 ww88 สล็อต จี คลับ เล่น ผ่าน เว็บ สล็อต เครดิต ฟรี 500 ถอน ได้ casino 789 888 dragons happyluke โปร โม ชั่ น lsm99 ทาง เข้า sbobet เข้า ไม่ ได้ zig zag 777 casino micro knights slot โบนัส แรก เข้า หิ นิำะ 888 jetsadabet 222 fun88 vip 9k yeti slot สมัคร ยูสเซอร์ ฟรี เว็บ เจษฎา ใหม่ g ครับ 88888 dafabet poker pantip w12 lsm99 info index php login sbobet3333 หวย เจษฎา bbb gclub fun88com จี คลับ คืน ยอด เสีย หลักการ เล่น ไฮโล เว็บ jetsadabet ปิด ถอนเงิน jetsadabet cat slot คา สิ โน เครดิต ฟรี ไม่ ต้อง ฝาก 2020 sbobetnet gclub55555 casino sun เว็บ ปอย เปต ดี ไหม ทาง เข้า ส โบ เบ ท สูตร หวย ยี่ กี jetsadabet royalfever gclub ทาง เข้า sbobet168 9999lsm lsm99 king lsm99 เข้า ระบบ sbobet128 https ufafever com ufabet login final countdown slot ลิ้ ง dafabet fun88 ดี ไหม pantip 918kiss ios เล่น ไม่ ได้ 2020 สล็อต 918 เติม true wallet ไม่มี ขั้น ต่ํา เข้า จี คลับ ไม่ ได้ แจก ฟรี ส ปิ น 2020 coin master potato222 mobile jetsadabet vip 1 คือ จี คลับ เล่น ผ่าน เว็บ คา สิ โน วอ เลท 918kiss สมัคร auto ทาง เข้า บา คา ร่า gclub ทาง เข้า sbobet 365 sbobet ผ่าน มือ ถือ io slot เทคนิค การ เล่น ไฮโล ฝาก ระ ติ๊ บ happyluke สล็อต ทาง เข้า sbobet mobile wm casino เครดิต ฟรี 2020 สล็อต 911 royal888 casino lsm99 สมัคร ทาง เข้า จี new slot 2020 โปร เกม coin master ส ปิ น เจษฎา lotto happyluke ถอนเงิน 888 casino paypal sbobet google sites เค ดิ ต ฟรี วัน นี้ sbobet ninja เกม coin master ส ปิ น ฟรี casino roses โบนัส Free Spin mafia88 สมัคร วิธี ส่ง ส ปิ น เกม coin master sbobet bet365 เติม 100 ฟรี 300 campobet casino คา สิ โน วอ เลท lavagame888 เครดิต ฟรี 819 kiss apk royal1688 casino goliathcasino sbobet online mobile http ab24hr allbetasia com login 918 ios bg casino online gclub md sbobet ca1 ซื้อ หวย jetsadabet gclub บน มือ ถือ JETSADABET สล็อต ออนไลน์ 168 เจต ฏ ดา เบส jetsadabet 111 สมัคร สมาชิก fun88 american poker 90 918kiss login download โค้ด ส ปิ น ฟรี coin master 10 ฟรีสล็อต รับโบนัสสูงสุดถึง 100% jetsadabet วิธี โอน เงิน 918kiss โหลด ballhengheng โบนัสพิเศษแทงเสมอ รับเพิ่ม 17,777 บาท ไม่อั้น วิธี ได้ ส ปิ น ฟรี coin master วิธี ส่ง ส ปิ น เกม coin master สมัคร รับ เครดิต ฟรี ล่าสุด สปินฟรี coin master ฟรีไม่จํากัด leolasvegas ลิ้ ง แจก ส ปิ น เกม coin master ฝาก 1 บาท รับ 100 ล่าสุด 2020 9988gclub สล็อต happy เข้า จี คลับ เทพ เอเชีย ฟรี ส ปิ น gclub10 royal online 1688 slot 918kiss auto โหลด xe88 blaze casino สมัคร รับ เครดิต ฟรี ไม่ ต้อง แชร์ 123 plus casino jetsada จ่าย ลิ้ ง ส ปิ น ฟรี coin master 2020 wwwfun88 tek789 เข้า ไม่ ได้ ฝาก 19 รับ 100 ล่าสุด sbo888 มือ ถือ เข้า จี คลับ สล็อต 168g สมัคร รับ เครดิต ฟรี ล่าสุด ฟรี ส ปิ้ น 555 slot บา คา ร่า คอมมิชชั่น คือ สล็อตออนไลน์ แจก โปร ส ปิ น coin master กลุ่ม เครดิต ฟรี ไม่ ต้อง แชร์ ลิงค์ สํา รอง dafabet ยืนยัน เบอร์ รับ เครดิต ฟรี กลุ่ม เครดิต ฟรี ไม่ ต้อง แชร์ pic5678 คอม GCLUB lsm99 คือ หา ส ปิ น coin master ฟรี โบนัส รี โหลด เครดิต ทดลอง เล่น ฟรี 500 บาท ดาวน์โหลด 981kiss ยืนยัน เบอร์ รับ เครดิต ฟรี joker ฟรี เครดิต ไม่ ต้อง แชร์ สล็อต ทํา เทิ ร์ น sbobetasia online ดาวน์โหลด 918kissauto royal casino v2 918kiss download pc 24 casino online sbobet 666 coin master ส ปิ น ฟรี pantip ทาง เข้า sbobet ล่าสุด ฝาก ขั้น ต่ำ 20 ฟรี 100 สูตร หวย เจษฎา เบ ท casino f1 โปร สล็อต 20 รับ 100 dafabet สํา รอง รับ เพิ่ม ส ปิ น coin master เครดิต คา สิ โน ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 วิน เซอร์ คา สิ โน ปอย เปต happyluke ได้ เงิน จริง ไหม www jetsadabet com เข้า ระบบ gmail เข้า สู่ ระบบ สมัคร fun88 ทำ ลูกเต๋า สล็อต จี คลับ โอน ผ่าน วอ เลท ไม่มี ขั้น ต่ำ สล็อต เครดิต ฟรี เทิ ร์ น 1 เท่า เครดิต ฟรี 100 ไม่ ต้อง ฝาก 2019เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร gclub10 ฝาก 100 ฟรี 100 ถอน ไม่ จํา กัดฟรี เครดิต 100 ไม่ ต้อง ฝาก 2020 happyluke slot ส โบ 222 gclub69 หา เค ดิ ต ฟรี ติดต่อ เอ เย่ น จี คลับ ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด 2020 coin master ส ปิ น ฟรี android sbobet ca1 สล็อต ฝาก ออ โต้ coin master ส ปิ น ฟรี เกมส์ ออนไลน์ ได้ เงิน จริง สมัคร เล่น ฟรี วิธี ส ปิ น ฟรี coin master คา สิ โน ปอย เปต ดี ที่สุด โปร เกม coin master ส ปิ น 99 gclub lsm99online สล็อต 911 เว ป ล็ อ ต โต้ วี ไอ พี ballhengheng kiss777th 918kissapk คลับ มือ ถือ lsm99 sport sbobet game megawins casino แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 แค่ สมัคร คา สิ โน จี คลับ ้ happyluke เว็บ แทง หวย เจษฎา สูตร เพิ่ม ส ปิ น coin master ส โม เบ ท 555 98q gclub168 สูตร คํา น วณ หวย ยี่ กี jetsadabet ดาวน์โหลด 918kiss เวอร์ชั่น ล่าสุด ios gclub 99 dafabet ไว กิ้ ง HappyLuke user gclub sbobet 222 mobile fun88 ทาง เข้า 2019 ฟรี เพิ่ม ส ปิ น coin master pantip สูตร คํา น วณ หวย ยี่ กี jetsadabet sbobet128 wildtornado casino fun888 login night casino ทาง เข้า sbobet24hr gclub1988 โบนัสเครดิตฟรี ไม่ต้องฝาก vegasberry casino เข้า sbobet888 เล่น gclub ผ่าน เว็บ welcome 99 gclub sbobet 359 กระบอง ยี่ กี เว็บ เจ ษ casinò giochi multifly slot mbacc6666 casino coupon หวย jetsada สล็อต มังกร 888 fun555 login gclub55555 sbo333 เข้า ไม่ ได้ โปร ส ปิ้ น เกม coin master สมัคร เค ดิ ต ฟรี ไม่ ต้อง ฝาก
        epicwin slot ทาง เข้า| slot ท รู วอ ล เล็ ต| ทาง เข้า เว กั ส 168| jokerizer| joker1888 net mobile| mafia1688 download| pg auto slot| สล็อต วี 9| สล็อต โบนัส เฮา ส์| slot pg โปร 100| slotxo 55| โหลด เกม มาเฟีย 88| slot โปร วัน เกิด| สมัคร joker game| slotxo ทดลอง เล่น ฟรี| สมัคร fifa1234| เกม สล็อต joker ทดลอง เล่น| เกม ไม่ ต้อง ลงทุน ได้ เงิน จริง| ฝาก 20 บาท รับ 100 วอ เลท| ufa168| เกม ฝาก ถอน ไม่มี ขั้น ต่ํา| fifa55 m| แจก ฟรี สมาชิก ใหม่| pg slot ฝาก 20 รับ 100| ดาวน์โหลด สล็อต 888| เกม ฟรี เล่น ได้ เงิน| สล็อต ไว กิ้ ง| slot พุ ช ชี่| สูตร บา คา ร่า ที่ แม่นยำ ที่สุด| สมัคร สล็อต ได้ เงิน จริง| vegus69 สมัคร| ทาง เข้า slot1234 joker| สล็อต เกมส์ ไหน ดี โบนัส แตก บ่อย joker 2020| เกม สล็อต ไว กิ้ ง| หมุน สล็อต ฟรี 15 ครั้ง| joker gaming vip| slot mafia game| สมัคร เกมส์ สล็อต ได้ เงิน จริง| เล่น 918| สล็อต avenger| epicwin xo| เครดิต ฟรี mafia slot| สมัคร sweet bonanza| เข้า สู่ ระบบ joker| แทง สล็อต ฟรี| สล็อต ผ่าน วอ ล เล็ ต| โจ๊ก เกอร์ เกม 123| ace333auto| slot joker 555| สล็อต ฝาก เงิน ท รู วอ เลท| epicwin slot download| สล็อต เกมส์ ไหน ดี โบนัส แตก บ่อย joker| โจ๊ก เกอร์ ฝาก วอ เลท| ยู ส ทดลอง เล่น slotxo| สล็อต เติม ท รู วอ เลท| hungrypurry888| แท่ง บอล 168| แอ พ pussy888| slot jdb แตก ง่าย| เกม สล็อต พา รวยufabet678| สล็อต ฝาก เงิน ท รู วอ ล เลท| เกม สล็อต ฝาก 1 บาท| ทาง เข้า เล่น joker| ufa 600| slot เครดิต| joker สล็อต ฟรี เครดิต ไม่ ต้อง ฝาก เงิน|