# Creating Multiple Transform Handles for a ModelNode in Slicer 5.7

**URL:** <https://discourse.slicer.org/t/creating-multiple-transform-handles-for-a-modelnode-in-slicer-5-7/37421>\
**Category:** Development\
**Created:** [July 17, 2024, 8:40am UTC](https://discourse.slicer.org/t/creating-multiple-transform-handles-for-a-modelnode-in-slicer-5-7/37421 "2024-07-17T08:40:51Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![park](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/park/32/5717_2.png) [@park](https://discourse.slicer.org/u/park)\
**Post date:** [July 17, 2024, 8:40am UTC](https://discourse.slicer.org/t/creating-multiple-transform-handles-for-a-modelnode-in-slicer-5-7/37421/1 "2024-07-17T08:40:51Z")

</div>

Hello,

Is it possible to create two Transform handles for one model?  
I have tried to make it work with the video using the code below, but only one handle works while the other does not function properly.

Am I missing something? Any advice would be greatly appreciated.

```auto
scanNode = slicer.util.getNode("scan")
lowerNode = slicer.mrmlScene.AddNewNodeByClass('vtkMRMLTransformNode', 'lower')
upperNode = slicer.mrmlScene.AddNewNodeByClass('vtkMRMLTransformNode', 'upper')

def applyUpper(*_unused):
    scanNode.SetAndObserveTransformNodeID(None)
    
    lowerNode.SetAndObserveTransformNodeID(upperNode.GetID())
    scanNode.SetAndObserveTransformNodeID(lowerNode.GetID())

def applyLower(*_unused):
    scanNode.SetAndObserveTransformNodeID(None)
    
    upperNode.SetAndObserveTransformNodeID(lowerNode.GetID())
    scanNode.SetAndObserveTransformNodeID(upperNode.GetID())

lowerNode.CreateDefaultDisplayNodes()
lowerNode.SetCenterOfTransformation(0,0,-12)
lowerNode.GetDisplayNode().SetEditorVisibility(True)
lowerNode.AddObserver(slicer.vtkMRMLTransformNode.TransformModifiedEvent, applyLower)

upperNode.CreateDefaultDisplayNodes()
upperNode.SetCenterOfTransformation(0,0,2)
upperNode.GetDisplayNode().SetEditorVisibility(True)
upperNode.AddObserver(slicer.vtkMRMLTransformNode.TransformModifiedEvent, applyUpper)

```

P.S. The Transform handle added in Slicer 5.7 is fantastic.
