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!
    ⚠️ Important | Libfredo 15.6a introduces important bugfixes for Fredo's Extensions Update

    Layer color by ruby-code?

    Scheduled Pinned Locked Moved Developers' Forum
    16 Posts 3 Posters 1.1k 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.
    • TIGT Offline
      TIG Moderator
      last edited by

      It works OK for me... 😕

      TIG

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

        would help if we got the whole error - with the line number and traceback

        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
          Andreas
          last edited by

          @tig said:

          There is no built-in API layer.color=
          BUT see here for my stop-gap new method... http://forums.sketchucation.com/viewtopic.php?p=177016#p177016
          with that loaded your example layer.color= [255,255,255] should work...

          I tried that. I copied "layer-color=.rb" to plugins folder.
          And than there was the error when I start my code.
          What is the mistake I made?

          With best regards from Germany

          Andreas

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

            what is the full error?
            line of error, and traceback?

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

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

              Have you restarted SUp after installing the new code script ?

              TIG

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

                @tig said:

                Have you restarted SUp after installing the new code script ?

                Yes

                With best regards from Germany

                Andreas

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

                  @thomthom said:

                  would help if we got the whole error - with the line number and traceback

                  The file "test.rb" is in plugins folder.
                  That´s the whole code of test.rb

                    model = Sketchup.active_model
                    layer = model.layers.add "ABS_Grundriss_Wand2"
                    layer.color = [255,255,255]
                  
                  

                  The following error message appears if Sketchup start:
                  %(#FF0000)[Fehler beim Laden der Datei test.rb
                  undefined method `page_behavior=' for nil:NilClass]

                  That error appears in context with "layer-color=.rb" which is in
                  plugins folder too. If I remove "layer-color=.rb" from plugins folder
                  there is the following error message:
                  %(#FF0000)[Fehler beim Laden der Datei test.rb
                  undefined method `color=' for #Sketchup::Layer:0x6dfe1ec]

                  That error I understand.

                  With best regards from Germany

                  Andreas

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

                    But there should be a traceback.

                    If you have a file like this:

                    
                    def test_me
                      x == y
                    end
                    
                    

                    and then call that method you should get this error:
                    Error: #<NameError: undefined local variable or methodx' for main:Object>
                    C:/Program Files (x86)/Google/Google SketchUp 8/Plugins/testme.rb:2
                    (eval):2537`

                    Notice it includes the filename and line number after reporting the error. Do you not get that kind of error?

                    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

                      I see an issue with this method:

                      It has multiple .start_operation and commit_operation inside the code flow - which will interfere with any start_operation you started yourself - since SU doesn't handle nested start_operations:

                      ` model.start_operation

                      ...

                      layer.color = 'red' # this breaks the undo stack

                      ...

                      model.commit_operation`

                      Though, it is not related to the error you got.

                      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
                        Andreas
                        last edited by

                        @thomthom said:

                        But there should be a traceback.

                        If you have a file like this:

                        
                        > def test_me
                        >   x == y
                        > end
                        > 
                        

                        and then call that method you should get this error:
                        Error: #<NameError: undefined local variable or methodx' for main:Object>
                        C:/Program Files (x86)/Google/Google SketchUp 8/Plugins/testme.rb:2
                        (eval):2537`

                        Notice it includes the filename and line number after reporting the error. Do you not get that kind of error?

                        The first way I test was run automatically at the Sketchup start.
                        There was only the error message I posted.

                        With best regards from Germany

                        Andreas

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

                          @thomthom said:

                          I see an issue with this method:

                          It has multiple .start_operation and commit_operation inside the code flow - which will interfere with any start_operation you started yourself - since SU doesn't handle nested start_operations:

                          ` model.start_operation

                          ...

                          layer.color = 'red' # this breaks the undo stack

                          ...

                          model.commit_operation`

                          Though, it is not related to the error you got.

                          Sorry, I don´t understand that.

                          I tried now that:

                          def layer_color
                            model = Sketchup.active_model
                            layer = model.layers.add "Test_Layer"
                            layer.color = [255,255,255]
                          
                          end
                          
                          if( not file_loaded?("test.rb") )
                            plugins_menu = UI.menu("Plugins")
                          	plugins_menu.add_item("LayerColor") {layer_color}
                          end
                          
                          #-----------------------------------------------------------------------------
                          file_loaded("test.rb")
                          

                          That works without error - but the new layer has the color 102,68,0
                          and not 255,255,255!!!???

                          I test that:

                          def layer_color
                            model = Sketchup.active_model
                            layer = model.layers.add "Test_Layer"
                            layer.color = "Blue"
                          
                          end
                          
                          if( not file_loaded?("test.rb") )
                            plugins_menu = UI.menu("Plugins")
                          	plugins_menu.add_item("LayerColor") {layer_color}
                          end
                          
                          #-----------------------------------------------------------------------------
                          file_loaded("test.rb")
                          

                          The same result like before - Color 102,68,0 instead of blue

                          Than I test that:

                          def layer_color
                            model = Sketchup.active_model
                          
                            my_mat = materials.add "Ahorn"
                            my_mat.texture = "O;\\Sketchup\\Mat\\Ahorn.jpg"
                          
                            layer = model.layers.add "Test_Layer"
                          
                            layer.color = my_mat
                          
                          end
                          
                          if( not file_loaded?("test.rb") )
                            plugins_menu = UI.menu("Plugins")
                          	plugins_menu.add_item("LayerColor") {layer_color}
                          end
                          
                          #-----------------------------------------------------------------------------
                          file_loaded("test.rb")
                          

                          There was no error but also no layer!!

                          With best regards from Germany

                          Andreas

                          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