[MaxPlus] Casting in MaxPlus

Ok so I have been using MaxPlus for the year and I can´t figure this out. I am doing a lot of parameter abstraction and saving data to Jsons, but I allways hit with wall when I find nodes I don´t know where to cast From. And most of the time I end up doing a walk arround in MaxScript

Some Examples, I am trying to get the nodegenerator of light and save its properties. I am getting the node from Maxscript but I don´t know how to castit to something usefull.
I also try to do this with some maps and I don´t know where to cast some objects fromespecificallu some sub Anims like the Placement output and CurveControl I have Find their super Class Id and Match it with the MaxPlus documentation, but still don´t know from were to cast. I just been able to cast the following classes doing it like the MaxPlus Documentation shows. All the ones that are in " " are unknown to me. And I found in the maps a weird class that I am assuming contains the information for the graph in a falloff node, and that returns a superClass just a Number that is none of the super Max Classes Listed in Max.

Any Idea how to figure out this?

SuperIdTypes = {
    MaxPlus.SuperClassIds.AggMan : "MaxPlus.AggMan",
    MaxPlus.SuperClassIds.Atmospheric : MaxPlus.Atmospheric,
    MaxPlus.SuperClassIds.AxisDisplay :"MaxPlus.AxisDisplay ",
    MaxPlus.SuperClassIds.BaseNode :"MaxPlus.BaseNode",
    MaxPlus.SuperClassIds.BezFont :"MaxPlus.BezFont",
    MaxPlus.SuperClassIds.BitmapDragAndDrop :"MaxPlus.BitmapDragAndDrop ",
    MaxPlus.SuperClassIds.BmmColorcut :"MaxPlus.BmmColorcut ",
    MaxPlus.SuperClassIds.BmmDiter :"MaxPlus.BmmDiter ",
    MaxPlus.SuperClassIds.BmmFilter :"MaxPlus.BmmFilter ",
    MaxPlus.SuperClassIds.BmmIO :"MaxPlus.BmmIO ",
    MaxPlus.SuperClassIds.BmmStorage :"MaxPlus.BmmStorage ",
    MaxPlus.SuperClassIds.Camera :"MaxPlus.Camera ",
    MaxPlus.SuperClassIds.ColorPicker :"MaxPlus.ColorPicker ",
    MaxPlus.SuperClassIds.ControllerFloat :"MaxPlus.ControllerFloat",
    MaxPlus.SuperClassIds.ControllerMasterblock :"MaxPlus.ControllerMasterblock" ,
    MaxPlus.SuperClassIds.ControllerMasterpoint :"MaxPlus.ControllerMasterpoint" ,
    MaxPlus.SuperClassIds.ControllerMatrix3 :"MaxPlus.ControllerMatrix3" ,
    MaxPlus.SuperClassIds.ControllerMorph :"MaxPlus.ControllerMorph" ,
    MaxPlus.SuperClassIds.ControllerPoint2 :"MaxPlus.ControllerPoint2" ,
    MaxPlus.SuperClassIds.ControllerPoint3 :"MaxPlus.ControllerPoint3" ,
    MaxPlus.SuperClassIds.ControllerPoint4 :"MaxPlus.ControllerPoint4" ,
    MaxPlus.SuperClassIds.ControllerPosition :"MaxPlus.ControllerPosition" ,
    MaxPlus.SuperClassIds.ControllerRotation :"MaxPlus.ControllerRotation" ,
    MaxPlus.SuperClassIds.ControllerScale :"MaxPlus.ControllerScale",
    MaxPlus.SuperClassIds.ControllerUsertype :"MaxPlus.ControllerUsertype" ,
    MaxPlus.SuperClassIds.DelRefRest :"MaxPlus.DelRefRest ",
    MaxPlus.SuperClassIds.DerivedObject :"MaxPlus.DerivedObject" ,
    MaxPlus.SuperClassIds.EaseList :"MaxPlus.EaseList" ,
    MaxPlus.SuperClassIds.Export :"MaxPlus.Export" ,
    MaxPlus.SuperClassIds.FilterKernel :MaxPlus.FilterKernel ,
    MaxPlus.SuperClassIds.Flt :"MaxPlus.Flt" ,
    MaxPlus.SuperClassIds.GenDerivedObject :"MaxPlus.GenDerivedObject" ,
    MaxPlus.SuperClassIds.GenModApp :"MaxPlus.GenModApp" ,
    MaxPlus.SuperClassIds.GeomObject :MaxPlus.GeomObject ,
    MaxPlus.SuperClassIds.GridRef :"MaxPlus.GridRef" ,
    MaxPlus.SuperClassIds.Gup :"MaxPlus.Gup" ,
    MaxPlus.SuperClassIds.Helper :"MaxPlus.Helper" ,
    MaxPlus.SuperClassIds.Import :"MaxPlus.Import" ,
    MaxPlus.SuperClassIds.Layer :MaxPlus.Layer ,
    MaxPlus.SuperClassIds.Light :MaxPlus.LightObject,
    MaxPlus.SuperClassIds.MakeRefRest :"MaxPlus.MakeRefRest" ,
    MaxPlus.SuperClassIds.Material :MaxPlus.Mtl ,
    MaxPlus.SuperClassIds.MoCapDevice :"MaxPlus.MoCapDevice",
    MaxPlus.SuperClassIds.MoCapDeviceBInding :"MaxPlus.MoCapDeviceBInding" ,
    MaxPlus.SuperClassIds.ModApp :"MaxPlus.ModApp" ,
    MaxPlus.SuperClassIds.MSWrapper :"MaxPlus.MSWrapper",
    MaxPlus.SuperClassIds.MultiList :"MaxPlus.MultiList" ,
    MaxPlus.SuperClassIds.NoteTrack :"MaxPlus.NoteTrack" ,
    MaxPlus.SuperClassIds.ObjectRefModApp :"MaxPlus.ObjectRefModApp" ,
    MaxPlus.SuperClassIds.Osm :MaxPlus.Modifier ,
    MaxPlus.SuperClassIds.OSnap :"MaxPlus.OSnap" ,
    MaxPlus.SuperClassIds.ParamBlock :MaxPlus.ParameterBlock ,
    MaxPlus.SuperClassIds.ParamBlock2 :MaxPlus.ParameterBlock ,
    MaxPlus.SuperClassIds.ParticleSys :"MaxPlus.ParticleSys" ,
    MaxPlus.SuperClassIds.RefMaker :"MaxPlus.RefMaker" ,
    MaxPlus.SuperClassIds.RenderEffect :"MaxPlus.RenderEffect" ,
    MaxPlus.SuperClassIds.RenderElement :MaxPlus.RenderElement ,
    MaxPlus.SuperClassIds.Renderer :MaxPlus.Renderer ,
    MaxPlus.SuperClassIds.Sampler :"MaxPlus.Sampler" ,
    MaxPlus.SuperClassIds.Scene :"MaxPlus.Scene" ,
    MaxPlus.SuperClassIds.SchematicViewUtility :"MaxPlus.SchematicViewUtility" ,
    MaxPlus.SuperClassIds.Shader :"MaxPlus.Shader" ,
    MaxPlus.SuperClassIds.ShadowGenerator :"MaxPlus.ShadowGenerator" ,
    MaxPlus.SuperClassIds.Shape :"MaxPlus.Shape" ,
    MaxPlus.SuperClassIds.SoundObj :MaxPlus.SoundObj ,
    MaxPlus.SuperClassIds.System :"MaxPlus.System" ,
    MaxPlus.SuperClassIds.Texmap :MaxPlus.Texmap ,
    MaxPlus.SuperClassIds.TexMapContainer :"MaxPlus.TexMapContainer" ,
    MaxPlus.SuperClassIds.TexOutput :"MaxPlus.TexOutput" ,
    MaxPlus.SuperClassIds.thisown :"MaxPlus.thisown" ,
    MaxPlus.SuperClassIds.Trackbar :"MaxPlus.Trackbar" ,
    MaxPlus.SuperClassIds.TrackView :MaxPlus.TrackView ,
    MaxPlus.SuperClassIds.TreeView :"MaxPlus.TreeView" ,
    MaxPlus.SuperClassIds.UserDataType :"MaxPlus.UserDataType" ,
    MaxPlus.SuperClassIds.Utility :"MaxPlus.Utility" ,
    MaxPlus.SuperClassIds.UVGen :"MaxPlus.UVGen" ,
    MaxPlus.SuperClassIds.ViewRef:"MaxPlus.ViewRef",
    MaxPlus.SuperClassIds.Wsm :MaxPlus.Modifier ,
    MaxPlus.SuperClassIds.WsmDerivedObject:"MaxPlus.WsmDerivedObject",
    MaxPlus.SuperClassIds.WSMObject :"MaxPlus.WSMObject",
    MaxPlus.SuperClassIds.XYZGen :"MaxPlus.XYZGen" 
}

I’m not sure what you’re really looking for. In most cases you need to create the object, set its properties, and then bind to a new iNode.

The superClassId sets a grouping category that determines what class these items are derived from. They don’t directly define the object. To get the actual definition you need both the superclassid and its classid. This might be what you’re looking for:

MaxPlus.Factory.CreateObject (*args)
CreateObject(SClass_ID sid, Class_ID ci) -> Object

There are wrapper methods that do most of the work. Here’s an example for an omni light. Otherwise you would need to know the superclassid and classid and use the method described above.

obj = MaxPlus.Factory.CreateOmniLight()
node = MaxPlus.Factory.CreateNode(obj)
node.SetName(‘MyNewOmniLight’)

1 Like