sketchucation logo sketchucation
    • Login
    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!
    πŸ›£οΈ Road Profile Builder | Generate roads, curbs and pavements easily Download

    Beginner Ruby Problmes

    Scheduled Pinned Locked Moved Developers' Forum
    13 Posts 3 Posters 1.6k Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • thomthomT Offline
      thomthom
      last edited by

      
      #-----------------------------------------------------------------------------
      require 'sketchup.rb'
      #-----------------------------------------------------------------------------
      
      module AM_Named_Group
      	
      	unless file_loaded?('am_named_group.rb')
      		# Add menu items.
      		plugins_menu = UI.menu('Edit')
      		plugins_menu.add_item('Make Named Group')	{ self.named_group }
      	end
      	
      	def self.named_group
      		model = Sketchup.active_model
      		sel = model.selection
      
      		# Don't do anything if the selection is empty.
      		return if sel.empty?
      
      		# Ask user for group name.
      		prompts = ['Group Name; ']
      		defaults = [model.definitions.unique_name('Group#1')]
      		input = UI.inputbox(prompts, defaults, 'New Group')
      
      		# Check if the user cancelled.
      		return if input == false
      
      		# The add_group method can be buggy when you pass on entities to it's argument. But there's
      		# no real options.
      		group = model.active_entities.add_group(sel)
      		name = model.definitions.unique_name(input[0])
      		# We set the name we will see in the Entities window.
      		group.name = name
      		# We set the definition name as well. If you convert the group to a component, this is the
      		# name it will get.
      		group.entities.parent.name = name
      		
      		# Select the new group
      		sel.clear
      		sel.add(group)
      	end
      end
      
      #-----------------------------------------------------------------------------
      file_loaded('am_named_group.rb')
      #-----------------------------------------------------------------------------
      
      

      Thomas Thomassen β€” SketchUp Monkey & Coding addict
      List of my plugins and link to the CookieWare fund

      1 Reply Last reply Reply Quote 0
      • A Offline
        Arkman
        last edited by

        Awesome! I have one more request. How could I get a list of layers in the model to define what layer it lives in. I can get a list but I can't get it to show the layers in the model or place that newly created group on the layer.

        Thanks!!!!

        1 Reply Last reply Reply Quote 0
        • thomthomT Offline
          thomthom
          last edited by

          @arkman said:

          Awesome! I have one more request. How could I get a list of layers in the model to define what layer it lives in. I can get a list but I can't get it to show the layers in the model or place that newly created group on the layer.

          Thanks!!!!

          You can get a list? But you can't get it to show the layers in the model...
          I'm not quite following you. What list are you "getting"? You mean a list in the inputbox?

          All the layers are under Skethcup.active_model.layers
          http://code.google.com/apis/sketchup/docs/ourdoc/layers.html

          Thomas Thomassen β€” SketchUp Monkey & Coding addict
          List of my plugins and link to the CookieWare fund

          1 Reply Last reply Reply Quote 0
          • thomthomT Offline
            thomthom
            last edited by

            
            #-----------------------------------------------------------------------------
            require 'sketchup.rb'
            #-----------------------------------------------------------------------------
            
            module AM_Named_Group
            	
            	unless file_loaded?('am_named_group.rb')
            		# Add menu items.
            		plugins_menu = UI.menu('Edit')
            		plugins_menu.add_item('Make Named Group')	{ self.named_group }
            	end
            	
            	def self.named_group
            		model = Sketchup.active_model
            		sel = model.selection
            
            		# Don't do anything if the selection is empty.
            		return if sel.empty?
            
            		# Build an array of the layer names.
            		layers = model.layers.to_a.collect { |l| l.name }
            		# Ask user for group name.
            		list = ['', layers.join('|')]
            		prompts = ['Group Name; ', 'Layer; ']
            		defaults = [model.definitions.unique_name('Group#1'), model.active_layer.name]
            		input = UI.inputbox(prompts, defaults, list, 'New Group')
            
            		# Check if the user cancelled.
            		return if input == false
            		
            		# Get data from result array into variables
            		group_name, group_layer = input
            		
            		# Make it into one Undoable action
            		model.start_operation('Make Named Group')
            		
            		# The add_group method can be buggy when you pass on entities to it's argument. But there's
            		# no real options.
            		group = model.active_entities.add_group(sel)
            		name = model.definitions.unique_name(group_name)
            		# We set the name we will see in the Entities window.
            		group.name = name
            		# We set the definition name as well. If you convert the group to a component, this is the
            		# name it will get.
            		group.entities.parent.name = name
            		# Set group layer
            		group.layer = model.layers[group_layer]
            		
            		# Select the new group
            		sel.clear
            		sel.add(group)
            		
            		model.commit_operation
            	end
            end
            
            #-----------------------------------------------------------------------------
            file_loaded('am_named_group.rb')
            #-----------------------------------------------------------------------------
            
            

            Thomas Thomassen β€” SketchUp Monkey & Coding addict
            List of my plugins and link to the CookieWare fund

            1 Reply Last reply Reply Quote 0
            • A Offline
              Arkman
              last edited by

              Ok, sorry that was unclear.

              I can add a list to the inputbox but I cant get that list to show the layers in the model. I can make a list with just random terms that I picked. Like below.

              list = ["item1|item2"]

              So I guess my question is "How do I get a list in the inputbox that shows all the layers in the model?" I found that help file you showed me but I dont know how to use that. I tried:

              list = [Sketchup.active_model.layers]

              That didn't work. I'm not really sure how to get the list to use that Skethcup.active_model.layers

              Once the list displays the layers in the model, how do I make the object go onto the layer selected in the inputbox?

              Thanks for all your help. Sorry for all the questions.

              1 Reply Last reply Reply Quote 0
              • thomthomT Offline
                thomthom
                last edited by

                @arkman said:

                list = [Skethcup.active_model.layers]

                That didn't work. I'm not really sure how to get the list to use that Skethcup.active_model.layers

                That's because Skethcup.active_model.layers is a collection of Layer objects. You need to collect all the layer names from each object. You see an example in the code I posted.

                (And Skethcup was mis-spelled)

                Thomas Thomassen β€” SketchUp Monkey & Coding addict
                List of my plugins and link to the CookieWare fund

                1 Reply Last reply Reply Quote 0
                • A Offline
                  Arkman
                  last edited by

                  Incredible! Thank you so much. You just made my life a lot easier!

                  1 Reply Last reply Reply Quote 0
                  • thomthomT Offline
                    thomthom
                    last edited by

                    Maybe I should post it as a downloadable plugin?

                    Thomas Thomassen β€” SketchUp Monkey & Coding addict
                    List of my plugins and link to the CookieWare fund

                    1 Reply Last reply Reply Quote 0
                    • A Offline
                      Arkman
                      last edited by

                      That would probably be extremely helpful. I know a lot of people that could use something like this.

                      Thanks again!!

                      Josh

                      1 Reply Last reply Reply Quote 0
                      • thomthomT Offline
                        thomthom
                        last edited by

                        Posted it in a separate plugin for easy searching: http://forums.sketchucation.com/viewtopic.php?f=180&t=23582

                        Thomas Thomassen β€” SketchUp Monkey & Coding addict
                        List of my plugins and link to the CookieWare fund

                        1 Reply Last reply Reply Quote 0
                        • S Offline
                          Scott M
                          last edited by

                          Ththomthom I am Just starting out learning Ruby I made a plugin to create a simple rectangle based on the tutorial and would like to insert the name group module you posted could you give me some pointers?

                          https://www.youtube.com/user/ecabinetstips

                          1 Reply Last reply Reply Quote 0
                          • thomthomT Offline
                            thomthom
                            last edited by

                            There are some sticky thread in the Developer section where links to various best-practices is posted.

                            Thomas Thomassen β€” SketchUp Monkey & Coding addict
                            List of my plugins and link to the CookieWare fund

                            1 Reply Last reply Reply Quote 0
                            • 1 / 1
                            • First post
                              Last post
                            Buy SketchPlus
                            Buy SUbD
                            Buy WrapR
                            Buy eBook
                            Buy Modelur
                            Buy Vertex Tools
                            Buy SketchCuisine
                            Buy FormFonts

                            Advertisement