[Code] ComponentInstance-add_entities v1.9
-
Is there a way to know if the Outliner is open? If so, can't you use
Sketchup.send_action 21513
to toggle the Outliner off and have it work on both platform? -
@thomthom said:
Is there a way to know if the Outliner is open? If so, can't you use
Sketchup.send_action 21513
to toggle the Outliner off and have it work on both platform?It would be good if it were cross-platform BUT the "send_action 'number'" only works on a PC...
If someone has a Mac fix please let me know...
The toggleWindows script lets you 'rollup' any open window by name on a PC... -
Version 1.1
It can sometimes BugSplat if the Outliner window is open when it runs...
so it can now be forced to rollup first - using Jim's code ideas - you'll need
'toggleWindows.rb' and 'Win32API.so' - sorry it's for Windows only - Mac users ???
If you are on a PC and don't install toggleWindows.rb/Win32API.so then it'll still work
BUT please close the Outliner to avoid BugSplats !Version 1.1 20090401
AT-ComponentDefinition-delete.rb version used.
Recursive version now keeps layer/material.
Possible Outliner window rollup added.You should download the following files:
ComponentInstance-add_entities.rb
AT-ComponentDefinition-delete.rb [ http://www.sketchucation.com/forums/scf/viewtopic.php?p=145255#p145255 ]
for PC users the zip file contains 'toggleWindows.rb' and 'Win32API.so'...They are added to the first page in this thread...[ http://www.sketchucation.com/forums/scf/viewtopic.php?p=145009#p145009 ]
-
Version 1.2 is here [ http://www.sketchucation.com/forums/scf/viewtopic.php?p=145009#p145009 ]
It now has the 'definition.delete' code built-in as that is now greatly simplified thanks to AlexM's insights...
I'm awaiting Scott's feedback on cross-platformSketchup.send_action(21513)
etc - I don't think they are Mac friendly... However if they are we can make the v1.1 Outliner crash work-around for PC and Mac....
-
Does Mac also have the issue with the open Outliner? It's not specific to the way Windows redraws stuff?
-
@thomthom said:
Does Mac also have the issue with the open Outliner? It's not specific to the way Windows redraws stuff?
Don't know - are there any Mac users out there getting BugSplats with the Outliner being open during script runs that affect groups/instances ???
Any Mac users doing 'send_action' - please try to open/close the Outliner and trySketchup.send_action(21513)
etc and report back...
It would be good to have extended common 'send_actions' for both PC and Mac - I know that some 'numerical' ones don't work on Mac... -
I have an old Mac Mini at home I can test the send_actions on.
Not sure if it's reliable to test the Outliner issue due to it's age and lack of power... -
@thomthom said:
I have an old Mac Mini at home I can test the send_actions on.
Not sure if it's reliable to test the Outliner issue due to it's age and lack of power...Thanks - Scott's taking his time coming back... I suspect it's not going to be straight forward...
-
I reported this Mac bug here... I hope outliner test will be positive...
-
v1.3 is here http://www.sketchucation.com/forums/scf/viewtopic.php?p=145009#p145009
IT has an unneeded initial 'require ...' removed: otherwise it's unchanged... -
Hi TIG.
I start to play with your cool function!
Just one bug for the moment, line 139.group.definition
, and no definition function for groups.
I think you didn't copy the function in the script...class Sketchup;;Group def definition return self.entities[0].parent end end
-
Matt = thanks for pointing this out - I had 'group.definition' load from a separate ruby - that I hadn't posted...
I've now added it to this file for the avoidance of doubt...v1.4 now here: http://www.sketchucation.com/forums/scf/viewtopic.php?p=145009#p145009
Being able to get a group's definition is very useful in many other cases...
-
So now we have this great addition to the toolset, what is the best way of delivery?
The file gets copied into the Plugins-Directory.What should our own installer should do?
Check the existence of the file and install it if not present?
Check date and install it if a newer version is available?Can the ruby-code check if the method is installed?
If not use a copy installed in the own subfolder? -
@unknownuser said:
The file gets copied into the Plugins-Directory.
Your own installer should check the existence of the file and install it if not present, BUT also check any existing file's modification-date and install if you have a newer version.Yes to all, this is the best way for all plugins...
-
Method 'group.definition'....
More correct would be the code:class Sketchup;;Group def definition self.entities.parent end end
Because, when group is empty
there is an error at the use of code: self.entities[0.parent]
The group may be empty soon after its inception.
For example:group = Sketchup.active_model.active_entities.add_group definition = group.definition
Request to replace a code on more correct, because I use this method in the developments.
-
Following AlexM's point I have adjusted to code to avoid empty group errors...
v1.5 is now here... http://www.sketchucation.com/forums/scf/viewtopic.php?p=145009#p145009 -
An oversight has been corrected...
v1.6 all definition.behavior(s) now fully copied across. 20090702 download it from... http://forums.sketchucation.com/viewtopic.php?p=145009#p145009
-
I run into a problem when I use add_entities from a startup-ruby.
The code line:@kombi_group_sel_def.instances[0].add_entities(@kombi_group_list)
throws an error : undefined method `parent' for nil:NilClass
My ruby (zAutostart.rb) loads after the ComponentInstance-add_entities.rb
When I disable the call in my ruby and start the command from the console it runs without problems.
-
Are you sure you have an instance of that definition in your model?
-
@thomthom said:
Are you sure you have an instance of that definition in your model?
Yes, because when I outcomment my call and type it in the console after start-complete it works.
Therefor I build just a workaround:
wsh = WIN32OLE.new('Wscript.Shell') if wsh.AppActivate(skpbasename+".skp - SketchUp") sleep(1) wsh.SendKeys('{F2}') sleep(1) wsh.SendKeys('convert_acad_import{ENTER}') end
Seems that ruby's on startup have problems to use other stuff from other startup-rubys.
Advertisement