Please Click on QR code to register for the class MIDTERM Examination
 
Week 10
Week 7
- Material
  Link Textures
 
- File csv format
  Link csv wiki
 
- Ruby Hashes  
Link Ruby
 
- CSI Masterformat and BIM  
Link CSI
 
*******************************
Midterm Examination
Download 2 files 
week51.rb
offset.rb
--------------------------------------
and save into folder C:\QTOOLS\API
Run Sketchup
in Ruby console
load "C:\\QTOOLS\\API\\week51.rb"
*******************************
Midterm Question
 
From menu choose Create building use parameters of yours from above table

Show/Hide Layer for my_column and beam

Delete guides after create building

BOQ mmenu
 
Please Click on QR code to register for the class MIDTERM Examination
 
Notepad++ v.5.5
- Create folder C:\QTOOLS\API\ to store all learning materials
- Link download API
- Unnzip into folder above
- 
 
 
 Goto folder C:\QTOOLS\API\SketchupAPI\npp55\
 Run file C:\QTOOLS\API\SketchupAPI\npp55\npp.5.5.Installer.exe
 Copy file C:\QTOOLS\API\SketchupAPI\ruby.xml
 into folder C:\Program Files (x86)\Notepad++\plugins\APIs\
  
 
Ruby Language References
Link to web siteWeek 4
# load "C:\\QTOOLS\\API\\week4.rb"
#load others rb files
load "C:\\QTOOLS\\API\\week2.rb"
load "C:\\QTOOLS\\API\\week3.rb"
def test
  p "week4"
end
def add_point
 pt = Geom::Point3d.new(10.m,0,0) #create new point
 model = Sketchup.active_model
 model.entities.add_cpoint(pt) #add into model
end
def add_line
 pt1 = Geom::Point3d.new(0,0,0)
 pt2 = Geom::Point3d.new(10.m,20.m,4.m)
 model = Sketchup.active_model
 model.entities.add_line pt1,pt2
end
def add_face
 pt1 = Geom::Point3d.new(0,0,0)
 pt2 = Geom::Point3d.new(10.m,20.m,0)
 pt3 = Geom::Point3d.new(0,20.m,0)
 
 model = Sketchup.active_model
 model.entities.add_face(pt1, pt2, pt3)
end
def add_room
 pt1 = Geom::Point3d.new(0,0,0)
 pt2 = Geom::Point3d.new(4.m,0,0)
 pt3 = Geom::Point3d.new(4.m,5.m,0)
 pt4 = Geom::Point3d.new(0,5.m,0)
 model = Sketchup.active_model
 face = model.entities.add_face(pt1, pt2, pt3, pt4)
 face.pushpull 10.cm
end
def group_add_room
 pt1 = Geom::Point3d.new(0,0,0)
 pt2 = Geom::Point3d.new(4.m,0,0)
 pt3 = Geom::Point3d.new(4.m,5.m,0)
 pt4 = Geom::Point3d.new(0,5.m,0)
 model = Sketchup.active_model
 group = model.entities.add_group
 face = group.entities.add_face(pt1, pt2, pt3, pt4)
 face.pushpull 10.cm
end
def rotate1
 model = Sketchup.active_model; selection = model.selection; entity = selection[0];
 angle = 45.degrees #radians
 vector = Geom::Vector3d.new(0,0,1) #Z axis
 point = Geom::Point3d.new(0,0,0) #origin
 tr_rotate = Geom::Transformation.rotation point, vector, angle
 entity.transform!(tr_rotate)
end
def move1
 model = Sketchup.active_model; selection = model.selection; entity = selection[0];
 #tr_vector = Geom::Vector3d.new(10.m,2.m,0)
 tr_vector = Geom::Point3d.new(4.m,0,0) - Geom::Point3d.new(0,0,0)
 tr_move = Geom::Transformation.translation tr_vector
 entity.transform!(tr_move)
end
def scale1
 model = Sketchup.active_model; selection = model.selection; entity = selection[0];
 xscale = 2
 yscale = 2 
 zscale = 1
 point = Geom::Point3d.new(1.m,0,0) #change ref. point
 tr_scale = Geom::Transformation.scaling point, xscale, yscale, zscale
 entity.transform!(tr_scale)
end
def grid1
 arr_x = [3,4,5]
 arr_y = [6,7]
 point = Geom::Point3d.new(0,0,0)
 ix = 0 
 iy = 0
 arr_x.each{|dx| 
  puts dx; 
  p "======"
 }#arr_x
end
def grid11
 arr_x = [3,4,5]
 arr_y = [6,7]
 point = Geom::Point3d.new(0,0,0)
 ix = 0 
 iy = 0
 arr_x.each{|dx| 
  puts dx; 
  p "======"
  arr_y.each{|dy|
   puts dy; 
   p "*****"
  }#arr_y
 }#arr_x
end
def grid12
 arr_x = [3,4,5]
 arr_y = [6,7]
 point = Geom::Point3d.new(0,0,0)
 ix = 0 
 iy = 0
 point_row = point #ref. point
 model = Sketchup.active_model
 arr_x.each{|dx| 
  puts dx; 
  p "======"
  pt2 = point_row.offset Geom::Vector3d.new(dx.m,0,0)
  model.entities.add_cpoint(pt2) #add cpoint
  point_row  = pt2 #change ref. point to pt2
  
 } #arr_x
end
def grid13
 arr_x = [0,3,4,5]
 arr_y = [0,6,7]
 point_ver = Geom::Point3d.new(10.m,20.m,0)
 ix = 0 
 iy = 0
 point_row = point_ver #ref. point
 model = Sketchup.active_model
 arr_y.each{|dy|
  point_ver = point_ver.offset Geom::Vector3d.new(0,-dy.m,0)
  point_row = point_ver #ref. point
  arr_x.each{|dx| 
   puts dx; 
   p "======"
   pt2 = point_row.offset Geom::Vector3d.new(dx.m,0,0)
   model.entities.add_cpoint(pt2) #add cpoint
   point_row  = pt2 #change ref. point to pt2
   
  }#arr_x
 } #arr_y 
end
def grid14
 arr_x = [0,3,4,5]
 arr_y = [0,6,7]
 point_ver = Geom::Point3d.new(10.m,20.m,0)
 ix = 0 
 iy = 0
 point_row = point_ver #ref. point
 model = Sketchup.active_model
 #model.start_operation( "Make Grid" , true)
 arr_y.each{|dy|
  point_ver = point_ver.offset Geom::Vector3d.new(0,-dy.m,0)
  point_row = point_ver #ref. point
  arr_x.each{|dx| 
   puts dx; 
   p "======"
   pt2 = point_row.offset Geom::Vector3d.new(dx.m,0,0)
   
   make_column1(pt2) #add column
   
   model.entities.add_cpoint(pt2) #add cpoint
   point_row  = pt2 #change ref. point to pt2
   
  }#arr_x
 } #arr_y 
 #model.commit_operation
end
def make_column1(pt) #parameters
 #dimension of Column
 dx = 0.4.m
 dy = 0.3.m
 dz = 3.m
 #create points
 #pt1 = pt
 pt1 = pt.offset Geom::Vector3d.new((dx * -0.5) ,(dy * -0.5),0)  #adjust center point of column
 pt2 = pt1.offset Geom::Vector3d.new(dx,0,0)
 pt3 = pt2.offset Geom::Vector3d.new(0,dy,0)
 pt4 = pt1.offset Geom::Vector3d.new(0,dy,0)
 #create object column
 model = Sketchup.active_model
 group = model.entities.add_group
 face = group.entities.add_face(pt1, pt2, pt3, pt4)
 face.pushpull -dz
 #add layer  
 layer = model.layers.add "my_column"
 #change layer of group 
 group.layer = layer 
end
def count_group
 model = Sketchup.active_model;   
 selection = model.selection;   
 arr = [];   
 selection.each{|entity| arr.push entity } 
 count = 0
 arr.each{|entity| 
  if (entity.class == Sketchup::Group);  
   group = entity; 
   count = count + 1
  end
 }
 p "group count =" + count.to_s
 p ""
end
Week 3
%Steel in building partsSteel in Column
# load "C:\\QTOOLS\\API\\week3.rb" def test p "week3" end def make_column #dimension of Column dx = 0.4.m dy = 0.3.m dz = 3.m #create points pt1 = Geom::Point3d.new(0,0,0) pt2 = pt1.offset Geom::Vector3d.new(dx,0,0) pt3 = pt2.offset Geom::Vector3d.new(0,dy,0) pt4 = pt1.offset Geom::Vector3d.new(0,dy,0) #create object column model = Sketchup.active_model group = model.entities.add_group face = group.entities.add_face(pt1, pt2, pt3, pt4) face.pushpull -dz #add layer layer = model.layers.add "my_column" #change layer of group group.layer = layer end def make_beam #dimension of Column dx = 4.m dy = 0.2.m dz = 0.4.m angle = 0.degrees #rotation angle #create points pt1 = Geom::Point3d.new(0,0,0) pt2 = pt1.offset Geom::Vector3d.new(dx,0,0) pt3 = pt2.offset Geom::Vector3d.new(0,dy,0) pt4 = pt1.offset Geom::Vector3d.new(0,dy,0) #create object column model = Sketchup.active_model group = model.entities.add_group face = group.entities.add_face(pt1, pt2, pt3, pt4) face.pushpull dz tr_rotate = Geom::Transformation.rotation pt1, Geom::Vector3d.new(0,0,1), angle group.transform!(tr_rotate) #add layer layer = model.layers.add "my_beam" #change layer of group group.layer = layer end def move_object #parameters from user prompts = ["dx [m.]" , "dy [m.]" , "dz [m.]"]; defaults = ["1" , "1" , "1"]; input = UI.inputbox prompts, defaults, "Enter dx,dy,dz." #return as array #distance of be move dx = input[0].to_f.m dy = input[1].to_f.m dz = input[2].to_f.m model = Sketchup.active_model; selection = model.selection; entity = selection[0]; tr_vector = Geom::Vector3d.new(dx,dy,dz) tr_move = Geom::Transformation.translation tr_vector entity.transform!(tr_move) end
Week 2
Download file boq1.skp and save in folder C:\QTOOLS\API\Week 1:Basic Sketchup And Ruby API
Objectives:1.Understand Sketchup's basic model concept edge , face, group, component
2.Understand relation between Sketchup model and Ruby API
3.How to count objects ,edges , faces, groups, components, in model with its properties such as length , area
# load "C:\\QTOOLS\\API\\week1.rb" def count_object model = Sketchup.active_model; selection = model.selection; entity = selection[0]; if (entity.class == Sketchup::Edge); edge = entity; p edge end if (entity.class == Sketchup::Face); face = entity; p face end if (entity.class == Sketchup::Group); group = entity; p group end if (entity.class == Sketchup::ComponentInstance); component = entity; p component end endEnd of Week 1

