sketchucation logo sketchucation
    • Login
    1. Home
    2. medeek
    3. Best
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    Sketchucation Tools 5.0.7 | Licensing improvements and bug fixes Learn More
    Offline
    • Profile
    • Following 0
    • Followers 3
    • Topics 66
    • Posts 3,444
    • Groups 2

    Posts

    Recent Best Controversial
    • RE: Medeek Wall Plugin

      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:

      Link Preview Image
      Medeek Wall Manual

      favicon

      (design.medeek.com)

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      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:

      wall_su1095_800.jpg

      wall_su1096_800.jpg

      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.

      posted in Plugins
      medeekM
      medeek
    • RE: 3D Truss Models

      Version 3.7.9 - 03.27.2026

      • Enabled the following methods within the Medeek Truss API: scissor_truss_draw.
      • Consolidated the API code so that it is lightweight on extension load.
      • Renamed the following API methods: common_truss_read_attributes, common_truss_get_attribute, common_truss_set_attribute, to the more correct general names: truss_read_attributes, truss_get_attribute, truss_set_attribute.

      Link Preview Image
      Medeek Truss API - Scissor Truss Attribute Library Index

      favicon

      (design.medeek.com)

      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...

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      @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:

      Link Preview Image
      Medeek Wall API Documentation

      favicon

      (design.medeek.com)

      Link Preview Image
      Medeek Truss API Documentation

      favicon

      (design.medeek.com)

      Link Preview Image
      Medeek Foundation API Documentation

      favicon

      (design.medeek.com)

      posted in Plugins
      medeekM
      medeek
    • RE: 3D Truss Models

      Version 3.8.0 - 03.29.2026

      • Enabled the following methods within the Medeek Truss API: attic_truss_draw, cathedral_truss_draw.

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      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.

      favicon

      (help.sketchup.com)

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      Version 4.4.4 - 04.02.2026

      • Enabled the following methods within the Medeek Wall API: wall_draw_perim
      • Enabled "profile cutting" of balusters for vertical and OTP handrails.

      wall_su1098_800.jpg

      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.

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      Version 4.4.5 - 04.05.2026

      • Fixed a bug with the profile cutting of balusters.
      • Enabled a new boolean subtraction algorithm for profile cutting of balusters.
      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      Version 4.4.5b - 04.08.2026

      • Added a tooltip for the Corner Treatment option into the Global Settings, Draw and Edit Wall Menus.

      wall_su1108_800.jpg

      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.

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      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:

      wall_su1109_800.jpg wall_su1110_800.jpg wall_su1111_800.jpg

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      Version 4.4.6 - 04.11.2026

      • Added a "Style 6" (Schlage - Camelot) to the built-in door hardware options.
      • Configured the "Ctrl" hot key within the draw door tool with additional justification options (x-dir).

      Tutorial 84 - Positioning Doors (7:19 min.)

      posted in Plugins
      medeekM
      medeek
    • RE: Foundation Plugin

      Version 2.1.4 - 04.13.2026

      • Enabled quantity 4 and 5 bars of footing rebar for strip footings.
      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      Version 4.4.8 - 04.18.2026

      • Enabled custom components as posts for vertical handrails

      wall_su1119_800.jpg

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      Version 4.4.8b - 04.18.2026

      • Enabled custom components as balusters for vertical and OTP handrails.

      wall_su1121_800.jpg

      Th sub-folder structure is the same as for newel posts, so Tutorial #85 is applicable to balusters as well.

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      Version 4.5.0 - 04.20.2026

      • Enabled custom components as posts for OTP handrails.
      • Enabled "profile cutting" of posts for OTP handrails.
      • Modified the bottom trimming algorithm for balusters to better accommodate complex baluster components.
      • Added one additional ornamental iron baluster into the baluster component library.
      • Added one OTP newel post into the newel post component library: LJ4270_43

      wall_su1129_800.jpg

      wall_su1131_800.jpg

      wall_su1132_800.jpg

      I will readily admit configuring OTP handrails with their associated posts and fittings is a bit tricky, adjusting the various offsets takes a few iterations to really hone things in.

      I appreciate everyone who has pushed me to flesh out the newel post and baluster capabilities. I feel like the stair module is a bit complicated now and perhaps even a bit clunky with so many options and variables but at the same time it is much more configurable and flexible and can I say with these new capabilities more powerful.

      Obviously it would be optimal if I could spend some serious time and create many of the standard balusters and newel posts found in LJ Smith’s general catalog so that the user would have a bevy of options to choose from without having to exert additional effort in creating their own. However, such an undertaking could easily consume two to three weeks and my development time is probably better spent elsewhere at the moment.

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Wall Plugin

      Version 4.5.1 - 04.22.2026

      • Enabled custom components as baluster shoes for vertical and OTP handrails.
      • Added the following (L.J. Smith) baluster shoes into the baluster shoe component library: LI_ALFSH01, LI_ALR010, LI_ALRD201, LI_ALSQ301, LI_ALSQPL1, LI_PROCOL.

      wall_su1135_800.jpg

      wall_su1136_800.jpg

      I took the time today to carefully model a few of these baluster shoes since they are fairly simple geometry and it is always fun to get my hands dirty with some actual modeling and take a small break from the code.

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Stair

      I think I have the post algorithm mostly worked out now. The PTP posts use boolean subtraction against the hand rail since we can't be certain of their contact angle or if they are square, round or some other non-standard geometry (custom components).

      The problem with boolean subtraction is that if you are a dealing with a lot of rail segments and posts it can slow things up a bit. I may have to rethink this or have a way to disable the boolean subtraction for those who prefer performance over cosmetics.

      stair_su020_800.jpg

      stair_su021_800.jpg

      stair_su022_800.jpg

      posted in Plugins
      medeekM
      medeek
    • RE: Medeek Stair

      I've added in an an auto-clearance calculation for the balusters that are adjacent to posts so I think I have that mostly under control now but some additional logic may need to be added depending on feedback from everyone.

      Here is a first look at these various railings with shoerail added.

      stair_su025_800.jpg

      stair_su026_800.jpg

      stair_su027_800.jpg

      stair_su028_800.jpg

      The offset option for each post position allows one to have the shoerail cut by the posts or rest underneath the posts. I'm trying to make this as flexible as possible. Also I created the four standard LJ Smith profiles beyond the very basic rectangular profile.

      Due to the fact that there is quite a bit of boolean subtraction that can happen with the interaction between the posts and the handrail/shoerail combo, regenerating a railing can take a while, especially if it is much more than about five or six segments. I guess its a tradeoff between simplicity and ornate details.

      The only way to squeeze more performance out of the boolean subtraction is to convert it to a more low level C++ routine, I may consider that.

      posted in Plugins
      medeekM
      medeek
    • Medeek Stair

      After some more fiddling with the code and some additional logic, here is an OTP rail with various fittings and various corner conditions:

      stair_su017_800.jpg

      stair_su018_800.jpg

      posted in Plugins
      medeekM
      medeek
    • RE: 3D Truss Models

      Here is a simple schematic of a slightly more convoluted roof to try and understand the methodology a bit better:

      truss_su933_800.jpg

      The two girders in the center of the structure could probably be combined into one larger girder, but maybe it is better to distribute the loads across to trusses instead of one. The shaded areas are the valley sets or overframing required to fill in the voids.

      This design requires 10 main girders and 5 cross girders. Notice how there is a hip truss at each outside corner and a half valley set at each inside corner. When to inside corners are symmetric we end up with a full valley set.

      Based on these patterns that are emerging I might be able to auto place the girders or at least provide an initial placement which then can be further refined by the user.

      posted in Plugins
      medeekM
      medeek
    • 1
    • 2
    • 8
    • 9
    • 10
    • 11
    • 12
    • 11 / 12