[Plugin] Components manager plugin
-
On Mac when Sketchup runs it appears a Ruby Console Error:
%(#FF0000)[Error al cargar archivo /Users/Oxer/Library/Application Support/SketchUp 2013/SketchUp/Plugins/BGSketchup/Composants/Rb/Composants_Main.rb
Permission denied - /Users/Oxer\BGSketchup_Composants.ini
Error al cargar archivo BGSketchup_Composants.rb
Permission denied - /Users/Oxer\BGSketchup_Composants.ini]The BGSketchup_Composants.ini file doesn't exist in that path, i have complete privilegies for Plugins folder.
-
I have added the spanish language to Localization.rb file.
-
Hello,
As every day, just post an update, with following corrections :
Corrected : When clicking on component in model, the information were not displayed.
Corrected : Revision system now working
Corrected : Bug when clicking on a group in the model (doesn't block user)
Corrected : Attempt to solve Mac file issue
Added : Spanish language, thanks to OxerJQL, this solve points 2 and 3. For your point 1, note that Sketchup force the file to be a ".skp" when saving component...No way to solve this...
About point 4 : it could be complex...I will try (I stack this with the filters for the list ;o)Oxer : thank yoiu for translation !
About your issue on Mac, I make a correction that may solve your issue. I saw that the "/" and "" were different on your message. as windows reconize both, I force the string to be with "/". I guess it solve the problem...Please keep me informed !Note also that I release the first help file (at least !!!). Hope you will love it !!!
bye !
-
Thanks for the update but it appears the same message in Ruby Console:
%(#FF0000)[Error al cargar archivo /Users/Oxer/Library/Application Support/SketchUp 2013/SketchUp/Plugins/BGSketchup/Composants/Rb/Composants_Main.rb
Permission denied - /Users/Oxer\BGSketchup_Composants.ini
Error al cargar archivo BGSketchup_Composants.rb
Permission denied - /Users/Oxer\BGSketchup_Composants.ini] -
@oxer said:
Thanks for the update but it appears the same message in Ruby Console:
%(#FF0000)[Error al cargar archivo /Users/Oxer/Library/Application Support/SketchUp 2013/SketchUp/Plugins/BGSketchup/Composants/Rb/Composants_Main.rb
Permission denied - /Users/Oxer\BGSketchup_Composants.ini
Error al cargar archivo BGSketchup_Composants.rb
Permission denied - /Users/Oxer\BGSketchup_Composants.ini]Hello Oxer,
could you please post the complete error message ? To which line produce this bug ?
thank you ! -
The answer is in the text
/Users/Oxer****\****BGSketchup_Composants.ini
The backslash \ will only work as a file separator character on PCs, NOT MACs !
A / works on both platforms.
You should useFile.join(directorypath, filename)
to avoid this issue.
Also you can use.tr!("\\","/")
to fix it.
[Conversely, on PC if you ever want to pass a path to say a "cmd" use.tr!("/","\\")
as DOS always expects \ !]On PC AND on MAC this will work:
/Users/Oxer****/****BGSketchup_Composants.ini
Change the code from:
file_name=BGSketchup_my_documents_dir()+"\\BGSketchup_Composants.ini"
to
file_name=Fiile.join(BGSketchup_my_documents_dir(), "BGSketchup_Composants.ini")
which avoids the\
...Incidentally don't set def methods with uppercase first letter:
BGSketchup_my_documents_dir()
NO
bgSketchup_my_documents_dir()
YES
Although a method named 'getTempFolder()
' would be more logical*** ??***Writing this ini file to that user-location is also somewhat ill-advised ?
Why not put it into a 'Temp folder' - this varies between PC and MAC...
ENV['TEMP'] || ENV['TMPDIR']
if !(mac) ... return path.strip.gsub("\000","") else #On Mac return File.expand_path "~" end
could simply be:
return ENV['TEMP'] || ENV['TMPDIR']
On PC it gives:
C:\Users\UserName\AppData\Local\Temp
OR perhaps on PC [ruby:3kd2xg63]ENV['APPDATA'][/ruby:3kd2xg63] giving:
[ruby:3kd2xg63]C:\Users\UserName\AppData\Roaming[/ruby:3kd2xg63]
On MAC it's the user's hidden ..../T[emp] folder
Keeping it 'out of the way', and avoiding all of the '.so' rigmarole and odd locations for the .ini file...
-
How TIG says, the answer is in the text, all red text is the Error Message.
Thanks TIG for the explanation, i don't know the ruby code. -
Hello,
Thank you TIG for your help.
Your code is so much simple than mine...I changed to yours.New version (1.9.4) solve only this error.
-
Version 1.9.5 :
Corrected : When saving all definitions, it asks now to save also file without link.
Optimzed : Now, for revision management, file with letter after revision level and accepted "toto rev 3 (super").skp"Oxer, any feedback as a MAC user ?
I will officially post this version tomorrow if no bugs are found.
In parrallel I will look for JQL request but won't post new version (I think too much version make confusion...)
-
-
Now, there isn't Console Error when you open Sketchup, the settings window appears, the plugin generates the BGSketchup_Composants.ini file in Temporal folder, the translation works but the there are some problems:
- The list is empty, when you push Update List button, nothing happens, no error in Ruby Console.
- If you push Reload All Components button, it appears an error in Ruby Console, see the image 2.
- If you push Save All Components button, it appears a first pop up window (image 3), i push Yes button and it appears a second empty pop up window (image 4), i push yes and it appears a Ruby Console Error (image 5).
-
That '
nil
' error points to code at line #494 of the scriptComposants_Main.rb
- which reads:
UI.messagebox @strNbEnregistementDefinitions+" ("+compteur_ok.to_s+"/"+compteur.to_s+")"
So presumably a part of it is actually 'nil
' ?
@strNbEnregistementDefinitions
is set elsewhere in the scriptLocalization.rb
.
This is set from a series of 'if/elsif
' tests, BUT ill-advisedly there is no 'fall-back' 'else
' when nothing matches the other tests - so then it can return 'nil
', and thereby cause the error - because a 'nil
' object can't be used as part of a textstring
!Perhaps change the code to read...
@strNbEnregistementDefinitions='?' unless @strNbEnregistementDefinitions UI.messagebox(@strNbEnregistementDefinitions+" ("+compteur_ok.to_s+"/"+compteur.to_s+")")
OR have a proper '
else
' fall-back in theLocalization.rb
tests section...The other two methods used in compiling the remainder of the string should always safely return a string as they start off as
0
- giving'... (1/2)'
etc... -
@tig said:
This is set from a series of '
if/elsif
' tests, BUT ill-advisedly there is no 'fall-back' 'else
' when nothing matches the other tests - so then it can return 'nil
', and thereby cause the error - because a 'nil
' object can't be used as part of a textstring
!This could be due to a missing tranlsation in string (a string not defined in one language). Therefore, I change the way of working on Localisation.rb :
1-I load all strings in English
2-I load the strings in the wanted language.
This means that if a string is not translated, the string will be defined with English value.The key thing, for me, is to always have strings defined in English, at minimal.
-
@oxer said:
- If you push Reload All Components button, it appears an error in Ruby Console, see the image 2.
Please try version 1.9.6 below, which should solve this issue.
@oxer said:
- The list is empty, when you push Update List button, nothing happens, no error in Ruby Console.
That's strange...maybe a javascript error...let's try with version 1.9.6, it may solve the issue.
-
Ok, i'll test it.
-
The list continues empty
I'll test the other functions -
- Modify file's path -->works
- Save selected component -->works
- Save all components -->works
- Save with new revision level -->works
- Reload selected component -- > doesn't work, when you select the component it appears "Saved file is newer!" message but when i push Reload selected component button nothing happens, see the image below.
-
@oxer said:
The list continues empty
I'll test the other functionsCould be due to the browser I use which is IE.
Please try to open attached file by placing it in plugins folder, in HTML subfolder. And tells me what happen.
It's just a simplifyed list to see any error that your brownser may show.If you see something like a list, try to open directly the treeview.html file.
Please report me any error...because without list...it's just not so useful...
I maybe need an html/javascript specialist...
-
I placed the test.html file in /Users/Oxer/Library/Application Support/SketchUp 2013/SketchUp/Plugins/BGSketchup/Composants/Html/ then I run Sketchup but when I call the plugin, the list is empty again. I have tried open tree.html in Safari browser and it appears a message:
Safari can't open "sip:get_data@charger_tires" because OSX doesn't recognize the address of internet that begin with "skp:".
When i open test.html in Safari the file shows like this:
-
Hello,
Just post new version, with following updates :
1.9.8: Corrected : Delete all debugging messages, now works on MAC ! Thanks to Oxer !1.9.7: Corrected : Some javascript standard respect Added : Show a message to update the list if the wasn't. Added : Option not to start component mangement on SU start up to avoid adding attribute to model or slow down due to Observers 1.9.6: Corrected : For localisation, in cas of error, the English language is chosen, also, english tranlsation always preload in case translation is missing Corrected : Change function in BGSketchup.rb functions into unic name function to avoid problem with other plugins
Advertisement