class_docstr: Transform that can always be represented as a combination of 3 matrices: scale * rotate * translate
  This transform has no shear; angles are always preserved.
class_docstr_tok: ["Transform","that","can","always","be","represented","as","a","combination","of","3","matrices",":","scale","*","rotate","*","translate","This","transform","has","no","shear",";","angles","are","always","preserved","."]
code: def setFromMatrix4x4(self, m):
      m = SRTTransform3D.SRTTransform3D(m)
      angle, axis = m.getRotation()
      if angle != 0 and (axis[0] != 0 or axis[1] != 0 or axis[2] != 1):
          print("angle: %s  axis: %s" % (str(angle), str(axis)))
          raise Exception(
              "Can only convert 4x4 matrix to 3x3 if rotation is around Z-axis."
          )
      self._state = {
          "pos": Point(m.getTranslation()),
          "scale": Point(m.getScale()),
          "angle": angle,
      }
      self.update()
  
imports: from math import atan2, degrees
  import numpy
  from .Point import Point
  from .Qt import QtGui
  from .None import SRTTransform3D
label_desc: Use image node_id 7 for calling the SRTTransform obj's underlying member method code with example usage: obj.setFromMatrix4x4(m) without return types