mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-02-23 03:05:37 +05:00
DCQ : Remove again.
This commit is contained in:
parent
d086d6f752
commit
6d0cc80268
@ -1,490 +0,0 @@
|
|||||||
// GEOM GEOMGUI : GUI for Geometry component
|
|
||||||
//
|
|
||||||
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
|
||||||
// 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.
|
|
||||||
//
|
|
||||||
// This library is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// File : GEOMBase_Sketcher.cxx
|
|
||||||
// Author : Damien COQUERET
|
|
||||||
// Module : GEOM
|
|
||||||
// $Header:
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
#include "GEOMBase_Sketcher.h"
|
|
||||||
|
|
||||||
#include "QAD_RightFrame.h"
|
|
||||||
#include "OCCViewer_Viewer3d.h"
|
|
||||||
#include "SALOMEGUI_QtCatchCorbaException.hxx"
|
|
||||||
|
|
||||||
#include <BRepTools_WireExplorer.hxx>
|
|
||||||
#include <TopoDS_Wire.hxx>
|
|
||||||
#include <BRep_Tool.hxx>
|
|
||||||
#include <TopExp.hxx>
|
|
||||||
#include <Geom_Circle.hxx>
|
|
||||||
#include <Precision.hxx>
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
// function : GEOMBase_Sketcher()
|
|
||||||
// purpose : Constructor
|
|
||||||
//=======================================================================
|
|
||||||
GEOMBase_Sketcher::GEOMBase_Sketcher() :
|
|
||||||
QObject()
|
|
||||||
{
|
|
||||||
myGeomBase = new GEOMBase();
|
|
||||||
myGeomGUI = GEOMContext::GetGeomGUI();
|
|
||||||
// Engines::Component_var comp = myGeomGUI->GetDesktop()->getEngine("FactoryServer", "GEOM");
|
|
||||||
// myGeom = GEOM::GEOM_Gen::_narrow(comp);
|
|
||||||
myGeom = myGeomGUI->myComponentGeom;
|
|
||||||
mySketcher = myGeomGUI->GetSketcher();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
// function : ~GEOMBase_Sketcher()
|
|
||||||
// purpose : Destructor
|
|
||||||
//=======================================================================
|
|
||||||
GEOMBase_Sketcher::~GEOMBase_Sketcher()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
// function : OnGUIEvent()
|
|
||||||
// purpose :
|
|
||||||
//=======================================================================
|
|
||||||
bool GEOMBase_Sketcher::OnGUIEvent(int theCommandID, QAD_Desktop* parent)
|
|
||||||
{
|
|
||||||
if(myGeomGUI->GetActiveStudy()->getActiveStudyFrame()->getTypeView() > VIEW_OCC)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
myGeomGUI->EmitSignalDeactivateDialog();
|
|
||||||
SALOME_Selection* Sel = SALOME_Selection::Selection(myGeomGUI->GetActiveStudy()->getSelection());
|
|
||||||
|
|
||||||
QMenuBar* Mb = myGeomGUI->GetDesktop()->getMainMenuBar();
|
|
||||||
QMenuData* pp;
|
|
||||||
|
|
||||||
switch (theCommandID)
|
|
||||||
{
|
|
||||||
case 404: // SKETCHER
|
|
||||||
{
|
|
||||||
((OCCViewer_ViewFrame*)myGeomGUI->GetActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame())->onViewTop(); // DCQ : 28/02/2002
|
|
||||||
|
|
||||||
OCCViewer_Viewer3d* v3d = ((OCCViewer_ViewFrame*)myGeomGUI->GetActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame())->getViewer();
|
|
||||||
|
|
||||||
mySketcher = Sketch(v3d->getViewer3d());
|
|
||||||
myGeomGUI->SetState(CURRENT_SKETCH);
|
|
||||||
|
|
||||||
QMenuItem* item = Mb->findItem(4061, &pp);
|
|
||||||
mySketcher.SetParameterVisibility(LENGTH_PARAMETER, pp->isItemChecked(4061));
|
|
||||||
item = Mb->findItem(4062, &pp);
|
|
||||||
mySketcher.SetParameterVisibility(ANGLE_PARAMETER, pp->isItemChecked(4062));
|
|
||||||
item = Mb->findItem(4063, &pp);
|
|
||||||
mySketcher.SetParameterVisibility(RADIUS_PARAMETER, pp->isItemChecked(4063));
|
|
||||||
item = Mb->findItem(4064, &pp);
|
|
||||||
mySketcher.SetParameterVisibility(XVALUE_PARAMETER, pp->isItemChecked(4064));
|
|
||||||
item = Mb->findItem(4065, &pp);
|
|
||||||
mySketcher.SetParameterVisibility(YVALUE_PARAMETER, pp->isItemChecked(4065));
|
|
||||||
|
|
||||||
mySketcher.SetTransitionStatus(NOCONSTRAINT);
|
|
||||||
item = Mb->findItem(4052, &pp);
|
|
||||||
pp->setItemChecked(4052, false);
|
|
||||||
item = Mb->findItem(4053, &pp);
|
|
||||||
pp->setItemChecked(4053, false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4041: // SKETCH Segment
|
|
||||||
{
|
|
||||||
mySketcher.ChangeMode(SEGMENT);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4042: // SKETCH Arc
|
|
||||||
{
|
|
||||||
mySketcher.ChangeMode(ARC_CHORD);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4043: // SKETCH Set Angle
|
|
||||||
{
|
|
||||||
OnSketchSetAngle();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4044: // SKETCH Set X
|
|
||||||
{
|
|
||||||
OnSketchSetx();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4045: // SKETCH Set Y
|
|
||||||
{
|
|
||||||
OnSketchSety();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4046: // SKETCH Delete
|
|
||||||
{
|
|
||||||
OnSketchDelete();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4047: // SKETCH End
|
|
||||||
{
|
|
||||||
OnSketchEnd();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4048: // SKETCH Close
|
|
||||||
{
|
|
||||||
OnSketchClose();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4051: // sketcher Set Plane
|
|
||||||
{
|
|
||||||
//TO DO
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4052: // sketcher TANGENT
|
|
||||||
{
|
|
||||||
QMenuItem* item = Mb->findItem(theCommandID, &pp);
|
|
||||||
pp->setItemChecked(theCommandID, !pp->isItemChecked(theCommandID));
|
|
||||||
if(pp->isItemChecked(theCommandID) == true)
|
|
||||||
mySketcher.SetTransitionStatus(TANGENT);
|
|
||||||
else
|
|
||||||
mySketcher.SetTransitionStatus(NOCONSTRAINT);
|
|
||||||
|
|
||||||
pp->setItemChecked(4053, false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4053: // sketcher PERPENDICULAR
|
|
||||||
{
|
|
||||||
QMenuItem* item = Mb->findItem(theCommandID, &pp);
|
|
||||||
pp->setItemChecked(theCommandID,!pp->isItemChecked(theCommandID));
|
|
||||||
if(pp->isItemChecked(theCommandID) == true)
|
|
||||||
mySketcher.SetTransitionStatus(PERPENDICULAR);
|
|
||||||
else
|
|
||||||
mySketcher.SetTransitionStatus(NOCONSTRAINT);
|
|
||||||
|
|
||||||
pp->setItemChecked(4052, false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4061: // SKETCH OptionsOnofflengthdimension
|
|
||||||
{
|
|
||||||
QMenuItem* item = Mb->findItem(theCommandID, &pp);
|
|
||||||
pp->setItemChecked(theCommandID, !pp->isItemChecked(theCommandID));
|
|
||||||
mySketcher.SetParameterVisibility(LENGTH_PARAMETER, pp->isItemChecked(theCommandID));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4062: // SKETCH OptionsOnoffangledimension
|
|
||||||
{
|
|
||||||
QMenuItem* item = Mb->findItem(theCommandID, &pp);
|
|
||||||
pp->setItemChecked(theCommandID, !pp->isItemChecked(theCommandID));
|
|
||||||
mySketcher.SetParameterVisibility(ANGLE_PARAMETER, pp->isItemChecked(theCommandID));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4063: // SKETCH OptionsOnoffradiusdimension
|
|
||||||
{
|
|
||||||
QMenuItem* item = Mb->findItem(theCommandID, &pp);
|
|
||||||
pp->setItemChecked(theCommandID, !pp->isItemChecked(theCommandID));
|
|
||||||
mySketcher.SetParameterVisibility(RADIUS_PARAMETER, pp->isItemChecked(theCommandID));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4064: // SKETCH OptionsOnoffxdimension
|
|
||||||
{
|
|
||||||
QMenuItem* item = Mb->findItem(theCommandID, &pp);
|
|
||||||
pp->setItemChecked(theCommandID, !pp->isItemChecked(theCommandID));
|
|
||||||
mySketcher.SetParameterVisibility(XVALUE_PARAMETER, pp->isItemChecked(theCommandID));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4065: // SKETCH OptionsOnoffydimension
|
|
||||||
{
|
|
||||||
QMenuItem* item = Mb->findItem(theCommandID, &pp);
|
|
||||||
pp->setItemChecked(theCommandID, !pp->isItemChecked(theCommandID));
|
|
||||||
mySketcher.SetParameterVisibility(YVALUE_PARAMETER, pp->isItemChecked(theCommandID));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
parent->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
// function : OnSketchSetAngle()
|
|
||||||
// purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void GEOMBase_Sketcher::OnSketchSetAngle()
|
|
||||||
{
|
|
||||||
Standard_Real anAngle = mySketcher.GetSegmentAngle()/PI180;
|
|
||||||
Sketch::fitInResol(anAngle);
|
|
||||||
Standard_Boolean res = false;
|
|
||||||
QString Value = QString("%1").arg(anAngle);
|
|
||||||
anAngle = myGeomBase->Parameter(res, Value, tr("GEOM_MEN_ANGLE"), tr("GEOM_MEN_ENTER_ANGLE"),
|
|
||||||
-180.0, +180.0, 6) * PI180;
|
|
||||||
|
|
||||||
if(res) {
|
|
||||||
mySketcher.SetSegmentAngle(anAngle);
|
|
||||||
QMenuBar* Mb = myGeomGUI->GetDesktop()->getMainMenuBar();
|
|
||||||
QMenuData* pp;
|
|
||||||
QMenuItem* item = Mb->findItem(4052, &pp);
|
|
||||||
pp->setItemChecked(4052, false);
|
|
||||||
item = Mb->findItem(4053, &pp);
|
|
||||||
pp->setItemChecked(4053, false);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
// function : OnSketchSetx()
|
|
||||||
// purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void GEOMBase_Sketcher::OnSketchSetx()
|
|
||||||
{
|
|
||||||
Standard_Boolean res = false;
|
|
||||||
double X = myGeomBase->Parameter(res, "0.", tr("GEOM_MEN_X"), tr("GEOM_MEN_SKETCHER_X"),
|
|
||||||
2.0 * Precision::Confusion(), 1E6, 6);
|
|
||||||
if(res)
|
|
||||||
mySketcher.SetXDimension(X);
|
|
||||||
QMenuBar* Mb = myGeomGUI->GetDesktop()->getMainMenuBar();
|
|
||||||
QMenuData* pp;
|
|
||||||
QMenuItem* item = Mb->findItem(4052, &pp);
|
|
||||||
pp->setItemChecked(4052, false);
|
|
||||||
item = Mb->findItem(4053, &pp);
|
|
||||||
pp->setItemChecked(4053, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
// function : OnSketchSety()
|
|
||||||
// purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void GEOMBase_Sketcher::OnSketchSety()
|
|
||||||
{
|
|
||||||
Standard_Boolean res = false;
|
|
||||||
double Y = myGeomBase->Parameter(res, "0.", tr("GEOM_MEN_Y"), tr("GEOM_MEN_SKETCHER_Y"), 2.0 * Precision::Confusion(), 1E6, 6);
|
|
||||||
if(res)
|
|
||||||
mySketcher.SetYDimension(Y);
|
|
||||||
QMenuBar* Mb = myGeomGUI->GetDesktop()->getMainMenuBar();
|
|
||||||
QMenuData* pp;
|
|
||||||
QMenuItem* item = Mb->findItem(4052, &pp);
|
|
||||||
pp->setItemChecked(4052, false);
|
|
||||||
item = Mb->findItem(4053, &pp);
|
|
||||||
pp->setItemChecked(4053, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
// function : OnSketchDelete()
|
|
||||||
// purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void GEOMBase_Sketcher::OnSketchDelete()
|
|
||||||
{
|
|
||||||
if(mySketcher.GetmyEdgesNumber() == 1) {
|
|
||||||
QMenuBar* Mb = myGeomGUI->GetDesktop()->getMainMenuBar();
|
|
||||||
QMenuData* pp;
|
|
||||||
QMenuItem* item = Mb->findItem(406, &pp);
|
|
||||||
pp->setItemEnabled(406, false); // SKETCH CONTRAINTS
|
|
||||||
mySketcher.SetTransitionStatus(NOCONSTRAINT);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(mySketcher.Delete())
|
|
||||||
myGeomGUI->ResetState();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
// function : OnSketchClose()
|
|
||||||
// purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void GEOMBase_Sketcher::OnSketchClose()
|
|
||||||
{
|
|
||||||
OCCViewer_Viewer3d* v3d = ((OCCViewer_ViewFrame*)myGeomGUI->GetActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame())->getViewer();
|
|
||||||
Handle(AIS_InteractiveContext) myContext = v3d->getAISContext();
|
|
||||||
|
|
||||||
TopoDS_Wire W = mySketcher.Close();
|
|
||||||
if(!W.IsNull()) {
|
|
||||||
GEOM::GEOM_Gen::ListOfIOR_var listShapes = new GEOM::GEOM_Gen::ListOfIOR;
|
|
||||||
listShapes->length(0);
|
|
||||||
unsigned int i = 0;
|
|
||||||
|
|
||||||
BRepTools_WireExplorer Ex(W);
|
|
||||||
while(Ex.More()) {
|
|
||||||
TopoDS_Edge E = Ex.Current();
|
|
||||||
gp_Pnt pt1, pt2;
|
|
||||||
|
|
||||||
pt1 = BRep_Tool::Pnt(TopExp::FirstVertex(E));
|
|
||||||
pt2 = BRep_Tool::Pnt(TopExp::LastVertex(E));
|
|
||||||
|
|
||||||
gp_Pnt CenterPoint;
|
|
||||||
Handle(Geom_Curve) Curve;
|
|
||||||
Handle(Geom_Circle) Circle;
|
|
||||||
gp_Circ Circ;
|
|
||||||
Standard_Real First,Last;
|
|
||||||
|
|
||||||
Curve = BRep_Tool::Curve(E,First,Last);
|
|
||||||
if(Curve->IsKind(STANDARD_TYPE(Geom_Circle))) {
|
|
||||||
Circle = Handle(Geom_Circle)::DownCast(Curve); // pointer on geom_circ
|
|
||||||
Circ = Circle->Circ(); // gp_Circ
|
|
||||||
|
|
||||||
Curve->D0((First + Last) / 2., CenterPoint);
|
|
||||||
|
|
||||||
GEOM::PointStruct pI = myGeom->MakePointStruct(pt1.X(), pt1.Y(), pt1.Z());
|
|
||||||
GEOM::PointStruct pC = myGeom->MakePointStruct(CenterPoint.X(), CenterPoint.Y(), CenterPoint.Z());
|
|
||||||
GEOM::PointStruct pE = myGeom->MakePointStruct(pt2.X(), pt2.Y(), pt2.Z());
|
|
||||||
|
|
||||||
GEOM::GEOM_Shape_var arc;
|
|
||||||
|
|
||||||
try {
|
|
||||||
arc = myGeom->MakeArc(pI, pC, pE);
|
|
||||||
}
|
|
||||||
catch (const SALOME::SALOME_Exception& S_ex) {
|
|
||||||
QtCatchCorbaException(S_ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
listShapes->length(i+1);
|
|
||||||
listShapes[i] = strdup(arc->Name());
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
GEOM::PointStruct pI = myGeom->MakePointStruct(pt1.X(), pt1.Y(), pt1.Z());
|
|
||||||
GEOM::PointStruct pE = myGeom->MakePointStruct(pt2.X(), pt2.Y(), pt2.Z());
|
|
||||||
GEOM::GEOM_Shape_var segment;
|
|
||||||
|
|
||||||
try {
|
|
||||||
segment = myGeom->MakeEdge(pI,pE);
|
|
||||||
}
|
|
||||||
catch (const SALOME::SALOME_Exception& S_ex) {
|
|
||||||
QtCatchCorbaException(S_ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
listShapes->length(i+1);
|
|
||||||
listShapes[i] = strdup(segment->Name());
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
Ex.Next();
|
|
||||||
}
|
|
||||||
GEOM::GEOM_Shape_var Wire = myGeom->MakeWire(listShapes);
|
|
||||||
TopoDS_Shape S = myGeomGUI->GetShapeReader().GetShape(myGeom, Wire);
|
|
||||||
Standard_CString type;
|
|
||||||
myGeomBase->GetShapeTypeString(S,type);
|
|
||||||
Wire->NameType(type);
|
|
||||||
|
|
||||||
if(myGeomBase->Display(Wire))
|
|
||||||
QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_DONE"));
|
|
||||||
}
|
|
||||||
myGeomGUI->ResetState();
|
|
||||||
QMenuBar* Mb = myGeomGUI->GetDesktop()->getMainMenuBar();
|
|
||||||
QMenuData* pp;
|
|
||||||
QMenuItem* item = Mb->findItem(406, &pp);
|
|
||||||
pp->setItemEnabled(406, false); // SKETCH CONTRAINTS
|
|
||||||
mySketcher.SetTransitionStatus(NOCONSTRAINT);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
// function : OnSketchEnd()
|
|
||||||
// purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void GEOMBase_Sketcher::OnSketchEnd()
|
|
||||||
{
|
|
||||||
OCCViewer_Viewer3d* v3d = ((OCCViewer_ViewFrame*)myGeomGUI->GetActiveStudy()->getActiveStudyFrame()->getRightFrame()->getViewFrame())->getViewer();
|
|
||||||
Handle (AIS_InteractiveContext) myContext = v3d->getAISContext();
|
|
||||||
|
|
||||||
TopoDS_Wire W = mySketcher.End();
|
|
||||||
if(!W.IsNull()) {
|
|
||||||
GEOM::GEOM_Gen::ListOfIOR_var listShapes = new GEOM::GEOM_Gen::ListOfIOR;
|
|
||||||
listShapes->length(0);
|
|
||||||
unsigned int i = 0;
|
|
||||||
|
|
||||||
BRepTools_WireExplorer Ex(W);
|
|
||||||
while(Ex.More()) {
|
|
||||||
TopoDS_Edge E = TopoDS::Edge(Ex.Current());
|
|
||||||
|
|
||||||
gp_Pnt pt1, pt2;
|
|
||||||
pt1 = BRep_Tool::Pnt(TopExp::FirstVertex(E));
|
|
||||||
pt2 = BRep_Tool::Pnt(TopExp::LastVertex(E));
|
|
||||||
|
|
||||||
gp_Pnt CenterPoint;
|
|
||||||
Handle(Geom_Curve) Curve;
|
|
||||||
Handle(Geom_Circle) Circle;
|
|
||||||
gp_Circ Circ;
|
|
||||||
Standard_Real First,Last;
|
|
||||||
|
|
||||||
Curve = BRep_Tool::Curve(E,First,Last);
|
|
||||||
if(Curve->IsKind(STANDARD_TYPE(Geom_Circle))) {
|
|
||||||
Circle = Handle(Geom_Circle)::DownCast(Curve); // pointer on geom_circ
|
|
||||||
Circ = Circle->Circ(); // gp_Circ
|
|
||||||
|
|
||||||
Curve->D0((First + Last) / 2., CenterPoint);
|
|
||||||
|
|
||||||
GEOM::PointStruct pI = myGeom->MakePointStruct(pt1.X(), pt1.Y(), pt1.Z());
|
|
||||||
GEOM::PointStruct pC = myGeom->MakePointStruct(CenterPoint.X(), CenterPoint.Y(), CenterPoint.Z());
|
|
||||||
GEOM::PointStruct pE = myGeom->MakePointStruct(pt2.X(), pt2.Y(), pt2.Z());
|
|
||||||
|
|
||||||
GEOM::GEOM_Shape_var arc;
|
|
||||||
|
|
||||||
try {
|
|
||||||
arc = myGeom->MakeArc(pI, pC, pE);
|
|
||||||
}
|
|
||||||
catch (const SALOME::SALOME_Exception& S_ex) {
|
|
||||||
QtCatchCorbaException(S_ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
listShapes->length(i+1);
|
|
||||||
listShapes[i] = strdup(arc->Name());
|
|
||||||
i++;
|
|
||||||
} else {
|
|
||||||
GEOM::PointStruct pI = myGeom->MakePointStruct(pt1.X(), pt1.Y(), pt1.Z());
|
|
||||||
GEOM::PointStruct pE = myGeom->MakePointStruct(pt2.X(), pt2.Y(), pt2.Z());
|
|
||||||
GEOM::GEOM_Shape_var segment;
|
|
||||||
|
|
||||||
try {
|
|
||||||
segment = myGeom->MakeEdge(pI,pE);
|
|
||||||
}
|
|
||||||
catch (const SALOME::SALOME_Exception& S_ex) {
|
|
||||||
QtCatchCorbaException(S_ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
listShapes->length(i+1);
|
|
||||||
listShapes[i] = strdup(segment->Name());
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
Ex.Next();
|
|
||||||
}
|
|
||||||
|
|
||||||
GEOM::GEOM_Shape_var Wire = myGeom->MakeWire(listShapes);
|
|
||||||
TopoDS_Shape S = myGeomGUI->GetShapeReader().GetShape(myGeom, Wire);
|
|
||||||
Standard_CString type;
|
|
||||||
myGeomBase->GetShapeTypeString(S,type);
|
|
||||||
Wire->NameType(type);
|
|
||||||
|
|
||||||
if(myGeomBase->Display(Wire))
|
|
||||||
QAD_Application::getDesktop()->putInfo(tr("GEOM_PRP_DONE"));
|
|
||||||
}
|
|
||||||
myGeomGUI->ResetState();
|
|
||||||
QMenuBar* Mb = myGeomGUI->GetDesktop()->getMainMenuBar();
|
|
||||||
QMenuData* pp;
|
|
||||||
QMenuItem* item = Mb->findItem(406, &pp);
|
|
||||||
pp->setItemEnabled(406, false); // SKETCH CONTRAINTS
|
|
||||||
mySketcher.SetTransitionStatus(NOCONSTRAINT);
|
|
||||||
return;
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
// GEOM GEOMGUI : GUI for Geometry component
|
|
||||||
//
|
|
||||||
// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
|
|
||||||
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
|
|
||||||
//
|
|
||||||
// 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.
|
|
||||||
//
|
|
||||||
// This library is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
// Lesser General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU Lesser General Public
|
|
||||||
// License along with this library; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// File : GEOMBase_Sketcher.h
|
|
||||||
// Author : Damien COQUERET
|
|
||||||
// Module : GEOM
|
|
||||||
// $Header:
|
|
||||||
|
|
||||||
#ifndef GEOMBASE_SKETCHER_H
|
|
||||||
#define GEOMBASE_SKETCHER_H
|
|
||||||
|
|
||||||
#include "GEOMBase.h"
|
|
||||||
|
|
||||||
//=================================================================================
|
|
||||||
// class : GEOMBase_Sketcher
|
|
||||||
// purpose :
|
|
||||||
//=================================================================================
|
|
||||||
class GEOMBase_Sketcher : public QObject
|
|
||||||
{
|
|
||||||
Q_OBJECT /* for QT compatibility */
|
|
||||||
|
|
||||||
public :
|
|
||||||
GEOMBase_Sketcher();
|
|
||||||
~GEOMBase_Sketcher();
|
|
||||||
|
|
||||||
bool OnGUIEvent(int theCommandID, QAD_Desktop* parent);
|
|
||||||
|
|
||||||
/* Sketcher management */
|
|
||||||
void OnSketchSetAngle();
|
|
||||||
void OnSketchSetx();
|
|
||||||
void OnSketchSety();
|
|
||||||
|
|
||||||
void OnSketchDelete();
|
|
||||||
void OnSketchClose();
|
|
||||||
void OnSketchEnd();
|
|
||||||
|
|
||||||
private:
|
|
||||||
GEOMBase* myGeomBase;
|
|
||||||
GEOMContext* myGeomGUI;
|
|
||||||
GEOM::GEOM_Gen_var myGeom; /* Current Geom Component */
|
|
||||||
Sketch mySketcher;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue
Block a user