Rotate Object by 90° super fast method?

Hi there

Its very basic and there are several ways to to it, but i never found a super fast way to rotate an object by 90° around it’s center vertical axis. Let’s say you are placing lots of furniture in a big floor plan. The most common thing is (except from moving and copying) rotating the object by 90°. My favorite method is:

  1. click the object,
  2. click the rotation handle in the gumball,
  3. type “90”,
  4. hit enter
    done

Is there a way to solve it like:

  1. click object
  2. cmd+R or cmd+L (or a command like “_Rotate90Clockwise”)
    done

Thanks for your support :sunny:

Hello - BoxEdit may do what you need.

-Pascal

Ah, nice! I didn’t know _BoxEdit existed. It serves me for other things, thanks a lot!
Unluckily for exactly this kind of issue it is not making my workflow faster… It’s acutally more clumsy than manipulating the gumball.

Hello - here’s a quick and dirty python, in case it helps.

RotateEach.py (1.3 KB)

To use the Python script use RunPythonScript, or a macro (Much faster):

_-RunPythonScript "Full path to py file inside double-quotes"

BTW, re:BoxEdit, it has a setting to rotate each object on its own bounding box, so once that is set it should be pretty fast for multiple objects.

-Pascal

1 Like

Dear Pascal, thanks for your lighting fas support! I appreciate it a lot!

Its my first time I used python within Rhino, it worked! =) As well for the macro editor, i never used it so far. I should learn more about it, is so powerful! =)

One question left, is it possible to call this Script with an alias or command?

Yes - that is the second part of my directions above…

set your alias name to say, “RotateEach” and the macro as described. Then you can type RotateEach and Enter to get the action you want:

You can then create macros from 'RotateEach" like

RotateEach 90
or
RotateEach -90

etc etc.
Annnnd, apologies, @ric, I just noticed this thread is on the mac forum. Let me make sure it all works there - hold on a bit.

-Pascal

1 Like

So nice! Thanks Pascal!
It works as well on the mac =)

I call “rr” (which is my super fast alias :wink: )
then hit the spacebar twice and it’s done!
Saves me each time a second, which makes hours in the long run, specially when applying the command to multiple objects! and it’s much more fun like this!

1 Like

Hi Pascal and thanks a lot for the script. It would be useful to have this feature inside rhino.
It works fine except one thing: if during the selection of the objects I have made a mistake I cannot deselect the wrong ones. Sometimes I can deselecto only some objects…it’s quite strange…

Thanks in advance

Fabrizio

Hi Fabrizio - if you have an example that shows the selection problem, I’ll take a look.

-Pascal

Hi,
yes…please take a look at this file. I can deselect only the cone.

thanks a lot

fabrizioexample.3dm (110.7 KB)

Hmm - so far this works as expected here. Ctr-click to deselect, that is what you mean, correct? Are you interacting with the command line (Angle) at all in the process?
Ah - wait… I am on Windows - hold on a moment.

I see the problem on V5 & V6 for Mac…at least part of the problem seems to be that the other objects are extrusions and not Breps. If I Explode and then Join all the objects or ConvertExtrusion, then selection seems normal.

-Pascal

Yes, I put a value…like 20 degree and I tryed to deselect with ctrl-click

Hi, I use rhino 6 on windows.
The objects are all primitives and not extrusions.
Sometimes If I put (for exaple) 3 box I can deselect only some of them.

Fabrizio

Hi Fabrizio - well, that is odd - I see a clear problem on Mac but on Windows this all seems fine here - can you run SystemInfo in Rhino and post the results?

-Pascal

SystemInfo.txt (2.1 KB)

Hi Fabrizio - thanks - if I run 6.15 and 6.16 I see the same problem on Windows as well. It appears to be fixed in 6.17.

-Pascal

Thanx a lot Pascal!

How I can modify this script to rotate around the rs.NamedCPlane(World Top) axis instead of the rs.ViewCPlane()?

def RotateEach():
    vecDir = rs.NamedCPlane(World Top).ZAxis

The above code not working.

Hello- namedCplane looks for a string - the name of a saved cplane, like

rs.NamedCPlane("MySpecialCPlane").ZAxis

World Top is not a string as you’ve added it and in any case this is not the name, unless you have added it, of a saved cplane.

However, the World Top plane is Rhino.Geometry.Plane.WorldXY so you can just use that if you import Rhino at the top of the script.

-Pascal

Or even rs.WorldXYPlane() without having to import Rhino…

1 Like