[Plugin] Rotate 90 around [X, Y, Z] axis
-
@jim said:
@hfm said:
okay, very nice script... but could you please also make it work on X and Y axis? And make it so that you can select a shortcut for the tools?
Tried to edit it myself but my knowledge of ruby is lacking
[did get the 15 degrees to work though ]I always wanted to make a rotator that is sensitive to the view. For example, it would rotate the selection around the axis that is closest to the axis from the camera to the target. If you wanted ro rotate around the Z, you could select the entities, go to Top view and press the shortcut. If you wanted to rotate around the Y axis, select the entities, go to the Front view and use the same shortcut.
What do you think?
My idea is that, having to change the view would take away the advantage of having the rotator sensitive to the view
I have another suggestion: Rot90.rb rotate the component around (ent.bounds.center); would it be possible to rotate around the origin instead, as you did in your mover2.rb plugin?
-
@hfm said:
okay, very nice script... but could you please also make it work on X and Y axis? And make it so that you can select a shortcut for the tools?
Tried to edit it myself but my knowledge of ruby is lacking
[did get the 15 degrees to work though ]I don't know much about ruby either, but here is a simplified version of the plugin:
rotate around the component origin instead of center
only around z axis and 90 degrees
no context menu, a line in the plugin menu instead (so you can add a keyboard shortcut (pop up menu, window>preferences>shortcutrequire 'sketchup.rb' ## ## Rotate selected component instance 90 degrees around Z axis ## ## Copyright (c) 2010 Clark Bremer (aka daiku) ## Northern Lights Timber Framing ## clarkb@northernlightstimberframing.com ## ## 05/02/12; rotation autour de l'origine du composant, axe z seulement, acces menu deroulant ou raccourci clavier ## 9/10/2010; Multiple Groups/Comps ## 5/17/08; All 3 axes. Input from Matt666 ## 4/24/08; Use center as rotation point instead of CI origin. Also works on groups now. ## # Add a menu item to launch our plugin. UI.menu("PlugIns").add_item("rotation90z") { rotate90z } # ----------------------------------------------------------------------------- def selected_comps_and_groups mm = Sketchup.active_model ss = mm.selection return nil if ss.empty? ss.each do |cc| return nil if not ((cc.instance_of? Sketchup;;ComponentInstance) or (cc.instance_of? Sketchup;;Group)) end ss end #def rotate90(sel, axis) def rotate90z sel = selected_comps_and_groups # axis == "z" rv = Geom;;Vector3d.new(0,0,1) # rv = Geom;;Vector3d.new(0,0,1) if axis == "z" # rv = Geom;;Vector3d.new(0,1,0) if axis == "y" # rv = Geom;;Vector3d.new(1,0,0) if axis == "x" ra = 90.degrees #rt = Geom;;Transformation.rotation(rp, rv, ra) #autour du centre de la boite enveloppe sel.each do |ent| # rp = Geom;;Point3d.new(ent.bounds.center) #rotation point rp = Geom;;Point3d.new(ent.transformation.origin) ent.transform!(Geom;;Transformation.rotation(rp, rv, ra)) end end #if( not file_loaded?("rot90.rb") ) # UI.add_context_menu_handler do |menu| # if menu == nil then # UI.messagebox("Error setting context menu handler") # else # if (sel = selected_comps_and_groups) # sbm = menu.add_submenu("Rotate 90") # sbm.add_item("Around Red") {rotate90 sel, "x"} # sbm.add_item("Around Green") {rotate90 sel, "y"} # sbm.add_item("Around Blue") {rotate90 sel, "z"} # end # end # # end #end #file_loaded("rot90.rb")
-
@glro said:
@hfm said:
okay, very nice script... but could you please also make it work on X and Y axis? And make it so that you can select a shortcut for the tools?
Tried to edit it myself but my knowledge of ruby is lacking
[did get the 15 degrees to work though ]I don't know much about ruby either, but here is a simplified version of the plugin:
rotate around the component origin instead of center
only around z axis and 90 degrees
no context menu, a line in the plugin menu instead (so you can add a keyboard shortcut (pop up menu, window>preferences>shortcutrequire 'sketchup.rb' > ## > ## Rotate selected component instance 90 degrees around Z axis > ## > ## Copyright (c) 2010 Clark Bremer (aka daiku) > ## Northern Lights Timber Framing > ## clarkb@northernlightstimberframing.com > ## > ## 05/02/12; rotation autour de l'origine du composant, axe z seulement, acces menu deroulant ou raccourci clavier > ## 9/10/2010; Multiple Groups/Comps > ## 5/17/08; All 3 axes. Input from Matt666 > ## 4/24/08; Use center as rotation point instead of CI origin. Also works on groups now. > ## > > # Add a menu item to launch our plugin. > UI.menu("PlugIns").add_item("rotation90z") { rotate90z } > # ----------------------------------------------------------------------------- > > > def selected_comps_and_groups > mm = Sketchup.active_model > ss = mm.selection > return nil if ss.empty? > ss.each do |cc| > return nil if not ((cc.instance_of? Sketchup;;ComponentInstance) or (cc.instance_of? Sketchup;;Group)) > end > ss > end > > #def rotate90(sel, axis) > def rotate90z > sel = selected_comps_and_groups > # axis == "z" > rv = Geom;;Vector3d.new(0,0,1) > # rv = Geom;;Vector3d.new(0,0,1) if axis == "z" > # rv = Geom;;Vector3d.new(0,1,0) if axis == "y" > # rv = Geom;;Vector3d.new(1,0,0) if axis == "x" > ra = 90.degrees > #rt = Geom;;Transformation.rotation(rp, rv, ra) #autour du centre de la boite enveloppe > sel.each do |ent| > # rp = Geom;;Point3d.new(ent.bounds.center) #rotation point > rp = Geom;;Point3d.new(ent.transformation.origin) > ent.transform!(Geom;;Transformation.rotation(rp, rv, ra)) > end > end > > > > #if( not file_loaded?("rot90.rb") ) > # UI.add_context_menu_handler do |menu| > # if menu == nil then > # UI.messagebox("Error setting context menu handler") > # else > # if (sel = selected_comps_and_groups) > # sbm = menu.add_submenu("Rotate 90") > # sbm.add_item("Around Red") {rotate90 sel, "x"} > # sbm.add_item("Around Green") {rotate90 sel, "y"} > # sbm.add_item("Around Blue") {rotate90 sel, "z"} > # end > # end > # > # end > #end > > > #file_loaded("rot90.rb")
How do I use this plugin I put the file in plugins and there is nothing in plugins dropdown and nothing when I right click.
-
Great plugin when mapped to a shortcut. Thanks Clark!
FYI everybody, Clark just headed up a local meetup about ruby programming.
-
Sorry, does anyone know hot to use this very useful plugin in SketchUp2016? I tried just putting it with other rb files in rooth folder, but it didn't work. Help please!
-
Hello! Thanks for the plugin! For some reason Im having problem assigning a keybouard shortcut for certain actions. The plugin does not appear in shortcuts list.
How can I do that?
Thank you.
-
@kmyklpenter said:
The plugin does not appear in shortcuts list.
Do you have a group or component selected in the model? Like other Context menu items, you need to have something selected that would make this plugin appear in the menu.
-
hello im a fan of this extension. simple yet useful. im just hope it to rotate even ungroup entities for the next version update.
-
How to make only the axis of a component or a group rotate?
-
Great plugin, thanks a lot
-
This Plugin is the bomb.. such a simple task, but mapped to shortcuts is so powerful. i use this everyday and would be genuinely lost without it. Thankyou!!
-
@freestylerboo said in [Plugin] Rotate 90 around [X, Y, Z] axis:
This Plugin is the bomb.. such a simple task, but mapped to shortcuts is so powerful. i use this everyday and would be genuinely lost without it. Thankyou!!
Imagine if there was a tool handled rotation, translation and scaling.....
-
@Rich-O-Brien said in [Plugin] Rotate 90 around [X, Y, Z] axis:
@freestylerboo said in [Plugin] Rotate 90 around [X, Y, Z] axis:
This Plugin is the bomb.. such a simple task, but mapped to shortcuts is so powerful. i use this everyday and would be genuinely lost without it. Thankyou!!
Imagine if there was a tool handled rotation, translation and scaling.....
This looks great!
Advertisement