Slicer 5.13
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
vtkSlicerSegmentationsModuleLogic.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Copyright (c) Laboratory for Percutaneous Surgery (PerkLab)
4 Queen's University, Kingston, ON, Canada. All Rights Reserved.
5
6 See COPYRIGHT.txt
7 or http://www.slicer.org/copyright/copyright.txt for details.
8
9 Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
14
15 This file was originally developed by Csaba Pinter, PerkLab, Queen's University
16 and was supported through the Applied Cancer Research Unit program of Cancer Care
17 Ontario with funds provided by the Ontario Ministry of Health and Long-Term Care
18
19==============================================================================*/
20
21// .NAME vtkSlicerSegmentationsModuleLogic - Logic class for segmentation handling
22// .SECTION Description
23// This class manages the logic associated with converting and handling
24// segmentation node objects.
25
26#ifndef __vtkSlicerSegmentationsModuleLogic_h
27#define __vtkSlicerSegmentationsModuleLogic_h
28
29// Slicer includes
31#include "vtkSlicerSegmentationsModuleLogicExport.h"
32
33// Segmentations includes
35
36class vtkCallbackCommand;
38class vtkPolyData;
39class vtkDataObject;
40class vtkGeneralTransform;
41
50
51class VTK_SLICER_SEGMENTATIONS_LOGIC_EXPORT vtkSlicerSegmentationsModuleLogic : public vtkSlicerModuleLogic
52{
53public:
56 void PrintSelf(ostream& os, vtkIndent indent) override;
57
64
71 static vtkMRMLSegmentationNode* GetSegmentationNodeForSegment(vtkMRMLScene* scene, vtkSegment* segment, std::string& segmentId);
72
80 bool autoOpacities = true,
81 const char* nodeName = nullptr,
82 vtkMRMLColorTableNode* colorTableNode = nullptr,
83 vtkMRMLMessageCollection* userMessages = nullptr);
84
92
101 vtkMRMLVolumeNode* volumeNode,
102 bool shallowCopy = true,
103 bool shiftImageDataExtentToZeroStart = true);
104
109
113
115 static void GetAllLabelValues(vtkIntArray* labels, vtkImageData* labelmap);
116
127
137 static vtkSegment* CreateSegmentFromModelNode(vtkMRMLModelNode* modelNode, vtkMRMLSegmentationNode* segmentationNode = nullptr);
138
141
143 static vtkSegment* GetSegmentForSegmentSubjectHierarchyItem(vtkIdType segmentShItemID, vtkMRMLScene* scene);
144
150 static bool ExportSegmentToRepresentationNode(vtkSegment* segment, vtkMRMLNode* representationNode);
151
156 static bool ExportSegmentsToModels(vtkMRMLSegmentationNode* segmentationNode, const std::vector<std::string>& segmentIDs, vtkIdType folderItemId);
157
162 static bool ExportSegmentsToModels(vtkMRMLSegmentationNode* segmentationNode, vtkStringArray* segmentIds, vtkIdType folderItemId);
163
167 static bool ExportVisibleSegmentsToModels(vtkMRMLSegmentationNode* segmentationNode, vtkIdType folderItemId);
168
172 static bool ExportAllSegmentsToModels(vtkMRMLSegmentationNode* segmentationNode, vtkIdType folderItemId);
173
179
188 const std::vector<std::string>& segmentID,
189 vtkMRMLColorTableNode* colorTableNode,
190 vtkIntArray* labelValues = nullptr);
191
204 const std::vector<std::string>& segmentIDs,
205 vtkMRMLLabelMapVolumeNode* labelmapNode,
206 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
207 int extentComputationMode = vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS,
208 vtkMRMLColorTableNode* colorTableNode = nullptr);
209
222 vtkStringArray* segmentIDs,
223 vtkMRMLLabelMapVolumeNode* labelmapNode,
224 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
225 int extentComputationMode = vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS,
226 vtkMRMLColorTableNode* colorTableNode = nullptr);
227
235 vtkMRMLLabelMapVolumeNode* labelmapNode,
236 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
237 int extentComputationMode = vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS);
238
245 vtkMRMLLabelMapVolumeNode* labelmapNode,
246 int extentComputationMode = vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS);
247
252 vtkMRMLSegmentationNode* segmentationNode,
253 std::string insertBeforeSegmentId = "",
254 vtkMRMLMessageCollection* userMessages = nullptr);
255
263 vtkMRMLSegmentationNode* segmentationNode,
264 std::string baseSegmentName = "",
265 std::string insertBeforeSegmentId = "",
266 vtkMRMLMessageCollection* userMessages = nullptr);
267
271 vtkMRMLSegmentationNode* segmentationNode,
272 vtkStringArray* updatedSegmentIDs,
273 vtkMRMLMessageCollection* userMessages = nullptr);
274
278 vtkMRMLSegmentationNode* segmentationNode,
279 vtkStringArray* updatedSegmentIDs,
280 vtkGeneralTransform* labelmapToSegmentationTransform = nullptr,
281 vtkMRMLMessageCollection* userMessages = nullptr);
282
288 vtkMRMLSegmentationNode* segmentationNode,
289 std::string terminologyContextName,
290 std::string insertBeforeSegmentId = "",
291 vtkMRMLMessageCollection* userMessages = nullptr);
292
294 static bool ImportModelToSegmentationNode(vtkMRMLModelNode* modelNode, vtkMRMLSegmentationNode* segmentationNode, std::string insertBeforeSegmentId = "");
295
297 static bool ImportModelsToSegmentationNode(vtkIdType folderItemId, vtkMRMLSegmentationNode* segmentationNode, std::string insertBeforeSegmentId = "");
298
306 static bool ExportSegmentsClosedSurfaceRepresentationToFiles(std::string destinationFolder,
307 vtkMRMLSegmentationNode* segmentationNode,
308 vtkStringArray* segmentIds = nullptr,
309 std::string fileFormat = "STL",
310 bool lps = true,
311 double sizeScale = 1.0,
312 bool merge = false);
313
323 static void GetLabelValuesFromColorNode(vtkMRMLSegmentationNode* segmentationNode, vtkMRMLColorTableNode* colorTableNode, vtkStringArray* segmentIds, vtkIntArray* labelValues);
324
336 static bool ExportSegmentsBinaryLabelmapRepresentationToFiles(std::string destinationFolder,
337 vtkMRMLSegmentationNode* segmentationNode,
338 vtkStringArray* segmentIds = nullptr,
339 std::string extension = "nrrd",
340 bool useCompression = false,
341 vtkMRMLVolumeNode* referenceVolumeNode = nullptr,
342 int extentComputationMode = vtkSegmentation::EXTENT_REFERENCE_GEOMETRY,
343 vtkMRMLColorTableNode* colorTableNode = nullptr);
344
350 static vtkDataObject* CreateRepresentationForOneSegment(vtkSegmentation* segmentation, std::string segmentID, std::string representationName);
351
356 vtkOrientedImageData* orientedImageData,
357 bool linearInterpolation = false,
358 double backgroundColor[4] = nullptr);
359
363 static bool ApplyParentTransformToPolyData(vtkMRMLTransformableNode* transformableNode, vtkPolyData* polyData);
364
375 vtkMRMLSegmentationNode* segmentationNode,
376 vtkGeneralTransform* representationToSegmentationTransform);
377
388 std::string segmentID,
389 std::string representationName,
390 vtkDataObject* segmentRepresentation,
391 bool applyParentTransform = true);
392
404 std::string segmentID,
405 vtkOrientedImageData* imageData,
406 bool applyParentTransform = true);
407
417 static bool GetSegmentClosedSurfaceRepresentation(vtkMRMLSegmentationNode* segmentationNode, std::string segmentID, vtkPolyData* polyData, bool applyParentTransform = true);
418
425 enum
426 {
431 };
433 vtkMRMLSegmentationNode* segmentationNode,
434 std::string segmentID,
435 int mergeMode = MODE_REPLACE,
436 const int extent[6] = nullptr,
437 bool minimumOfAllSegments = false,
438 const std::vector<std::string>& segmentIdsToOverwrite = {});
439
443 bool SetTerminologyToSegmentationFromLabelmapNode(vtkMRMLSegmentationNode* segmentationNode, vtkMRMLLabelMapVolumeNode* labelmapNode, std::string terminologyContextName);
444
447
451
454
458 void SetDefaultRepresentation3D(const std::string& representationName);
459
462
466
475
476 static const char* GetSegmentStatusAsHumanReadableString(int segmentStatus);
478 static const char* GetSegmentStatusAsMachineReadableString(int segmentStatus);
480 static int GetSegmentStatusFromMachineReadableString(std::string statusString);
481
483 static const char* GetStatusTagName();
486 static int GetSegmentStatus(vtkSegment* segment);
490 static void SetSegmentStatus(vtkSegment* segment, int status);
492 static bool ClearSegment(vtkMRMLSegmentationNode* segmentationNode, std::string segmentID);
493
501 std::string sharedSegmentID,
503 const int extent[6],
504 std::vector<std::string>& segmentIDs,
505 int maskThreshold = 0.0,
506 bool includeInputSharedSegmentID = false);
507
512 static bool ReconvertAllRepresentations(vtkMRMLSegmentationNode* segmentationNode, const std::vector<std::string>& segmentIDs = {});
513
519 static void CollapseBinaryLabelmaps(vtkMRMLSegmentationNode* segmentationNode, bool forceToSingleLayer);
520
529 vtkMRMLVolumeNode* referenceVolumeNode,
530 vtkStringArray* segmentIDs,
531 int extentComputationMode,
532 vtkOrientedImageData* mergedLabelmap_Reference,
533 vtkIntArray* labelValues = nullptr);
534
540 static bool IsEffectiveExentOutsideReferenceVolume(vtkMRMLVolumeNode* referenceVolumeNode, vtkMRMLSegmentationNode* segmentationNode, vtkStringArray* segmentIDs = nullptr);
541
546 static bool IsSegmentationExentOutsideReferenceGeometry(vtkOrientedImageData* referenceGeometry, vtkOrientedImageData* segmentationGeometry);
547
549 std::vector<vtkSmartPointer<vtkMRMLFileIOHandler>> CreateFileIOHandlers() override;
550
551protected:
552 void SetMRMLSceneInternal(vtkMRMLScene* newScene) override;
553
555 void RegisterNodes() override;
556
562 static void OnSubjectHierarchyUIDAdded(vtkObject* caller, unsigned long eid, void* clientData, void* callData);
563
565 void OnMRMLSceneNodeAdded(vtkMRMLNode* node) override;
566
567 static bool ExportSegmentsClosedSurfaceRepresentationToStlFiles(std::string destinationFolder,
568 vtkMRMLSegmentationNode* segmentationNode,
569 const std::vector<std::string>& segmentIDs,
570 bool lps,
571 double sizeScale,
572 bool merge);
573 static bool ExportSegmentsClosedSurfaceRepresentationToObjFile(std::string destinationFolder,
574 vtkMRMLSegmentationNode* segmentationNode,
575 const std::vector<std::string>& segmentIDs,
576 bool lps,
577 double sizeScale);
578
582 static std::string GetSafeFileName(std::string originalName);
583
584protected:
587
590
591private:
593 void operator=(const vtkSlicerSegmentationsModuleLogic&) = delete;
594};
595
596#endif
MRML node to represent discrete color information.
MRML node for representing a label map volume.
MRML node to represent a 3D surface model.
Abstract Superclass for all specific types of MRML nodes.
MRML node for representing a volume (image stack).
A set of MRML Nodes that supports serialization and undo/redo.
Parameter set node for the segment editor widget.
MRML node for representing segmentation display attributes.
MRML node containing segmentations.
MRML node for segmentation storage on disk.
MRML node for representing a transformation between this node space and a parent node space.
MRML node for representing a node with a transform.
MRML node for representing a volume (image stack).
Image data containing orientation information.
This class encapsulates a segment that is part of a segmentation.
Definition vtkSegment.h:45
This class encapsulates a segmentation that can contain multiple segments and multiple representation...
@ EXTENT_UNION_OF_EFFECTIVE_SEGMENTS
Extent is computed as union of effective extent of all segments.
@ EXTENT_REFERENCE_GEOMETRY
Extent of common geometry is used as extent.
vtkMRMLSegmentationDisplayNode * GetDefaultSegmentationDisplayNode()
Get default segmentation display node. All new segmentation display nodes are initialized to the cont...
static bool ImportLabelmapToSegmentationNode(vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *updatedSegmentIDs, vtkMRMLMessageCollection *userMessages=nullptr)
void SetDefaultSurfaceSmoothingEnabled(bool enabled)
static bool ExportAllSegmentsToModels(vtkMRMLSegmentationNode *segmentationNode, vtkIdType folderItemId)
static bool GetSharedSegmentIDsInMask(vtkMRMLSegmentationNode *segmentationNode, std::string sharedSegmentID, vtkOrientedImageData *mask, const int extent[6], std::vector< std::string > &segmentIDs, int maskThreshold=0.0, bool includeInputSharedSegmentID=false)
static vtkMRMLSegmentationNode * GetSegmentationNodeForSegmentSubjectHierarchyItem(vtkIdType segmentShItemID, vtkMRMLScene *scene)
Utility function for getting the segmentation node for a segmentation or segment subject hierarchy it...
static bool ImportModelToSegmentationNode(vtkMRMLModelNode *modelNode, vtkMRMLSegmentationNode *segmentationNode, std::string insertBeforeSegmentId="")
Import model into the segmentation as a segment.
static int DoesLabelmapContainSingleLabel(vtkMRMLLabelMapVolumeNode *labelmapVolumeNode)
static bool ExportAllSegmentsToLabelmapNode(vtkMRMLSegmentationNode *segmentationNode, vtkMRMLLabelMapVolumeNode *labelmapNode, int extentComputationMode=vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS)
static bool IsSegmentationExentOutsideReferenceGeometry(vtkOrientedImageData *referenceGeometry, vtkOrientedImageData *segmentationGeometry)
static bool IsEffectiveExentOutsideReferenceVolume(vtkMRMLVolumeNode *referenceVolumeNode, vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *segmentIDs=nullptr)
static const char * GetSegmentStatusAsMachineReadableString(int segmentStatus)
Get the machine readable segment status from the SegmentStatus enum value.
static vtkSegment * CreateSegmentFromModelNode(vtkMRMLModelNode *modelNode, vtkMRMLSegmentationNode *segmentationNode=nullptr)
static void SetSegmentStatus(vtkSegment *segment, int status)
static vtkMRMLSegmentationNode * GetSegmentationNodeForSegmentation(vtkMRMLScene *scene, vtkSegmentation *segmentation)
static void GetLabelValuesFromColorNode(vtkMRMLSegmentationNode *segmentationNode, vtkMRMLColorTableNode *colorTableNode, vtkStringArray *segmentIds, vtkIntArray *labelValues)
int GetDefaultOverwriteMode()
Get/Set default segmentation overwrite mode for masking options.
static bool ExportSegmentsToLabelmapNode(vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *segmentIDs, vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLVolumeNode *referenceVolumeNode=nullptr, int extentComputationMode=vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS, vtkMRMLColorTableNode *colorTableNode=nullptr)
vtkMRMLSegmentationNode * GetDefaultSegmentationNode()
Get default segmentation node. All new segmentation nodes are initialized to the content of this node...
static void CollapseBinaryLabelmaps(vtkMRMLSegmentationNode *segmentationNode, bool forceToSingleLayer)
static vtkMRMLSegmentationNode * GetSegmentationNodeForSegment(vtkMRMLScene *scene, vtkSegment *segment, std::string &segmentId)
static bool ImportLabelmapToSegmentationNode(vtkOrientedImageData *labelmapImage, vtkMRMLSegmentationNode *segmentationNode, std::string baseSegmentName="", std::string insertBeforeSegmentId="", vtkMRMLMessageCollection *userMessages=nullptr)
static bool ExportSegmentsToColorTableNode(vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentID, vtkMRMLColorTableNode *colorTableNode, vtkIntArray *labelValues=nullptr)
static void GenerateMergedLabelmapInReferenceGeometry(vtkMRMLSegmentationNode *segmentationNode, vtkMRMLVolumeNode *referenceVolumeNode, vtkStringArray *segmentIDs, int extentComputationMode, vtkOrientedImageData *mergedLabelmap_Reference, vtkIntArray *labelValues=nullptr)
static bool ImportModelsToSegmentationNode(vtkIdType folderItemId, vtkMRMLSegmentationNode *segmentationNode, std::string insertBeforeSegmentId="")
Import models in a folder into the segmentation as segments.
static bool ExportSegmentsClosedSurfaceRepresentationToFiles(std::string destinationFolder, vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *segmentIds=nullptr, std::string fileFormat="STL", bool lps=true, double sizeScale=1.0, bool merge=false)
static bool ExportSegmentToRepresentationNode(vtkSegment *segment, vtkMRMLNode *representationNode)
static int GetSegmentStatus(vtkSegment *segment)
static bool ExportSegmentsClosedSurfaceRepresentationToStlFiles(std::string destinationFolder, vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentIDs, bool lps, double sizeScale, bool merge)
static bool ReconvertAllRepresentations(vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentIDs={})
vtkMRMLSegmentationNode * LoadSegmentationFromFile(const char *filename, bool autoOpacities=true, const char *nodeName=nullptr, vtkMRMLColorTableNode *colorTableNode=nullptr, vtkMRMLMessageCollection *userMessages=nullptr)
static bool ExportSegmentsToLabelmapNode(vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentIDs, vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLVolumeNode *referenceVolumeNode=nullptr, int extentComputationMode=vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS, vtkMRMLColorTableNode *colorTableNode=nullptr)
static bool GetTransformBetweenRepresentationAndSegmentation(vtkMRMLTransformableNode *representationNode, vtkMRMLSegmentationNode *segmentationNode, vtkGeneralTransform *representationToSegmentationTransform)
static bool ExportSegmentsToModels(vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentIDs, vtkIdType folderItemId)
static bool GetSegmentClosedSurfaceRepresentation(vtkMRMLSegmentationNode *segmentationNode, std::string segmentID, vtkPolyData *polyData, bool applyParentTransform=true)
static vtkSegment * CreateSegmentFromLabelmapVolumeNode(vtkMRMLLabelMapVolumeNode *labelmapVolumeNode, vtkMRMLSegmentationNode *segmentationNode=nullptr)
void SetDefaultRepresentation3D(const std::string &representationName)
std::vector< vtkSmartPointer< vtkMRMLFileIOHandler > > CreateFileIOHandlers() override
Create file readers and writers of the module.
static const char * GetStatusTagName()
Returns the name of the status tag.
bool ImportLabelmapToSegmentationNodeWithTerminology(vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLSegmentationNode *segmentationNode, std::string terminologyContextName, std::string insertBeforeSegmentId="", vtkMRMLMessageCollection *userMessages=nullptr)
static vtkMRMLColorTableNode * AddColorTableNodeForSegmentation(vtkMRMLSegmentationNode *segmentationNode)
static bool GetSegmentBinaryLabelmapRepresentation(vtkMRMLSegmentationNode *segmentationNode, std::string segmentID, vtkOrientedImageData *imageData, bool applyParentTransform=true)
void SetMRMLSceneInternal(vtkMRMLScene *newScene) override
static vtkOrientedImageData * CreateOrientedImageDataFromVolumeNode(vtkMRMLScalarVolumeNode *volumeNode, vtkMRMLTransformNode *outputParentTransformNode=nullptr)
static void OnSubjectHierarchyUIDAdded(vtkObject *caller, unsigned long eid, void *clientData, void *callData)
static bool ExportVisibleSegmentsToLabelmapNode(vtkMRMLSegmentationNode *segmentationNode, vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLVolumeNode *referenceVolumeNode=nullptr, int extentComputationMode=vtkSegmentation::EXTENT_UNION_OF_EFFECTIVE_SEGMENTS)
static void GetAllLabelValues(vtkIntArray *labels, vtkImageData *labelmap)
Utility function that returns all non-empty label values in a labelmap.
void RegisterNodes() override
Register MRML Node classes to Scene. Gets called automatically when the MRMLScene is attached to this...
static vtkSegment * GetSegmentForSegmentSubjectHierarchyItem(vtkIdType segmentShItemID, vtkMRMLScene *scene)
Utility function for getting the segment object for a segment subject hierarchy item.
static bool ImportLabelmapToSegmentationNode(vtkOrientedImageData *labelmapImage, vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *updatedSegmentIDs, vtkGeneralTransform *labelmapToSegmentationTransform=nullptr, vtkMRMLMessageCollection *userMessages=nullptr)
static bool SetBinaryLabelmapToSegment(vtkOrientedImageData *labelmap, vtkMRMLSegmentationNode *segmentationNode, std::string segmentID, int mergeMode=MODE_REPLACE, const int extent[6]=nullptr, bool minimumOfAllSegments=false, const std::vector< std::string > &segmentIdsToOverwrite={})
vtkMRMLSegmentEditorNode * GetDefaultSegmentEditorNode()
Get node that is used for initializing each new Segment Editor node.
bool GetDefaultSurfaceSmoothingEnabled()
Get/Set default closed surface smoothing enabled flag for new segmentation nodes.
static std::string GetSafeFileName(std::string originalName)
void PrintSelf(ostream &os, vtkIndent indent) override
static bool ExportSegmentsBinaryLabelmapRepresentationToFiles(std::string destinationFolder, vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *segmentIds=nullptr, std::string extension="nrrd", bool useCompression=false, vtkMRMLVolumeNode *referenceVolumeNode=nullptr, int extentComputationMode=vtkSegmentation::EXTENT_REFERENCE_GEOMETRY, vtkMRMLColorTableNode *colorTableNode=nullptr)
static const char * GetSegmentStatusAsHumanReadableString(int segmentStatus)
Get the human readable segment status from the SegmentStatus enum value.
static bool ClearSegment(vtkMRMLSegmentationNode *segmentationNode, std::string segmentID)
Clear the contents of a single segment.
static bool ApplyParentTransformToOrientedImageData(vtkMRMLTransformableNode *transformableNode, vtkOrientedImageData *orientedImageData, bool linearInterpolation=false, double backgroundColor[4]=nullptr)
static bool CreateLabelmapVolumeFromOrientedImageData(vtkOrientedImageData *orientedImageData, vtkMRMLLabelMapVolumeNode *labelmapVolumeNode)
bool SetTerminologyToSegmentationFromLabelmapNode(vtkMRMLSegmentationNode *segmentationNode, vtkMRMLLabelMapVolumeNode *labelmapNode, std::string terminologyContextName)
static bool ExportSegmentsClosedSurfaceRepresentationToObjFile(std::string destinationFolder, vtkMRMLSegmentationNode *segmentationNode, const std::vector< std::string > &segmentIDs, bool lps, double sizeScale)
static bool ExportVisibleSegmentsToModels(vtkMRMLSegmentationNode *segmentationNode, vtkIdType folderItemId)
void OnMRMLSceneNodeAdded(vtkMRMLNode *node) override
Handle MRML node added events.
static vtkDataObject * CreateRepresentationForOneSegment(vtkSegmentation *segmentation, std::string segmentID, std::string representationName)
static bool ApplyParentTransformToPolyData(vtkMRMLTransformableNode *transformableNode, vtkPolyData *polyData)
static bool GetSegmentRepresentation(vtkMRMLSegmentationNode *segmentationNode, std::string segmentID, std::string representationName, vtkDataObject *segmentRepresentation, bool applyParentTransform=true)
static int GetSegmentStatusFromMachineReadableString(std::string statusString)
Get the enum segment status from a machine string.
vtkCallbackCommand * SubjectHierarchyUIDCallbackCommand
Command handling subject hierarchy UID added events.
static vtkSlicerSegmentationsModuleLogic * New()
static bool ExportSegmentsToModels(vtkMRMLSegmentationNode *segmentationNode, vtkStringArray *segmentIds, vtkIdType folderItemId)
static bool CopyOrientedImageDataToVolumeNode(vtkOrientedImageData *orientedImageData, vtkMRMLVolumeNode *volumeNode, bool shallowCopy=true, bool shiftImageDataExtentToZeroStart=true)
static bool ImportLabelmapToSegmentationNode(vtkMRMLLabelMapVolumeNode *labelmapNode, vtkMRMLSegmentationNode *segmentationNode, std::string insertBeforeSegmentId="", vtkMRMLMessageCollection *userMessages=nullptr)