X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FEntityGUI%2FEntityGUI_3DSketcherDlg.h;h=893bbe83ed7e62c8053e3c137106a8790ce3575e;hb=08a90cb03f6d2befe6f0b923bd690182ded48378;hp=c9616fdd75c67d4c4507a82b50361f8dad3423c6;hpb=de646df1b75e275462298d2f77e578b521d5b760;p=modules%2Fgeom.git diff --git a/src/EntityGUI/EntityGUI_3DSketcherDlg.h b/src/EntityGUI/EntityGUI_3DSketcherDlg.h index c9616fdd7..893bbe83e 100755 --- a/src/EntityGUI/EntityGUI_3DSketcherDlg.h +++ b/src/EntityGUI/EntityGUI_3DSketcherDlg.h @@ -15,12 +15,11 @@ // 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 @@ -29,10 +28,15 @@ 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 +#include +#include #ifndef COORD_MIN # define COORD_MIN -1e+15 @@ -51,14 +55,24 @@ class EntityGUI_3DSketcherDlg : public GEOMBase_Skeleton 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 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: @@ -80,10 +94,30 @@ private: 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&, @@ -92,18 +126,30 @@ private: 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; 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; @@ -120,6 +166,7 @@ private slots: bool ClickOnApply(); // bool isSameAsPrevious(); void UpdateButtonsState(); + void UpdatePointCoordinates(); void ClickOnUndo(); void ClickOnRedo();