using Autodesk.Max;
namespace SRYShapeTools
{
public class SRYSplineShape
{
static public ISplineShape GetSplineShape(uint handle)
{
IGlobal global = GlobalInterface.Instance;
var node = global.COREInterface7.GetINodeByHandle(handle);
IObject obj = node.EvalWorldState(global.COREInterface.Time, true).Obj;
if (obj.CanConvertToType(global.SplineShapeClassID) > 0)
{
IInterface core = global.COREInterface;
int t = core.Time;
int modstyle = core.CommandPanelTaskMode;
IClass_ID EDITABLESPLINE_CLASS_ID = global.Class_ID.Create(96, 0);
object objMod = core.CreateInstance(SClass_ID.Osm, EDITABLESPLINE_CLASS_ID);
IModifier mod = (IModifier)objMod;
IIDerivedObject dobj = global.CreateDerivedObject(obj);
dobj.AddModifier(mod, null, 0); // top of stack
node.ObjectRef = dobj;
core.CollapseNode(node, false);
ISplineShape ss = (ISplineShape)node.ObjectRef.ConvertToType(global.COREInterface.Time, global.SplineShapeClassID);
return ss;
}
return null;
}
}
}
mxs code
dotNet.loadAssembly @"c:\SRYShapeTools.dll"
SRYgroupClass = dotNetObject "SRYShapeTools.SRYSplineShape"
classof $
x = SRYgroupClass.GetSplineShape $.inode.handle -- c# method
setSplineSelection $ #(1)
max modify mode
x.BeginOutlineMove currenttime.ticks;
x.outlinemove currenttime.ticks 10.0
x.EndOutlineMove currenttime.ticks true
>RedrawViews()
classof $
Same code, different results, very strange