void TaskTransformedParameters::fillPlanesCombo(ComboLinks &combolinks, Part::Part2DObject* sketch) { combolinks.clear(); //add sketch axes if (sketch){ combolinks.addLink(sketch,"V_Axis",QObject::tr("Vertical sketch axis")); combolinks.addLink(sketch,"H_Axis",QObject::tr("Horizontal sketch axis")); for (int i=0; i < sketch->getAxisCount(); i++) { QString itemText = tr("Construction line %1").arg(i+1); std::stringstream sub; sub << "Axis" << i; combolinks.addLink(sketch,sub.str(),itemText); } } //add part baseplanes App::DocumentObject* obj = getObject(); PartDesign::Body * body = PartDesign::Body::findBodyOf ( obj ); if (body) { try { App::Origin* orig = body->getOrigin(); combolinks.addLink(orig->getXY(),"",tr("Base XY plane")); combolinks.addLink(orig->getYZ(),"",tr("Base YZ plane")); combolinks.addLink(orig->getXZ(),"",tr("Base XZ plane")); } catch (const Base::Exception &ex) { Base::Console().Error ("%s\n", ex.what() ); } } //add "Select reference" combolinks.addLink(0,std::string(),tr("Select reference...")); }
void ViewProviderOrigin::onChanged(const App::Property* prop) { if (prop == &Size) { try { Gui::Application *app = Gui::Application::Instance; Base::Vector3d sz = Size.getValue (); App::Origin* origin = static_cast<App::Origin*> ( getObject() ); // Calculate axes and planes sizes double szXY = std::max ( sz.x, sz.y ); double szXZ = std::max ( sz.x, sz.z ); double szYZ = std::max ( sz.y, sz.z ); double szX = std::min ( szXY, szXZ ); double szY = std::min ( szXY, szYZ ); double szZ = std::min ( szXZ, szYZ ); // Find view providers Gui::ViewProviderPlane* vpPlaneXY, *vpPlaneXZ, *vpPlaneYZ; Gui::ViewProviderLine* vpLineX, *vpLineY, *vpLineZ; // Planes vpPlaneXY = static_cast<Gui::ViewProviderPlane *> ( app->getViewProvider ( origin->getXY () ) ); vpPlaneXZ = static_cast<Gui::ViewProviderPlane *> ( app->getViewProvider ( origin->getXZ () ) ); vpPlaneYZ = static_cast<Gui::ViewProviderPlane *> ( app->getViewProvider ( origin->getYZ () ) ); // Axes vpLineX = static_cast<Gui::ViewProviderLine *> ( app->getViewProvider ( origin->getX () ) ); vpLineY = static_cast<Gui::ViewProviderLine *> ( app->getViewProvider ( origin->getY () ) ); vpLineZ = static_cast<Gui::ViewProviderLine *> ( app->getViewProvider ( origin->getZ () ) ); // set their sizes if (vpPlaneXY) { vpPlaneXY->Size.setValue ( szXY ); } if (vpPlaneXZ) { vpPlaneXZ->Size.setValue ( szXZ ); } if (vpPlaneYZ) { vpPlaneYZ->Size.setValue ( szYZ ); } if (vpLineX) { vpLineX->Size.setValue ( szX ); } if (vpLineY) { vpLineY->Size.setValue ( szY ); } if (vpLineZ) { vpLineZ->Size.setValue ( szZ ); } } catch (const Base::Exception &ex) { Base::Console().Error ("%s\n", ex.what() ); } } ViewProviderDocumentObject::onChanged ( prop ); }