Well, Off I go. Getting a 3D model built to set up tags and understand how to either convert Medeek tags to 5D+ compatible ones (editing them in each Medeek BIM Tool’s global settings:) or seeing how to change the customization in 5D+ to accommodate Medeek’s tag and grouping architecture.
I am trying to basically create a house that utilizes everything that Medeek has to offer and see what I need to tweak to make it all talk together, then there’s Fredo’s integration, haven’t tried it yet.
@medeek see below list of tags: Had AI write some ruby to just write out the tags in the modal If you have time, let me know if I missed any.
I’d like to share some information about how 5D+ helps manage and classify objects using Tags.
1. Flexible Tag Usage
5D+ does not force users to adopt a predefined Tag system. Instead, users can continue using their own Tag structures while still benefiting from the automation features provided by 5D+.
2. Tag Export / Import Capabilities
5D+ allows Tags to be exchanged between projects through two methods:
• Export/Import via Excel, including:
Tag names
Colors
Dash styles
• Export/Import via SketchUp files, including:
Tag names
Colors
Dash styles
Tag textures
Tag textures are especially important for maintaining consistency across template and project files. When importing, textures of Tags with the same name are overridden, helping keep projects synchronized.
3. Mapping Tags to Friendly Names and IFC Classes
5D+ Plus enables users to:
Map existing Tags to more user-friendly names
Organize Tags into categories
Map Tags to IFC classes for BIM workflows and data exchange.
4. Converting Old Tags to New Tags
5D+ Plus also allows users to create mapping rules to convert old Tags into new ones, making it easier to standardize data across legacy projects.
If you want to know more detaits about how to do these with 5D+, just let me know.
SO far I have organized the Medeek tags into the CSI Master format via Ruby from AI:
So I Don't bore you with code
# Organize Tags into CSI MasterFormat folders + separate Annotations
# SketchUp 2021+ required (Tag Folders)
require 'sketchup.rb'
module CSI_TagFolderOrganizer
# ---- Folder names (edit if you want different wording) ----
F_ANNOT = "00 - ANNOTATIONS (Dims/2D/Code/Eng)"
F_03 = "03 - CONCRETE"
F_04 = "04 - MASONRY"
F_05 = "05 - METALS"
F_06 = "06 - WOOD, PLASTICS & COMPOSITES"
F_07 = "07 - THERMAL & MOISTURE PROTECTION"
F_08 = "08 - OPENINGS"
F_09 = "09 - FINISHES"
F_31 = "31 - EARTHWORK"
F_MISC = "99 - MISC / REVIEW"
FOLDERS = [F_ANNOT, F_03, F_04, F_05, F_06, F_07, F_08, F_09, F_31, F_MISC].freeze
def self.ensure_folder(layers, name)
existing = layers.folders.find { |f| f.name == name }
existing || layers.add_folder(name)
end
def self.default_tag?(layers, tag)
default = layers[0] # Untagged
return true if default && default.valid? && tag == default
n = tag.name.to_s
n == "Untagged" || n == "Layer0"
end
# ---- Classification rules ----
# 1) Annotations (always separate, regardless of system)
def self.annotation_tag?(n)
return true if n.start_with?("edge_") ||
n.start_with?("face_") ||
n.start_with?("FredoSection__")
return true if n.end_with?("_2d") ||
n.include?("_dim") || # catches _dim, _dim2, _dim3...
n.end_with?("_code") ||
n.end_with?("_eng") ||
n.end_with?("_hidden") ||
n.include?("_outline") || # outline / outline2
n.include?("_symbol") # symbol / symbol2
false
end
# 2) CSI bucket
def self.csi_bucket_for(n)
# --- Openings (08) ---
return F_08 if n.include?("_door") || n.include?("_window") || n.include?("_shutter")
# --- Finishes (09) ---
return F_09 if n.include?("_gypsum") ||
n.include?("_tile") ||
n.include?("_carpet") ||
n.include?("_hardwood") ||
n.include?("_trim") ||
n.include?("_casing") ||
n.include?("_soffit")
# --- Thermal & Moisture Protection (07) ---
return F_07 if n.include?("_insul") ||
n.include?("_membrane") ||
n.include?("_wrap") ||
n.include?("_underlay")
# --- Masonry (04) ---
return F_04 if n.include?("_cmu")
# --- Concrete (03) ---
return F_03 if n.include?("_conc") ||
n.include?("_slab") ||
n.include?("anchor_bolts") ||
n.include?("holdowns") ||
n.include?("_rebar")
# --- Metals (05) ---
return F_05 if n.include?("_steeljoist") ||
n.include?("_column") ||
n.include?("_beam")
# --- Wood, Plastics & Composites (06) ---
# (All typical framing + sheathing + rim/joist/rafter/truss/plates/headers/etc)
return F_06 if n.include?("_frame") ||
n.include?("_sheath") ||
n.include?("_joist") ||
n.include?("_ijoist") ||
n.include?("_rim") ||
n.include?("_rafter") ||
n.include?("_truss") ||
n.include?("_plate") ||
n.include?("_btmplate") ||
n.include?("_header") ||
n.include?("_king") ||
n.include?("_trimmer") ||
n.include?("_post") ||
n.include?("_block") ||
n.include?("_sill") ||
n.include?("_deck") ||
n.include?("_coverboard")
# --- Earthwork (31) ---
return F_31 if n.include?("fnd_subbase") || n.include?("fnd_drain")
# --- Hardware that isn't concrete-ish ---
return F_05 if n == "door_hw" # (arguable, but sane default)
# --- Catch-all ---
F_MISC
end
def self.target_folder_for(tag_name)
return nil if tag_name == "Untagged" || tag_name == "Layer0"
return F_ANNOT if annotation_tag?(tag_name)
csi_bucket_for(tag_name)
end
def self.run
model = Sketchup.active_model
layers = model.layers
unless layers.respond_to?(:add_folder)
UI.messagebox("Tag Folders require SketchUp 2021+.")
return false
end
model.start_operation("Organize Tags by CSI MasterFormat", true)
folder_objs = {}
FOLDERS.each { |fname| folder_objs[fname] = ensure_folder(layers, fname) }
moved = 0
skipped_default = 0
layers.each do |tag|
next unless tag.valid?
if default_tag?(layers, tag)
skipped_default += 1
next
end
name = tag.name.to_s
bucket = target_folder_for(name)
next unless bucket
target = folder_objs[bucket]
next unless target
if tag.folder != target
tag.folder = target
moved += 1
end
end
model.commit_operation
UI.messagebox("Done.\nTags moved: #{moved}\nDefault tags skipped: #{skipped_default}")
true
rescue => e
model.abort_operation rescue nil
UI.messagebox("Failed:\n#{e.class}: #{e.message}\n\n#{e.backtrace&.first}")
false
end
end
I am realizing that the lable features interact with the names of containers. This is not an editable variable in the Medeek’s Plugins. It can find doors and lable them, but not put any information thats useful on them.
I already have a ready-to-use solution from 5D+ Auto Tag – Tag to Folder.
With just a single click (1), the system automatically executes the predefined automation task based on the configured tag-to-folder mapping rules (2).
The mapping rules can be imported from an Excel file for easier editing, too. (3).
This workflow works in a similar way to the AI-based solution mentioned above, helping users save time and significantly reduce manual operations.
More importantly, all tag settings and mapping configurations can be synchronized across multiple computers as long as they point to the same shared settings file (4).
This allows your entire team to work with one unified system, ensuring consistency and reliability whenever standardized workflows are required.