Difference between revisions of "workshop01G3:Codefarm"

From CECO
Jump to: navigation, search
(Created page with "__NOTOC__ __NOTITLE__ <div style="height:30px; width: 850px; margin:0px; padding: 0px; padding-top: 20px; border: 0px;"> <div style="float:left; width: 160px; height 30px; b...")
 
 
(4 intermediate revisions by 2 users not shown)
Line 5: Line 5:
 
<div style="float:left; width: 160px; height 30px; border: 1px solid #aaa; margin-right:10px; " align="center">[[workshop01G3:Group|'''Group 3''']]</div>
 
<div style="float:left; width: 160px; height 30px; border: 1px solid #aaa; margin-right:10px; " align="center">[[workshop01G3:Group|'''Group 3''']]</div>
  
<div style="float:left; width: 160px; height 30px; border: 1px solid #aaa; margin-right:10px;" align="center">[[workshop01G3:Objectives|'''Objectives''']]</div>
+
<div style="float:left; width: 160px; height 30px; border: 1px solid #aaa; margin-right:10px;" align="center">[[workshop01G3:Past Experiments|'''Past Experiments''']]</div>
  
<div style="float:left; width: 160px; height 30px; border: 1px solid #aaa; margin-right:10px;" align="center">[[workshop01G3:Prototypes|'''Prototypes''']]</div>
+
<div style="float:left; width: 160px; height 30px; border: 1px solid #aaa; margin-right:10px;" align="center">[[workshop01G3:Present to Future|'''Present to Future''']]</div>
  
 
<div style="float:left; width: 160px; height 30px; border: 1px solid #aaa; margin-right:10px;" align="center">[[workshop01G3:Codefarm|'''Code Farm''']]</div>
 
<div style="float:left; width: 160px; height 30px; border: 1px solid #aaa; margin-right:10px;" align="center">[[workshop01G3:Codefarm|'''Code Farm''']]</div>
Line 15: Line 15:
 
</div><br>
 
</div><br>
  
==Title==
+
==Python BranchingStructure_parametric==
 +
<syntaxhighlight lang="python">
 +
import rhinoscriptsyntax as rs
 +
import random
 +
import scriptcontext
 +
# define a function called drawbranch
 +
# the integer c in the function with a format drawbranch(a,b,c), actually, drawbranch(4,line,4)
 +
# m is a parameter to avoid having to manually change
 +
def drawbranch(x,line,m):
 +
    #introduce possibility to use 'escape' key to avoid computer crash
 +
    scriptcontext.escape_test()
 +
    #define a condition to exit from funtion drawbranch, essentially increasing the i
 +
    if x==0:
 +
        return
 +
    else:
 +
        for i in range (0,m):
 +
            # get start and end points of a starting curve, first curve that will be drawn
 +
            endpt=rs.CurveEndPoint(line)
 +
            srtpt=rs.CurveStartPoint(line)
 +
            #create a vector between the endpoint and the startpoint of the initial curve
 +
            vect=rs.VectorCreate(endpt,srtpt)
 +
            #get 3 random integer which will be used as a degree of rotation for the initial
 +
curve,these vectors will draw the branch
 +
            rnd=random.randint(-35,35)
 +
            rnd1=random.randint(-15,15)
 +
            rnd2=random.randint(-5,15)
 +
            #3D-rotate the vector with values got from random
 +
            vect=rs.VectorRotate(vect,rnd,[rnd1,rnd2,1])
 +
            #add a point at the end of the 3D vector
 +
            ptadd=rs.PointAdd (endpt,vect)
 +
            #add a line between the endPoint of the vector and the newly added point
 +
            line=rs.AddLine (endpt,ptadd)
 +
            #INSIDE THE FOR-LOOP, WRITE A CONDITION FOR ADDING POINTS, BUT ONLY AT THE END OF THE LAST BRANCH
 +
            #IF YOU PROVIDE A LOW NUMBER OF ITERATIONS, IT WILL BECOME RECOGNISEABLE THAT THE CONDITION FOR DRAWING THE LAST BRANCH OF EVERY ITERATION
 +
            #IS WHEN X==1 AND I==THE END OF THE PROVIDED RANGE(m)-1
 +
            if x==1 and i==m-1:
 +
                #if condition is met, add points at the end of the branch
 +
                    e=rs.AddPoint(ptadd)
 +
                    endPoints.append(e)
 +
                    #calling the function THIS IS WHEN THE ACTUAL BRANCH IS DRAWN
 +
            drawbranch(x-1,line,m)
 +
#make a list to store endPoints
 +
endPoints=[]
 +
#provide starting line for the future tree
 +
line=rs.AddLine([0,0,0],[0,0,20])
 +
#calling the function for the chosen values
 +
drawbranch(4,line,3)
 +
#icluding a random seed for variation
 +
rndseed=random.seed(5)
 +
#adding a layer endPoints
 +
rs.AddLayer("endPoints")
 +
#adding PolyLine between points in endPoints
 +
for pt in endPoints:
 +
    rs.ObjectLayer(pt,"endPoints")
 +
rs.AddPolyline(endPoints, None)
  
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ac lobortis nibh. Sed et lectus et dolor convallis sagittis id a sem. Nulla interdum nunc et urna hendrerit at pellentesque risus convallis. Proin a turpis nunc, eu tincidunt arcu. Etiam magna turpis, facilisis id placerat et, congue eu nisi. Vivamus euismod nulla id elit laoreet placerat eu eu nisi. Morbi id libero quam, nec rhoncus diam.
+
</syntaxhighlight>

Latest revision as of 14:30, 4 October 2013



Python BranchingStructure_parametric

import rhinoscriptsyntax as rs
import random
import scriptcontext
# define a function called drawbranch
# the integer c in the function with a format drawbranch(a,b,c), actually, drawbranch(4,line,4)
# m is a parameter to avoid having to manually change 
def drawbranch(x,line,m):
    #introduce possibility to use 'escape' key to avoid computer crash
    scriptcontext.escape_test()
    #define a condition to exit from funtion drawbranch, essentially increasing the i
    if x==0:
        return 
    else:
        for i in range (0,m):
            # get start and end points of a starting curve, first curve that will be drawn
            endpt=rs.CurveEndPoint(line)
            srtpt=rs.CurveStartPoint(line)
            #create a vector between the endpoint and the startpoint of the initial curve
            vect=rs.VectorCreate(endpt,srtpt)
            #get 3 random integer which will be used as a degree of rotation for the initial 
curve,these vectors will draw the branch
            rnd=random.randint(-35,35)
            rnd1=random.randint(-15,15)
            rnd2=random.randint(-5,15)
            #3D-rotate the vector with values got from random
            vect=rs.VectorRotate(vect,rnd,[rnd1,rnd2,1])
            #add a point at the end of the 3D vector
            ptadd=rs.PointAdd (endpt,vect)
            #add a line between the endPoint of the vector and the newly added point
            line=rs.AddLine (endpt,ptadd)
            #INSIDE THE FOR-LOOP, WRITE A CONDITION FOR ADDING POINTS, BUT ONLY AT THE END OF THE LAST BRANCH
            #IF YOU PROVIDE A LOW NUMBER OF ITERATIONS, IT WILL BECOME RECOGNISEABLE THAT THE CONDITION FOR DRAWING THE LAST BRANCH OF EVERY ITERATION 
            #IS WHEN X==1 AND I==THE END OF THE PROVIDED RANGE(m)-1
            if x==1 and i==m-1:
                #if condition is met, add points at the end of the branch
                    e=rs.AddPoint(ptadd)
                    endPoints.append(e)
                    #calling the function THIS IS WHEN THE ACTUAL BRANCH IS DRAWN
            drawbranch(x-1,line,m)
#make a list to store endPoints
endPoints=[]
#provide starting line for the future tree
line=rs.AddLine([0,0,0],[0,0,20])
#calling the function for the chosen values
drawbranch(4,line,3)
#icluding a random seed for variation
rndseed=random.seed(5)
#adding a layer endPoints
rs.AddLayer("endPoints")
#adding PolyLine between points in endPoints
for pt in endPoints:
    rs.ObjectLayer(pt,"endPoints")
rs.AddPolyline(endPoints, None)