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

    [Plugin] Rotate 90 around [X, Y, Z] axis

    Scheduled Pinned Locked Moved Plugins
    49 Posts 28 Posters 57.6k Views 28 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.
    • daikuD Offline
      daiku
      last edited by

      @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 😄 ]

      To map a context menu item to a shortcut key, you must have an appropriate item selected before you bring up the preferences window. The context menu commands will show up under "edit item". CB.

      Clark Bremer
      http://www.northernlightstimberframing.com

      1 Reply Last reply Reply Quote 0
      • daikuD Offline
        daiku
        last edited by

        @philem said:

        @watkins said:

        Dear Philip,

        I noticed something similar when I first tried the script. I created a cube and used the script, and nothing "apparently" happened. The cube is a nice, 4-fold axially symmetric object and looks the same when rotated 90 degrees. Try something with a feature, like a notch, to make your object asymmetric about its Z-axis.

        Kind regards,
        Bob

        I didn't realise that fact about Bryce..but still no joy,

        I still can't get it to work, I have drawn an object with a notch and a cut out etc. just to be sure,(attached) I even made sure the Z axis went though the part but still can't get it to work. I have even removed the plugin, restarted Sketchup, closed it down, copied the plugin back in again still no luck.. 😞

        http://i307.photobucket.com/albums/nn310/pipp44/rotateproblem1.jpg

        But the command does show up on the context menu? That's odd.

        Clark Bremer
        http://www.northernlightstimberframing.com

        1 Reply Last reply Reply Quote 0
        • daikuD Offline
          daiku
          last edited by

          I have a new version ready that rotates around any of the three axes. I tried to edit my original posts to replace the ruby file, but I only succeeded in deleting the old. What's the protocol here? CB.


          rot90.rb

          Clark Bremer
          http://www.northernlightstimberframing.com

          1 Reply Last reply Reply Quote 0
          • CadFatherC Offline
            CadFather
            last edited by

            ..time we had floating shorcuts! 🤓

            301 Moved Permanently

            favicon

            (www.sketchucation.com)

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

              @daiku said:

              I have a new version ready that rotates around any of the three axes. I tried to edit my original posts to replace the ruby file, but I only succeeded in deleting the old. What's the protocol here? CB.

              Thanx! will try the shortcut thing tomorrow ^^ [too late now 😲 👍

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

                whoops double post, sorry for that [as mentioned below it is late 🤣 ]

                1 Reply Last reply Reply Quote 0
                • tbdT Offline
                  tbd
                  last edited by

                  daiku: dont reinvent the wheel, extend it 😄
                  here is my old 2004 script for start


                  Rotix11 - 2004 script

                  SketchUp Ruby Consultant | Podium 1.x developer
                  http://plugins.ro

                  1 Reply Last reply Reply Quote 0
                  • philemP Offline
                    philem
                    last edited by

                    I downloaded the latest version of this ruby and it worked.
                    thanks mate..

                    Just do it, it might be fun.

                    1 Reply Last reply Reply Quote 0
                    • daikuD Offline
                      daiku
                      last edited by

                      @unknownuser said:

                      daiku: dont reinvent the wheel, extend it 😄
                      here is my old 2004 script for start

                      Yes, that would have been better. I was not aware of this script. This seems to be a recurring theme. What we really need is a central repository that includes detailed descriptions of what each script does, along with detailed usage instructions. There are several collections around, including on this forum, but nothing that does a complete job. I realize this would be a huge undertaking for someone, but whoever steps up would certainly earn "hero" status in our community.

                      Clark Bremer
                      http://www.northernlightstimberframing.com

                      1 Reply Last reply Reply Quote 0
                      • T Offline
                        tor
                        last edited by

                        Many thanks for this simple, yet very useful plugin... exactly what I was looking for when creating some configurations of modular components.

                        What I think would be really keen is to be able to call this script as one is placing a component from the component browser. Any ideas on how to make that work?

                        Tor

                        1 Reply Last reply Reply Quote 0
                        • daikuD Offline
                          daiku
                          last edited by

                          Not sure what you mean. Do you want to rotate EVERY time you place it? Just re-create the component with the correct orientation to the local axes. CB.

                          Clark Bremer
                          http://www.northernlightstimberframing.com

                          1 Reply Last reply Reply Quote 0
                          • T Offline
                            tor
                            last edited by

                            Well, what I was hoping for is to select a component from the component browser to place into the model, then as it is moving with the mouse at the insertion point, rotate it, so that it's in the correct orientation. Kind of a building block assembly system. And, sometimes a component would need to be rotated, sometimes not.

                            Obviously, I can put the component "down", rotate, then move it, but was just hoping to simplify that process in the creation of numerous modular assemblies.

                            But it seems that the component being placed is not actually selected, per se, so no shortcut key works on it.

                            Tor

                            1 Reply Last reply Reply Quote 0
                            • I Offline
                              InterArchi
                              last edited by

                                 Thank u
                              
                              1 Reply Last reply Reply Quote 0
                              • EarthMoverE Offline
                                EarthMover
                                last edited by

                                Is there a plugin out there that will do this to multiple components at the same time? Or one that will rotate each around it's own z axis simultaneously?

                                3D Artist at Clearstory 3D Imaging
                                Guide Tool at Winning With Sketchup
                                Content Creator at Skapeup

                                1 Reply Last reply Reply Quote 0
                                • daikuD Offline
                                  daiku
                                  last edited by

                                  @earthmover said:

                                  Is there a plugin out there that will do this to multiple components at the same time? Or one that will rotate each around it's own z axis simultaneously?

                                  Easy change. Updated file at the top of the thread. CB.

                                  Clark Bremer
                                  http://www.northernlightstimberframing.com

                                  1 Reply Last reply Reply Quote 0
                                  • EarthMoverE Offline
                                    EarthMover
                                    last edited by

                                    That was fast. Thanks a ton!!

                                    3D Artist at Clearstory 3D Imaging
                                    Guide Tool at Winning With Sketchup
                                    Content Creator at Skapeup

                                    1 Reply Last reply Reply Quote 0
                                    • G Offline
                                      glro
                                      last edited by

                                      @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?

                                      1 Reply Last reply Reply Quote 0
                                      • G Offline
                                        glro
                                        last edited by

                                        @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>shortcut

                                        require '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")
                                        
                                        1 Reply Last reply Reply Quote 0
                                        • M Offline
                                          Mainline411
                                          last edited by

                                          @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>shortcut

                                          require '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.

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

                                            Great plugin when mapped to a shortcut. Thanks Clark!

                                            FYI everybody, Clark just headed up a local meetup about ruby programming. 🎉

                                            3D Printing with SketchUp Book
                                            http://goo.gl/f7ooYh

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

                                            Advertisement