Medeek Wall

We use W,L,C, Flat & sq tube profiles often!

1 Like

Version 2.4.8 - 10.30.2021

  • Added an end cripples option for all window types.

I will probably also need to add in this option for doors and garage doors.

!!! WARNING !!!
This update will require deleting and recreating any window presets. This update will not affect any other preset types (ie. wall, door, garage door etc…)

Version 2.4.9 - 10.31.2021

  • Added an end cripples option for all man doors.
  • Added an end cripples option for all garage doors.
  • Fixed a bug with exterior trim for arched garage doors when the “trim union” option is enabled.

!!! WARNING !!!
This update will require deleting and recreating any door and garage door presets. This update will not affect any other preset types (ie. wall, window etc…)

P.S.
I have also added in this parameter within the global settings so that it can be set their (default) as well.

If you ever want to make unique copies of wall groups created with Medeek, you can’t just copy them. It’ll cause errors if one of the copies is regenerated. According to this post, you need to rename the copied group so it is unique, while also keeping the RECT_WALL_ASSEMBLY keyword in the group instance name.

I need to make several walls unique at once, so I threw together this quick script and it’ll generate unique instance names for all groups in a selection.

To use it, just select all the Medeek wall group copies you want to be made unique, then run this script in your ruby console:

#Select one or more Medeek wall copies. Run script. Walls will be renamed with new timestamps so they will be treated as unique.

def appendInstance()
    model = Sketchup.active_model
    ents = model.entities
    selection = model.selection
    model.start_operation('append instance name', true)
    counter = 0
    selection.each do |entity|
        if entity.is_a?(Sketchup::Group) || entity.is_a?(Sketchup::ComponentInstance)
            time = Time.new
            entity.make_unique
            entity.name = "RECT_WALL_ASSEMBLY_" + time.strftime("%Y%m%d%k%M%S") + counter.to_s
        end
        counter += 1
    end
    model.commit_operation
end

appendInstance()

It follows the same naming format as the Medeek walls, but adds a number at the end, since it’s just a timestamp down to the second and multiple walls are being renamed within the same second. An additional number needed to be added at the end to make sure it was unique.

@medeek would be great for this to be an automatic thing behind the scenes. Whenever a wall group is copied it should automatically be made unique. If I want a wall to be identical I’d nest it in a component. I came across this issue with stairs too.

2 Likes

You are correct the string of numbers the follows the keyword is simply a timestamp, it is completely arbitrary and could be any random string provided it is unique within the overall model and no other wall panel is using it.

Yes, I agree, it would be nice if someone were to copy (SketchUp native tool) a wall panel the new wall panel would be automatically assigned a unique instance name. I have never really given this too much thought since it isn’t too hard to manually change the instance name. However if one is wanting to copy several walls at once I could see the utility in this.

I will give this some thought.

2 Likes

Not the most eloquent, but maybe the easiest and most straight forward is to create a Medeek Move/Copy tool. Mimic all the behavior of the native tool so we already know how to use it, but it gives all Meddek assembly copies unique names in the process.

1 Like

I’m actually thinking about that as well as a mirror tool since I’ve recently had requests for some way to automatically mirror a group of walls all in one fell swoop.

Version 2.5.0 - 11.06.2021

  • Added a rainscreen option for rectangular walls (vertical furring strips).

!!! WARNING !!!
This update will require deleting and recreating any rectangular wall presets. This update will not affect any other preset types (ie. gable wall, shed wall, hip wall, door, window etc…)

This feature has been requested multiple times lately so I thought I might try and get a rudimentary rainscreen feature put together. Note that the current rainscreen module is fairly simple and does not trim around openings. If you want the furring strips to line up with the studs you can set the offset value to 1/2 of the stud spacing (or any other value for a different alignment).

I consider this feature more representational at this point but please give me additional feedback with regards to future improvements or additional options/requirements.

2 Likes

Just wanted to pop on here and share how far you can push these extensions. Now by all means, my end result isn’t anything extreme. It’s some offices with rectangular walls. However, the Medeek plugins have been used here to create “component parts” of a larger whole, so to speak. I’ve modeled half of our warehouse building, and used the plugins for much of the wall structures and concrete, but have had to add a large amount of slabs and all of the structural steel manually. This gives me the baseline structure that I’ve added the new mezzanine offices to. Because none of this is traditional framing or anything close to a residential application, many of the plugins don’t want to work the way I need them to, but with a little persuasion and some “custom” descriptions, I was able to make the magic happen. There are a LOT of acrobatics happening in this example, but it’s all incredibly stable, and most of it remains editable in the plugin. Shoot me any questions you may have about it.

The basic view of the model:
20210196_Level_B_Mezz_Expansion_REV1

A few of my CDs showing details I was able to pull off with the framing/drywall/footings.
20210196_Level_B_Mezz_Expansion_MasterSet2_5.pdf (4.1 MB)

4 Likes

At times I struggle so much - Why won’t a window install? The “rubber banding” will happen to follow the mouse location while hunting to place a window, but nothing happens when you click. Just a test default window that shouldn’t have any problem fitting.

P.S. Edit. It is installing windows, just not cutting them in. X-Ray and Back Edges reveals contents inside the wall.

All the time I’m clicking and thinking nothing is happening, it’s placing something without cutting them in. Odd. Is this a bad setting or a bug? Old settings broken by a recent upgrade?


P.S. Edit: Scrapped the whole file and started a fresh one, and now a test window does install. I suspect maybe old global settings being broken by a new update. Not sure.

1 Like

I’m not sure just yet.

If you recently upgraded you may need to recreate the wall or remove and recreate any window presets you may have depending on how old the version of the plugin was that you upgraded from.

Check to see that there are no blank drop down boxes or parameters in the HTML “Draw Window” menu.

If that is not the problem then turn on the ruby console and duplicate the error. Then post or send me the error codes.

Version 2.5.1 - 11.14.2021

  • Added a horizontal rainscreen option for rectangular walls (horizontal furring/girt boards).
  • Added an option for top and bottom furring/girt boards for horizontal rainscreens.

If you set the top or bottom sizes to “zero - 0.0” then it will eliminate that respective option.

1 Like

In recognition of the overwhelming support I have received from the SketchUp community during 2021 I will be immediately offering 35% off of the mdkBIM bundle price (permanent license) using the coupon code GIVETHANKS21 . (promotion ends Dec. 1, 2021).

This will reduce the bundle price from $280.00 USD to $182.00 USD. This promo code does not apply to any of the extensions purchased separately or to the electrical plugin. The offer also ends on Dec. 1 and no rain checks will issued thereafter.

2 Likes

Version 2.5.2 - 11.15.2021

  • Fixed a bug with exterior trim (corners) for shed walls.
  • Fixed a bug with rectangular wall presets.
1 Like

I’m sorry. I’ve tried the search function here, and can’t find it now: How do you label something inside a Medeek assembly so it survives a regen? Is it CUSTOM at the beginning of the name?

1 Like

It’s way back there.

2 Likes

Thanks. Didn’t think it was 2018!

2 Likes

@medeek , I’m wondering if you can tell me the ruby command to regenerate a Medeek wall? Consider this a low-key request for the beginning of the Medeek Wall API :wink:

Instead of making a feature request, I decided to create my own feature, lol. I’ve come up with a proof of concept utility to help me reconfigure the correct number of jack and king studs AUTOMATICALLY for all doors and windows in the selected Medeek walls. It’s becoming mind-numbing to have to check this schedule manually for every single opening. It configures them according to the structural engineer’s schedule in the plans I’m working on. They have it laid out with logic according to whether it’s an interior/exterior wall and based on the width of the opening.

(They also have different requirements depending on the level of the building the headers are located, but I haven’t gotten that far yet…)

I’ve pretty easily been able to figure out how to grab the attributes I need from the Medeek Wall to check these things and update the jacks and kings for each opening, but I’d love to be able to include the command right in my script to regen the wall so I don’t have to do it manually.

(To use this script, select one or more Medeek walls, then copy and paste this into Ruby console. All jacks/Kings will be reconfigured to conform to the schedule above)

  	def self.jackKing
		model = Sketchup.active_model
		ents = model.entities
		selection = model.selection
		
		#Loop through each group/component
		selection.each do |entity|
          	if entity.is_a?(Sketchup::Group) || entity.is_a?(Sketchup::ComponentInstance)
				#First, we need to grab the attributes we need from the wall
				selDict = entity.attribute_dictionaries
				medeek_wall_param5 = selDict['medeek_wall_param5']
				medeek_wall_param = selDict['medeek_wall_param']

				if medeek_wall_param5 and medeek_wall_param # make sure this is a Medeek wall
					wallType = medeek_wall_param["WALLTYPE"]
					#need to loop through each opening
					medeek_wall_param5.each { | key, value |
						#Door = 5,6 Window = 7,8

						#doorParams = medeek_wall_param5["DOOR1"]
						doorWidth = value[2]
						if key.start_with?('DOOR')
							value[5] = self.choosejacks(doorWidth, wallType)[1]
							value[6] = self.choosejacks(doorWidth, wallType)[0]
						elsif key.start_with?('WINDOW')
							value[7] = self.choosejacks(doorWidth, wallType)[1]
							value[8] = self.choosejacks(doorWidth, wallType)[0]
						end
						entity.set_attribute "medeek_wall_param5", key, value
					}
				end
			end
		end
  	end

  	def self.choosejacks(width, wallType)

  		#Need to toggle which level of building we are on
  		if width <= 42
  			if wallType == "Int-Int"
				jacksKings = [1,3]
			elsif wallType == "Int-Ext"
				jacksKings = [1,2]
			end
  		elsif width > 42 and width <= 72
  			if wallType == "Int-Int"
				jacksKings = [2,4]
			elsif wallType == "Int-Ext"
				jacksKings = [2,2]
			end
  		elsif width > 72 and width < 108
  			if wallType == "Int-Int"
				jacksKings = [2,3]
			elsif wallType == "Int-Ext"
				jacksKings = [2,3]
			end			
		else
			UI.messagebox("Opening too wide")
  		end
  		return jacksKings
  	end

  	self.jackKing
1 Like

Very cool, very cool indeed. I think you now understand the power of the attribute library behind every wall assembly, it is all there and it is open to anyone to read and to modify.

Yes, I need to create an API of my own such that third party developers can do simple tasks such as regenerating walls etc… I will start to work on this right after I finish my update to the column module (overhauling the draw menu and adding a custom library).

You do realize the potential of code like this. Create some icons, add a little bit of code for the toolbar and you now have yourself an extension of an extension. You can then market this as an additional toolset for the mdkBIM bundle and I can also advertise them on my site as well.

The fact of the matter is that there is just too much to do or be done. If others start adding even more functionality to the core functions I have created then this thing really can take off and become something substantial.

2 Likes