Skip to content

Instantly share code, notes, and snippets.

@ungi
Created January 24, 2017 03:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ungi/8ee35b347b030003f95b4d35c69547bf to your computer and use it in GitHub Desktop.
Save ungi/8ee35b347b030003f95b4d35c69547bf to your computer and use it in GitHub Desktop.
Copy and paste this code snippet in the Python interactor. Watch what happens when you change the ‘ModelToRas’ transform using e.g. the Transforms module.
# Create coordinate system models to visualize the transforms
createModelsLogic = slicer.modules.createmodels.logic()
preModelNode = createModelsLogic.CreateCoordinate(20,2)
preModelNode.SetName('PreModel')
preModelNode.GetDisplayNode().SetColor(1,1,0)
postModelNode = createModelsLogic.CreateCoordinate(20,2)
postModelNode.SetName('PostModel')
postModelNode.GetDisplayNode().SetColor(0,1,0)
# Create two transforms. ModelToRas will be the one to change manually
modelToRas = slicer.vtkMRMLLinearTransformNode()
modelToRas.SetName('ModelToRas')
slicer.mrmlScene.AddNode(modelToRas)
preModelNode.SetAndObserveTransformNodeID(modelToRas.GetID())
otherTransformNode = slicer.vtkMRMLLinearTransformNode()
otherTransformNode.SetName('OtherTransform')
slicer.mrmlScene.AddNode(otherTransformNode)
postModelNode.SetAndObserveTransformNodeID(otherTransformNode.GetID())
# Function to be called when ModelToRas changes
def transformModified(caller, eventid):
modelToRasTransform = modelToRas.GetTransformToParent()
otherTransform = vtk.vtkTransform()
otherTransform.DeepCopy(modelToRasTransform)
otherTransform.Translate(100,0,0)
otherTransformNode.SetAndObserveTransformToParent(otherTransform)
# Adding callback function as observer of the ModelToRas transform
modelToRas.AddObserver( slicer.vtkMRMLTransformNode.TransformModifiedEvent, transformModified)
# Call modified once, so the positions get initialized by the callback function
modelToRas.TransformModified()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment