Transformation of vtkMRMLMarkupsClosedCurveNode looks like a little bit buggy. Points of the curve are transformed correctly, but not the curve itself.
There is no such problem with markups line node, where both line and points are transformed correctly.
I have one more minor issue with markups node. How to update markups data in loadable module correctly?
I have markups node with four points (rectangle). When i update markups control point position the code the point change it position, but not the curve.
The have found the solution by removing node and creating it with a new positions.
What would happen if you modify a z coordinate of each point and try to update a curve node? Will the curve change it position as well, not just control points?
Static curve is not a problem anymore, thanks to your fix, but in GUI i have a slider which change z coordinates of the curve and only control points move.
Updating a control point position updates the curve correctly. For example, this code updates first point of curve “C” correctly (point and curve are both updated):
c = getNode('C')
p = [0,0,0]
c.GetNthControlPointPosition(0, p)
p[2] = p[2] + 10
c.SetNthControlPointPosition(0, *p)
Would you recommend to make any changes to the documentation to clarify that no permanent synchronization mechanism is created between the input Python array and a markups node when you call GetNthControlPointPosition?