Computer Assited Medical Intervention Tool Kit  version 5.0
MeshClipping Class Reference

This action allows the user to clip several kinds of MeshComponents : vtkStructuredGridClip, vtkUnstructuredGridClip, vtkPolyData. More...

#include <MeshClipping.h>

+ Inheritance diagram for MeshClipping:
+ Collaboration diagram for MeshClipping:

Public Slots

virtual camitk::Action::ApplyStatus apply ()
 Method called when the action is applied. More...
 
virtual void meshDeleted ()
 specific slot called when the mesh currently clipped is deleted More...
 
- Public Slots inherited from camitk::Action
virtual camitk::Action::ApplyStatus apply ()=0
 This method is called when the action has to be applied on the target list (get the target lists using getTargets()) It calls the algorithm of your action on the target list of components. More...
 
camitk::Action::ApplyStatus applyAndRegister ()
 This method is called whenever the action has to be applied on the target list (like the apply()) method AND registered within the application history of actions. More...
 
camitk::Action::ApplyStatus trigger (QWidget *parent=nullptr)
 This method triggers the action. More...
 

Public Member Functions

virtual QWidget * getWidget ()
 Method called when the action when the action is triggered (i.e. started). More...
 
 MeshClipping (camitk::ActionExtension *)
 The constructor. More...
 
virtual ~MeshClipping ()
 The destructor. More...
 
- Public Member Functions inherited from camitk::Action
 Action (ActionExtension *)
 Default Constructor: the ActionExtension is needed. More...
 
 ~Action () override
 Destructor. More...
 
virtual QAction * getQAction (Component *target=nullptr)
 Get the corresponding QAction. More...
 
QString getName () const
 get the name of the action More...
 
QString getDescription () const
 the description of the action More...
 
QString getComponent () const
 the name of the component class that can be used by this action More...
 
QString getFamily () const
 the name of the family in which this action is associated More...
 
QString getExtensionName () const
 the name of the extension in the family in which this action is associated More...
 
QStringList getTag () const
 the name of the tag called this action More...
 
bool getEmbedded () const
 argument use to know if the widget is embedded or not More...
 
virtual QPixmap getIcon ()
 the icon to personalize the action (no icon by default) More...
 
const ComponentList getTargets () const
 the currently selected and valid (regarding the component property) components, for which this action is called More...
 
void updateTargets ()
 update the target list using the currently selected components More...
 
bool getAutoUpdateProperties () const
 
void setAutoUpdateProperties (bool)
 are the properties to be udpated every time the user makes a change in the widget (default is false)? More...
 
virtual Q_INVOKABLE camitk::PropertygetProperty (QString name)
 Get a Property given its name. More...
 
virtual bool addParameter (Property *)
 Add a new parameter to the action, using the CamiTK property class. More...
 
void applyTargetPosition (Component *input, Component *target)
 Change the target frame according to the default frame policy regarding the input's one. More...
 
void applyTargetPosition (Component *input, Component *target, Application::TargetPositionningPolicy policy)
 Change the target frame according to a given frame policy regarding the input's one. More...
 
ApplyStatus applyInPipeline ()
 This method encapsulates the apply() method. More...
 
void setInputComponents (ComponentList inputs)
 Specify the input Component(s) Only applyInPipeline() should be called with this method (maybe apply), but not trigger() as its first intruction is to clear the target components list !!! More...
 
void setInputComponent (Component *input)
 Specify the input Components in case of only one Component. More...
 
ComponentList getOutputComponents ()
 Returns the output Component(s) More...
 
ComponentgetOutputComponent ()
 Returns the output Components in case of only one Component. More...
 

Private Slots

void changeAllComponents ()
 Method called when the clip all components button is clicked. More...
 
void changeSmoothing ()
 Method called when the smooth button is clicked. More...
 
void changeVisibility ()
 Method called when the visibility button is clicked. More...
 
void restoreMeshes ()
 Method called when the restore button is clicked. More...
 
void saveClippedMeshes ()
 Method called when the saving button is clicked. More...
 
void updateBox ()
 Method called when the update button is clicked re-calculates the widget box size when new components are added or deleted (i.e increases or dicreases the box size according to the scene bounds). More...
 

Private Member Functions

ApplyStatus clipMesh (camitk::MeshComponent *mesh, vtkSmartPointer< vtkPlane > plane)
 Clips the mesh throughout the plane specified and return the ApplyStatus. More...
 
void customizeActionLayout ()
 Customizes the action viewer. More...
 
void updateBox (bool refreshViewer)
 update the dimension of the vtk plane widget More...
 

Private Attributes

bool allComponents
 Controls which components are clipped : all opened components or only selected components. More...
 
double limBounds [6]
 Contains the clipping widget bounding box [xmin, xmax, ymin, ymax, zmin, zmax]. More...
 
camitk::ComponentList list
 List of MeshComponent that are currently targeted by the clipping. More...
 
bool planeVisibility
 Controls the clipping widget visibility. More...
 
bool save
 Controls the saving of the clipped component. More...
 
bool smoothing
 Controls smooth or chiselled (raw) clipping. More...
 
PlaneWidgetwidget
 Class which contains the widget (implements vtkCommand). More...
 

Additional Inherited Members

- Public Types inherited from camitk::Action
enum  ApplyStatus {
  SUCCESS, ERROR, WARNING, ABORTED,
  TRIGGERED
}
 
- Static Public Member Functions inherited from camitk::Action
static QString getStatusAsString (ApplyStatus)
 
- Protected Member Functions inherited from camitk::Action
void setName (QString name)
 
void setDescription (QString description)
 the description of the action More...
 
void setComponent (QString component)
 the name of the component class that can be used by this action More...
 
void setFamily (QString family)
 the name of the family in which this action is associated More...
 
void addTag (QString tag)
 add a tag to the tags list of this action More...
 
void setEmbedded (bool isEmbedded)
 set the embedded property (an action is embedded by default, unless specified otherwise by explicitly calling this method with false) More...
 
void setIcon (QPixmap)
 set the Pixmap More...
 
- Protected Attributes inherited from camitk::Action
QWidget * actionWidget
 the action widget More...
 

Detailed Description

This action allows the user to clip several kinds of MeshComponents : vtkStructuredGridClip, vtkUnstructuredGridClip, vtkPolyData.

This action allows 2 clipping modes :

  • Only selected meshes are clipped
  • All the opened meshes are clipped The switch between those 2 approaches can easily be processed thanks to the related button in the action viewer.

This action uses a vtkImplicitPlaneWidget which can be either hidden or visible thanks to the related button in the action viewer.

This action can also restore the clipped meshes to their former "unclipped" state thanks to the restore Meshes button. Basically, when you're done using the clipping tool, you can, for example, restore the initial unclipped meshes and hide the plane before switching to another action.

Saving a clipped component can be done by clicking the dedicated button.

Note
When a component is added/deleted, the action needs to be refreshed in order to take the modifications into account. This can easily be done by clicking the update button.

Constructor & Destructor Documentation

◆ MeshClipping()

MeshClipping::MeshClipping ( camitk::ActionExtension extension)

The constructor.

References camitk::Action::addTag(), allComponents, planeVisibility, save, camitk::Action::setComponent(), camitk::Action::setDescription(), camitk::Action::setFamily(), camitk::Action::setName(), smoothing, and widget.

+ Here is the call graph for this function:

◆ ~MeshClipping()

MeshClipping::~MeshClipping ( )
virtual

The destructor.

References widget.

Member Function Documentation

◆ apply

Action::ApplyStatus MeshClipping::apply ( )
virtualslot

Method called when the action is applied.

References allComponents, clipMesh(), camitk::Component::isInstanceOf(), camitk::Component::isSelected(), list, meshDeleted(), PlaneWidget::planeWidget, camitk::refresh(), save, camitk::Action::SUCCESS, and widget.

Referenced by changeAllComponents(), changeSmoothing(), and saveClippedMeshes().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ changeAllComponents

void MeshClipping::changeAllComponents ( )
privateslot

Method called when the clip all components button is clicked.

References allComponents, apply(), camitk::Component::getDataPort, list, and camitk::InterfaceGeometry::setDataConnection().

Referenced by customizeActionLayout().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ changeSmoothing

void MeshClipping::changeSmoothing ( )
privateslot

Method called when the smooth button is clicked.

References apply(), and smoothing.

Referenced by customizeActionLayout().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ changeVisibility

void MeshClipping::changeVisibility ( )
privateslot

Method called when the visibility button is clicked.

References planeVisibility, and camitk::refresh().

Referenced by customizeActionLayout().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ clipMesh()

Action::ApplyStatus MeshClipping::clipMesh ( camitk::MeshComponent mesh,
vtkSmartPointer< vtkPlane >  plane 
)
private

Clips the mesh throughout the plane specified and return the ApplyStatus.

References camitk::Action::ABORTED, CAMITK_WARNING, camitk::Component::getDataPort, camitk::Component::getName(), camitk::InterfaceGeometry::getPointSet(), save, camitk::InterfaceGeometry::setDataConnection(), smoothing, and camitk::Action::SUCCESS.

Referenced by apply().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ customizeActionLayout()

void MeshClipping::customizeActionLayout ( )
private

Customizes the action viewer.

(i.e remove apply and revert buttons and adds the 4 specific buttons for meshclipping action).

References camitk::Action::actionWidget, changeAllComponents(), changeSmoothing(), changeVisibility(), restoreMeshes(), saveClippedMeshes(), camitk::ActionWidget::setButtonVisibility(), and updateBox().

Referenced by getWidget().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getWidget()

QWidget * MeshClipping::getWidget ( )
virtual

Method called when the action when the action is triggered (i.e. started).

Reimplemented from camitk::Action.

References customizeActionLayout(), camitk::InteractiveViewer::getBounds(), camitk::InteractiveViewer::getRendererWidget(), limBounds, planeVisibility, PlaneWidget::planeWidget, updateBox(), and widget.

+ Here is the call graph for this function:

◆ meshDeleted

void MeshClipping::meshDeleted ( )
virtualslot

specific slot called when the mesh currently clipped is deleted

References PlaneWidget::planeWidget, and widget.

Referenced by apply().

+ Here is the caller graph for this function:

◆ restoreMeshes

void MeshClipping::restoreMeshes ( )
privateslot

Method called when the restore button is clicked.

References camitk::Component::getDataPort, list, camitk::refresh(), and camitk::InterfaceGeometry::setDataConnection().

Referenced by customizeActionLayout().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveClippedMeshes

void MeshClipping::saveClippedMeshes ( )
privateslot

Method called when the saving button is clicked.

References apply(), and save.

Referenced by customizeActionLayout().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateBox [1/2]

void MeshClipping::updateBox ( )
privateslot

Method called when the update button is clicked re-calculates the widget box size when new components are added or deleted (i.e increases or dicreases the box size according to the scene bounds).

Referenced by customizeActionLayout(), and getWidget().

+ Here is the caller graph for this function:

◆ updateBox() [2/2]

void MeshClipping::updateBox ( bool  refreshViewer)
private

update the dimension of the vtk plane widget

Parameters
refreshViewerrefresh all the application viewers only if this is true

References camitk::Component::getBounds(), limBounds, list, PlaneWidget::planeWidget, camitk::refresh(), and widget.

+ Here is the call graph for this function:

Member Data Documentation

◆ allComponents

bool MeshClipping::allComponents
private

Controls which components are clipped : all opened components or only selected components.

Referenced by apply(), changeAllComponents(), and MeshClipping().

◆ limBounds

double MeshClipping::limBounds[6]
private

Contains the clipping widget bounding box [xmin, xmax, ymin, ymax, zmin, zmax].

Referenced by getWidget(), and updateBox().

◆ list

camitk::ComponentList MeshClipping::list
private

List of MeshComponent that are currently targeted by the clipping.

Referenced by apply(), changeAllComponents(), restoreMeshes(), and updateBox().

◆ planeVisibility

bool MeshClipping::planeVisibility
private

Controls the clipping widget visibility.

Referenced by changeVisibility(), getWidget(), and MeshClipping().

◆ save

bool MeshClipping::save
private

Controls the saving of the clipped component.

Referenced by apply(), clipMesh(), MeshClipping(), and saveClippedMeshes().

◆ smoothing

bool MeshClipping::smoothing
private

Controls smooth or chiselled (raw) clipping.

Referenced by changeSmoothing(), clipMesh(), and MeshClipping().

◆ widget

PlaneWidget* MeshClipping::widget
private

Class which contains the widget (implements vtkCommand).

Referenced by apply(), getWidget(), MeshClipping(), meshDeleted(), updateBox(), and ~MeshClipping().


The documentation for this class was generated from the following files: