Hi, Is it possible to quickly move or rotate the pivot in max whilst in sub object mode, I have always altered the working pivot in Hierarchy whilst in object mode but this seems quite a long winded way of doing it. Also is it possible to align the pivot to the same rotation as a  poly or snap it to a vert in object mode.
Thanks, Nick
                    
                 
            
Replies
The script could probably be easily modified to work in other sub-object modes as well, though I haven't much need for that personally.
macroScript SetWorkingPivotToVertex category:"Custom Macros" tooltip:"Set Max's Working Pivot to the currently selected vertex (or center of multiple selected vertices)" buttontext:"Vertex->Pivot" ( fn getSelectedVertices = ( if selection.count == 1 then ( if (classof (modPanel.getCurrentObject())) == Edit_Poly then ( polyObj = modPanel.getCurrentObject() ) else ( polyObj = $ ) if getSelectionLevel polyObj != #vertex then ( messageBox "Please activate Vertex sub-object mode first" ) else ( objClass = classOf polyObj case objClass of ( Editable_Poly: ( temp = polyObj.selectedVerts verts = for v in temp collect v.pos ) Editable_Mesh: ( temp = polyObj.selectedVerts verts = for v in temp collect v.pos ) Edit_Poly: ( indices = polyObj.getSelection #vertex as array verts = for index in indices collect polyObj.getVertex index ) default: ( messageBox "Unhandled object type" ) ) ) ) verts ) on Execute do ( try ( WorkingPivot.UseMode = false WorkingPivot.EditMode = false verts = getSelectedVertices() if verts != undefined AND verts.count > 0 then ( minX = minY = minZ = 100000000 --initialize min.values to very large numbers maxX = maxY = maxZ = -100000000 --initialize max.values to very low numbers for v in verts do --loop through all vertices in the bitarray defined above ( if v.x > maxX do maxX = v.x if v.y > maxY do maxY = v.y if v.z > maxZ do maxZ = v.z if v.x < minX do minX = v.x if v.y < minY do minY = v.y if v.z < minZ do minZ = v.z ) theCenter = ([maxX,maxY,maxZ] + [minX,minY,minZ]) / 2.0 m = transMatrix theCenter print ("Setting Working Pivot to " + (theCenter as string)) setSelectionLevel $ #object setSelectionLevel $ #vertex redrawViews WorkingPivot.setTM m WorkingPivot.UseMode = true WorkingPivot.EditMode = false -- End HACK ) ) catch ( msg = getCurrentException() messageBox msg title:"Set Working Pivot" beep:true ) ) ).
http://bryancavett.com/maxscripts/actionCenters.ms
It works just like the actionCenter in Modo, placing the working pivot at the currently selected sub-object + aligning it properly to its normal (it does the job better than local coordinate space)
doesn't work for all cases but for most it does .
cheers!
Thanks for the link. There is a bug in the poly sub object aligning. I haven't figured out how to fix nor have I updated this script since uploading it. It works in most cases but when you are trying to align it to a poly that has other polys surrounding it at extreme angles from one another it can get the alignment wrong. I should look at fixing this script at some point.
It's great for setting your pivot point on a 0 axis for the symmetry modifier. I just leave the tool open on my second screen, and one click, done!
http://www.neilblevins.com/soulburnscripts/soulburnscripts.htm
What I do is select few vertical verts (on the same edge) and open the interface and select one of the points on the bottom of that cube- hit apply ...and nothing happens
Yup, that's all I ever use, the orbit subobject button.