// 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 EntityGUI_Type;
class EntityGUI_Angles;
class EntityGUI_Controls;
-class DlgRef_3Radio;
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 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 displayAngle( double, double, double, int, bool store = false );
- void displayLength( double theLength = -1.0, bool store = false );
+ void displayDimensions(bool store = false);
bool createShapes( GEOM::GEOM_Object_ptr,
TopoDS_Shape&,
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;
- int myPrsType;
- std::list<int> myPrsTypeList;
- std::list<int> myPrsTypeRedoList;
+ prsType myPrsType;
EntityGUI_3Spin* Group3Spin;
EntityGUI_Angles* GroupAngles;
EntityGUI_Controls* GroupControls;
- DlgRef_3Radio* GroupType;
- QButtonGroup* myTypeGroup;
+ EntityGUI_Type* GroupType;
+ QButtonGroup* myTypeGroup1;
+ QButtonGroup* myTypeGroup2;
int myMode;
+ int myCoordType;
int myOrientation;
bool myOK;
bool isLengthVisible;
bool ClickOnApply();
// bool isSameAsPrevious();
void UpdateButtonsState();
+ void UpdatePointCoordinates();
void ClickOnUndo();
void ClickOnRedo();