+ implement command to view sketch perpendicular to sketch plane

git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5046 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d
This commit is contained in:
wmayer 2011-10-21 11:24:55 +00:00
parent 9741f86a2b
commit a53559fe62
6 changed files with 68 additions and 2 deletions

View File

@ -92,6 +92,7 @@ void View3DInventorPy::init_type()
add_varargs_method("getCameraNode",&View3DInventorPy::getCameraNode,"getCameraNode()");
add_varargs_method("getViewDirection",&View3DInventorPy::getViewDirection,"getViewDirection()");
add_varargs_method("setCamera",&View3DInventorPy::setCamera,"setCamera()");
add_varargs_method("setCameraOrientation",&View3DInventorPy::setCameraOrientation,"setCameraOrientation()");
add_varargs_method("getCameraType",&View3DInventorPy::getCameraType,"getCameraType()");
add_varargs_method("setCameraType",&View3DInventorPy::setCameraType,"setCameraType()");
add_varargs_method("listCameraTypes",&View3DInventorPy::listCameraTypes,"listCameraTypes()");
@ -399,6 +400,33 @@ Py::Object View3DInventorPy::viewAxometric(const Py::Tuple& args)
return Py::None();
}
Py::Object View3DInventorPy::setCameraOrientation(const Py::Tuple& args)
{
PyObject* o;
if (!PyArg_ParseTuple(args.ptr(), "O!", &PyTuple_Type, &o))
throw Py::Exception();
try {
Py::Tuple tuple(o);
float q0 = (float)Py::Float(tuple[0]);
float q1 = (float)Py::Float(tuple[1]);
float q2 = (float)Py::Float(tuple[2]);
float q3 = (float)Py::Float(tuple[3]);
_view->getViewer()->setCameraOrientation(SbRotation(q0, q1, q2, q3));
}
catch (const Base::Exception& e) {
throw Py::Exception(e.what());
}
catch (const std::exception& e) {
throw Py::Exception(e.what());
}
catch(...) {
throw Py::Exception("Unknown C++ exception");
}
return Py::None();
}
Py::Object View3DInventorPy::viewPosition(const Py::Tuple& args)
{
PyObject* p=0;

View File

@ -69,6 +69,7 @@ public:
Py::Object getCamera(const Py::Tuple&);
Py::Object getViewDirection(const Py::Tuple&);
Py::Object setCamera(const Py::Tuple&);
Py::Object setCameraOrientation(const Py::Tuple&);
Py::Object getCameraType(const Py::Tuple&);
Py::Object setCameraType(const Py::Tuple&);
Py::Object getCameraNode(const Py::Tuple&);

View File

@ -250,6 +250,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
*PartDesign << "Sketcher_NewSketch"
<< "Sketcher_LeaveSketch"
<< "Sketcher_ViewSketch"
<< "Sketcher_MapSketch"
<< "Separator"
<< "Sketcher_CreateArc"

View File

@ -160,6 +160,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
part->setCommand("&Part Design");
*part << "Sketcher_NewSketch"
<< "Sketcher_LeaveSketch"
<< "Sketcher_ViewSketch"
<< "Sketcher_MapSketch"
<< geom
<< cons

View File

@ -297,6 +297,40 @@ bool CmdSketcherLeaveSketch::isActive(void)
return false;
}
DEF_STD_CMD_A(CmdSketcherViewSketch);
CmdSketcherViewSketch::CmdSketcherViewSketch()
: Command("Sketcher_ViewSketch")
{
sAppModule = "Sketcher";
sGroup = QT_TR_NOOP("Sketcher");
sMenuText = QT_TR_NOOP("View sketch");
sToolTipText = QT_TR_NOOP("View sketch perpendicular to sketch plane");
sWhatsThis = sToolTipText;
sStatusTip = sToolTipText;
eType = 0;
}
void CmdSketcherViewSketch::activated(int iMsg)
{
Gui::Document *doc = getActiveGuiDocument();
SketcherGui::ViewProviderSketch* vp = dynamic_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
doCommand(Gui,"Gui.ActiveDocument.ActiveView.setCameraOrientation(App.ActiveDocument.%s.Placement.Rotation.Q)"
,vp->getObject()->getNameInDocument());
}
bool CmdSketcherViewSketch::isActive(void)
{
Gui::Document *doc = getActiveGuiDocument();
if (doc) {
// checks if a Sketch Viewprovider is in Edit and is in no special mode
SketcherGui::ViewProviderSketch* vp = dynamic_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
if (vp && vp->getSketchMode() == ViewProviderSketch::STATUS_NONE)
return true;
}
return false;
}
@ -308,5 +342,5 @@ void CreateSketcherCommands(void)
rcCmdMgr.addCommand(new CmdSketcherNewSketch());
rcCmdMgr.addCommand(new CmdSketcherMapSketch());
rcCmdMgr.addCommand(new CmdSketcherLeaveSketch());
}
rcCmdMgr.addCommand(new CmdSketcherViewSketch());
}

View File

@ -91,6 +91,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
*sketch
<< "Sketcher_NewSketch"
<< "Sketcher_LeaveSketch"
<< "Sketcher_ViewSketch"
<< "Sketcher_MapSketch"
<< geom
<< cons