You're probably working in local coordinates instead of world. Switch those around and see if that alleviates your issue. If that doesn't fix it, Tools -> Reset xForm
If you find yourself switching back and forth between local and world you might want to take a second to set up a "double tap shortcut". I went into a bit more detail HERE, but basically you tap a key once and it will do something like select the scale tool. Tap twice and it will cycle the gizmo to local, do it again and it goes to world, then view and then back to local.
Here is the code I use for replacing the Move Rotate Scale shortcuts.
macroscript ToggleMove
Category:" MyTools"
toolTip:"KBS ToggleMove (Q)"
(--MOVE
max move--switch to move mode first
global lastClickedMove-- define lastClickedMove, but we don't need to assign it to anything.
fn RefCoordCycle_LV = (--Cycles the RefCoordsys between Local & View
if getRefCoordSys() == #local then (
Print "View"
toolmode.coordsys #view
)
else (
print "Local"
toolmode.coordsys #local
)
)
fn RefCoordCycle_LVS = (--Cycles the RefCoordsys between Local, View &Screen
if getRefCoordSys() == #screen then (
Print "View"
toolmode.coordsys #view
)
else (
if getRefCoordSys() == #hybrid then (
print "Local"
toolmode.coordsys #local
)
else (
print "Screen"
toolmode.coordsys #screen
)
)
)
fn checklastClickedMove = (
local thisClickedMove = timeStamp()
if lastClickedMove != undefined then (
if (thisClickedMove - lastClickedMove) < 500 do (--adjust this value to shorten or lengthen wait time
max move
RefCoordCycle_LV()--Switch this to _LVS to cycle between Local, View & Screen
)
lastClickedMove = thisClickedMove
)
else (--switch gizmo to move, ignore pivot setting, update "lastClickedMove"
max move
lastClickedMove = timeStamp()
)
OK
)
checklastClickedMove()
)
macroscript ToggleRot
Category:" MyTools"
toolTip:"KBS ToggleRot (W)"
(--ROTATION
max rotate --switch to rotate mode first
global lastClickedRot-- define lastClickedRot, but we don't need to assign it to anything.
fn RefCoordCycle_LV = (--Cycles the RefCoordsys between Local & View
if getRefCoordSys() == #local then (
print "View"
toolmode.coordsys #view
)
else (
print "Local"
toolmode.coordsys #local
)
)
fn RefCoordCycle_LVS = (--Cycles the RefCoordsys between Local, View &Screen
if getRefCoordSys() == #screen then (
print "View"
toolmode.coordsys #view
)
else (
if getRefCoordSys() == #hybrid then (
print "Local"
toolmode.coordsys #local
)
else (
print "Screen"
toolmode.coordsys #screen
)
)
)
fn checklastClickedRot = (
local thisClickedRot = timeStamp()
if lastClickedRot != undefined then (
if (thisClickedRot - lastClickedRot) < 500 do (--adjust this value to shorten or lengthen wait time
max rotate
RefCoordCycle_LV()--Switch this to _LVS to cycle between Local, View & Screen
)
lastClickedRot = thisClickedRot
)
else (--switch gizmo to Rot, ignore pivot setting, update "lastClickedRot"
max rotate
lastClickedRot = timeStamp()
)
OK
)
checklastClickedRot()
)
macroscript ToggleScale
Category:" MyTools"
toolTip:"KBS ToggleScale (E)"
(--SCALE
max scale--switch to scale mode first
-- define lastClickedScale, but we don't need to assign it to anything.
global lastClickedScale
fn RefCoordCycle_LV = (--Cycles the RefCoordsys between Local & View
if getRefCoordSys() == #local then (
print "View"
toolmode.coordsys #view
)
else (
Print "Local"
toolmode.coordsys #local
)
)
fn RefCoordCycle_LVS = (--Cycles the RefCoordsys between Local, View &Screen
if getRefCoordSys() == #screen then (
print "View"
toolmode.coordsys #view
)
else (
if getRefCoordSys() == #hybrid then (
Print "Local"
toolmode.coordsys #local
)
else (
Print "Screen"
toolmode.coordsys #screen
)
)
)
fn checklastClickedScale = (
local thisClickedScale = timeStamp()
if lastClickedScale != undefined then (
if (thisClickedScale - lastClickedScale) < 500 do (--adjust this value to shorten or lengthen wait time
max scale
RefCoordCycle_LV()--Switch this to _LVS to cycle between Local, View & Screen
)
lastClickedScale = thisClickedScale
)
else (--switch gizmo to Scale, ignore pivot setting, update "lastClickedScale"
max Scale
lastClickedScale = timeStamp()
)
OK
)
checklastClickedScale()
)
You can use double tap shortcuts for a lot of things and really cut down on the number of crazy combinations your hands have to twist into. Tap-Tap instead of, Ctrl-Shift-Frick my hand just cramped up... heh.
You run the script once and then it shows up in the Customize UI menu and you can bind it to a key.
Hey Mark, isit possible to create those multi clicks function become a global functions? so it can be reusable, I mean like for example;
fn multiClicks singleCmd doubleCmd =
(
[...]
)
... the body basically the same with what you got, but instead explicitly write the move command (or rotate or etc.) we replace it with singleCmd/doubleCmd as an argument, so when we want to call the function we will say it like;
multiClicks (print "one") (print "two")
... from what I understand, when we click once it will print "one" and click twice it will print "two". But instead currently no matter what it'll print "one" "two" at the same time.
Any idea?
Replies
Here is the code I use for replacing the Move Rotate Scale shortcuts. You can use double tap shortcuts for a lot of things and really cut down on the number of crazy combinations your hands have to twist into. Tap-Tap instead of, Ctrl-Shift-Frick my hand just cramped up... heh.
You run the script once and then it shows up in the Customize UI menu and you can bind it to a key.
Hey Mark, isit possible to create those multi clicks function become a global functions? so it can be reusable, I mean like for example; ... the body basically the same with what you got, but instead explicitly write the move command (or rotate or etc.) we replace it with singleCmd/doubleCmd as an argument, so when we want to call the function we will say it like; ... from what I understand, when we click once it will print "one" and click twice it will print "two". But instead currently no matter what it'll print "one" "two" at the same time.
Any idea?