Slicer: 4.11.0-2020-07-04 r29204 Win10
I want to use Dynamic Modeler Module Plane Cut tool (and others) with python. Is there any documentation published?
Thanks.
Slicer: 4.11.0-2020-07-04 r29204 Win10
I want to use Dynamic Modeler Module Plane Cut tool (and others) with python. Is there any documentation published?
Thanks.
No documentation pages have been published yet, although one should probably be created.
You can display all of the input node references for a tool using the following:
planeCutTool = slicer.vtkSlicerDynamicModelerPlaneCutTool()
for i in range(planeCutTool.GetNumberOfInputNodes()):
print(planeCutTool.GetNthInputNodeReferenceRole(i))
The node references can be used to create a dynamic modeler node:
dynamicModelerNode = slicer.mrmlScene.AddNewNodeByClass("vtkMRMLDynamicModelerNode")
dynamicModelerNode.SetToolName("Plane cut")
dynamicModelerNode.SetNodeReferenceID("PlaneCut.InputModel", inputmodelNode.GetID())
dynamicModelerNode.SetNodeReferenceID("PlaneCut.InputPlane", inputPlaneNode.GetID())
dynamicModelerNode.SetNodeReferenceID("PlaneCut.OutputPositiveModel", outputModel.GetID())
slicer.modules.dynamicmodeler.logic().RunDynamicModelerTool(dynamicModelerNode)
Thanks so much @Sunderlandkyl.
Just a bit more info:
Thanks on advance!
Sure, then you can use:
It works like a charm, wonderfull.
Thanks
@Sunderlandkyl could you add these to the documentation in header files? Thank you!
This has been very helpful, but if I wanted to create a new model for the output is there a way I could do that. Or a way to create an empty model I could output too.
You can create a new model node as any other node (slicer.mrmlScene.AddNewNodeByClass
). See a complete example here.
A post was split to a new topic: Show/hide output model in Python script
Hi,
I am a new member.
Following your code in the case of curve cut tool I get:
CurveCut.InputModel
CurveCut.InputCurve
CurveCut.InsidePoint
But then, if i try to implement an analogous code (eg in a case of sphere with a closed curve resampled and constrained)
I get the error: â[VTK] Output node missing!â
Does this error indicate thatâ plane cutâ example is not applicable in a âcurve cutâ case or am I doing something wrong?
Here is the code I use:
inputModel = slicer.util.getNode(âSphereModelâ)
inputCurve = slicer.util.getNode(âCCâ)
insidePoint = slicer.util.getNode(âFâ)
outputPositive = slicer.mrmlScene.AddNewNodeByClass(âvtkMRMLModelNodeâ, âCutModel_Positiveâ)
outputPositive.CreateDefaultDisplayNodes()
outputNegative = slicer.mrmlScene.AddNewNodeByClass(âvtkMRMLModelNodeâ, âCutModel_Negativeâ)
outputNegative.CreateDefaultDisplayNodes()
dynamicModelerNode = slicer.mrmlScene.AddNewNodeByClass(âvtkMRMLDynamicModelerNodeâ)
dynamicModelerNode.SetToolName(âCurve cutâ)
dynamicModelerNode.SetNodeReferenceID(âCurveCut.InputModelâ, inputModel.GetID())
dynamicModelerNode.SetNodeReferenceID(âCurveCut.InputCurveâ, inputCurve.GetID())
dynamicModelerNode.SetNodeReferenceID(âCurveCut.InsidePointâ, insidePoint.GetID())
dynamicModelerNode.SetNodeReferenceID(âCurveCut.OutputPositiveModelâ, outputPositive.GetID())
dynamicModelerNode.SetNodeReferenceID(âCurveCut.OutputNegativeModelâ, outputNegative.GetID())
dynamicModelerNode.SetAttribute(âStraightCutâ, âtrueâ)
dynamicModelerNode.SetAttribute(âOperationâ, âSplitâ)
dynamicModelerNode.SetAttribute(âInsideSurfaceâ, âtrueâ)
dynamicModelerNode.SetAttribute(âOutsideSurfaceâ, âtrueâ)
slicer.modules.dynamicmodeler.logic().RunDynamicModelerTool(dynamicModelerNode)
Thanks in advance!