Okay, well this probably isn’t the right way to do it, but for now it works for me and I’m tired of messing with it. Here’s the script (in JS) for those who want it:
var oSel = selection(0);
ActivateRaycastPolySelTool(null);
var rtn = PickElement( "polygon", "Pick reference plane", "Pick reference plane", modifier, button, 0 )
var element = rtn.Value( "PickedElement" );
var button = rtn.Value( "ButtonPressed" );
var modifier = rtn.Value( "ModifierPressed" );
if ( button != 0 )
{
SetTransientReferencePlane(element );
px=getvalue ("RefPlanes.Transform.posx");
py=getvalue ("RefPlanes.Transform.posy");
pz=getvalue ("RefPlanes.Transform.posz");
rx=getvalue ("RefPlanes.Transform.rotx");
ry=getvalue ("RefPlanes.Transform.roty");
rz=getvalue ("RefPlanes.Transform.rotz");
Translate(oSel, px, py, pz, siAbsolute, siGlobal, siCtr, siXYZ, null, null, null, null, null, null, null, null, null, 0, null);
Rotate(oSel, rx, ry, rz, siAbsolute, siGlobal, siCtr, siXYZ, null, null, null, null, null, null, null, 0, null);
ActivateObjectSelTool(null);
}
Also, I made an icon for my custom toolbar that you can have as well (hastily modified 3Dsmax icon, but it gets the job done). There is no error checking whatsoever, and currently I have the picking backwards from what I’d like it to be- right now you select the object with the bad center, hit the button, and then pick an object and then a face. In the future I’ll reverse this where you start with any element selected and then pick the object afterward. But for now, I’ve run out of time w/ this little project- need to get back to work on real stuff 