-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include <AIS_Trihedron.hxx>
#include <AIS_AngleDimension.hxx>
#include <AIS_LengthDimension.hxx>
-#include <AIS_Drawer.hxx>
#include <Geom_Axis2Placement.hxx>
#include <Geom_Plane.hxx>
#include <SelectMgr_Selection.hxx>
#include <gce_MakePln.hxx>
#include <Prs3d_LineAspect.hxx>
#include <Prs3d_DimensionAspect.hxx>
-#if OCC_VERSION_LARGE > 0x06050300
#include <Prs3d_TextAspect.hxx>
#include <Prs3d_Presentation.hxx>
#include <Prs3d_Text.hxx>
#include <Graphic3d_HorizontalTextAlignment.hxx>
#include <Graphic3d_AspectText3d.hxx>
#include <Font_FontAspect.hxx>
-#endif // OCC_VERSION_LARGE > 0x06050300
// This include must be *AFTER* SOCC_ViewModel.h because
// of the constant ROTATE which is a #define in
bool& myLock;
};
-#if OCC_VERSION_LARGE > 0x06050300
DEFINE_STANDARD_HANDLE(AIS_Text, AIS_InteractiveObject)
class AIS_Text:public AIS_InteractiveObject
asp->Aspect()->SetTextFontAspect(aFontAspect);
Prs3d_Text::Draw(aPresentation, asp, aText, aPosition);
};
-#endif // OCC_VERSION_LARGE > 0x06050300
bool isSame (double d1, double d2)
{
myOK(false),
myLineWidth(lineWidth),
myGeometryGUI(theGeometryGUI),
- myLengthIORedoList()
+ myLengthIORedoList(),
+ myIsUndoRedo(false)
{
QPixmap image0(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_SELECT")));
QPixmap image1(SUIT_Session::session()->resourceMgr()->loadPixmap("GEOM", tr("ICON_DLG_UNDO")));
SUIT_ViewWindow* vw = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
myAnglePrs = dynamic_cast<SOCC_Prs*>(((SOCC_Viewer*)(vw->getViewManager()->getViewModel()))->CreatePrs(0));
myLengthPrs = dynamic_cast<SOCC_Prs*>(((SOCC_Viewer*)(vw->getViewManager()->getViewModel()))->CreatePrs(0));
-#if OCC_VERSION_LARGE > 0x06050300
myTextPrs = dynamic_cast<SOCC_Prs*>(((SOCC_Viewer*)(vw->getViewManager()->getViewModel()))->CreatePrs(0));
-#endif // OCC_VERSION_LARGE > 0x06050300
localSelection(GEOM::GEOM_Object::_nil(), TopAbs_VERTEX);
//=================================================================================
void EntityGUI_3DSketcherDlg::ClickOnUndo()
{
+ myIsUndoRedo = true;
if (myPointsList.count() > 0) {
myRedoList.append(myPointsList.last());
((SOCC_Viewer*)(vw->getViewManager()->getViewModel()))->Display(myTextPrs);
// Remove last point from list
+ myWorkPoint = myPointsList.last();
myPointsList.removeLast();
GEOMBase_Helper::displayPreview(true, false, true, true, myLineWidth);
UpdateButtonsState();
updateViewer();
}
+ myIsUndoRedo = false;
}
//=================================================================================
//=================================================================================
void EntityGUI_3DSketcherDlg::ClickOnRedo()
{
+ myIsUndoRedo = true;
if (myRedoList.count() > 0) {
myPointsList.append(myRedoList.last());
((SOCC_Viewer*)(vw->getViewManager()->getViewModel()))->Display(myTextPrs);
// Remove last point from redo list
+ myWorkPoint = myRedoList.last();
myRedoList.removeLast();
GEOMBase_Helper::displayPreview(true, false, true, true, myLineWidth);
UpdateButtonsState();
updateViewer();
}
+ myIsUndoRedo = false;
}
//=================================================================================
bool twoAngles = GroupAngles->checkBox->isChecked();
XYZ Last = getLastPoint();
- XYZ Current = getCurrentPoint();
+ XYZ Current;
+ if( myIsUndoRedo ) {
+ Current = myWorkPoint;
+ } else {
+ Current = getCurrentPoint();
+ }
+
XYZ Penultimate = getPenultimatePoint();
gp_Pnt P1 = gp_Pnt(Last.x,Last.y,Last.z);
}
}
// If no angles, the plane is the one formed by the last edge and the current one
- aNormal = gp_Dir(Vec1.Crossed(Vec2));
+ if(Abs(Vec1.CrossMagnitude(Vec2)) > Precision::Confusion()) {
+ aNormal = gp_Dir(Vec1.Crossed(Vec2));
+ }
}
return aNormal;
}
gp_Pnt P,
bool store )
{
-#if OCC_VERSION_LARGE > 0x06050300
SUIT_ViewWindow* vw = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
Handle(AIS_Text) anIO = new AIS_Text(TCollection_ExtendedString(theText.c_str()), P);
GEOMBase_Helper::displayPreview(aSPrs, true, true);
}
}
-#endif // OCC_VERSION_LARGE > 0x06050300
+
}
//================================================================
if (Abs(theAngle) < Precision::Angular() ||
aLength < Precision::Confusion())
return NULL;
-
- // Convert angles to string
- std::string Angle_str = doubleToString(theAngle);
-
- // Construction of the plane
- //gce_MakePln gce_MP2(P0, P1, P2);
- //Handle(Geom_Plane) aPlane = new Geom_Plane(gce_MP2.Value());
-
- TopoDS_Vertex V0 = BRepBuilderAPI_MakeVertex(P0);
- TopoDS_Vertex V1 = BRepBuilderAPI_MakeVertex(P1);
- TopoDS_Vertex V2 = BRepBuilderAPI_MakeVertex(P2);
-
- TopoDS_Edge anEdge1 = BRepBuilderAPI_MakeEdge(V0, V1);
- TopoDS_Edge anEdge2 = BRepBuilderAPI_MakeEdge(V0, V2);
-
- //Handle(AIS_AngleDimension) anIO =
- // new AIS_AngleDimension(anEdge1, anEdge2, aPlane, theAngle * M_PI / 180.,
- // TCollection_ExtendedString(Angle_str.c_str()));
- //
- //anIO->SetArrowSize((theAngle * M_PI / 180) * (aLength/20));
- //
- //SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
- //int w = resMgr->integerValue("Geometry", "measures_line_width", 1);
- //Handle(Prs3d_AngleAspect) asp = new Prs3d_AngleAspect();
- //asp->LineAspect()->SetWidth(w);
- //anIO->Attributes()->SetAngleAspect(asp);
-
- // todo : port
-
- Handle(AIS_AngleDimension) anIO = new AIS_AngleDimension( anEdge1, anEdge2 );
-
- anIO->SetCustomValue( theAngle );
+
+ Handle(AIS_AngleDimension) anIO = new AIS_AngleDimension( P1, P0, P2 );
+
+ //anIO->SetCustomValue( theAngle );
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
int w = resMgr->integerValue( "Geometry", "measures_line_width", 1 );