# IDK Compilation

**URL:** <https://forums.sketchup.com/t/idk-compilation/234617>\
**Category:** Extensions\
**Tags:** hobby\
**Created:** [July 5, 2023, 8:07am UTC](https://forums.sketchup.com/t/idk-compilation/234617 "2023-07-05T08:07:13Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [July 5, 2023, 8:07am UTC](https://forums.sketchup.com/t/idk-compilation/234617/1 "2023-07-05T08:07:13Z")

</div>

The SU 2023 Outliner has some quirks that sometimes interfere with GTD (Getting Things Done!), as discussed here:

> **Summary**
>
> [([SU Outliner 2023 seems different](https://forums.sketchup.com/t/su-outliner-2023-seems-different/223920))]

One of these matters of funky business is the number of clicks it takes to Rename Groups (the quintuple L-click). Here I’ve tried to create a work-around in the form of a Toolbar extension. The extension creates Groups from selected components and prompts for a New Group Name. This avoids clicking the Group in the Outliner in order to rename the Group. It is also available from the R-click context menu.

Group Namer:

 ![Screenshot 2023-07-05 011931](https://global.discourse-cdn.com/sketchup/original/3X/0/a/0a15097bc3184025cc52e06350f6a80f33dee94d.png)

Select components and press the Group Namer Toolbar button. A Group will be created and a prompt will pop-up asking for a “New Group Name”

 ![Screenshot 2023-07-05 012040](https://global.discourse-cdn.com/sketchup/original/3X/c/6/c685834a93093e8ecc76dc656c7f4ab5e92ca708.png)

Input the new group name and press “Enter” or “OK”.

 ![Screenshot 2023-07-05 012122](https://global.discourse-cdn.com/sketchup/original/3X/b/c/bc99ca181d167c7dd7527edff74b8bddbe7d0797.png)

The new group is then created and can be undone using Undo or Ctrl+z.

 ![Screenshot 2023-07-05 012201](https://global.discourse-cdn.com/sketchup/original/3X/d/b/db2c7ef5952551a614c1873b5104319ad6cd13a8.png)

Context Menu view:

 ![Screenshot 2023-07-05 015237](https://global.discourse-cdn.com/sketchup/original/3X/1/a/1afb612ea20e4fb99090c1f73c576480ae6628e4.png)

For those who might like to try it (Caution… danger… et cetera):

> **Registration Code**
>
> ```ruby
> ###########################################################################
> # Copyright 2023 IDK_Programming
> ########################################################################### 
> 
> # Group_Namer - "As-Is" / "Use at Your Own Risk" Disclaimer
> 
> # By using the [Group_Namer] SketchUp extension ("the Extension"), you acknowledge and agree to the following terms:
> 
> # 1. No Warranty or Guarantee: The Extension is provided "as is," without any warranty, express or implied. The creators, developers, or distributors of the Extension make no representations or warranties of any kind concerning the functionality, accuracy, reliability, or suitability for any purpose of the Extension.
> 
> # 2. Limited Liability: In no event shall the creators, developers, or distributors of the Extension be liable for any damages, whether direct, indirect, incidental, special, or consequential, arising out of the use or inability to use the Extension, including but not limited to damages for loss of profits, data, or business interruption.
> 
> # 3. User Responsibility: You are solely responsible for the installation, use, and consequences of using the Extension. It is your responsibility to evaluate the Extension's compatibility with your specific SketchUp version, system configuration, and other relevant factors.
> 
> # 4. No Support or Maintenance: The creators, developers, or distributors of the Extension are under no obligation to provide support, updates, or maintenance for the Extension. They may, at their sole discretion, offer support or updates, but this is not guaranteed.
> 
> # 5. Indemnification: You agree to indemnify and hold harmless the creators, developers, or distributors of the Extension from any claims, damages, liabilities, or expenses arising out of your use of the Extension.
> 
> # 6. User Acceptance: By installing and using the Extension, you indicate your acceptance of these terms and conditions. If you do not agree with any part of this disclaimer, you should immediately uninstall and cease using the Extension.
> 
> ###########################################################################
> # TESTED IN SKETCHUP Pro 2023 (VERSION 23.0.419 64-BIT) on WINDOWS 11.
> ###########################################################################
> 
> require 'sketchup.rb'
> require 'extensions.rb' 
>     
> module IDK_Programming
> 	
> module IDK_Programming_Group_Namer
> PLUGIN_NAME = "Group_Namer"
> 	
> # Plugin information
> PLUGIN_ID = File.basename( __FILE__ , "Main.rb") 
> PLUGIN_ROOT = File.dirname( __FILE__ )
> PLUGIN_DIR = File.join( PLUGIN_ROOT, PLUGIN_ID ) 
> 
> unless file_loaded?( __FILE__ )
> LOADER = File.join(PLUGIN_DIR, "Main.rb") 
> EXTENSION = SketchupExtension.new( 'Group_Namer', 'IDK_Programming_Group_Namer/Main.rb' )
> EXTENSION.creator = "IDK_Programming"
> EXTENSION.description = "A toolbar extension that creates a component group, with a prompt for a group name."
> EXTENSION.version = "0.1"
> EXTENSION.copyright = "IDK_Programming"
> Sketchup.register_extension(EXTENSION, true)
> 		  
> file_loaded( __FILE__ )
> end
> end
> end
> 
> ###########################################################################
> # Acknowledgements: Useful contributions from SketchUp Community Forum:
> 
> # @DanRathbun
> # @Dezmo
> 
> # Any errors are the author's alone.
> 
> ```

> **Main**
>
> ```auto
> module IDK_Programming
> module Group_Namer
> extend self
> @@loaded = false unless defined?(@@loaded)
> 
> def create_new_group(selected_entities)
> model = Sketchup.active_model
> 
> # Start a new operation for undo
> model.start_operation('Create New Group', true)
> 
> begin
> # Create a new group
> new_group = model.entities.add_group(selected_entities)
> 
> # Prompt for new group name
> new_group_name = UI.inputbox(['New Group Name'], [''])[0]
> new_group.name = new_group_name
> 
> new_group
> rescue StandardError => e
> puts "Error creating group: #{e.message}"
> model.abort_operation
> else
> # Commit the operation (undo point)
> model.commit_operation
> end
> end
> 
> unless @@loaded
> cmd1 = UI::Command.new("Create and Name Group") { create_new_group(Sketchup.active_model.selection.to_a) }
> cmd1.small_icon = File.join(File.dirname( __FILE__ ), 'Icons/Group-Name.png')
> cmd1.large_icon = File.join(File.dirname( __FILE__ ), 'Icons/Group-Name.png')
> cmd1.tooltip = "Group Namer"
> cmd1.status_bar_text = "Create and name a new group of components using a prompt."
> cmd1.set_validation_proc {
> if Sketchup.active_model.selection.grep(Sketchup::ComponentInstance).first
> MF_ENABLED
> else
> MF_GRAYED | MF_DISABLED
> end
> }
> 
> UI.add_context_menu_handler do |context_menu|
> if Sketchup.active_model.selection.grep(Sketchup::ComponentInstance).first
> context_menu.add_item(cmd1)
> end
> end
> 
> toolbar1 = UI::Toolbar.new("Group Namer.")
> toolbar1.add_item(cmd1)
> toolbar1.restore
> @@loaded = true
> end
> end # module Group_Namer
> end # module IDK_Programming
> 
> ```

[IDK\_Programming\_Group\_Namer.rbz](https://forums.sketchup.com/uploads/short-url/2NfIygIiwGifN6AOwmrJIvEDCEG.rbz) (11.8 KB)

Thanks to those who have previously helped me and provided examples! @DanRathbun @dezmo

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [July 5, 2023, 8:32am UTC](https://forums.sketchup.com/t/idk-compilation/234617/2 "2023-07-05T08:32:37Z")

</div>

I created a little suite of utilities for grouping, naming, and tagging.

This extension adds another prompt after the New Group Name prompt for inputting a New Tag Name that will be created and added to the new group.

Group, Name, and Tag

 ![Screenshot 2023-07-05 031342](https://global.discourse-cdn.com/sketchup/original/3X/8/b/8bd508ed9e62f792a69f658e4f9dcc1d92aec152.png)

Select components and press the Toolbar button to create the New Group and enter the 1st prompt:

 ![Screenshot 2023-07-05 031418](https://global.discourse-cdn.com/sketchup/original/3X/0/7/074d13564e25e6caf8bba8529b0626198335860d.png)

Name the group.

 ![Screenshot 2023-07-05 031451](https://global.discourse-cdn.com/sketchup/original/3X/9/e/9e0213f65b0d9a4971c50f132a3334e2318b3043.png)

The New Group Tag prompt will appear next.

 ![Screenshot 2023-07-05 031514](https://global.discourse-cdn.com/sketchup/original/3X/c/6/c6cc09857c244daaf8d354a96788e1167368b186.png)

Enter a New Group Tag name.

 ![Screenshot 2023-07-05 031533](https://global.discourse-cdn.com/sketchup/original/3X/c/9/c9d67fffb12f0ec4fc7da2d88fa677c7a2a59b0f.png)

Press, “OK” or “Enter”. The newly named group will be created with the new tag applied.

 ![Screenshot 2023-07-05 031609](https://global.discourse-cdn.com/sketchup/original/3X/6/e/6ed21632f1c9c9cdfc9e0df4841c998032b0308b.png)

Also available in the Context Menu. Press Undo or Ctrl+z to undo.

For those who might find this useful (Danger, careful, watch out, etc.)

> **Registration Code**
>
> ```auto
> ###########################################################################
> # Copyright 2023 IDK_Programming
> ########################################################################### 
> 
> # Group_Name_Tag - "As-Is" / "Use at Your Own Risk" Disclaimer
> 
> # By using the [Group_Name_Tag] SketchUp extension ("the Extension"), you acknowledge and agree to the following terms:
> 
> # 1. No Warranty or Guarantee: The Extension is provided "as is," without any warranty, express or implied. The creators, developers, or distributors of the Extension make no representations or warranties of any kind concerning the functionality, accuracy, reliability, or suitability for any purpose of the Extension.
> 
> # 2. Limited Liability: In no event shall the creators, developers, or distributors of the Extension be liable for any damages, whether direct, indirect, incidental, special, or consequential, arising out of the use or inability to use the Extension, including but not limited to damages for loss of profits, data, or business interruption.
> 
> # 3. User Responsibility: You are solely responsible for the installation, use, and consequences of using the Extension. It is your responsibility to evaluate the Extension's compatibility with your specific SketchUp version, system configuration, and other relevant factors.
> 
> # 4. No Support or Maintenance: The creators, developers, or distributors of the Extension are under no obligation to provide support, updates, or maintenance for the Extension. They may, at their sole discretion, offer support or updates, but this is not guaranteed.
> 
> # 5. Indemnification: You agree to indemnify and hold harmless the creators, developers, or distributors of the Extension from any claims, damages, liabilities, or expenses arising out of your use of the Extension.
> 
> # 6. User Acceptance: By installing and using the Extension, you indicate your acceptance of these terms and conditions. If you do not agree with any part of this disclaimer, you should immediately uninstall and cease using the Extension.
> 
> ###########################################################################
> # TESTED IN SKETCHUP Pro 2023 (VERSION 23.0.419 64-BIT) on WINDOWS 11.
> ###########################################################################
> 
> require 'sketchup.rb'
> require 'extensions.rb' 
>     
> module IDK_Programming
> 	
> module IDK_Programming_Group_Name_Tag
> PLUGIN_NAME = "Group_Name_Tag"
> 	
> # Plugin information
> PLUGIN_ID = File.basename( __FILE__ , "Main.rb") 
> PLUGIN_ROOT = File.dirname( __FILE__ )
> PLUGIN_DIR = File.join( PLUGIN_ROOT, PLUGIN_ID ) 
> 
> unless file_loaded?( __FILE__ )
> LOADER = File.join(PLUGIN_DIR, "Main.rb") 
> EXTENSION = SketchupExtension.new( 'Group_Name_Tag', 'IDK_Programming_Group_Name_Tag/Main.rb' )
> EXTENSION.creator = "IDK_Programming"
> EXTENSION.description = "A toolbar extension that creates a component group and tag, with prompts for a group name, and a tag name."
> EXTENSION.version = "0.1"
> EXTENSION.copyright = "IDK_Programming"
> Sketchup.register_extension(EXTENSION, true)
> 		  
> file_loaded( __FILE__ )
> end
> end
> end
> 
> ###########################################################################
> # Acknowledgements: Useful contributions from SketchUp Community Forum:
> 
> # @DanRathbun
> # @Dezmo
> 
> # Any errors are the author's alone.
> 
> ```

> **Main**
>
> ```auto
> module IDK_Programming
> module Group_Name_Tag
> extend self
> @@loaded = false unless defined?(@@loaded)
>   
> def create_new_group_tag(selected_entities)
> model = Sketchup.active_model
>   
> # Start a new operation for undo
> model.start_operation('Create New Group and Tag', true)
>   
> begin
> new_group = create_group(selected_entities)
> assign_group_name(new_group)
> assign_group_tag(new_group)
>           
> new_group
> rescue StandardError => e
> display_error_message("Error creating group: #{e.message}")
> model.abort_operation
> else
> model.commit_operation
> end
> end
>   
> def create_group(selected_entities)
> model = Sketchup.active_model
> model.entities.add_group(selected_entities)
> end
>   
> def assign_group_name(group)
> new_group_name = UI.inputbox(['New Group Name'], [''])[0]
> group.name = new_group_name
> end
>   
> def assign_group_tag(group)
> new_group_tag = UI.inputbox(['New Group Tag'], [''])[0]
> new_layer = create_layer_with_tag(new_group_tag)
> group.layer = new_layer
> end
>   
> def create_layer_with_tag(tag)
> model = Sketchup.active_model
> new_layer = model.layers.add(tag)
> new_layer.color = Sketchup::Color.new(255, 0, 0) # Set layer color (optional)
> new_layer
> end
>   
> def display_error_message(message)
> UI.messagebox(message)
> end
>   
> unless @@loaded
> def create_new_group_tag_command
> create_new_group_tag(Sketchup.active_model.selection.to_a)
> end
>   
> def create_command(title, icon_path, tooltip, status_bar_text, validation_proc)
> cmd = UI::Command.new(title) { create_new_group_tag_command }
> cmd.small_icon = File.join(File.dirname( __FILE__ ), icon_path)
> cmd.large_icon = File.join(File.dirname( __FILE__ ), icon_path)
> cmd.tooltip = tooltip
> cmd.status_bar_text = status_bar_text
> cmd.set_validation_proc(&validation_proc)
> cmd
> end
>   
> CMD = create_command(
> 'Create, Name, and Tag Group',
> 'Icons/Group-Name-Tag.png',
> 'Group, Name, and Tag.',
> 'Create a new named group of components and apply a new tag to the group using prompts.',
> -> {
> selection = Sketchup.active_model.selection
> selection.grep(Sketchup::ComponentInstance).first ? MF_ENABLED : MF_GRAYED | MF_DISABLED
> }
> )
>   
> UI.add_context_menu_handler do |context_menu|
> selection = Sketchup.active_model.selection
> context_menu.add_item(CMD) if selection.grep(Sketchup::ComponentInstance).first
> end
>   
> toolbar = UI::Toolbar.new('Group and Tag names.')
> toolbar.add_item(CMD)
> toolbar.restore
>   
> @@loaded = true
> end
> end # module Group_Name_Tag
> end # module IDK_Programming
> 
> ```

---

<div class="post-metadata">

**Author:** ![ateliernab](https://sea2.discourse-cdn.com/sketchup/user_avatar/forums.sketchup.com/ateliernab/32/198399_2.png) [@ateliernab](https://forums.sketchup.com/u/ateliernab)\
**Post date:** [July 5, 2023, 8:35am UTC](https://forums.sketchup.com/t/idk-compilation/234617/3 "2023-07-05T08:35:12Z")

</div>

moved from gallery to extension, since you’re introducing an extension 😉

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [July 5, 2023, 8:37am UTC](https://forums.sketchup.com/t/idk-compilation/234617/4 "2023-07-05T08:37:43Z")

</div>

I saw your post to someone this evening suggesting making one place for all of the stuff and I though a stuff place I ought to have! Wherever it is… it’s good ;^)!

---

<div class="post-metadata">

**Author:** ![ateliernab](https://sea2.discourse-cdn.com/sketchup/user_avatar/forums.sketchup.com/ateliernab/32/198399_2.png) [@ateliernab](https://forums.sketchup.com/u/ateliernab)\
**Post date:** [July 5, 2023, 8:42am UTC](https://forums.sketchup.com/t/idk-compilation/234617/5 "2023-07-05T08:42:19Z")

</div>

well yes, Royce is posting work in progress and finished designs, so it’s gallery themed. But he is posting a separate (32) thread for every update or new design, hence the advice.

Here you’re showing an extension you made to name stuff, so it belongs in the extension sector. But as of your models and WIP, they are most welcome in the gallery.

It’s a simple matter of “where to look”. If next week someone is looking for a renaming tool, they wont look in the gallery, but they’ll search the extension forum 🙂

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [July 5, 2023, 8:47am UTC](https://forums.sketchup.com/t/idk-compilation/234617/6 "2023-07-05T08:47:12Z")

</div>

Another utility for Naming the Components in a Selected Group:

 ![Screenshot 2023-07-05 033944](https://global.discourse-cdn.com/sketchup/original/3X/f/3/f3f0bd3f14e359ae710f0f31c3c3531da9e3133e.png)

Select Group and press Rename Selected Components in Group Toolbar button.

 ![Screenshot 2023-07-05 034004](https://global.discourse-cdn.com/sketchup/original/3X/1/6/16373b1f29fab18aefa4136e57bf41383b075bca.png)

Enter a name for the components.

 ![Screenshot 2023-07-05 034024](https://global.discourse-cdn.com/sketchup/original/3X/2/d/2ddc9e417f81148924b8671f1cc8f17718c1ba01.png)

Press “Enter” or “OK” to rename the components in the selected group.

 ![Screenshot 2023-07-05 034040](https://global.discourse-cdn.com/sketchup/original/3X/e/0/e0259bc7f7a20757b99eeb86b05e621bfe9e7b8f.png)

> **Main**
>
> ```auto
> module IDK_Programming
> module Rename_Comps_In_Group
> @@loaded = false
> 
> def self.create_new_group(selection)
> model = Sketchup.active_model
> 
> # Check if a group is selected
> if selection.empty? || !selection[0].is_a?(Sketchup::Group)
> UI.messagebox("Please select a group.")
> else
> selected_group = selection[0]
> 
> # Prompt for component name
> prompts = ['Enter a name for the components:', '']
> defaults = ['Component Name']
> result = UI.inputbox(prompts, defaults, 'Component Name')
> 
> if result
> component_name = result.first.strip
> 
> # Start an undoable operation
> model.start_operation('Name Components')
> 
> # Store the previous component names for undo
> previous_names = []
> 
> # Update the component names
> selected_group.entities.grep(Sketchup::ComponentInstance).each do |component|
> previous_names << component.definition.name
> component.definition.name = component_name
> end
> 
> # Commit the operation
> model.commit_operation
> 
> # Define an undo method to restore the previous component names
> model.define_singleton_method(:undo_name_components) do
> selected_group.entities.grep(Sketchup::ComponentInstance).each_with_index do |component, index|
> component.definition.name = previous_names[index]
> end
> end
> 
> else
> UI.messagebox("Operation canceled.")
> end
> end
> end
> 
> unless @@loaded
> cmd_rename = UI::Command.new("Rename components in selected group") { create_new_group(Sketchup.active_model.selection.to_a) }
> cmd_rename.small_icon = File.join(File.dirname( __FILE__ ), 'Icons/Rename-Comps.png')
> cmd_rename.large_icon = File.join(File.dirname( __FILE__ ), 'Icons/Rename-Comps.png')
> cmd_rename.tooltip = "Rename Components in Group"
> cmd_rename.status_bar_text = "Rename components in a selected group."
> cmd_rename.set_validation_proc {
> if Sketchup.active_model.selection.any? { |entity| entity.is_a?(Sketchup::Group) }
> MF_ENABLED
> else
> MF_GRAYED | MF_DISABLED
> end
> }
> 
> UI.add_context_menu_handler do |context_menu|
> if Sketchup.active_model.selection.any? { |entity| entity.is_a?(Sketchup::Group) }
> context_menu.add_item(cmd_rename)
> end
> end
> 
> toolbar_rename = UI::Toolbar.new("Rename Components")
> toolbar_rename.add_item(cmd_rename)
> toolbar_rename.restore
> 
> @@loaded = true
> end
> end # module Rename_Comps_In_Group
> end # module IDK_Programming
> 
> ```

[IDK\_Programming\_Rename\_Comps\_In\_Group.rbz](https://forums.sketchup.com/uploads/short-url/aA9SA4eWkU0Y0zz8ye7rbD6jQbs.rbz) (6.2 KB)

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [July 5, 2023, 8:50am UTC](https://forums.sketchup.com/t/idk-compilation/234617/7 "2023-07-05T08:50:57Z")

</div>

I like looking a Royce’s models and progress. But yes, could/should be a single collection.

Should have named my thread, “IDK -where to put- Compilation”. ;^)

---

<div class="post-metadata">

**Author:** ![Box](https://sea2.discourse-cdn.com/sketchup/user_avatar/forums.sketchup.com/box/32/235164_2.png) [@Box](https://forums.sketchup.com/u/Box)\
**Post date:** [July 5, 2023, 9:08am UTC](https://forums.sketchup.com/t/idk-compilation/234617/8 "2023-07-05T09:08:45Z")

</div>

How about  
’ A repository of extensions I have developed that you may or may not find useful.’

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [July 5, 2023, 9:09am UTC](https://forums.sketchup.com/t/idk-compilation/234617/9 "2023-07-05T09:09:27Z")

</div>

Tag Components in Selected Group.

 ![Screenshot 2023-07-05 040439](https://global.discourse-cdn.com/sketchup/original/3X/2/c/2cf7befa66c17ba3726b656fd73cc513a22e563c.png)

Select group, press Toolbar button, input tag name.

 ![Screenshot 2023-07-05 040516](https://global.discourse-cdn.com/sketchup/original/3X/b/1/b1da60dce4a8583a83ba2305397dd9dd2ed64513.png)

The new tag is applied to all components in the selected group.

 ![Screenshot 2023-07-05 040558](https://global.discourse-cdn.com/sketchup/original/3X/2/6/26793b43ee6ad6c88f17462b3961ed06b06c8cff.png)

> **Main**
>
> ```auto
> module IDK_Programming
> module Tag_Comps_In_Group
> TOOLBAR_NAME = "Tag Components in Group Toolbar".freeze
> BUTTON_NAME = "Apply Tag".freeze
> TOOLTIP = "Apply new tag to components in a group.".freeze
> STATUS_BAR_TEXT = "Create and apply new tag to components in a group".freeze
>   
> def self.apply_layer_to_group_components
> tag_name = UI.inputbox(["Enter tag name"], ["New Tag"])[0]
> selected_group = Sketchup.active_model.selection.first
>   
> Sketchup.active_model.start_operation("Apply new tag to components in a group", true)
>   
> begin
> new_layer = create_tag(tag_name)
> apply_tag_to_components(selected_group.entities, new_layer)
>   
> Sketchup.active_model.commit_operation
>   
> puts "Tag applied successfully."
> rescue => e
> Sketchup.active_model.abort_operation
> puts "Error: #{e.message}"
> end
> end
>   
> def self.create_tag(tag_name)
> model = Sketchup.active_model
> model.layers.add(tag_name)
> end
>   
> def self.apply_tag_to_components(entities, layer)
> entities.each do |entity|
> if entity.is_a?(Sketchup::ComponentInstance)
> entity.layer = layer
> end
> end
> end
>   
> toolbar = UI::Toolbar.new(TOOLBAR_NAME)
> cmd = UI::Command.new(BUTTON_NAME) { self.apply_layer_to_group_components }
> cmd.small_icon = File.join(File.dirname( __FILE__ ), 'Icons/Tag-Comp-Group.png')
> cmd.large_icon = File.join(File.dirname( __FILE__ ), 'Icons/Tag-Comp-Group.png')
> cmd.tooltip = TOOLTIP
> cmd.status_bar_text = STATUS_BAR_TEXT
>   
> button_state = MF_DISABLED
> cmd.set_validation_proc do
> selection = Sketchup.active_model.selection
> group_with_components_selected = selection.any? do |entity|
> entity.is_a?(Sketchup::Group) && entity.entities.any? { |e| e.is_a?(Sketchup::ComponentInstance) }
> end
> button_state = group_with_components_selected ? MF_ENABLED : MF_GRAYED | MF_DISABLED
> end
>   
> toolbar.add_item(cmd)
> toolbar.show
> end
> end
> 
> ```

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [July 5, 2023, 9:19am UTC](https://forums.sketchup.com/t/idk-compilation/234617/10 "2023-07-05T09:19:22Z")

</div>

I was going to put everything and the kitchen sink in here. It’s just that I happened to be working on naming and tagging since I’ve seen the topic in the forum lately and the naming groups bug needs some kind of work-around.

IDK comes from the namespace, IDK\_Programming. My brother happens to be a programmer and he laughed when he saw it, so I kept it ;^)

---

<div class="post-metadata">

**Author:** ![Box](https://sea2.discourse-cdn.com/sketchup/user_avatar/forums.sketchup.com/box/32/235164_2.png) [@Box](https://forums.sketchup.com/u/Box)\
**Post date:** [July 5, 2023, 9:25am UTC](https://forums.sketchup.com/t/idk-compilation/234617/11 "2023-07-05T09:25:02Z")

</div>

For things to be useful in a forum they should be easily searchable and neatly arranged.  
You can certainly dump everything together but people will tend to ignore it pretty quickly.  
Making relevant collections of extensions in their own threads would be far more useful.  
Having a gallery thread that is full of all your images is quite different to having a thread full of everything.

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [July 5, 2023, 10:04am UTC](https://forums.sketchup.com/t/idk-compilation/234617/12 "2023-07-05T10:04:41Z")

</div>

I’ll take your -and ateliernab’s- advice and keep this topic on extensions.

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [July 7, 2023, 8:47am UTC](https://forums.sketchup.com/t/idk-compilation/234617/13 "2023-07-07T08:47:17Z")

</div>

Rename a Group in a Group with a name prompt.

Select a group containing a group.

 ![Screenshot 2023-07-07 034008](https://global.discourse-cdn.com/sketchup/original/3X/9/c/9cd162576a083a9f212740ccebcabbff40d381b8.png)

Press button to enter a name for the group.

 ![Screenshot 2023-07-07 034034](https://global.discourse-cdn.com/sketchup/original/3X/8/2/82597462d99951e60c28fcc1e6e553816360f8db.png)

In this example the Group in “Rectangles and Circles” will be named, “Rectangles”.

 ![Screenshot 2023-07-07 034058](https://global.discourse-cdn.com/sketchup/original/3X/6/7/671f0d61cfa55813899f5ba4700c9ec81c1a3f57.png)

The subgroup is now named, “Rectangles”.

 ![Screenshot 2023-07-07 034129](https://global.discourse-cdn.com/sketchup/original/3X/d/2/d2263420ff0cc596681bf8f902647a700e635c0e.png)

Edit later for code…

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [September 26, 2023, 9:11pm UTC](https://forums.sketchup.com/t/idk-compilation/234617/14 "2023-09-26T21:11:49Z")

</div>

**A Component Browser:**

Many versions in on this wrestling match. Basic functionality but not where I want it to be yet.

[https://global.discourse-cdn.com/sketchup/original/3X/0/c/0cc9dd384d5d6b3337390d05b1f95b70072de3a4.mp4](https://global.discourse-cdn.com/sketchup/original/3X/0/c/0cc9dd384d5d6b3337390d05b1f95b70072de3a4.mp4)

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [October 3, 2023, 6:58am UTC](https://forums.sketchup.com/t/idk-compilation/234617/15 "2023-10-03T06:58:19Z")

</div>

Component Browser V2, (‘Dark Mode’, CSV export):

CSV for individual folders only…

[https://global.discourse-cdn.com/sketchup/original/3X/3/5/35c8cc9d50c9fee1fbe75cc6f10ff53537ac5944.mp4](https://global.discourse-cdn.com/sketchup/original/3X/3/5/35c8cc9d50c9fee1fbe75cc6f10ff53537ac5944.mp4)

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [October 17, 2023, 9:12pm UTC](https://forums.sketchup.com/t/idk-compilation/234617/16 "2023-10-17T21:12:44Z")

</div>

Trying out multiple html files/pages in Html Dialogs and modifying transform info. Behold the 3 input field position changer:

[https://global.discourse-cdn.com/sketchup/original/3X/9/5/95aa1cc6b7f9b5caaa3824bae999fe4254009a3a.mp4](https://global.discourse-cdn.com/sketchup/original/3X/9/5/95aa1cc6b7f9b5caaa3824bae999fe4254009a3a.mp4)

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [October 20, 2023, 7:05am UTC](https://forums.sketchup.com/t/idk-compilation/234617/17 "2023-10-20T07:05:26Z")

</div>

Continued from here: [Draping long components across landscape, including rotation to account for changing terrain elevation? - SketchUp - SketchUp Community](https://forums.sketchup.com/t/draping-long-components-across-landscape-including-rotation-to-account-for-changing-terrain-elevation/243978/12)

Removed Html Dialog and went back to prompt.

Working on z offset:

[https://global.discourse-cdn.com/sketchup/original/3X/7/f/7ffb8d53b93d4007b8100c4f30db9d97af668bdd.mp4](https://global.discourse-cdn.com/sketchup/original/3X/7/f/7ffb8d53b93d4007b8100c4f30db9d97af668bdd.mp4)

Z offset with footings:

[https://global.discourse-cdn.com/sketchup/original/3X/a/e/ae5e1ec43d46d28594f167be9470e6c06eafb706.mp4](https://global.discourse-cdn.com/sketchup/original/3X/a/e/ae5e1ec43d46d28594f167be9470e6c06eafb706.mp4)

May try to drape panels with rotation but hold footings plumb.

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [October 31, 2023, 10:37am UTC](https://forums.sketchup.com/t/idk-compilation/234617/18 "2023-10-31T10:37:49Z")

</div>

An Attribute Manager with visibility toggling:

---

<div class="post-metadata">

**Author:** ![mihai.s](https://sea2.discourse-cdn.com/sketchup/user_avatar/forums.sketchup.com/mihai.s/32/202022_2.png) [@mihai.s](https://forums.sketchup.com/u/mihai.s)\
**Post date:** [October 31, 2023, 11:03am UTC](https://forums.sketchup.com/t/idk-compilation/234617/19 "2023-10-31T11:03:58Z")

</div>

> [@3DxJFD](#):
>
> Attribute Manager with visibility toggling

Looks like a good substitute/replacement for “multi-tag” (at least until it’s native). 👍

---

<div class="post-metadata">

**Author:** ![3DxJFD](https://avatars.discourse-cdn.com/v4/letter/3/f07891/32.png) [@3DxJFD](https://forums.sketchup.com/u/3DxJFD)\
**Post date:** [October 31, 2023, 11:09am UTC](https://forums.sketchup.com/t/idk-compilation/234617/20 "2023-10-31T11:09:18Z")

</div>

I saw some discussion about that so I tried making one. There are a few glitches with how the attributes toggle visibility and with toggling visibility of nested and tagged/attributed groups/components. I need to look at scenes more. Since I don’t use them much I don’t understand how they might be better used together.

[Next page](https://forums.sketchup.com/t/idk-compilation/234617.md?page=2)
