ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
cvDistanceTool.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
11 #include "ui_cvDistanceToolDlg.h"
12 
13 // Forward declarations
16 
18  Q_OBJECT
19 
20 public:
21  explicit cvDistanceTool(QWidget* parent = nullptr);
22  ~cvDistanceTool() override;
23 
24  virtual void start() override;
25  virtual void reset() override;
26  virtual void showWidget(bool state) override;
27  virtual ccHObject* getOutput() override;
28 
29  virtual double getMeasurementValue() const override;
30  virtual void getPoint1(double pos[3]) const override;
31  virtual void getPoint2(double pos[3]) const override;
32  virtual void setPoint1(double pos[3]) override;
33  virtual void setPoint2(double pos[3]) override;
34  virtual void setColor(double r, double g, double b) override;
35  virtual bool getColor(double& r, double& g, double& b) const override;
36  virtual void lockInteraction() override;
37  virtual void unlockInteraction() override;
38  virtual void setInstanceLabel(const QString& label) override;
39 
40 protected:
41  virtual void initTool() override;
42  virtual void createUi() override;
43  virtual void setupPointPickingShortcuts(QWidget* vtkWidget) override;
44 
45 private slots:
47  void pickAlternatingPoint(double x, double y, double z);
48  void pickKeyboardPoint1(double x, double y, double z);
49  void pickKeyboardPoint2(double x, double y, double z);
50  void pickNormalDirection(
51  double px, double py, double pz, double nx, double ny, double nz);
52 
53  void on_point1XSpinBox_valueChanged(double arg1);
54  void on_point1YSpinBox_valueChanged(double arg1);
55  void on_point1ZSpinBox_valueChanged(double arg1);
56  void on_point2XSpinBox_valueChanged(double arg1);
57  void on_point2YSpinBox_valueChanged(double arg1);
58  void on_point2ZSpinBox_valueChanged(double arg1);
59  void onDistanceChanged(double dist);
60  void onWorldPoint1Changed(double* pos);
61  void onWorldPoint2Changed(double* pos);
62  void on_pickPoint1_toggled(bool checked);
63  void on_pickPoint2_toggled(bool checked);
64  void on_rulerModeCheckBox_toggled(bool checked);
65  void on_rulerDistanceSpinBox_valueChanged(double value);
66  void on_numberOfTicksSpinBox_valueChanged(int value);
67  void on_scaleSpinBox_valueChanged(double value);
68  void on_labelFormatLineEdit_textChanged(const QString& text);
69  void on_widgetVisibilityCheckBox_toggled(bool checked);
70  void on_labelVisibilityCheckBox_toggled(bool checked);
71  void on_lineWidthSpinBox_valueChanged(double value);
72 
73 private:
74  void hookWidget(const vtkSmartPointer<cvConstrainedDistanceWidget>& widget);
75  void updateDistanceDisplay();
76 
77  Ui::DistanceToolDlg* m_configUi = nullptr;
79  m_widget; // Constrained widget (supports XYZL constraints)
81  m_rep; // Custom representation (supports distance display + ruler
82  // + XYZL constraints)
83 
86  bool m_pickPoint1Next = true;
87 
89  double m_currentColor[3] = {0.0, 1.0, 0.0}; // Default green
90 
92  QString m_instanceLabel;
93 
96  void applyFontProperties() override;
97 };
#define slots
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
Line/Distance Widget with XYZL constraint support (100% consistent with ParaView)
Extended LineRepresentation with distance display and ruler features.
virtual void unlockInteraction() override
Unlock tool interaction (enable VTK widget interaction and UI controls)
virtual void setInstanceLabel(const QString &label) override
Set instance label suffix (e.g., "#1", "#2") for display in 3D view.
virtual void start() override
virtual void initTool() override
virtual void setPoint2(double pos[3]) override
Set point 2 coordinates.
virtual void setupPointPickingShortcuts(QWidget *vtkWidget) override
virtual void setColor(double r, double g, double b) override
Set measurement color (RGB values in range [0.0, 1.0])
virtual void setPoint1(double pos[3]) override
Set point 1 coordinates.
virtual void createUi() override
virtual double getMeasurementValue() const override
Get measurement value (distance or angle)
virtual void getPoint1(double pos[3]) const override
Get point 1 coordinates.
virtual void getPoint2(double pos[3]) const override
Get point 2 coordinates.
virtual bool getColor(double &r, double &g, double &b) const override
virtual void showWidget(bool state) override
virtual void reset() override
~cvDistanceTool() override
cvDistanceTool(QWidget *parent=nullptr)
virtual ccHObject * getOutput() override
virtual void lockInteraction() override
Lock tool interaction (disable VTK widget interaction and UI controls)
normal_z y
normal_z x
normal_z z