I saw–via an email notification–the question “how do I use the Global Transform of an object to create a 4×4 Matrix” posted on xsibase (sorry, I don’t go to xsibase anymore because of the “attack site” and “malware” warnings).
One way to do this is to add a “Copy Global Transform” command to the ICE node context menu. After you install this plugin, right click a 4×4 matrix node in an ICE tree, and it will copy the Global Transform from the first object in the selection list.
Note: error checking and stuff like that is left as an exercise for the reader (or for another blog post).
Here’s the plugin code for 2013. For 2012 or earlier, you have to change the AddCallbackItem2 call to AddCallbackItem.
si = Application import win32com.client from win32com.client import constants as C null = None false = 0 true = 1 def XSILoadPlugin( in_reg ): in_reg.Author = "blairs" in_reg.Name = "CopyTransfo2MatrixNodePlugin" in_reg.Major = 1 in_reg.Minor = 0 in_reg.RegisterMenu(C.siMenuICENodeContextID,"CopyTransfo2MatrixNode_Menu",false,false) return true def XSIUnloadPlugin( in_reg ): strPluginName = in_reg.Name Application.LogMessage(str(strPluginName) + str(" has been unloaded."),C.siVerbose) return true def CopyTransfo2MatrixNode_Init( in_ctxt ): oCmd = in_ctxt.Source oCmd.Description = "" oCmd.ReturnValue = true oArgs = oCmd.Arguments oArgs.AddWithHandler("Arg0","Collection") return true def CopyTransfo2MatrixNode_Menu_Init( in_ctxt ): oMenu = in_ctxt.Source oMenu.AddCallbackItem2("Copy Global Transform","CopyTransfo2MatrixNode") return true def CopyTransfo2MatrixNode( in_ctxt ): oNodeName = in_ctxt.GetAttribute("Target") o = si.Selection(0) t = o.Kinematics.Global.GetTransform2( None ) m = t.Matrix4.Get2() # Get a matrix node n = si.Dictionary.GetObject( oNodeName ) n.Parameters( "value_00" ).Value = m[0] n.Parameters( "value_01" ).Value = m[1] n.Parameters( "value_02" ).Value = m[2] n.Parameters( "value_03" ).Value = m[3] n.Parameters( "value_10" ).Value = m[4] n.Parameters( "value_11" ).Value = m[5] n.Parameters( "value_12" ).Value = m[6] n.Parameters( "value_13" ).Value = m[7] n.Parameters( "value_20" ).Value = m[8] n.Parameters( "value_21" ).Value = m[9] n.Parameters( "value_22" ).Value = m[10] n.Parameters( "value_23" ).Value = m[11] n.Parameters( "value_30" ).Value = m[12] n.Parameters( "value_31" ).Value = m[13] n.Parameters( "value_32" ).Value = m[14] n.Parameters( "value_33" ).Value = m[15]