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

    [Plugin] Color by Slope

    Scheduled Pinned Locked Moved Plugins
    52 Posts 25 Posters 57.5k Views 25 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.
    • E Offline
      Ecuadorian
      last edited by

      Thank you, Chris!

      I could have used this when I was a student, as I had to do it manually for Urban Design class. You know, to decide which parts of a site to use for housing, which ones for parks, which ones not to use at all, etc.

      -Miguel Lescano
      Subscribe to my house plans YouTube channel! (30K+ subs)

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

        I im trying to use this script, but i want to know its possible to change the colors and is it possible to know the slope % vs colors...? im not sure if my question is clear... Is it possible to have a legend or somthing to see for example that blue = 0% to 20% of slope and red = 40% to 60% of slope...

        Sorry for my english...

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

          See
          mat.color=[(255-value),value,value]
          line #56~
          Sets the face color, value is set by the angle...
          Edit it there...
          ❓

          TIG

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

            TIG, Chris,

            Thanks for the color by slope script. Like another person in here, I too am trying to see if I can get specific colors for specific slopes. Is there a later version to your script on smustard that contains this? For example if I need a certain red for anything above 20% slope, how do I get that?

            Thanks.

            1 Reply Last reply Reply Quote 0
            • Chris FullmerC Offline
              Chris Fullmer
              last edited by

              Hey, so far the script does not do that. I do plan on implementing it eventually. I've got a super busy week and I do not anticipate being able to look at it right away, but it might be easy enough to just tweak some lines of code to make it work how you want. Maybe by next weekend I'll be able to look at it.

              Chris

              Lately you've been tan, suspicious for the winter.
              All my Plugins I've written

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

                Hope I'm not standing on any toes... πŸ˜•

                ### edited/replace the code from here................
                faces = []
                flat = []
                angle = 0.0
                sel.each do |e|
                  faces << e if e.is_a? Sketchup;;Face
                end#do
                ### first set up some [r,g,b] colors for various slope angles
                ### we use them if they exist, but if not make them...
                if not color_00_20 = model.materials["color_00_20"]
                  color_00_20 = model.materials.add("color_00_20")
                  color_00_20.color= [120,0,0]
                end#if
                if not color_20_40 = model.materials["color_20_40"]
                  color_20_40 = model.materials.add("color_20_40")
                  color_20_40.color= [150,0,0]
                end#if
                if not color_40_60 = model.materials["color_40_60"]
                  color_40_60 = model.materials.add("color_40_60")
                  color_40_60.color= [180,0,0]
                end#if
                if not color_60_80 = model.materials["color_60_80"]
                  color_60_80 = model.materials.add("color_60_80")
                  color_60_80.color= [210,0,0]
                end#if
                if not color_80_90 = model.materials["color_80_90"]
                  color_80_90 = model.materials.add("color_80_00")
                  color_80_90.color= [240,0,0]
                end#if
                ### you can adjust the colors' rgb values to suit...
                ###
                faces.each do |e|
                  enorm = e.normal
                  flat = Geom;;Vector3d.new(enorm[0],enorm[1],0)
                  angle = (flat.angle_between enorm).radians ### angle in in degrees
                  ### now set up the tests for different angles
                  ### change these test ranges etc to suit your requirements...
                  if angle>=0.0 and angle<=20.0
                    color=color_00_20
                  elsif angle>20.0 and angle<=40.0
                    color=color_30_40
                  elsif angle>40.0 and angle<=60.0
                    color=color_40_60
                  elsif angle>60.0 and angle<=80.0
                    color=color_60_80
                  else ### angle>80.0
                    color=color_80_90
                  end#if
                  e.material = color
                  e.back_material = color
                end#do
                ### end of edit/replace.................
                
                

                Make a backup copy of the original ruby script outside of the Plugins folder so it won't try load twice. If you mess up then you have the original to use again...
                Now edit/replace the version that's still in the Plugins folder, as set out above [open with Notepad.exe or equivalent plain-text editor].
                Save it and restart Sketchup - all slopes should now be colored in the angle-ranges and colors you've specified...
                πŸ€“

                TIG

                1 Reply Last reply Reply Quote 0
                • Chris FullmerC Offline
                  Chris Fullmer
                  last edited by

                  @tig said:

                  Hope I'm not standing on any toes... πŸ˜•

                  Nope, not at all! Thanks TIG,

                  Chris

                  Lately you've been tan, suspicious for the winter.
                  All my Plugins I've written

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

                    Color by angle by you is amazing...
                    πŸ˜‰ rather i had changed name of the tool as 'Slope by angle' πŸ˜„

                    wow! ur work is amazing.

                    Please brief about color assignments in case of 'color by Slope'?

                    About myself, i m an Architect from India and doing practice in Delhi.
                    regards,
                    Anil Nimesh

                    1 Reply Last reply Reply Quote 0
                    • Chris FullmerC Offline
                      Chris Fullmer
                      last edited by

                      @anilnimesh said:

                      Please brief about color assignments in case of 'color by Slope'?

                      Thanks for using my plugin. I'm not entirely sure what you are requesting though. Let me know if there is a feature you think should be added, thanks!

                      Chris

                      Lately you've been tan, suspicious for the winter.
                      All my Plugins I've written

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

                        Hi Chris,
                        i using sketchu pro v7.
                        while using the tool, it is bit difficult to understand, which color is applied for which slope. i need to calculate, hw the tool is working?
                        is there any color which defines slope (like 0-5% or 5%-10%) in slabs? i mean say 'red' for slope slab 0-5%

                        u wrote highest color no. is for low gradient and vice versa. u also wrote to explode the group (containing the terrain) and select color and make a new group out of those.

                        i tried but found it little tidious... πŸ˜†

                        althought it is much simplied then what we do manually.. πŸ˜„ but i need to understand more about your tool.

                        u also made a new one for v8 where it is called 'Color by slope stepped'. i found the previous one more relevant for my work.

                        so i need to know that can the tool defines colors w.r.t. slope in slabs (like 0-5% or 5%-10%) ?

                        regrds,

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

                          @tig said:

                          Hope I'm not standing on any toes... πŸ˜•

                          ### edited/replace the code from here................
                          > faces = []
                          > flat = []
                          > angle = 0.0
                          > sel.each do |e|
                          >   faces << e if e.is_a? Sketchup;;Face
                          > end#do
                          > ### first set up some [r,g,b] colors for various slope angles
                          > ### we use them if they exist, but if not make them...
                          > if not color_00_20 = model.materials["color_00_20"]
                          >   color_00_20 = model.materials.add("color_00_20")
                          >   color_00_20.color= [120,0,0]
                          > end#if
                          > if not color_20_40 = model.materials["color_20_40"]
                          >   color_20_40 = model.materials.add("color_20_40")
                          >   color_20_40.color= [150,0,0]
                          > end#if
                          > if not color_40_60 = model.materials["color_40_60"]
                          >   color_40_60 = model.materials.add("color_40_60")
                          >   color_40_60.color= [180,0,0]
                          > end#if
                          > if not color_60_80 = model.materials["color_60_80"]
                          >   color_60_80 = model.materials.add("color_60_80")
                          >   color_60_80.color= [210,0,0]
                          > end#if
                          > if not color_80_90 = model.materials["color_80_90"]
                          >   color_80_90 = model.materials.add("color_80_00")
                          >   color_80_90.color= [240,0,0]
                          > end#if
                          > ### you can adjust the colors' rgb values to suit...
                          > ###
                          > faces.each do |e|
                          >   enorm = e.normal
                          >   flat = Geom;;Vector3d.new(enorm[0],enorm[1],0)
                          >   angle = (flat.angle_between enorm).radians ### angle in in degrees
                          >   ### now set up the tests for different angles
                          >   ### change these test ranges etc to suit your requirements...
                          >   if angle>=0.0 and angle<=20.0
                          >     color=color_00_20
                          >   elsif angle>20.0 and angle<=40.0
                          >     color=color_30_40
                          >   elsif angle>40.0 and angle<=60.0
                          >     color=color_40_60
                          >   elsif angle>60.0 and angle<=80.0
                          >     color=color_60_80
                          >   else ### angle>80.0
                          >     color=color_80_90
                          >   end#if
                          >   e.material = color
                          >   e.back_material = color
                          > end#do
                          > ### end of edit/replace.................
                          > 
                          

                          Make a backup copy of the original ruby script outside of the Plugins folder so it won't try load twice. If you mess up then you have the original to use again...

                          Now edit/replace the version that's still in the Plugins folder, as set out above [open with Notepad.exe or equivalent plain-text editor].
                          Save it and restart Sketchup - all slopes should now be colored in the angle-ranges and colors you've specified...
                          πŸ€“

                          Hello,
                          Can you please explain how to do it 'step by step'? I've never used ruby script, however this tool will be very usefull for me if I can influence the slope colours.
                          Thank you for your help:)

                          1 Reply Last reply Reply Quote 0
                          • D Offline
                            dansphere
                            last edited by

                            Yes I'm also having trouble, I've had a shot at changing the ruby but no luck.
                            Perhaps a logarithmic function for the assignment of colour to slope angle would work well, and then being able to reverse the log direction.. ??

                            Dan

                            1 Reply Last reply Reply Quote 0
                            • Chris FullmerC Offline
                              Chris Fullmer
                              last edited by

                              What are you trying to do Dan? Just use a different method of determining the color to assign?

                              Lately you've been tan, suspicious for the winter.
                              All my Plugins I've written

                              1 Reply Last reply Reply Quote 0
                              • brookefoxB Offline
                                brookefox
                                last edited by

                                Here we have a near flat creek be with sloping sides and a near flat upper terrain. Faces picked to be colored are still shown picked. Highest slope r255 g0 b0; lowest r0 g0 b255 (or something like these values). There are some blue vertical slopes elsewhere.

                                I think it would be helpful if the flats got colored, too. So everything gets a color value. I would have thought lowest slope = flat, rather than vertical, which it seems to be.color by slope-2.JPG

                                I had wanted to try to use this as a means of selecting the slopes vs. the near flats for grouping, which I did manually with not too much difficulty.

                                ~ Brooke

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

                                  Hello,
                                  The plug-in appears to load properly. However, I get this Ruby Console feedback when I run it.

                                  segment 3 [60 to 90]
                                  segment 2 [30 to 60]
                                  segment 1 [0 to 30]
                                  Error: #<ArgumentError: comparison of Float with nil failed>
                                  (eval):2304:in >' (eval):2304:in update'
                                  C:/Program Files/Google/Google SketchUp 8/Plugins/clf_color_by_slope.rb:230:in colorbyslope' C:/Program Files/Google/Google SketchUp 8/Plugins/clf_color_by_slope.rb:223:in each'
                                  C:/Program Files/Google/Google SketchUp 8/Plugins/clf_color_by_slope.rb:223:in colorbyslope' C:/Program Files/Google/Google SketchUp 8/Plugins/clf_color_by_slope.rb:254 (eval):2304:in call'
                                  (eval):2304

                                  Has anyone encountered this before ? .... any solution or direction to resolve ?
                                  I have checked that faces are faces (not surfaces).
                                  Segment materials appear in the list of materials.
                                  The faces just don't want to color ...

                                  Thank you for your help

                                  1 Reply Last reply Reply Quote 0
                                  • sdmitchS Offline
                                    sdmitch
                                    last edited by

                                    The problem appears to be associated with the progress bar.

                                    @unknownuser said:

                                    C:/Program Files/Google/Google SketchUp 8/Plugins/clf_color_by_slope.rb:230:in `colorbyslope'

                                    refers to the the statement
                                    @unknownuser said:

                                    pb.update(count)

                                    If the problem persists, then I would just comment or remove the line. The only consequence will be progressbar will never update but, unless the model is huge, you will not know the difference.

                                    Nothing is worthless, it can always be used as a bad example.

                                    http://sdmitch.blogspot.com/

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

                                      Yeess, Thank You !

                                      I commented out that line ...

                                      #pb.update(count)
                                      

                                      I was/am testing it on a very small dummy file.

                                      I shall investigate my version(copy) of progressbar.rb

                                      Thanks again

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

                                        sd,

                                        Based on your help, I also found that my version of progressbar.rb
                                        was affecting :

                                        clf_color_by_z.rb
                                        clf_greeble_2.rb

                                        So, it turns out to be predictable....

                                        Thanks again

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

                                          Do you have the current version of ' progressbar.rb' - which can be downloaded free from http://Smustard.com ?

                                          TIG

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

                                            TIG,

                                            .. I just downloaded and compared both files. They appear
                                            to be identical ... Author, date, history, no. of lines, size, etc.
                                            (by-the-way, it is in the 'plugins' folder)

                                            However, I still replaced it with the fresh download.

                                            I did a search and found another progressbar.rb
                                            in another folder ... plugins\TT_Lib2\

                                            They are different, but I can't see how it would have an affect...
                                            I temporarily renamed it.

                                            I un-commented the pb.update(count) lines in the clf_... .rb files
                                            and I still received the same Ruby Console feedback, as before. http://forums.sketchucation.com/posting.php?mode=reply&f=323&t=20635#

                                            I restored things back to working order and will continue to debug another day.

                                            I appreciate your suggestion, Thanks much

                                            I'll post when(if) I find the solution.

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

                                            Advertisement