hm, i make some tests and now i wrote the IMatrix3 tm = node.GetNodeTM(0, interval) values to output and it is every time 1 0 0|0 1 0|0 0 1, am i doing something wrong? I also tested GetObjectTM(...) and GetObjTMAfterWSM(...) with same result.
   
  here is my code:
  node = iface.GetSelNode(0);
  List vertices = new List();
  if (node.ObjectRef.SuperClassID == SClass_ID.Geomobject)
{
        IMesh mesh = GetObjFromNode(node).Mesh;
        IMatrix3 tm = node.GetNodeTM(0, interval);
         for (int i = 0; i < mesh.Verts.Count; i++)
       {
              Vector3 vt = new Vector3();
              Vector3 vertex = ToVector3(mesh.Verts[i]);
              
Log("Vertex: " + vertex.X.ToString() + " - " + vertex.Y.ToString() + " - " + vertex.Z.ToString());
Log("tm Row 0: " + tm.GetRow(0).X.ToString() + " - " + tm.GetRow(0).Y.ToString() + " - " + tm.GetRow(0).Z.ToString());
Log("tm Row 1: " + tm.GetRow(1).X.ToString() + " - " + tm.GetRow(1).Y.ToString() + " - " + tm.GetRow(1).Z.ToString());
Log("tm Row 2: " + tm.GetRow(2).X.ToString() + " - " + tm.GetRow(2).Y.ToString() + " - " + tm.GetRow(2).Z.ToString());
         vt = vertex * tm;
           vertices.Add(vt);
         }
  }