Rhino Python Lecture 2016 | DAY5
Contents
- User-defined functions
- Practice 1
- The Golden Spiral – User-defined functions
- Class Object
- Practice 2
- Develop Architecture Class 1
- Develop Architecture Class 2
1. User-defined functions
We can define and edit original function in python. It is called User-defined functions. Defining it, you use same algorithm repeatly.We can edit also number and type of argument and return values.

import rhinoscriptsyntax as rs
def UserDefFunc1(a, b):
#Add two values
c = a + b
#return as single value
return c
#Call UserDefFunc1 and Store return value
f1 = UserDefFunc1(5, 6)
#Print value
print f1
def UserDefFunc2(a, b):
#Add two values
c = a + b
#Subtract two values
d = a - b
#return as array
return c, d
#Call UserDefFunc2 and Store return value
f2 = UserDefFunc2(5, 6)
#Print value
print f2[0]
print f2[1]
2. Practice 1
Please send your program data to Shuta by the end of the day
→ Submission is closed.
The Golden Spiral – User-defined functions
Please convert Python code to User-defined functions.

- Argument value
- Start Number of Fibonacci terms
- End Number of Fibonacci terms
- X value of start point
- Y value of start point
- Z value of start point
- Start Number of Fibonacci terms
- Return value
- Rectangle objects
- Arc objects
- Rectangle objects
- Algorithm of drawing The Golden Spiral
import rhinoscriptsyntax as rs roopNum = 10 originPt = [0.0, 0.0, 0.0] for i in range(roopNum): if i == 0 : fn1 = 0 #the initial term of Fibonacci number fn = 1 #the first term of Fibonacci number else: fn = fn1 + fn0 #Fibonacci progression #Print Fibonacci Num print fn #Replacement of data for originPt if not i == 0: if i%4 == 0: originPt[0] -= fn0 elif i%4 == 1: originPt[1] -= fn0 elif i%4 == 2: originPt[0] += fn0 elif i%4 == 3: originPt[1] += fn0 #Drawing Recrangle rec = rs.AddRectangle(originPt, fn, fn) rec = rs.RotateObject(rec, originPt, 90.0*i) #Drawing Arc arc = rs.AddArc(originPt, fn, 90.0) arc = rs.RotateObject(arc, originPt, 90.0*i) fn0 = fn1 #Replacement of data for next step (f0) fn1 = fn #Replacement of data for next step (f1)
3. Class Object
Object-oriented programming (OOP) is a programming paradigm based on the concept of “objects”, which may contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods. A feature of objects is that an object’s procedures can access and often modify the data fields of the object with which they are associated (objects have a notion of “this” or “self”). In OOP, computer programs are designed by making them out of objects that interact with one another. There is significant diversity of OOP languages, but the most popular ones are class-based, meaning that objects are instances of classes, which typically also determine their type.
Many of the most widely used programming languages are multi-paradigm programming languages that support object-oriented programming to a greater or lesser degree, typically in combination with imperative, procedural programming.
ex)Architecture() Class
Architecture Class have 4 variables and 2 functions.If we call them, objects return self data at any time. So They behave in bottom-up, not in top-down.
class Architecture:
#Class initializer
def __init__(self, _name, _architect, _year, _structure):
#Class variable
self.name = _name
self.architect = _architect
self.year = _year
self.structure = _structure
#Class function 1
def ageDifference(self, yourArchi):
ageDif = self.year - yourArchi.year
if(ageDif > 0):
print self.name, "was built after", ageDif, "year(s) after", yourArchi.name, "was."
elif(ageDif < 0):
print self.name, "was built after", -ageDif, "year(s) before", yourArchi.name, "was."
else:
print self.name, "and", yourArchi.name , "are built in same year."
#Class function 2
def compareArchitect(self, yourArchi):
if(self.architect == yourArchi.architect):
print "The architects of", self.name, "and", yourArchi.name, "are same."
else:
print "The architects of", self.name, "and", yourArchi.name, "are not same."
#Create "Architecture" class object
archi1 = Architecture("Villa Savoye", "Le Corbusier", 1931, "RC")
archi2 = Architecture("Farnsworth House", "Mies van der Rohe", 1950, "S")
archi3 = Architecture("Barcelona Pavilion", "Mies van der Rohe", 1929, "S")
#Call "Architecture" class variable
print archi1.name
print archi2.year
print archi3.structure
#Call "Architecture" class functions
archi1.ageDifference(archi2)
archi2.compareArchitect(archi1)
archi3.compareArchitect(archi3)
4.Practice 2
Please send your program data to Shuta by the end of the day
→ Submission is closed.
Develop Architecture Class 1
Please define new class function “compareStructure()” in Architecture() Class.
- class function: compareStructure()
- Argument value: Architecture Class object
- Console output: Display whether two Architecture are the same structure or not.
- Argument value: Architecture Class object
Develop Architecture Class 2
Please define new class value “self.country” and class function “checkContinent()” in Architecture() Class.

- class value: self.country:
- country’s name
- country’s name
- class function: checkContinent()
- Argument value: None
- Console output: Determine continent from self.country, and display result


