// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
// GEOM GEOMGUI : GUI for Geometry component
// File : EntityGUI_3DSketcherDlg.h
// Author : DMV, OCN
-//
+
#ifndef ENTITYGUI_3DSKETCHERDLG_H
#define ENTITYGUI_3DSKETCHERDLG_H
class QButtonGroup;
class QDoubleSpinBox;
class EntityGUI_3Spin;
-class DlgRef_3Radio;
+class EntityGUI_Type;
+class EntityGUI_Angles;
+class EntityGUI_Controls;
+class SOCC_Prs;
+class gp_Dir;
+
+#include <AIS_ListOfInteractive.hxx>
+#include <AIS_AngleDimension.hxx>
+#include <AIS_LengthDimension.hxx>
#ifndef COORD_MIN
# define COORD_MIN -1e+15
struct XYZ
{
- XYZ() { x = y = z = 0.0; xt = yt = zt = "0.0"; }
- double x, y, z;
- QString xt, yt, zt;
+ XYZ() { x = y = z = 0.0; command = params = ""; L=A=0; }
+ double x, y, z; // for preview only
+ int L, A; // for preview only
+ QString command;
+ QString params;
+ };
+
+ struct prsType
+ {
+ prsType(){L=A=0;}
+ int L;
+ int A;
};
+
typedef QList<XYZ> XYZList;
public:
- EntityGUI_3DSketcherDlg( GeometryGUI*, QWidget* = 0, bool = false, Qt::WindowFlags = 0, const double = 2. );
+ EntityGUI_3DSketcherDlg (GeometryGUI*, QWidget* = 0, bool = false, Qt::WindowFlags = 0, const double = 2.);
~EntityGUI_3DSketcherDlg();
protected:
const double = -1,
const int = -1,
const int = -1);
+
+ Handle(AIS_LengthDimension) createAISLengthDimension(double theLength,
+ gp_Pnt P1,
+ gp_Pnt P2,
+ gp_Dir theNormal);
+
+ Handle(AIS_AngleDimension) createAISAngleDimension(double theAngle,
+ gp_Pnt P0,
+ gp_Pnt P1,
+ gp_Pnt P2);
+
+ void displayAngle(double theAngle,
+ gp_Pnt P0,
+ gp_Pnt P1,
+ gp_Pnt P2,
+ bool store = false);
+
+ void displayLength(gp_Pnt P1,
+ gp_Pnt P2,
+ gp_Dir theNormal,
+ bool store = false);
+
+ void displayTrihedron( int );
+
+ void displayDimensions(bool store = false);
bool createShapes( GEOM::GEOM_Object_ptr,
TopoDS_Shape&,
TopoDS_Shape& );
XYZ getLastPoint() const;
+ XYZ getPenultimatePoint() const;
XYZ getCurrentPoint() const;
+
+ gp_Dir getPresentationPlane() const;
+
+ std::string doubleToString( double );
+
+ void removeLastIOFromPrs();
+ void restoreLastIOToPrs();
private:
XYZList myPointsList;
XYZList myRedoList;
+ AIS_ListOfInteractive myLengthIORedoList;
+ AIS_ListOfInteractive myAngleIORedoList;
+ prsType myPrsType;
EntityGUI_3Spin* Group3Spin;
- DlgRef_3Radio* GroupType;
- QButtonGroup* myTypeGroup;
+ EntityGUI_Angles* GroupAngles;
+ EntityGUI_Controls* GroupControls;
+ EntityGUI_Type* GroupType;
+ QButtonGroup* myTypeGroup1;
+ QButtonGroup* myTypeGroup2;
int myMode;
+ int myCoordType;
+ int myOrientation;
bool myOK;
+ bool isLengthVisible;
+ bool isAngleVisible;
+
double myLineWidth;
GeometryGUI* myGeometryGUI;
+ SOCC_Prs* myAnglePrs;
+ SOCC_Prs* myLengthPrs;
private slots:
void ClickOnOk();
bool ClickOnApply();
// bool isSameAsPrevious();
void UpdateButtonsState();
+ void UpdatePointCoordinates();
void ClickOnUndo();
void ClickOnRedo();
void ActivateThisDialog();
void TypeClicked( int );
void ValueChangedInSpinBox( double );
+ void ButtonClicked( bool );
+ void BoxChecked ( bool );
void SetDoubleSpinBoxStep( double );
};