Version 2.1.4 - 04.13.2026
- Enabled quantity 4 and 5 bars of footing rebar for strip footings.
Version 2.1.4 - 04.13.2026
Version 4.4.6b - 04.12.2026
Version 4.4.6 - 04.11.2026
Tutorial 84 - Positioning Doors (7:19 min.)
I'm not sure if I want a basement or a second story but this is already bigger than I initially wanted. The water heater (and possibly furnace) will have to live in the basement or second floor (attic). The cut out for the stairs isn't final yet since I don't know what the basement depth might be.
The rectangular outside dimensions is 28'x40', which already puts me at 1,120 sqft for the main level. The bedrooms are quite large, but I prefer larger bedrooms than smaller ones.
Its good for me to use my own plugins once in a while, it helps me find the weak spots or should I say the annoying things about it. One of those things is the placement of doors along a wall when there are other walls that tee into the wall you are trying to place the door into. I need to have some mechanism for snapping or measuring from these other walls. Once can always go back in and adjust or move the doors to fine tune the placement (which is what I had to do) but it does burn too much time. I guess I learn something new everyday.
Most of my time was actually spent trying to space plan and figure out what made sense, its kind of like playing Tetris. For this sort of thing a rough layout tool might be useful, but just the native tools at this stage is adequate for most of it. The biggest aid was using the grid to help me find my way. Once my initial layout was more or less final, I popped in the walls in less than two minutes.
Fussing over the windows and doors probably took another hour, and then another hour grabbing fixtures from another model and placing them and then mocking up the kitchen cabinet layout (counters, sink, range, dishwasher and fridge). At this stage I'm not too worried about rendering or making my fixtures all that amazing, so mostly they were added just to make sure my space planning was still logical.
I don't design houses professionally (I've only ever really designed three actual residences and a few detached garages) so if this design is a bit of a cludge please forgive my lack of experience and designer feng shui. Most of my professional work was as an engineer and to be honest that type of work is less about creativity and more about the numbers. I find this type of work far more challenging and invigorating.

I've been meaning to add in a "Style 6" door hardware option for quite some time. Basically something for your entrance door, and I haven't had a good option for this until now. This low poly entrance hardware and deadbolt (handleset) is loosely modeled after the Camelot series by Schlage. I will include this in the next roll out:

Version 4.4.5b - 04.08.2026

I didn't realize that the term "California Corner" was not well known in the industry. To that end I've added a tooltip for "Corner Treatment" which shows a typical (2x6) California Corner and a U-Corner. Hopefully this further clarifies this parameter for some users who are not familiar with this term. The other corner treatments seem fairly self explanatory.
Version 4.4.5 - 04.05.2026
Version 4.4.4 - 04.02.2026

I'm not sure why I didn't realize I could do this before but I woke up yesterday and I realized that a simple profile could be revolved into the cutting solid (like putting a piece of square stock on a lathe) and then boolean subtracted from the square baluster as shown to give a typical "turned" baluster.
Just so everyone is aware, they should update to this latest release: SU 2026.1.2 because of specific bug fix for the SpaceMouse issue as documented here:
- (Windows) Fixed a crash related to DX12 rendering triggered by orbiting or zooming while using a 3Dconnexion SpaceMouse, notably after using extensions such as Medeek Wall.
@gullfo I gave it the links to the API web pages and told it to study them and from that it was able to use the API fully.
Here are the links I provided ChatGPT:
Version 3.8.0 - 03.29.2026
Here is what I prompted ChatGPT with:
Okay, now that you have helped me actually program most of the Medeek APIs (wall, truss, foundation and floor). I would like for you to attempt to use the API to generate some ruby code I can dump into the console in order to create a simple garage (four exterior walls) with a simple fink truss roof.
I also forgot to add that this should have a slab on grade foundation that measures 24' x 36'. The walls align with the edges of the foundation (outside of framing) and the truss roof will also be 24' x 36'. On the one gable end will be a 16' garage door 84" in height (default, so don't worry about the height. On one of the long walls there should be a regular 36" x 80" door, centered 6' from the corner. On the other long wall a 36" x 48" window (centered on wall) and on the other short wall opposite the garage door wall should also be a 36" x 48" window (centered on the wall). The fink truss roof should be a 6:12 pitch, leave everything else as default.
After one mistake (it put the roof assembly on the ground initially, not sure why it missed that but it did), it produced this piece of code, which I then copied and pasted into the console and hit enter:
model = Sketchup.active_model
ents = model.active_entities
wall_mod = Medeek_Engineering_Inc_Extensions::MedeekWallPlugin::Wall::MedeekMethods
truss_mod = Medeek_Engineering_Inc_Extensions::MedeekTrussPlugin::MedeekMethods
sog_mod = Medeek_Engineering_Inc_Extensions::MedeekFoundationPlugin::Sog::MedeekMethods
# --- helper: run an API call and return the new top-level group it created ---
def capture_new_group(ents)
before = ents.grep(Sketchup::Group)
yield
after = ents.grep(Sketchup::Group)
new_groups = after - before
return new_groups.first
end
model.start_operation('Create Medeek Garage', true)
begin
# ---------------------------------------------------------------------------
# GEOMETRY
# 24' x 36' slab/wall/truss footprint
# Coordinates in inches
#
# Layout:
# SW = (0,0,0)
# SE = (432,0,0)
# NE = (432,288,0)
# NW = (0,288,0)
#
# Walls are drawn counterclockwise around the exterior perimeter so the
# outside of framing aligns with the slab perimeter.
# ---------------------------------------------------------------------------
p0 = [0.0, 0.0, 0.0] # SW
p1 = [432.0, 0.0, 0.0] # SE
p2 = [432.0, 288.0, 0.0] # NE
p3 = [0.0, 288.0, 0.0] # NW
footprint = [p0, p1, p2, p3]
# ---------------------------------------------------------------------------
# 1. Slab-on-grade foundation
# ---------------------------------------------------------------------------
sog_group = capture_new_group(ents) do
sog_mod.sog_draw(footprint)
end
# ---------------------------------------------------------------------------
# 2. Exterior walls
# South wall: p0 -> p1 (36')
# East wall: p1 -> p2 (24')
# North wall: p2 -> p3 (36')
# West wall: p3 -> p0 (24') <-- garage door wall
# ---------------------------------------------------------------------------
south_wall = capture_new_group(ents) do
wall_mod.wall_draw(p0, p1, 'Rectangular', 'Int-Ext')
end
east_wall = capture_new_group(ents) do
wall_mod.wall_draw(p1, p2, 'Rectangular', 'Int-Ext')
end
north_wall = capture_new_group(ents) do
wall_mod.wall_draw(p2, p3, 'Rectangular', 'Int-Ext')
end
west_wall = capture_new_group(ents) do
wall_mod.wall_draw(p3, p0, 'Rectangular', 'Int-Ext')
end
# ---------------------------------------------------------------------------
# 3. Openings
#
# WEST gable wall (24' wall): centered 16' garage door
# wall length = 288", centered opening location = 144"
#
# SOUTH long wall (36' wall): 36" x 80" door
# center placed 72" from SW corner
#
# NORTH long wall (36' wall): centered 36" x 48" window
# wall length = 432", centered opening location = 216"
#
# EAST short wall (24' wall): centered 36" x 48" window
# wall length = 288", centered opening location = 144"
# ---------------------------------------------------------------------------
# 16' garage door on west wall, centered
wall_mod.wall_garage_draw(144.0, 192.0, 84.0, 'Rectangle', west_wall)
# 3' x 6'-8" man door on south wall, center 6' from SW corner
wall_mod.wall_door_draw(72.0, 36.0, 80.0, 'Rectangle', south_wall)
# Centered window on north wall
wall_mod.wall_win_draw(216.0, 36.0, 48.0, 'Rectangle', north_wall)
# Centered window on east wall
wall_mod.wall_win_draw(144.0, 36.0, 48.0, 'Rectangle', east_wall)
# ---------------------------------------------------------------------------
# 4. Fink truss roof over same 24' x 36' footprint, 6:12 pitch
# FIX 1: raise roof to top of walls
# FIX 2: reorder points so gable orientation is rotated 90 degrees
# ---------------------------------------------------------------------------
wall_height = 97.125
tp0 = [0.0, 0.0, wall_height] # SW
tp1 = [0.0, 288.0, wall_height] # NW
tp2 = [432.0, 288.0, wall_height] # NE
tp3 = [432.0, 0.0, wall_height] # SE
truss_footprint = [tp0, tp1, tp2, tp3]
truss_group = capture_new_group(ents) do
truss_mod.common_truss_draw(6.0, 'Fink', truss_footprint)
end
model.commit_operation
puts 'Medeek garage created successfully.'
puts "SOG group: #{sog_group ? sog_group.name : 'not captured'}"
puts "South wall: #{south_wall ? south_wall.name : 'not captured'}"
puts "East wall: #{east_wall ? east_wall.name : 'not captured'}"
puts "North wall: #{north_wall ? north_wall.name : 'not captured'}"
puts "West wall: #{west_wall ? west_wall.name : 'not captured'}"
puts "Truss group: #{truss_group ? truss_group.name : 'not captured'}"
rescue => e
model.abort_operation
puts "ERROR: #{e.class} - #{e.message}"
puts e.backtrace.join("\n")
end
The result was this:


ChatGPT just built (in SketchUp) my new detached garage in under five minutes. It was even offering to modify the windows to sliders and other modifications if I needed to stray from the defaults that I had used.
These AI engines will continue to improve and eventually they may be able to do much more than design a simple four wall structure like this. Things are going to get really interesting in the next couple of years.
Version 3.7.9 - 03.27.2026
As one can see each truss family typically has a unique set of parameters so each will require a separate "draw" method as well as a documented attribute library index. Only about 18 more truss families to go...
I've finally started to tackle the manual for the Wall plugin. There is so much content that needs to be added to these pages that this one will probably take me a few months to complete even if I were to work at it full time. The current organization of this page is probably only temporary as additional items are added it will continue to evolve and probably branch into many separate pages/documents:
Version 1.2.1 - 03.26.2026
Similar to the Wall Draw Perimeter tool Larry Belk requested that I add this method to the API:
This new method accepts either a face or an array of points:

Version 3.7.8 - 03.24.2026
Version 4.4.3 - 03.23.2026
This completes most of the required methods for the Medeek Wall API.
There are other assembly types that I can possibly add in API calls for but I may wait and see what is requested by the userbase before spending too much more time on this. The other assembly types are:
Version 4.4.2b - 03.21.2026