Documentation/4.8/Developers/FAQ/MRML
From Slicer Wiki
Home < Documentation < 4.8 < Developers < FAQ < MRML
For the latest Slicer documentation, visit the read-the-docs. |
Contents
MRML
How to add a MRML node into the scene ?
- Generic pattern
vtkNew<vtkMRML???Node> nodeToAdd; ... mrmlScene->AddNode(nodeToAdd.GetPointer());
- Add a polydata to the scene
vtkNew<vtkMRMLModelNode> modelNode; modelNode->SetPolyData(polyData); mrmlScene->AddNode(modelNode.GetPointer());
- Load a polyData from file
vtkSlicerModelsLogic* modelsLogic = ...; //modelsLogic->SetMRMLScene(mrmlScene); modelsLogic->AddModel(polyDataFileName);
What to do if you get 'No LookupTable was set but number of components in input doesn't match OutputFormat' when loading a MRML scene ?
If you get the following error messages:
ERROR: In /path/to/VTK/Imaging/vtkImageMapToColors.cxx, line 153 vtkImageMapToColors (0x268f190): RequestInformation: No LookupTable was set but number of components in input doesn't match OutputFormat, therefore input can't be passed through! ERROR: In /path/to/VTK/Imaging/vtkImageExtractComponents.cxx, line 239 vtkImageExtractComponents (0x26947e0): Execute: Component 1 is not in input. ERROR: In /path/to/VTK/Imaging/vtkImageExtractComponents.cxx, line 239 vtkImageExtractComponents (0x26947e0): Execute: Component 1 is not in input. [...]
Make sure the colorNodeRef
attribute is set on each VolumeDisplay
node.
How to change the volumes in the 2D views ?
appLogic = slicer.app.applicationLogic() selectionNode = appLogic.GetSelectionNode() selectionNode.SetReferenceActiveVolumeID(bg) selectionNode.SetReferenceSecondaryVolumeID(fg) appLogic.PropagateVolumeSelection()
Source: https://github.com/fedorov/ChangeTrackerPy/blob/master/Wizard/Helper.py#L82
How to know the min/max offset of a slice view ?
vtkMRMLSliceNode* redSliceNode = vtkMRMLSliceNode::SafeDownCast( this->GetMRMLScene()->GetNodeByID( "vtkMRMLSliceNodeRed" )); vtkMRMLSliceLogic* sliceLogic = this->GetMRMLApplicationLogic()->GetSliceLogic( redSliceNode ); double sliceBounds[6] = {0, -1, 0, -1, 0, -1}; sliceLogic->GetLowestVolumeSliceBounds(sliceBounds); double min = sliceBounds[4]; double max = sliceBounds[5];