Truss Plugin/Extension


I’ve updated my database and shopping cart programming so now you should be able to renew your plugin (license) for the $20.00 renewal fee. You always have the option of purchasing multiple licenses at the full price, and the renewal form allows one to pick which serial number they would like to renew if they have multiple licenses.

It took me about 4 hours to make this work, unfortunately the paypal integration complicated things, that was not anticipated. Now my arm is on fire, good thing I’m going into surgery Thursday, I really need it at this point.


I need to review some of my old files (local residential designs) to get a better idea of timber truss designs but out of curiosity I attempted to manually create a sample timber truss to see how long it took me create one. About an hour into it I had come up with this:

View model here:


  • King Post truss with 4:12 pitch, 12" overhang and 1/4" buttcut, span 28’
  • 6x10 Timbers (TC, BC, King Post)
  • 3/8" Thick Connector Plates
  • 5/8" DIA. Heavy Hex Nuts and Bolts
  • 2 Rows of Bolts
  • 4.5" between rows of bolts
  • 4" bolt spacing between bolts in a row
  • Plates offset from timber by 3/4"
  • Bolts offset from end of plates by 2"
  • Bolts offset from edge of plates by 1.5"
  • No washers

This particular connector plate configuration uses two additional bolts at the apex of the heel plates, many other variations are possible.

Please feel free to comment. This example is just a concept to give me a better idea of the design parameters and issues with this type of truss.


Version 1.7.2 - 12.16.2016

  • Enabled custom layers for roof returns, battens and counter battens.
  • License renewal enabled in Medeek Account Manager.


I like the new addition of the layers, it helps being able to hide certain aspects of the model. This has led me to think it might be useful to somehow implement materials (colors, textures), either at the layer level or based on the geometry (ie. specific color or texture for the I-joist web -> OSB wood).


I’ve tried using the name “Wood OSB” to assign this material to a specific face(s) in my plugin. I must be missing something though since I can’t get it to work. My code is:

I am trying to achieve this effect:

My other issue is how to select the correct face to apply the material to. The plugin first creates the profile of the I-Joist as a face and then pushpull to create the solid group. Somehow I’ve got to figure out how to select the two web faces as shown above and then apply the material only to those two faces (exterior).


you need to add the material.texture to your model first…

then you can find edge faces filtered by your edge height to apply the texture…



You can check face area and or normals.

group.entities.grep(Sketchup::Face).each { |face| }

If you are going to use textures with wood grain then consider creating your joists vertical and then rotate and position the part into place. This way the grain will always be correct. Another benefit is the bounding box will always show the correct length, width and thickness. Simplifies things when you get to BIM.

front facing normal
face.normal[1] <= -0.99

back facing normal
face.normal[1] >= 0.99


Disclaimer: I don’t know Ruby!

Why are you making the I beams a single extrusion? If you made them as top chord, bottom chord, and web, it should be easy to apply a texture to just the web.


here’s a working example if you change the path to the image file…

# first you add a texture to the model
mod = Sketchup.active_model
mats = mod.materials

# add a material name you can use later
osb = mats.add('osb_tex')

# add a texture for the named material it could be in your plugins Resources/Materials Folder
# I downloaded one from

osb.texture = "/Users/johns_iMac/Documents/forum/wildtextures_OSB-board-seamless-texture.jpg"

# to test I just drew a profile with a 9" web height that I then 'pushpull', so then I need to find it...
ents = mod.entities
egdges = ents.grep(Sketchup::Edge)
edges.each do |e|
  next unless e.length == '9"'.to_l 
  # due to the pushpull the last face will the new length face...
  # so add the material to it
  e.faces[-1].material = 'osb_tex'
end; nil



I created a truss 12 feet long with a 7.5" face

area = ‘7.5"’.to_l * ‘144"’.to_l

ent.grep(Sketchup::Face).each{ |face|
face.material = osb if (face.area == area)


Version 1.7.3 - 12.17.2016

  • Added a “Materials” tab within the global settings; Auto material assigment (colors and textures) is now an option.
  • Enabled materials and custom layers for floor trusses and joists.
  • Enabled materials for common trusses: metal plate connectors, lumber, and OSB.

View model here:

A big thanks to those on the SketchUcation and SU board who helped me with the custom materials part of the API, the SketchUp community is a great asset.

By default the metal plate connectors, custom layers and auto materials is turned off in the global settings.

  • Enabled metal plate connectors for floor trusses.

View model here:


Looking through some old plans I’ve managed to dig up I came upon a couple of designs by another engineering firm.

Typically when I’ve dealt with truss designs I always seen a scarf cut on the bottom chord with the top chord remaining un-notched. In this other example the bottom chord is kept intact and the top chord is scarf cut or notched, while still allowing a continuous section to extend for the overhang with a depth equal to at least 1/2 the top chord depth. I think the picture below explains this far better than I can with words:

For MPC trusses I am used to seeing a 1/4" butt cut, however for timber trusses what is more appropriate?

Which method above would go with (arch. and structural reasons)?

View model here:


Plates applied to the top truss:


  • Truss Type: King Post
  • 6x10 TC, 6x8 BC, 6x6 kingpost
  • Plate thickness = 0.25"
  • single row of bolts with two bolts per row.
  • connector plate width = 4.0"
  • Bolt Dia. 3/4"
  • Bolt Edge Distance (timber) = 4.0"
  • Bolt Edge Distance (plate) = 2.0"
  • Bolt Spacing = 4.0"
  • Bolts and Washers not shown.

View model here:


This particular joint on a gambrel attic roof I am finding particularly difficult to plate:

Luckily I have a few samples to use as guides. Given my web configurations at this joint this seems to be the most reasonable method to plate this joint. Note that the plate should touch the interior corner and the exterior of the lower top chord but at the same time not project past the lumber into the spaces. Also the plate is rotated so that it is parallel to the upper top chords pitch.

The algorithm I devised to do this is quite clever I think but can be boiled down to a few concise lines of code:

  [code]  # Plate 2 (Gambrel Left)

x2 = @W2x2 - (mpcyy)/(sin(@Phi2))
y2 = @W2y2
m2 = tan(@Phi2)

x1 = @X2
y1 = @Y2
m1 = tan(@Phi1)

x0 = (y2 - y1 - m2*x2 + m1*x1)/(m1 - m2)
y0 = y1 + m1*(x0 - x1)

xoffset = (mpcxx/2.0)*(cos(@Phi2)) + (mpcyy/2.0)*(sin(@Phi2))
yoffset = (mpcxx/2.0)*(sin(@Phi2)) - (mpcyy/2.0)*(cos(@Phi2))

mpcx = x0 + xoffset
mpcy = y0 + yoffset
mpcrot = -@Phi2
MedeekMethods.metal_plate mpcx, mpcy, mpcxx, mpcyy, mpcrot, "PLGL"

# Plate 2 (Gambrel Right)

mpcx = @X5 - mpcx
mpcy = mpcy
mpcrot = @Phi2
MedeekMethods.metal_plate mpcx, mpcy, mpcxx, mpcyy, mpcrot, "PLGR"[/code]

This joint has been the most difficult so far, everything else has been cake.


Version 1.7.4 - 12.20.2016

  • Enabled metal plate connectors for gambrel attic trusses.

View model here:


Version 1.7.5 - 12.24.2016

  • Enabled metal plate connectors for valley truss sets.
  • Enabled materials and custom layers for valley truss sets.

Merry Christmas to all.


Version 1.7.6 - 12.26.2016

  • Enabled metal plate connectors for monopitch trusses.
  • Enabled materials and custom layers for monopitch trusses.

View model here:


Version 1.7.7 - 12.31.2016

  • Enabled materials and custom layers for gable, hip, shed, TJI and dutch gable rafter roofs.


Version 1.7.8 - 01.02.2017

  • Enabled materials and custom layers for gable dormers.
  • Added advanced options for gable dormers, enabled exterior wall sheathing option.

View model here: