sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    [Plugin] Material Renamer

    Scheduled Pinned Locked Moved Plugins
    29 Posts 12 Posters 28.7k Views 12 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.
    • bagateloB Offline
      bagatelo
      last edited by

      It would be possible that the name of the material received something from RGB code and the level of opacity?

      While the cat's away, the mice will play

      1 Reply Last reply Reply Quote 0
      • bagateloB Offline
        bagatelo
        last edited by

        @thomthom said:

        Undo-able in one step:

        Sketchup.active_model.start_operation('Rename Materials',true); Sketchup.active_model.materials.each_with_index { |m,i| m.name = "mat#{'%03d' % i}"; p m.name };Sketchup.active_model.commit_operation

        Could you make a window that allowed us to enter the base name and the number of digits materials renamed?

        While the cat's away, the mice will play

        1 Reply Last reply Reply Quote 0
        • TIGT Offline
          TIG Moderator
          last edited by

          @bagatelo said:

          @thomthom said:

          Undo-able in one step:

          Sketchup.active_model.start_operation('Rename Materials',true); Sketchup.active_model.materials.each_with_index { |m,i| m.name = "mat#{'%03d' % i}"; p m.name };Sketchup.active_model.commit_operation

          Could you make a window that allowed us to enter the base name and the number of digits materials renamed?
          Just edit mat#{'%03d' % i} >>> "mat001" to be say my_mat#{'%06d' % i} >>> "my_mat000001"

          TIG

          1 Reply Last reply Reply Quote 0
          • bagateloB Offline
            bagatelo
            last edited by

            @tig said:

            @bagatelo said:

            @thomthom said:

            Undo-able in one step:

            Sketchup.active_model.start_operation('Rename Materials',true); Sketchup.active_model.materials.each_with_index { |m,i| m.name = "mat#{'%03d' % i}"; p m.name };Sketchup.active_model.commit_operation

            Could you make a window that allowed us to enter the base name and the number of digits materials renamed?
            Just edit mat#{'%03d' % i} >>> "mat001" to be say my_mat#{'%06d' % i} >>> "my_mat000001"

            I had seen it, just wanted to not have to edit these items. But that's okay.
            It would be possible to get the base name for the materials from file skp name automatically?

            While the cat's away, the mice will play

            1 Reply Last reply Reply Quote 0
            • TIGT Offline
              TIG Moderator
              last edited by

              If you want to rename all of the materials by their RGBA then it's doable, just more awkward in a one-liner...
              mo=Sketchup.active_model;mo.start_operation('Rename Materials',true);ms=[];mo.materials.each_with_index{|m,i|n=m.color.red.to_s+'-'+m.color.green.to_s+'-'+m.color.blue.to_s+'-'+m.alpha.to_s;n=n+'#1' if ms.include?(n);(n.next!)while(ms.include?(n));ms<<n;m.name=n;p n};mo.commit_operation
              So you'll get "123-45-67-0.8". If two materials share exactly the same RGBA the second material will get a '#1' suffix to keep them uniquely named.

              TIG

              1 Reply Last reply Reply Quote 0
              • TIGT Offline
                TIG Moderator
                last edited by

                @unknownuser said:

                ...it would be possible to get the base name for the materials from file skp name automatically?

                Yes, where the earlier code says
                m.name = "mat#{'%03d' % i}"
                change it to read
                m.name = "#{Sketchup.active_model.title}#{'%03d' % i}"

                TIG

                1 Reply Last reply Reply Quote 0
                • bagateloB Offline
                  bagatelo
                  last edited by

                  @tig said:

                  @unknownuser said:

                  ...it would be possible to get the base name for the materials from file skp name automatically?

                  Yes, where the earlier code says
                  m.name = "mat#{'%03d' % i}"
                  change it to read
                  m.name = "#{Sketchup.active_model.title}#{'%03d' % i}"

                  GREAT!!! Thanks...

                  Sketchup.active_model.start_operation('Rename Materials',true); Sketchup.active_model.materials.each_with_index { |m,i| m.name = "#{Sketchup.active_model.title}#{'%03d' % i}"; p m.name };Sketchup.active_model.commit_operation

                  While the cat's away, the mice will play

                  1 Reply Last reply Reply Quote 0
                  • shannakaeS Offline
                    shannakae
                    last edited by

                    Not sure this has been brought up in this thread or in another, but I am looking for a way to organize my materials within each project. It would be so great to be able to organize them into folders or some sort of system that lets me group items together... I have a ton of materials in the project i am currently working on and have been trying to keep track of them by renaming them etc... but it becomes very daunting to look through them all. For example I downloaded a sketchup 3d file of books for my bookshelves in a family room I am designing... obviously I don't want to re paint all the books with colors in my model... and when I add the component into my model it also brings in all the new generic colors that further clutter up my materials library. It would be so great to create a folder or file system to group all the colors that are in the books together so that I don't get them mixed up with my other materials... needless to say it is a hot mess in my materials library. Please tell me someone has created a cool plugin for this or has a solution for me : ) Or am I missing something very obvious???


                    materials_library.png

                    1 Reply Last reply Reply Quote 0
                    • jolranJ Offline
                      jolran
                      last edited by

                      @unknownuser said:

                      and when I add the component into my model it also brings in all the new generic colors that further clutter up my materials library..

                      I hate to ask. You do do know you can purge unused materials ?

                      In case not. In the Materialpalette, click the house to get to modelmaterials.
                      The icons furthest to the right(blueish) click and choose purge unused.

                      Otherwise there is maybe this:

                      http://sketchucation.com/forums/viewtopic.php?t=17587

                      or this ?

                      http://sketchucation.com/forums/viewtopic.php?t=48933

                      Take care.

                      1 Reply Last reply Reply Quote 0
                      • shannakaeS Offline
                        shannakae
                        last edited by

                        @jolran said:

                        @unknownuser said:

                        and when I add the component into my model it also brings in all the new generic colors that further clutter up my materials library..

                        I hate to ask. You do do know you can purge unused materials ?

                        In case not. In the Materialpalette, click the house to get to modelmaterials.
                        The icons furthest to the right(blueish) click and choose purge unused.

                        Otherwise there is maybe this:

                        http://sketchucation.com/forums/viewtopic.php?t=17587

                        or this ?

                        http://sketchucation.com/forums/viewtopic.php?t=48933

                        Take care.

                        Thanks, i will look those up. I do know about purge un-used (but I did just learn about it the other day so you are not so far off 😉 )Thanks! I will look up the two topics and see if there is something there that works for me... I was looking at the open or create a collection section... and was going to explore how that might work for what I am trying to do...

                        1 Reply Last reply Reply Quote 0
                        • bagateloB Offline
                          bagatelo
                          last edited by

                          @bagatelo said:

                          @tig said:

                          @unknownuser said:

                          ...it would be possible to get the base name for the materials from file skp name automatically?

                          Yes, where the earlier code says
                          m.name = "mat#{'%03d' % i}"
                          change it to read
                          m.name = "#{Sketchup.active_model.title}#{'%03d' % i}"

                          GREAT!!! Thanks...

                          Sketchup.active_model.start_operation('Rename Materials',true); Sketchup.active_model.materials.each_with_index { |m,i| m.name = "#{Sketchup.active_model.title}#{'%03d' % i}"; p m.name };Sketchup.active_model.commit_operation

                          I want to add a shurtcut for this function. Can you make a plugin for me, please? 😳

                          While the cat's away, the mice will play

                          1 Reply Last reply Reply Quote 0
                          • CadFatherC Offline
                            CadFather
                            last edited by

                            
                            def matrename
                            
                            Sketchup.active_model.start_operation('Rename Materials',true); Sketchup.active_model.materials.each_with_index { |m,i| m.name = "- #{'%03d' % i}"; p m.name };Sketchup.active_model.commit_operation
                            end
                            
                            if( not file_loaded? "TT_materials_renamer.rb" )
                            UI.menu("View").add_item("Materials Rename") { matrename.new }
                            file_loaded("TT_materials_renamer.rb")
                            end
                            
                            1 Reply Last reply Reply Quote 0
                            • bagateloB Offline
                              bagatelo
                              last edited by

                              @cadfather said:

                              
                              > def matrename
                              > 
                              > Sketchup.active_model.start_operation('Rename Materials',true); Sketchup.active_model.materials.each_with_index { |m,i| m.name = "- #{'%03d' % i}"; p m.name };Sketchup.active_model.commit_operation
                              > end
                              > 
                              > if( not file_loaded? "TT_materials_renamer.rb" )
                              > UI.menu("View").add_item("Materials Rename") { matrename.new }
                              > file_loaded("TT_materials_renamer.rb")
                              > end
                              

                              Great! Thanks!

                              One thing that would be really interesting would be that this script index materials application in areas with higher per square meter first. Thus, a material that was on all the walls would be in first place. A material that was in small areas (a decorative object for example) would be the end of the numbering.

                              While the cat's away, the mice will play

                              1 Reply Last reply Reply Quote 0
                              • H Offline
                                harvey1
                                last edited by

                                Is it possible for this plugin to allow one to rename individual materials. For example, let's say my model is imported into SU as Material 1, and I'd like to rename it Window, and Material 2 to be renamed Door, etc.

                                1 Reply Last reply Reply Quote 0
                                • P Offline
                                  Pherim
                                  last edited by

                                  This plugin appears to be buggy for me... it seems to be applied as soon as Sketchup has started, so when I open a file by double-clicking it in explorer, the materials get renamed immediately. The same happens when I activate the plugin via the Sketchucation Plugin Store. Will leave it deactivated until the cause is found...

                                  1 Reply Last reply Reply Quote 0
                                  • JBJDesignsJ Offline
                                    JBJDesigns
                                    last edited by

                                    Currently, I have this plug-in disabled (i.e., "tt_materials_renamer.rb" to "tt.materials.renamer.rbDISABLE"). Is there a way to turn this option on or off as needed. Many of my projects are uploaded into Vue 10 Esprit for rendering. I've been "building" a database of materials from SU. When the files are automatically renamed to "mat00", "mat01", etc., it's near impossible to determine whether the material has been saved to it's converted ".mat" format. Your help is appreciated. Jo Ann 😄

                                    ...you send them to school, you give them books, and they eat the pages...

                                    1 Reply Last reply Reply Quote 0
                                    • R Offline
                                      rv1974
                                      last edited by

                                      Beware: It runs silently in background on the file opening! I managed to spoil a couple of files with this one 😳
                                      It should be written on the top.

                                      1 Reply Last reply Reply Quote 0
                                      • designerbursaD Offline
                                        designerbursa
                                        last edited by

                                        Plugin name and menu text

                                        PLUGIN_NAME = 'Rename Materials by File Name'.freeze

                                        Plugin class

                                        class RenameMaterials
                                        def self.rename
                                        # Get the active model
                                        model = Sketchup.active_model

                                        # Get the file name and remove the extension
                                        file_name = File.basename(model.path, ".*")
                                        
                                        # Get all materials in the model
                                        materials = model.materials
                                        
                                        # Iterate through all materials and assign new names based on the file name
                                        materials.each_with_index do |material, index|
                                          new_name = "#{file_name}_#{format('%02d', index + 1)}"
                                          material.name = new_name
                                        end
                                        
                                        puts "Materials have been successfully renamed based on the file name."
                                        

                                        end
                                        end

                                        Menu item that activates the plugin

                                        UI.menu('Plugins').add_item(PLUGIN_NAME) { RenameMaterials.rename }

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

                                        Advertisement