Hi, I am trying to draw a polygon on the axial viewer given the coordinates of some fiducial points. I am using a model created from a polydata object so I can easily export it for my analysis.
I used this code in a scripted module and the polygon is correctly displayed in the 3D view but I don’t know how to display it in the red view as well, which is what I need. Is that possible?
I’ve attached a screenshot at the end.
fidList = slicer.util.getNode(‘F’)
if not fidList:
print “No points found”
return
numFids = fidList.GetNumberOfFiducials()
points = vtk.vtkPoints()
polygon = vtk.vtkPolygon()
polygon.GetPointIds().SetNumberOfIds(numFids)
points_coords = []
for i in range(numFids):
fid_ras_coord = [0, 0, 0]
fidList.GetNthFiducialPosition(i, fid_ras_coord)
points.InsertNextPoint(fid_ras_coord)
polygon.GetPointIds().SetId(i, i)
points_coords.append(fid_ras_coord)
polygons = vtk.vtkCellArray()
polygons.InsertNextCell(polygon)
polygonPolyData = vtk.vtkPolyData()
polygonPolyData.SetPoints(points)
polygonPolyData.SetPolys(polygons)
model = slicer.vtkMRMLModelNode()
model.SetAndObservePolyData(polygonPolyData)
modelDisplay = slicer.vtkMRMLModelDisplayNode()
modelDisplay.SetColor(1, 1, 0)
modelDisplay.BackfaceCullingOff()
modelDisplay.SetOpacity(0.5)
modelDisplay.SetPointSize(3)
modelDisplay.SetSliceIntersectionVisibility(True)
modelDisplay.SetVisibility(True)
slicer.mrmlScene.AddNode(modelDisplay)
model.SetAndObserveDisplayNodeID(modelDisplay.GetID())
modelDisplay.SetInputPolyDataConnection(model.GetPolyDataConnection())
slicer.mrmlScene.AddNode(model)