本文整理汇总了Python中EditUtil.EditUtil.setActiveVolumes方法的典型用法代码示例。如果您正苦于以下问题:Python EditUtil.setActiveVolumes方法的具体用法?Python EditUtil.setActiveVolumes怎么用?Python EditUtil.setActiveVolumes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EditUtil.EditUtil
的用法示例。
在下文中一共展示了EditUtil.setActiveVolumes方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: deleteSelectedStructure
# 需要导入模块: from EditUtil import EditUtil [as 别名]
# 或者: from EditUtil.EditUtil import setActiveVolumes [as 别名]
def deleteSelectedStructure(self, confirm=True):
"""delete the currently selected structure"""
merge = self.merge
if not merge:
return
selectionModel = self.structuresView.selectionModel()
selected = selectionModel.currentIndex().row()
if selected >= 0:
structureName = self.structures.item(selected,2).text()
labelNode = slicer.util.getNode(self.structures.item(selected,3).text())
if confirm:
if not slicer.util.confirmOkCancelDisplay("Delete \'%s\' volume?" % structureName, windowTitle='Editor'):
return
slicer.mrmlScene.SaveStateForUndo()
slicer.mrmlScene.RemoveNode( labelNode )
self.updateStructures()
if self.structures.rowCount() > 0:
self.selectStructure((selected-1) if (selected-1 >= 0) else 0)
else:
EditUtil.setActiveVolumes(self.master, merge)
self.edit(0)
示例2: edit
# 需要导入模块: from EditUtil import EditUtil [as 别名]
# 或者: from EditUtil.EditUtil import setActiveVolumes [as 别名]
def edit(self,label):
"""select the picked label for editing"""
merge = self.merge
if not merge:
return
colorNode = merge.GetDisplayNode().GetColorNode()
structureName = colorNode.GetColorName( label )
structureVolume = self.structureVolume( structureName )
EditUtil.setActiveVolumes(self.master, structureVolume)
EditUtil.setLabel(label)
示例3: select
# 需要导入模块: from EditUtil import EditUtil [as 别名]
# 或者: from EditUtil.EditUtil import setActiveVolumes [as 别名]
def select(self, masterVolume=None, mergeVolume=None):
"""select master volume - load merge volume if one with the correct name exists"""
if masterVolume is None:
masterVolume = self.masterSelector.currentNode()
self.master = masterVolume
self.masterSelector.blockSignals(True)
self.masterSelector.setCurrentNode(self.master)
self.masterSelector.blockSignals(False)
self.mergeSelector.setCurrentNode(mergeVolume)
if self.master and not self.mergeVolume():
# the master exists, but there is no merge volume yet
# bring up dialog to create a merge with a user-selected color node
self.labelCreateDialog()
merge = self.mergeVolume()
if merge:
if not merge.IsA("vtkMRMLLabelMapVolumeNode"):
slicer.util.errorDisplay( "Error: selected merge label volume is not a label volume" )
else:
EditUtil.setActiveVolumes(self.master, merge)
self.mergeSelector.setCurrentNode(merge)
self.structureListWidget.master = self.master
self.structureListWidget.merge = merge
self.structureListWidget.updateStructures()
if self.master and merge:
warnings = self.volumesLogic.CheckForLabelVolumeValidity(self.master,merge)
if warnings != "":
warnings = "Geometry of master and merge volumes do not match.\n\n" + warnings
slicer.util.errorDisplay( "Warning: %s" % warnings )
# trigger a modified event on the parameter node so that other parts of the GUI
# (such as the EditColor) will know to update and enable themselves
EditUtil.getParameterNode().Modified()
if self.selectCommand:
self.selectCommand()
示例4: deleteStructures
# 需要导入模块: from EditUtil import EditUtil [as 别名]
# 或者: from EditUtil.EditUtil import setActiveVolumes [as 别名]
def deleteStructures(self, confirm=True):
"""delete all the structures"""
#
# iterate through structures and delete them
#
merge = self.merge
if not merge:
return
rows = self.structures.rowCount()
if confirm:
if not slicer.util.confirmOkCancelDisplay("Delete %d structure volume(s)?" % rows, windowTitle='Editor'):
return
slicer.mrmlScene.SaveStateForUndo()
volumeNodes = self.structureVolumes()
for volumeNode in volumeNodes:
slicer.mrmlScene.RemoveNode( volumeNode )
self.updateStructures()
EditUtil.setActiveVolumes(self.master, merge)
self.edit(0)
示例5: mergeStructures
# 需要导入模块: from EditUtil import EditUtil [as 别名]
# 或者: from EditUtil.EditUtil import setActiveVolumes [as 别名]
def mergeStructures(self,label="all"):
"""merge the named or all structure labels into the master label"""
merge = self.merge
if not merge:
return
rows = self.structures.rowCount()
# check that structures are all the same size as the merge volume
dims = merge.GetImageData().GetDimensions()
for row in xrange(rows):
structureName = self.structures.item(row,2).text()
structureVolume = self.structureVolume( structureName )
if not structureVolume:
mergeName = merge.GetName()
slicer.util.errorDisplay( "Merge Aborted: No image data for volume node %s."%(structureName) )
return
if structureVolume.GetImageData().GetDimensions() != dims:
mergeName = merge.GetName()
slicer.util.errorDisplay( "Merge Aborted: Volume %s does not have the same dimensions as the target merge volume. Use the Resample Scalar/Vector/DWI module to resample. Use %s as the Reference Volume and select Nearest Neighbor (nn) Interpolation Type."%(structureName,mergeName) )
return
# check that user really wants to merge
rows = self.structures.rowCount()
for row in xrange(rows):
structureName = self.structures.item(row,2).text()
structureVolume = self.structureVolume( structureName)
if structureVolume.GetImageData().GetMTime() < merge.GetImageData().GetMTime():
mergeName = merge.GetName()
slicer.util.errorDisplay( "Note: Merge volume has been modified more recently than structure volumes.\nCreating backup copy as %s-backup"%mergeName )
self.volumesLogic.CloneVolume( slicer.mrmlScene, merge, mergeName+"-backup" )
#
# find the Image Label Combine
# - call Enter to be sure GUI has been built
#
combiner = slicer.vtkImageLabelCombine()
#
# iterate through structures merging into merge volume
#
for row in xrange(rows):
structureName = self.structures.item(row,2).text()
structureVolume = self.structureVolume( structureName )
if row == 0:
# first row, just copy into merge volume
merge.GetImageData().DeepCopy( structureVolume.GetImageData() )
continue
combiner.SetInputConnection(0, merge.GetImageDataConnection() )
combiner.SetInputConnection(1, structureVolume.GetImageDataConnection() )
self.statusText( "Merging %s" % structureName )
combiner.Update()
merge.GetImageData().DeepCopy( combiner.GetOutput() )
# mark all volumes as modified so we will be able to tell if the
# merged volume gets edited after these
for row in xrange(rows):
structureName = self.structures.item(row,2).text()
structureVolume = self.structureVolume( structureName )
structureVolume.GetImageData().Modified()
EditUtil.setActiveVolumes(self.master, merge)
self.statusText( "Finished merging." )