[Plugin] ComponentScenes v0.3 UPDATE
-
@tim said:
Pages seem to be happy to share names whereas Layers seem to prefer unique names and there shouldn't be any clashes.
I think your asking for trouble.
What will happen when code tries to get a reference to a page with: pages["name"] ??
-
It is daft that Definitions, Layers, Materials etc must have unique names - set automatically, BUT every Scene-tab could be called 'foo' !
You can 'uniquify' your page names... before falling foul of the potential for duplicated names...### assuming that 'pages' is reference to the Model's Pages object names = []; pages.each{|page| names << page.name } used = []; names.each{|name| unless used.include?(name) used << name else ### already used ! name = name+"#1" name.next! while used.include?(name) used << name end } used.each_with_index{|name, i| pages[i].name = name }
NOW the Scene-tabs will have unique names !
foo, foo#1, foo#2, foo#3 etc...
-
Can anyone help me? please add icons for this plugin. I tried to do it, but could not get the plugin to work. Thanks
-
When you join strings into a file-path it's best NOT to use a separator.
So NOT
cmd.large_icon = File.join(imgdir, "/cs_l.png")
but
cmd.large_icon = File.join(imgdir, "cs_l.png")
Although Ruby should usually fix it for you.However, I don't think that is the issue - I suspect it is with your PNG files themselves.
PNGs for buttons need not be that big, also your PNGs are in 'Indexed Colors' - try converting them to 'RGB' with something like Gimp.
Your larger PNG is 1.5kb, my toolbar equivalents are usually considerably smaller...
Yours is 128px sq, when mine is 24px sq - just like the su_... equivalents...
Again you can use Gimp to resize then down to 24px sq [16px sq for small icons]...
As recommended here:
http://ruby.sketchup.com/UI/Command.html#large_icon=-instance_method -
7 years between posts, impressive.
-
Thanks Tig. I made all the corrections but the plugin does not work. I don’t know what to do with it.
Error: #<NameError: undefined local variable or methoddeleting_group' for main:Object> C:/Users/KOSTIA/AppData/Roaming/SketchUp/SketchUp 2019/SketchUp/Plugins/ComponentScenes.rb:189:in
block in <top (required)>'
-
The error message is most helpful.
Your code callsdeleting_group
from outside the module !
The get it to work move all of your toolbar code inside it, and rename the methods withself.xxx
However, you never definedeleting_group
andComponentScenes
is used oddly within the menu code.
It all needs reworking...
Look at some other authors code that define a cmd and make a toolbar...
You have muddled up everything ! -
I would also like to know if it is possible to organize the created scenes in the panel? For example, scene1, scene2, scene3 ... sceneN? When I use this plugin, the scenes are placed in a chaotic order.
-
You are jumping around somewhat in your 'problems'...
Look at the Pages and Page section of the API guide.
You need to get an array of the scene-tabs names and sort them, then reorder the scenes accordingly...
http://ruby.sketchup.com/Sketchup/Pages.html
It's not that easy to do !
But here's a crib to get you started...model = Sketchup.active_model pages = model.pages num = pages.length if num > 0 selected = pages.selected_page.name page_names = pages.map{|pg| pg.name } page_names.sort! num = page_names.length page_names.each{|page| tran_time = pages[page].transition_time pages[page].transition_time = 0 delay_time = pages[page].delay_time pages[page].delay_time = 0 pages.selected_page = pages[page] new_page = pages.add(page) new_page.transition_time = tran_time new_page.delay_time = delay_time } num.times{ pages.erase(model.pages[0]) } pages.selected_page = pages[selected] end
Pages [Scenes] are now in order...
-
Thank you Tig. I put this code in the toolbar editor. Works great.
Advertisement