1. <nav id="cbhj"></nav>

    <tr id="cbhj"><span id="cbhj"><option id="cbhj"></option></span></tr>
    <nobr id="cbhj"><th id="cbhj"><big id="cbhj"></big></th></nobr><var id="cbhj"></var><nav id="cbhj"></nav>
    <nav id="cbhj"><listing id="cbhj"></listing></nav>
    <tr id="cbhj"><source id="cbhj"><option id="cbhj"></option></source></tr>
    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
     
    sboibc888 มือ ถือ สมัคร บอล ออนไลน์ ฟรี happyluke casino review แอ ป ฟรี ส ปิ น coin master แอ พ ส ปิ น ฟรี ก dafabet doxxbet casino online ทาง เข้า ส โบ 8888 สมัคร เค ดิ ต ฟรี ลิ้ ง dafabet เว็บ ส ปิ น ฟรี coin master fun88a royal casino beer777 ฝาก gclubauto playigo casino poker black jack 918kiss33 ดาวน์โหลด สล็อต ออนไลน์ แจก เครดิต ฟรี 10 casino เครดิตฟรีแค่สมัคร เกม โป ก เกอร์ ออนไลน์ bestbetting casino lsm99 game ทาง เข้า sbobet cz ส ปิ น coin master ฟรี mafia รับ เครดิต ฟรี ทาง sbobet888 เกม ออนไลน์ v2 โกง ส ปิ น ใน coin master ทาง เข้า sbobet 365 ส โม เบ ท 555 happyluke เครดิต ฟรี แอ ปรับ ส ปิ น ฟรี coin master อยาก ได้ ส ปิ น ฟรี coin master ฝาก 1 บาท รับ 100 ล่าสุด 2020 เค ดิ ต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร ปอย เปต บา คา ร่า ออนไลน์ sbobet128 marathon casino ufa casino 55 poker online เล่น กับ เพื่อน สูตร coin master ฟรี 918kiss เกมส์ ไหน ดี แตก ง่าย เค ดิ ต ฟรี วัน นี้ enerdzi casino ทาง เข้า ส โบ เบ็ ต มือ ถือ ส โบ้ เบ็ ต 4579 ล็ อ ต โต้ www99lsm สมัคร sbocopa ทาง เข้า royal casino mister casino will's casino เว็บ ปอย เปต pantip sbobet777 pc ลิงค์ lsm facebook fun88 ทีเด็ด บอล ส โบ เบ็ ต poker black jack 918kiss เทิ ร์ น 1 เท่าdafabet ฟรี 300 2019 เจษฎา เบ ท vip ส ปี ด บา คา ร่า s15 gclub5555 เอเย่นต์ จี คลับ joker ฟรี เครดิต ไม่ ต้อง ฝาก 2020 ลิ้ ง ส ปิ น ฟรี coin master ล่าสุด ฟรี ส ปิ น coin master ios best casino slots bingo & poker 7 diamonds casino gemix casino lsm99 mobi เว็บ ปอย เปต พัน ทิป ล๊ อ ต โต้ วัน jetsadabet ดี ไหม pantip 2016 ราคา ancient egypt slot joker ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ทาง เข้า เว็บ sbobet เว็บ ปอย เปต พัน ทิป เพิ่ม ส ปิ น coin master pantip ฟรี สล็อต ไม่ ต้อง ฝาก สมัคร fun88 casino bronze ทาง เข้า ส โบ เบ็ ต 888 casino 3d 999lsmcom โบนัส แรก เข้า สล็อต เติม 10 ได้ 100 wm casino 555 join slot กำถั่ว จี คลับ เกม ไพ่ 21แอ พ เกม ไฮโล ได้ เงิน จริง tiki fruits จี คลับ คา สิ โน ออนไลน์ เค ดิ ต ฟรี 500 ballhengheng เกม บิงโก ยอด ฮิต ทาง เข้า lsm65 bilion casino slot 333 jetsadabet 222 live22 ios 2020 sbobet euro 918kiss ไอ โฟน ทาง เข้า fun88 pc โบนัสฝากเงินครั้งแรก 108% สูงสุด 5,000 บาท 666 poker 1688 gclub แอ พ เล่น ไฮโล take 5 slot แจ็ ค พอ ต gclub pay slot เว็บ แทง หวย jetsadabet มือ ถือ sbobet888 beer777 โค้ด ส ปิ น coin master ล่าสุด sbobet m บิงโก หมุน fa fa fa slot happyluke สมัคร happy live22 ทาง เข้า 24sbobet fun888 ทาง เข้า มือ ถือ sbo128 เข้า ไม่ ได้ happyluke 888 การ เล่น ไพ่ โป๊กเกอร์ k9win ทดลอง หวย เจษฎา เบ ท โค้ด ส ปิ น coin master ฟรี sbo888 มือ ถือ จี คลับ ฟรี คา สิ โน ออนไลน์ ปอย เปต wm88 casino เกมสล็อต ตัวแทน royal casino poipet 888 168 gclub เว ป ล็ อ ต โต้ วี ไอ พี lms99 online 918kiss download 2019 ios 3win8 ฟรี เครดิตฟรี เครดิต 100 ไม่ ต้อง ฝาก ฝาก 100 ฟรี 100 ถอน ไม่ จํา กัดฟรี เครดิต 100 ไม่ ต้อง ฝาก 2020 โบนัสเว็บพนันออนไลน์ ฝาก เงิน fun88 เครดิต ฟรี winsor ทาง เข้า sbothai8 happyluke info ทาง เข้า sbo999 gclub plus ทาง เข้า เล่น จี คลับ ส ปิ น ไม่ จํา กัด coin master โกง ส ปิ น ใน coin master สมัคร รับ เครดิต ฟรี 2020 mafia 500 slot สูตร หวย ยี่ กี jetsadabet jetsadabet สูตร 2562 วิธี ส ปิ น ฟรี coin master ufa แจก เครดิต ฟรี 100 ไม่ ต้อง ฝาก แอ พ เล่น poker mafia88 gaming แค่ สมัคร ก็ รับ เครดิต ฟรี ล่าสุด 588ws สมัคร สมัคร บอล ฟรี เครดิต ราคา ไหล sbobet โบนัส ไม่ ต้อง ฝาก เงิน โปร โม ชั่ น pussy888 ่ jetsadabet lsm99 เว็บ ตรง lsm99 อัพเดท ล่าสุด k9win สล็อต สล็อต วอ ล เลท jackpotxo3 wildslots casino เข้า จี คลับ ทาง เข้า sbobet online สมัคร ยูสเซอร์ ฟรี รับ ส ปิ้ น coin master หวย เจต ส ดา เล่น บา คา ร่า จี คลับ เล่น สล็อต pantip แจก ส ปิ น ฟรี coin master วัน นี้ ตัว วาง บิงโก รับ เพิ่ม ส ปิ น coin master euromania online casino เข้า ไม่ ได้ sbobet poipet คา สิ โน ทาง เข้า sbobet789 สล็อต เครดิต ฟรี 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ gclub คา สิ โน k9win ทดลอง เล่น โป ก เกอร์ ออนไลน์ ฟรี ปอย เปต 289 gclub next เครดิตฟรีไม่ต้องฝากไม่ต้องแชร์ ปอย เปต 147 wwwbeer789 บา คา ร่า ไม่มี ค่า คอม casino muchbetter ทาง เข้า เว็บ gclub gclub god วิธี เอา ส ปิ น coin master gclub call สมาชิกใหม่ ฝากครั้งแรก รับโบนัส 150% บา คา ร่า ทํา เทิน สล็อต เครดิต ฟรี ล่าสุด 2020 ไพ่ แบ ล็ ค แจ็ ค วิธี เล่น ่ lsm99 สล็อต w88 เว็บ ส โบ เบ ท คา สิ โน ออนไลน์ จี คลับ แค่ สมัคร ก็ รับ เครดิต ฟรี ล่าสุด jetsadabet 777 918 download ios sbobet189 empire777 คา สิ โน ออนไลน์ ฟรี เครดิต 300 บาท play jojo casino 918kiss เทิ ร์ น 1 เท่าdafabet ฟรี 300 2019 gold vip casino รู น rov แทง ค์ sbobetsh 777 mafia88 gaming ส ปิ น ฟรี coin master ล่าสุด k9win สมัคร เล่น บา คา ร่า จี คลับ เค ดิ ต ฟรี 50 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ สล็อต ฝาก 20 บาท ได้ 100 ล่าสุด ดาวน์โหลด mega888 ล่าสุด โป็ ก เกอร์ jetsadabet777 ism99 สล็อต ทุน ฟรี รู น แทง ค์ rov ism99 star jetsadabet ฝ สล็อต เครดิต ฟรี 500 ถอน ได้ สมัคร fin88 เกม coin master ส ปิ น ฟรี โบนัสฟรีเคดิต gclub466 jetsadabet pantip รีวิว jetsadabet 555 ลิงค์ สํา รอง dafabet เค ดิ ต ฟรี 300 ล่าสุด หวย jetsadabet ทาง เข้า ส โบ เบ็ด วิธี เก็บ ส ปิ น coin master รู น แทง ค์ โปร เกม coin master ส ปิ น สมัคร 918kiss ท รู วอ เลท หมุน วง ล้อ รับ เครดิต ฟรี casino havana th9 casino เว็บ jetsada สมัคร lsm99 ทาง ไลน์ แจกเครดิตฟรี 300 ไม่ต้องฝาก2020 บิงโก ส ป ริ้น ฟรี coin master เล่น จี คลับ มือ ถือ แจก ฟรี 100 ไม่ ต้อง แชร์ 365 slot ฝากเงินครั้งแรกรับโบนัส 200% สูงสุด 8,000 บาท fun88 asia jetsadabet 999 รอยัล v2 jetsadabet โกง slot777 casino แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2563 9 ล็ อ ต โต้ 918 slot auto royal live casino sbobet เข้า ไม่ ได้ เค ดิ ต ฟรี วัน นี้ CASINO รู น แทง ค์ doyser fan88 ล็อกอิน เว็บ แจก ส ปิ น coin master ้ happyluke 9988 gclub sbobet168 เข้า ไม่ ได้ เข้า เล่น จี คลับ 168 คา สิ โน ปอย เปต 777 gclub ฟรี 15 โหลด 981kiss ทาง เข้า royal gclub สมัคร sbobet ตรง 168galaxy slot ทาง เข้า เว็บ lsm inferno star lsm99online สมัคร เว็บ หวย เจ ษ ฏา เบ ท neonvegas casino gclubgroup ส ปิ้ น ฟรี coin master ios casino joker online angel88 สล็อต beer777 pc โปร ส ปิ น coin poipet โปร โม ชั่ น ct855 live casino gclub87 หา เค ดิ ต ฟรี สมัคร scr888 ฟรี เครดิต happyluke ดี ไหม 918kiss สมัคร auto thai poker pro เว็บ หวย jetsada ทาง เข้า lsm999 โปร ส ปิ น coin master ไม่ จํา กัด สมัคร คา สิ โน ปอย เปต king joker slot super high roller รอยัล คา สิ โน 88 บา คา ร่า ไม่มี คอมมิชชั่น คือ w99 casino lsm99bet สล็อต ฟรี เครดิต 100 2020 วิธี ส ปิ น coin master ฟรี line happyluke 88 สล็อต fun88 ทาง เข้า 2018 วัน นี้ fun88 ทาง เข้า 2019 ฟรี gclub555 ฝาก ขั้น ต่ํา 50 บาท สล็อต แจก เครดิต ฟรี ไม่ ต้อง ฝาก 2020 fun88 affiliate เครดิต ฟรี สล็อต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ ฮ อ ลิ เดย์ พา เล ซ ปอย เปต สล็อต ออนไลน์ แจก เครดิต ฟรี สมัคร ใหม่ รับ เครดิต ฟรี ทันที 2020 เข้า sbobet มือ ถือ ไม่ ได้ poipet โปร โม ชั่ น happyluke ยิง ปลา coin master เพิ่ม ส ปิ น gladiator jackpot ufa แจก เครดิต ฟรี 100 ไม่ ต้อง ฝาก ลิ้ ง แจก ส ปิ น ฟรี coin master โป้ ก เก อ dafabet pc sboibc888 ทาง เข้า เครดิต ฟรี ไม่ ต้อง เท ริน ล็ อ ต โต้ 77 เข้า agent sbobet ไม่ ได้ beer555 mobile สมัคร สมาชิก sbobet แอ ป ล็ อ ต โต้ วี ไอ พี แจก ส ปิ น coin master ฟรี แจก โปร ส ปิ น coin master gclub free poker 5 ใบ โบนัสฟรีสปิน 918kiss download 2020 สมัคร เอ เย่ น sbobet 918kiss เติม เงิน วอ เลต ล่าสุด 2019 เล่น จี คลับ ผ่าน เว็บ บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น ป๊อก เด้ง เครดิต ฟรี ไม่ ต้อง ฝาก หา ฟรี ส ปิ น coin master sbobet google sites เล่น poker online night casino ho688 casino potato222 เจษฎา หวย ออนไลน์ อยาก ได้ ส ปิ น เยอะ ๆ coin master jetsada online เล่น บา คา ร่า จี คลับ สล็อต 918kiss ฟรี เครดิต ไม่ ต้อง ฝาก ล่าสุด 2019 freebet casino sbobet129 ทาง เข้า gclub88888 สมัคร บอล ฟรี เครดิต tournament bonus ไฮโล ออนไลน์ ไม่มี ขั้น ต่ำ jetsadabet lotto sbo333 มือ ถือ lsm99 ทดลอง บิงโก ราคา วิธี เอา ส ปิ น coin master ฟรี bocasino 88 รับ 300 sbobetnet joker ฟรี เครดิต ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ jetsadabet 555 แจก ส ปิ น coin master ล่าสุด winner55 สล็อต เล่น royal online v2 ทาง เข้า sbo365 โบนัสแรกเข้า คา สิ โน ฟรี เครดิต ไม่ ต้อง ฝาก 2020 casino lucky 7 สมัคร agent sbobet lux casino gclub god coin master ส ปิ น ฟรี ios sbobet128 ทาง เข้า sbobet เข้า ไม่ ได้ mega joker casino ไลน์ gclub ไฮโล ออนไลน์ ไม่มี ขั้น ต่ำ เค ดิ ต ฟรี วัน นี้ เหรียญ coin master ฟรี สมาชิกใหม่ลงทะเบียนเพื่อรับโบนัส แรกเข้า gclub 2 wm casino 555 sboibc888 มือ ถือ lsm99 center joker allbet24hr สล็อต 2020 ล่าสุด เครดิต ฟรี 100 ไม่ ต้อง ฝาก 2019เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร sbobet 789 เครดิต ฟรี 300 2020 ไฮโล ออนไลน์ ไม่มี ขั้น ต่ำ ace333 ฟรี เครดิต 2019 เครดิต คา สิ โน ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ 2020 เค ดิ ต ฟรี ไม่ ต้อง แชร์ โค้ด รับ ส ปิ น ฟรี coin master ล็ อ ต โต้ วี ไอ พี เข้า ระบบ ถอนเงิน fun88 mysterious slot mafia55 สมัคร sbobet ทีเด็ด เว็บ พนัน บอล sbobet jetsadabet vip ไว กิ้ ง อัน ลี ช dafabet jetsadabet 168 ww77 casino เอา ส ปิ น coin master ฟรี สมัคร lsm99 สล็อต ฟรี 300 แจ กลิ้ง ส ปิ น ฟรี coin master mbacc6666 com double u casino free chip sbobet25 หวย เจษฎา เบ ท fun888 ทาง เข้า มือ ถือ อัพเดท ล่าสุด fun888 login cashapillar 918kiss เกม ไหน แตก ง่าย สุด all casino บา คา ร่า ฟัน 88 ล็อกอิน เว็บ เจษฎา shufflemaster blackjack กำถั่ว จี คลับ laossbobet ทาง เข้า รอยัล คา สิ โน m beer 777 ถอนเงิน jetsadabet ไม่ ได้ gclubgroup จี คลับ ผ่าน เว็บ รู น แทง ค์ ถึก ๆ ถอนเงิน jetsadabet ไม่ ได้ gclub casino มือ ถือ ufabet slot casino zeppelin micro knights slot โปร ฟรี ส ปิ น coin master สปินฟรี coin master pantip slot machine cleopatra coin master เพิ่ม ส ปิ น jetsadabet 555 หวย เจษฎา 1688 บา คา ร่า ไม่มี ค่า คอม gransino casino ปอย เปต 977 lsm99s เข้า gclub ไม่ ได้ 855 casino ทาง เข้า sbo365 fun88 ทดลอง เล่น ส โม เบส 888 gclub44 auto dafabet พัน ทิป ส ปิ น ฟรี coin master ฟรี doxxbet casino online เว็บ ปอย เปต pantip สูตร เพิ่ม ส ปิ น coin master เล่น จี คลับ มือ ถือ casino wm 9988gclub ฟรี ส ปิ้ น สล็อต 918kiss ฟรี เครดิต ไม่ ต้อง ฝาก ล่าสุด 2019 เจต ฏ ดา เบส 918 ios i slot ทาง เข้า fun88 2020 www fun888 slot lsm99 ติด ตั้ง 918kiss ios แอ พ แจก ส ปิ น เกม coin master เข้า ส โบ เบ็ ต ไม่ ได้ joker 888 slot ทาง เข้า fun555 สมัคร รับ เครดิต ฟรี 2020 fun88 เข้า ไม่ ได้ ทาง ส โบ เบ็ ต แจก ฟรี ส ปิ น coin master fun788 ทาง เข้า เว็บ โป๊กเกอร์ รอยัล คา สิ โน ออนไลน์ หวย เจต ส ดา โปร ส ปิ น coin master ไม่ จํา กัด casino crazy time เว ป ล็ อ ต โต้ 666 poker เครดิต ฟรี joker123 สปินฟรี coin master ฟรี ufa casino 168v1 sbobet888 สมัคร เกม สล็อต ที่ แตก ง่าย slot android โปร เกม coin master ส ปิ น sbobet 666 กระดาษ ลูกเต๋า www fun888 ลำดับ ไพ่ โป ก เกอร์ xoslot168 15 ส ปิ น ฟรี fun888 เครดิต ฟรี luck royal online ios สล็อต ฝาก วอ เลท ไม่มี ขั้น ต่ํา แจก โค้ด ส ปิ น coin master ส ปิ น วัน นี้ line dafabet bocasino เครดิต ฟรี ไม่ ต้อง แชร์ joker วิธี ได้ ส ปิ น coin master ฟรี วิธี ส ปิ น ฟรี coin master fun88 girl sbo888 มือ ถือ slot1688com CASINO รอยัล คา สิ โน เกม poker ออนไลน์ casinomodule วิธี โปร coin master เกม โป๊กเกอร์ ออนไลน์ campobet casino รูป แบบ ไพ่ poker แจก เครดิต ฟรี 300 split casino ล็ อ ต โต้ 999 login jetsadabet mega joker casino เครดิต ฟรี สมัคร รับ ทันที 918kiss apk ล่าสุด เล่น เกม poker online ฟรี ดาวน์โหลด 918kiss android สมัคร 918kiss ท รู วอ เลท เจ ษ หวย mega888tm winner55 แจก 100 ไฮโล ออนไลน์ พื้นบ้าน lsm99 goals 24box casino slotv9 รับ 100 poker online เว็บ ไหน ดี วิธี หา ส ปิ้ น coin master ยืนยันเบอร์ รับเครดิตฟรี เครดิต ฟรี 100 ไม่ ต้อง ฝาก 2019เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร coin master ฟรี ส ปิ น ไม่ จํา กัด fun88 pantip jetsadabet บา คา ร่า หวย ยี่ กี เจษฎา เบ ท casino maxbet casino sbobet live โค๊ ด ส ปิ น coin master 808 casino สล็อต ฟรี เครดิต 100 ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ sbobet168 เข้า ไม่ ได้ tiger casino online เข้า สู่ ระบบ 918kissauto เข้า sbobet มือ ถือ ไม่ ได้ gclub168 ทาง เข้า slot สมัคร ใหม่ ได้ รับ เครดิต ฟรี ไม่ ต้อง ฝาก got slot ทาง เข้า happyluke live22 ฟรี เครดิต ไม่ ต้อง ฝาก 2019 sbobet777 line โบนัสแนะนำเพื่อน mb casino ทาง เข้า sbo888 gclub คา สิ โน gclub png dafabet fun88 sbobet25 รอยัล v2 jetsadabet allnew8888 3win2u casino opera casino ทาง เข้า sbo888 ฝาก gclubauto sbobet444 lsm999 ทาง เข้า มือ ถือ spin 996 casino 333 sbobet โปรโมชั่นฝากเงินครั้งแรก รับโบนัส 100% ฮ อ ลิ เดย์ พา เล ซ ปอย เปต วิธี รับ ส ปิ น ฟรี coin master ios สล็อต ฟรี 300 fun788 มือ สมัคร ใหม่ รับ เครดิต ฟรี ทันที 2020 coin master หา ส ปิ น ฟรี 188bet poker เข้า เว็บ ส โบ เกม 981kiss gclub5555 เกม 981kiss royalonine เค ดิ ต ฟรี ไม่ ต้อง แชร์ sbobet333 หา ส ปิ น ฟรี coin master ts911 สมัคร รับ เครดิต ฟรีเครดิต ฟรี ไม่ ต้อง แชร์ 918 empire777 รีวิว จี คลับ คา สิ โน ทาง เข้า ส โบ เบ็ ต สมัคร poipet ส ปิ น coin master ไม่ จํา กัด ่ jetsada ฟรี ส ปิ น coin master วัน นี้ gclubgroup วิธี หมุน ส ปิ น coin master northern sky slot 5 dragon slot ถอนเงิน sbobet168 royal online v2 มือ ถือ ios ทาง เข้า 24sbobet gclubmember วิธี แทง ไฮโล ให้ ถูก sbobet เว็บ ตรง casino 100 คา สิ โน ฟรี ส ปิ น coin master ส ปิ น ฟรี สล็อต happyluke เครดิต ทดลอง เล่น ฟรี 500 บาท ลิงค์ บา ค่า ร่า ฟรี ส ปิ น coin master วัน นี้ jetsadabet vip 1 คือ gclub mobile android ส ปิ น ฟรี วัน นี้ เครดิต ฟรี joker123 วิธี เล่น ไฮโล pantip 918kiss download 2019 ios blaze casino สมัคร แทง บอล ออนไลน์ ฟรี การ เพิ่ม ส ปิ น coin master high roller poker โหลด 918kiss ios lsm99 ติดต่อ ก ฟ ด ฟิำะ www123vip casino 918kiss login download เกม ออนไลน์ v2 โปร ส ปิ น coin master ไม่ จํา กัด ติด ตั้ง 918kiss ios just casino เว็บ โป๊กเกอร์ เล่น royal online v2 โบนัส แรก เข้า gclub ทาง เข้า มือ ถือ 999 gclub เข้า ส โบ เบ็ ต ไม่ ได้ เข้า เว็บ jetsadabet live22 ฟรี เครดิต ไม่ ต้อง ฝาก 2019 login fun88 สล็อต ที่ แตก บ่อย gclub money ทีเด็ด sbobet casino bronze หา กลุ่ม ไลน์ เครดิต ฟรี สล็อต ค่าย ไหน ดี pantip สล็อต happy ฝาก 1 บาท รับ 100 ล่าสุด 2020 918kiss โหลด ทาง เข้า เว็บ lsm99 โบนัส รี โหลด หิ นิำะ 888 ทาง เข้า เอ เย่ น sbo หา ส ปิ้ น coin master mister bit casino fin88 casino facebook fun88 sbobetwinner lsm99cash ทาง เข้า วิธี ขาย ส ปิ น coin master 918kiss download pc แทง หวย เจษฎา sbobet999 ทาง เข้า 4579 ล็ อ ต โต้ fun88 พัน ทิป เข้า sbobet ล่าสุด สล็อต เครดิต ฟรี ไม่มี เงื่อนไข 918kiss login download jetsadabet 777 ส โบ เข้า ไม่ ได้ แทง ไฮโล พื้นบ้าน beer555 ตัวแทน royal casino แจก ส ปิ น ฟรี coin ยี่ กี เจต sbobet168 เข้า ไม่ ได้ สมัคร สมาชิก 918kiss โบนัส 100 jetsada เข้า สู่ ระบบ สมัคร สมาชิก รับ เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน เว็บ พนัน ออนไลน์ ปอย เปต แอ พ gclub รอยัล คา สิ โน จี คลับ gclub ทาง เข้า jetsadabet new หวย เจต พัน ทิป 808 casino ทาง เข้า sbo365 สมัคร sbo888 ทาง เข้า slm99 ruby888 android วิธี หา ส ปิ น ฟรี coin master ส โบ เบ็ ต 789 โปร โม ชั่ น dafabet บา คา ร่า ไม่ ต้อง ทํา เทิ ร์ น sbobet ios เค ดิ ต ฟรี 500 sky slot ลิ้ ง ส โบ sbobet โปร โม ชั่ น สมาชิก ใหม่ ส ปิ น ฟรี เกม coin master เจ ษ หวย fun88 รีวิว โปร ส ปิ้ น coin master E-Sport โบนัสต้อนรับ 100% สูงสุดถึง 1,000 บาท fun788 มือ ถือ แจก ฟรีสปิน2020 lara croft slot www4 lsm2558 โค้ด รับ ส ปิ น ฟรี coin master ไฮโล น้ำเต้า ปู ปลา ออนไลน์ เข้า ไม่ ได้ sbobet สมัคร ส โบ เบ็ ต 888 ct855 live casino royalonlin แจก เงิน ฟรี 300 918kiss pc สมัคร sbobet777 ส ปิ น วัน นี้ coahuila casino ทาง เข้า sbobet129 sbobet8888 ทาง เข้า gclub คืน ยอด เสีย ทุก สัปดาห์ sky slot lsm99 ฝาก ขั้น ต่ํา fun88 ทดลอง เล่น fun88 ทดลอง เล่น sbobet เข้า xn88 casino 359 sbobet slot1688com สมัคร sbobet168 เว็บ ปอย เปต pantip play 888 casino โปร เกม coin master ส ปิ น ไม่ จํา กัด double u casino free chip ทาง เข้า lsm99 ดาวน์โหลด 918kiss android ลิ้ ง ส ปิ น ฟรี coin master ล่าสุด วิน เซอร์ คา สิ โน ปอย เปต sb0bet888 เว็บ poipet pantip สมัคร lsm9999 ts911 แจก เครดิต ฟรี slot io รับ เพิ่ม ส ปิ น coin master 77gclub go crazy casino 918kiss download pc เครดิต หวย ฟรี เว ป ล็ อ ต โต้ 888 ดาวน์โหลด kiss918 เอ เย่ น lsm99 888sbobet สล็อต ออนไลน์ 168 jetsadabet วิธี โอน เงิน sbobet korea cat slot 918kiss สมัคร สมาชิก ใหม่ วิธี หา ส ปิ น coin master coin master ฟรี ส ปิ น ล่าสุด lsm99 ล่าสุด ส โบ โมบาย gatorama casino สมัคร สล็อต รับ โบนัส ฟรี หมุน วง ล้อ รับ เครดิต ฟรี casino splendido สมัคร live22th poker เงิน จริง android ลิ้ ง ส โบ slot v casino online sbobetasia online fun788 มือ ถือ royal online ios คา สิ โน happyluke แจก ส ปิ น ฟรี coin master poker online ฟรี poker เงิน จริง ios ทาง เข้า sbo365 fun88 ดี ไหม sbobet999 ทาง เข้า ส ปิ น ฟรี coin master ไม่ จํา กัด ทาง เข้า บา คา ร่า จี คลับ บิงโก ราคา กระดาษ ลูกเต๋า เครดิต ฟรี ไม่ ต้อง ฝาก fifa http ab24hr allbet asia com login duell casino ปอย เปต 977 inferno star slot แอ พ ล็ อ ต โต้ วี ไอ พี สมัคร ครั้ง แรก ฟรี เครดิต 2020 918kiss สมัคร ท รู วอ เลท ส ปิ น coin master ไม่ จํา กัด แจก 300 ฟรี double u casino free chip เอา ส ปิ น ฟรี coin master ios jackie casino jetsadabet ใหม่ sbobet beer789 gclub bet fun88 2020 หา ส ปิ น ฟรี coin master ios wild water slot ลิงค์ สํา รอง dafabet duell casino ballhengheng sbobet 158 ลิงค์ รับ ส ปิ น ฟรี coin master ล่าสุด เครดิต ฟรี 100 ไม่ ต้อง แชร์ 2019เครดิต ฟรี ไม่ ต้อง ฝาก ไม่ ต้อง แชร์ แค่ สมัคร บา คา ร่า ปอย เปต สมัคร coin master ส ปิ น ฟรี 2020 ฟรี ส ปิ น coin master ฟรี รับ ส ปิ น ฟรี coin master ไม่ จํา กัด sbobet 188 mega888 auto slot โบนัส free spin fun88 2019 เค ดิ ต ฟรี ถอน ได้ 2020 casino neosurf gclubwin ดาวน์โหลด kiss918 918kiss login download สปินฟรี coin master ฟรีไม่จํากัด bet356 casino sbobetsg mobile ฟรี เครดิต สล็อต ไม่ ต้อง ฝาก รวย ล็ อ ต โต้ ufa casino 168v1 ism99 สมัคร สล็อต เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ sbobet 359 แจก เครดิต ฟรี 500 ไม่ ต้อง ฝาก 2563 เจษฎา หวย ออนไลน์ sbobet347 วิธี โปร coin master เข้า สู่ ระบบ 918kissauto gclub7 micro knights slot spinomenal slots ส ปิ น ฟรี coin master ios ล่าสุด casino elite คา สิ โน ฟรี ส ปิ น แจก ฟรี ส ปิ น เกม coin master fun88 vip mister bit casino live casino house ฟรี 300 เทพ เอเชีย ฟรี ส ปิ น วิธี เล่น ไฮโล pantip จี คลับ 918kiss hack download live22fb โบนัส แรก เข้า เค ดิ ต ฟรี วัน นี้ lsm99 lotto goal club sbobet just casino วิธี ปั่น ส ปิ น coin master coin master ส ปิ น ฟรี 2020 baba slot poker online เล่น กับ เพื่อน วิธี โกง ส ปิ น เกม coin แอ พ แจก ส ปิ น coin master วิธี เล่น ไฮโล pantip 1168 สล็อต 918kiss สมัคร ท รู วอ เลท หา กลุ่ม ไลน์ เครดิต ฟรี gclub casino มือ ถือ ติด ตั้ง 918kiss ios gclub call niki casino สล็อต สมัคร ฟรี ทาง เข้า lsm999 ufa356 com สมัคร สมาชิก ufabet ทาง เข้า fun88 ล่าสุด ฟรี เครดิต mafia หา กลุ่ม ไลน์ เครดิต ฟรี 2ni2 สล็อต สมัคร แทง บอล ฟรี happyluke pantip sbobet 918 เว ป เจษฎา เบ ท pic5678 มือ ถือ สมัคร sbobet mobile ดาวน์โหลด kiss918 918kiss ios เล่น ไม่ ได้ 2020 เว็บ ปอย เปต pantip ฝาก 5 รับ 100 ล่าสุด fbi5836m casino happyluke gclub cash ทาง เข้า gclub87 โบนัสแรกเข้า คี โน คือ โบนัสเครดิตฟรี ไม่ต้องฝาก 918 plus apk ปอย เปต 147 สล็อต โบนัส 200 สล็อต royal online v2 royal online v2 มือ ถือ ios https ab24hr allbetasia com login php สมัคร ใหม่ รับ เครดิต ฟรี ทันที 2020 สล็อต ฝาก ถอน ผ่าน true wallet ไอ ดี ไลน์ lsm99 ufa casino 55 ฮ อ ลิ เดย์ พา เล ซ ปอย เปต spartacus casino gclub558 www99lsm บิงโก แบบ หมุน สมัคร รับ เครดิต ฟรี ล่าสุด sbobet beer777 ฝาก ถอน รอยัล แจก เครดิต ฟรี 300 ไม่ ต้อง ฝาก 2020 แค่ สมัคร หวย เจต พัน ทิป 24sbobet gclubtg ผ่าน เว็บ ทาง เข้า เว็บ 3m phoenix slot ทาง lsm99 lsm99 max เว็บ เล่น blackjack โบนัส Free Spin dafabet ios 918kissauto co gclub md วิธี แทง หวย เจษฎา แจ็ ค พอ ต gclub คา สิ โน เครดิต ฟรี ไม่ ต้อง ฝาก ก่อน 2020 ดาวน์โหลด scr888 เวอร์ชั่น ล่าสุด sky slot royal online v2 8888 agentgclub โบนัส วี ไอ พี ส็ ลอด 888sbobet แจก ส ปิ น coin master ฟรี dafabet poker แจก ส ปิ น coin master ฟรี 918 download ios เข้า สู่ ระบบ jetsadabet k9win สล็อต gclub44 auto บา คา ร่า ทํา เทิน สล็อต เครดิต ฟรี ไม่ ต้อง ฝาก ถอน ได้ เจษฎา lotto ฝาก ขั้น ต่ำ 20 ฟรี 100 แจก เครดิต ฟรี 100 ไม่ ต้อง แชร์ ทาง เข้า sbobet online gclub600 สมัคร ใหม่ รับ เครดิต ฟรี ทันที 2020 lsm99x สมัคร สมาชิก fun88 สปินฟรี coin master ฟรีไม่จํากัด sb0bet วิธี ทํา ส ปิ น ฟรี coin master ส ปิ น coin master ฟรี ดาวน์โหลด mega888 ล่าสุด royal online เข้า ไม่ ได้ jetsadabet เ ส็ ลอด ฟรี ส ปิ้ น lsm2019com สมัคร สล็อต ไม่มี ขั้น ต่ํา โปร ส ปิ้ น เกม coin master daopay casino เค ดิ ต ฟรี ไม่ ต้อง แชร์ ดาวน์โหลด 981kiss sbobet online mobile สล็อต xo236 เว็บ ส ปิ น ฟรี coin master วิธี เอา ส ปิ น coin master ฟรี บา ค่า ร่า ฝาก ออ โต้ คา สิ โน ออนไลน์ ปอย เปต สมัคร 918kiss ท รู้ วอ เลท เครดิตฟรีแค่สมัคร mega888tm
    เล่น ไพ่ป๊อก เด้ง ออนไลน์ ได้ เงิน จริง| สล็อต รวม ทุก ค่าย| joker ล็อกอิน| jokerslot89| รวม เกมส์ ได้ เงิน จริง 2018| สล็อต เครดิต ฟรี joker| pgslot auto| สล็อต roma ทดลอง| slotxo 888th| slot เว็บ ไหน แตก ดี| slot333 สมัคร| สล็อต ใน ไลน์| เล่น ไพ่ป๊อก ให้ ได้ เงิน| ดาวน์โหลด pg| slotjoker เล่น หน้า เว็บ| เกม สล็อต ออนไลน์ pg| ยิง ปลา png| สล็อต ไหน แตก ดี| slot1688 สมัคร| สล็อต 918 เครดิต ฟรี| โหลด เกม ไลน์ 22| สล็อต ผ่าน วอ ล เล็ ต| live22 jackpot 168| ดาวน์โหลด joker123 pc| โหลด สล็อต โจ๊ก เกอร์| โหลด เกม โจ๊ก เกอร์ 99| joker gaming ทดลอง| slot joker 681| joker ทดลอง เล่น ฟรี| เล่น สล็อต ฟรี ได้ เงิน จริง 2018| ดาวน์โหลด เกม pussy| โหลด เกมส์ พุซซี่| สล็อต 888 แตก ง่าย| ค่าย พี จี| mafia slot 88| เว็บ เล่น เกม ได้ เงิน| ถอน ได้ ไม่มี ขั้น ต่ํา| สล็อต ครบ ทุก ค่าย| เกม แคน ดี้ เครดิต ฟรี| โหลด เกมส์ สล็อต 89| โจ้ ก เกอร์ ส ล้อ ต| สล็อต ที่ เติม วอ เลต| สล็อต สมัคร ใหม่ เครดิต ฟรี| สมัคร สล็อต ใหม่| ทดลอง เล่น สล็อต sweet bonanza| ไม่มี ทุน เล่น สล็อต| สล็อต apk| slot joker ทดลอง เล่น ฟรี| joker go slot| agen pg slot| slotxo galaxy| slotxo 989| ทาง เข้า เล่น เกม joker| เกม ทดลอง เล่น joker| joker slot sf| สมัคร สมาชิก โจ๊ก เกอร์| เว็บ สล็อต ที่ ดี ที่สุด 2019| รับ กระสุน ยิง ปลา ฟรี| fifa55 atm| เกม ผล ไม้ ได้ เงิน จริง| สล็อต joker แตก บ่อย| สล็อต กา แล ค ซี่| โจ๊ก เกอร์ 123 net| เล่น joker บน เว็บ| สล็อต ออนไลน์ wallet| แจก เดิมพัน ฟรี รับ ได้ ทันที|