+ 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:
parent
9741f86a2b
commit
a53559fe62
|
@ -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;
|
||||
|
|
|
@ -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&);
|
||||
|
|
|
@ -250,6 +250,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
|
|||
|
||||
*PartDesign << "Sketcher_NewSketch"
|
||||
<< "Sketcher_LeaveSketch"
|
||||
<< "Sketcher_ViewSketch"
|
||||
<< "Sketcher_MapSketch"
|
||||
<< "Separator"
|
||||
<< "Sketcher_CreateArc"
|
||||
|
|
|
@ -160,6 +160,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
|
|||
part->setCommand("&Part Design");
|
||||
*part << "Sketcher_NewSketch"
|
||||
<< "Sketcher_LeaveSketch"
|
||||
<< "Sketcher_ViewSketch"
|
||||
<< "Sketcher_MapSketch"
|
||||
<< geom
|
||||
<< cons
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -91,6 +91,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
|
|||
*sketch
|
||||
<< "Sketcher_NewSketch"
|
||||
<< "Sketcher_LeaveSketch"
|
||||
<< "Sketcher_ViewSketch"
|
||||
<< "Sketcher_MapSketch"
|
||||
<< geom
|
||||
<< cons
|
||||
|
|
Loading…
Reference in New Issue
Block a user