Merge branch 'master' of ssh://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad
|
@ -300,6 +300,7 @@ set(OCC_LIBRARIES
|
|||
TKSTEPBase
|
||||
TKSTEPAttr
|
||||
TKHLR
|
||||
TKFeat
|
||||
)
|
||||
set(OCC_LIBRARY_DIR
|
||||
${FREECAD_LIBPACK_DIR}/lib
|
||||
|
|
|
@ -306,6 +306,7 @@ set(OCC_LIBRARIES
|
|||
TKSTEPBase
|
||||
TKSTEPAttr
|
||||
TKHLR
|
||||
TKFeat
|
||||
)
|
||||
set(OCC_LIBRARY_DIR
|
||||
${FREECAD_LIBPACK_DIR}/lib
|
||||
|
|
|
@ -314,6 +314,7 @@ set(OCC_LIBRARIES
|
|||
TKSTEPBase
|
||||
TKSTEPAttr
|
||||
TKHLR
|
||||
TKFeat
|
||||
)
|
||||
set(OCC_LIBRARY_DIR
|
||||
${FREECAD_LIBPACK_DIR}/lib
|
||||
|
|
|
@ -294,6 +294,7 @@ void PropertyPythonObject::Restore(Base::XMLReader &reader)
|
|||
else {
|
||||
bool load_json=false;
|
||||
bool load_pickle=false;
|
||||
bool load_failed=false;
|
||||
std::string buffer = reader.getAttribute("value");
|
||||
if (reader.hasAttribute("encoded") &&
|
||||
strcmp(reader.getAttribute("encoded"),"yes") == 0) {
|
||||
|
@ -312,7 +313,16 @@ void PropertyPythonObject::Restore(Base::XMLReader &reader)
|
|||
end = buffer.end();
|
||||
if (reader.hasAttribute("module") && reader.hasAttribute("class")) {
|
||||
Py::Module mod(PyImport_ImportModule(reader.getAttribute("module")),true);
|
||||
this->object = PyInstance_NewRaw(mod.getAttr(reader.getAttribute("class")).ptr(), 0);
|
||||
PyObject* cls = mod.getAttr(reader.getAttribute("class")).ptr();
|
||||
if (PyClass_Check(cls)) {
|
||||
this->object = PyInstance_NewRaw(cls, 0);
|
||||
}
|
||||
else if (PyType_Check(cls)) {
|
||||
this->object = PyType_GenericAlloc((PyTypeObject*)cls, 0);
|
||||
}
|
||||
else {
|
||||
throw Py::TypeError("neither class nor type object");
|
||||
}
|
||||
load_json = true;
|
||||
}
|
||||
else if (boost::regex_search(start, end, what, pickle)) {
|
||||
|
@ -327,6 +337,8 @@ void PropertyPythonObject::Restore(Base::XMLReader &reader)
|
|||
catch (Py::Exception&) {
|
||||
Base::PyException e; // extract the Python error text
|
||||
Base::Console().Warning("PropertyPythonObject::Restore: %s\n", e.what());
|
||||
this->object = Py::None();
|
||||
load_failed = true;
|
||||
}
|
||||
|
||||
aboutToSetValue();
|
||||
|
@ -334,7 +346,7 @@ void PropertyPythonObject::Restore(Base::XMLReader &reader)
|
|||
this->fromString(buffer);
|
||||
else if (load_pickle)
|
||||
this->loadPickle(buffer);
|
||||
else
|
||||
else if (!load_failed)
|
||||
Base::Console().Warning("PropertyPythonObject::Restore: unsupported serialisation: %s\n", buffer.c_str());
|
||||
restoreObject(reader);
|
||||
hasSetValue();
|
||||
|
|
|
@ -202,8 +202,9 @@ void Gui::GUIApplicationNativeEventAware::Move3d(HANDLE device, std::vector<floa
|
|||
rz = ceil(motionData[5]);
|
||||
|
||||
Spaceball::MotionEvent *motionEvent = new Spaceball::MotionEvent();
|
||||
motionEvent->setTranslations(x, y, z);
|
||||
motionEvent->setRotations(rx, ry, rz);
|
||||
//motionEvent->setTranslations(x, y, z);
|
||||
//motionEvent->setRotations(rx, ry, rz);
|
||||
motionEvent->setMotionData(x, y, z, rx, ry, rz);
|
||||
this->postEvent(currentWidget, motionEvent);
|
||||
}
|
||||
|
||||
|
|
|
@ -104,6 +104,7 @@ set(Gui_MOC_HDRS
|
|||
DlgCommandsImp.h
|
||||
DlgCustomizeImp.h
|
||||
DlgCustomizeSpaceball.h
|
||||
DlgCustomizeSpNavSettings.h
|
||||
DlgDisplayPropertiesImp.h
|
||||
DlgEditorImp.h
|
||||
DlgGeneralImp.h
|
||||
|
@ -190,6 +191,7 @@ SET(Gui_UIC_SRCS
|
|||
DlgAuthorization.ui
|
||||
DlgChooseIcon.ui
|
||||
DlgCommands.ui
|
||||
DlgCustomizeSpNavSettings.ui
|
||||
DlgDisplayProperties.ui
|
||||
DlgEditor.ui
|
||||
DlgGeneral.ui
|
||||
|
@ -338,6 +340,7 @@ SET(Dialog_Customize_CPP_SRCS
|
|||
DlgCommandsImp.cpp
|
||||
DlgCustomizeImp.cpp
|
||||
DlgCustomizeSpaceball.cpp
|
||||
DlgCustomizeSpNavSettings.cpp
|
||||
DlgKeyboardImp.cpp
|
||||
DlgToolbarsImp.cpp
|
||||
)
|
||||
|
@ -346,6 +349,7 @@ SET(Dialog_Customize_HPP_SRCS
|
|||
DlgCommandsImp.h
|
||||
DlgCustomizeImp.h
|
||||
DlgCustomizeSpaceball.h
|
||||
DlgCustomizeSpNavSettings.h
|
||||
DlgKeyboardImp.h
|
||||
DlgToolbarsImp.h
|
||||
)
|
||||
|
@ -355,6 +359,7 @@ SET(Dialog_Customize_SRCS
|
|||
DlgActions.ui
|
||||
DlgChooseIcon.ui
|
||||
DlgCommands.ui
|
||||
DlgCustomizeSpNavSettings.ui
|
||||
DlgKeyboard.ui
|
||||
DlgToolbars.ui
|
||||
)
|
||||
|
|
310
src/Gui/DlgCustomizeSpNavSettings.cpp
Normal file
|
@ -0,0 +1,310 @@
|
|||
/***************************************************************************
|
||||
* Copyright (c) 2012 Petar Perisin <petar.perisin@gmail.com> *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 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 *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU Library General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Library General Public *
|
||||
* License along with this library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#include "DlgCustomizeSpNavSettings.h"
|
||||
#include "GuiApplicationNativeEventAware.h"
|
||||
#include "Application.h"
|
||||
|
||||
|
||||
using namespace Gui::Dialog;
|
||||
|
||||
DlgCustomizeSpNavSettings::DlgCustomizeSpNavSettings(QWidget *parent) :
|
||||
CustomizeActionPage(parent)
|
||||
{
|
||||
GUIApplicationNativeEventAware *app = qobject_cast<GUIApplicationNativeEventAware *>(QApplication::instance());
|
||||
|
||||
if (!app)
|
||||
return;
|
||||
if (!app->isSpaceballPresent())
|
||||
{
|
||||
this->setWindowTitle(tr("Spaceball Motion"));
|
||||
this->setMessage(tr("No Spaceball Present"));
|
||||
return;
|
||||
}
|
||||
this->setupUi(this);
|
||||
initialize();
|
||||
}
|
||||
|
||||
DlgCustomizeSpNavSettings::~DlgCustomizeSpNavSettings()
|
||||
{
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::setMessage(const QString& message)
|
||||
{
|
||||
QLabel *messageLabel = new QLabel(message,this);
|
||||
QVBoxLayout *layout = new QVBoxLayout();
|
||||
QHBoxLayout *layout2 = new QHBoxLayout();
|
||||
layout2->addStretch();
|
||||
layout2->addWidget(messageLabel);
|
||||
layout2->addStretch();
|
||||
layout->addItem(layout2);
|
||||
this->setLayout(layout);
|
||||
}
|
||||
|
||||
|
||||
void DlgCustomizeSpNavSettings::changeEvent(QEvent *e)
|
||||
{
|
||||
QWidget::changeEvent(e);
|
||||
}
|
||||
|
||||
ParameterGrp::handle DlgCustomizeSpNavSettings::spaceballMotionGroup() const
|
||||
{
|
||||
static ParameterGrp::handle group = App::GetApplication().GetUserParameter().GetGroup("BaseApp")->GetGroup("Spaceball")->GetGroup("Motion");
|
||||
return group;
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_ButtonCalibrate_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("Calibrate", true);
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::initialize()
|
||||
{
|
||||
CBDominant->setChecked(spaceballMotionGroup()->GetBool("Dominant", false));
|
||||
CBFlipYZ->setChecked(spaceballMotionGroup()->GetBool("FlipYZ", false));
|
||||
CBRotations->setChecked(spaceballMotionGroup()->GetBool("Rotations", true));
|
||||
CBTranslations->setChecked(spaceballMotionGroup()->GetBool("Translations", true));
|
||||
SliderGlobal->setValue(spaceballMotionGroup()->GetInt("GlobalSensitivity", 0));
|
||||
|
||||
CBEnablePanLR ->setChecked(spaceballMotionGroup()->GetBool("PanLREnable", true));
|
||||
CBReversePanLR->setChecked(spaceballMotionGroup()->GetBool("PanLRReverse", false));
|
||||
SliderPanLR ->setValue(spaceballMotionGroup()->GetInt("PanLRSensitivity", 0));
|
||||
|
||||
CBEnablePanUD ->setChecked(spaceballMotionGroup()->GetBool("PanUDEnable", true));
|
||||
CBReversePanUD->setChecked(spaceballMotionGroup()->GetBool("PanUDReverse", false));
|
||||
SliderPanUD ->setValue(spaceballMotionGroup()->GetInt("PanUDSensitivity", 0));
|
||||
|
||||
CBEnableZoom ->setChecked(spaceballMotionGroup()->GetBool("ZoomEnable", true));
|
||||
CBReverseZoom->setChecked(spaceballMotionGroup()->GetBool("ZoomReverse", false));
|
||||
SliderZoom ->setValue(spaceballMotionGroup()->GetInt("ZoomSensitivity", 0));
|
||||
|
||||
CBEnableTilt ->setChecked(spaceballMotionGroup()->GetBool("TiltEnable", true));
|
||||
CBReverseTilt->setChecked(spaceballMotionGroup()->GetBool("TiltReverse", false));
|
||||
SliderTilt ->setValue(spaceballMotionGroup()->GetInt("TiltSensitivity", 0));
|
||||
|
||||
CBEnableRoll ->setChecked(spaceballMotionGroup()->GetBool("RollEnable", true));
|
||||
CBReverseRoll->setChecked(spaceballMotionGroup()->GetBool("RollReverse", false));
|
||||
SliderRoll ->setValue(spaceballMotionGroup()->GetInt("RollSensitivity", 0));
|
||||
|
||||
CBEnableSpin ->setChecked(spaceballMotionGroup()->GetBool("SpinEnable", true));
|
||||
CBReverseSpin->setChecked(spaceballMotionGroup()->GetBool("SpinReverse", false));
|
||||
SliderSpin ->setValue(spaceballMotionGroup()->GetInt("SpinSensitivity", 0));
|
||||
|
||||
CBEnableTilt ->setEnabled(CBRotations->isChecked());
|
||||
CBReverseTilt->setEnabled(CBRotations->isChecked() && CBEnableTilt->isChecked());
|
||||
SliderTilt ->setEnabled(CBRotations->isChecked() && CBEnableTilt->isChecked());
|
||||
CBEnableRoll ->setEnabled(CBRotations->isChecked());
|
||||
CBReverseRoll->setEnabled(CBRotations->isChecked() && CBEnableRoll->isChecked());
|
||||
SliderRoll ->setEnabled(CBRotations->isChecked() && CBEnableRoll->isChecked());
|
||||
CBEnableSpin ->setEnabled(CBRotations->isChecked());
|
||||
CBReverseSpin->setEnabled(CBRotations->isChecked() && CBEnableSpin->isChecked());
|
||||
SliderSpin ->setEnabled(CBRotations->isChecked() && CBEnableSpin->isChecked());
|
||||
|
||||
CBEnablePanLR ->setEnabled(CBTranslations->isChecked());
|
||||
CBReversePanLR->setEnabled(CBTranslations->isChecked() && CBEnablePanLR->isChecked());
|
||||
SliderPanLR ->setEnabled(CBTranslations->isChecked() && CBEnablePanLR->isChecked());
|
||||
CBEnablePanUD ->setEnabled(CBTranslations->isChecked());
|
||||
CBReversePanUD->setEnabled(CBTranslations->isChecked() && CBEnablePanUD->isChecked());
|
||||
SliderPanUD ->setEnabled(CBTranslations->isChecked() && CBEnablePanUD->isChecked());
|
||||
CBEnableZoom ->setEnabled(CBTranslations->isChecked());
|
||||
CBReverseZoom ->setEnabled(CBTranslations->isChecked() && CBEnableZoom->isChecked());
|
||||
SliderZoom ->setEnabled(CBTranslations->isChecked() && CBEnableZoom->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_ButtonDefaultSpNavMotions_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->Clear();
|
||||
initialize();
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBDominant_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("Dominant", CBDominant->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBFlipYZ_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("FlipYZ", CBFlipYZ->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBRotations_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("Rotations", CBRotations->isChecked());
|
||||
|
||||
CBEnableTilt ->setEnabled(CBRotations->isChecked());
|
||||
CBReverseTilt->setEnabled(CBRotations->isChecked() && CBEnableTilt->isChecked());
|
||||
SliderTilt ->setEnabled(CBRotations->isChecked() && CBEnableTilt->isChecked());
|
||||
CBEnableRoll ->setEnabled(CBRotations->isChecked());
|
||||
CBReverseRoll->setEnabled(CBRotations->isChecked() && CBEnableRoll->isChecked());
|
||||
SliderRoll ->setEnabled(CBRotations->isChecked() && CBEnableRoll->isChecked());
|
||||
CBEnableSpin ->setEnabled(CBRotations->isChecked());
|
||||
CBReverseSpin->setEnabled(CBRotations->isChecked() && CBEnableSpin->isChecked());
|
||||
SliderSpin ->setEnabled(CBRotations->isChecked() && CBEnableSpin->isChecked());
|
||||
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBTranslations_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("Translations", CBTranslations->isChecked());
|
||||
|
||||
CBEnablePanLR ->setEnabled(CBTranslations->isChecked());
|
||||
CBReversePanLR->setEnabled(CBTranslations->isChecked() && CBEnablePanLR->isChecked());
|
||||
SliderPanLR ->setEnabled(CBTranslations->isChecked() && CBEnablePanLR->isChecked());
|
||||
CBEnablePanUD ->setEnabled(CBTranslations->isChecked());
|
||||
CBReversePanUD->setEnabled(CBTranslations->isChecked() && CBEnablePanUD->isChecked());
|
||||
SliderPanUD ->setEnabled(CBTranslations->isChecked() && CBEnablePanUD->isChecked());
|
||||
CBEnableZoom ->setEnabled(CBTranslations->isChecked());
|
||||
CBReverseZoom ->setEnabled(CBTranslations->isChecked() && CBEnableZoom->isChecked());
|
||||
SliderZoom ->setEnabled(CBTranslations->isChecked() && CBEnableZoom->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_SliderGlobal_sliderReleased()
|
||||
{
|
||||
spaceballMotionGroup()->SetInt("GlobalSensitivity", SliderGlobal->value());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBEnablePanLR_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("PanLREnable", CBEnablePanLR->isChecked());
|
||||
|
||||
CBReversePanLR->setEnabled(CBEnablePanLR->isChecked());
|
||||
SliderPanLR ->setEnabled(CBEnablePanLR->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBReversePanLR_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("PanLRReverse", CBReversePanLR->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_SliderPanLR_sliderReleased()
|
||||
{
|
||||
spaceballMotionGroup()->SetInt("PanLRSensitivity", SliderPanLR->value());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBEnablePanUD_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("PanUDEnable", CBEnablePanUD->isChecked());
|
||||
|
||||
CBReversePanUD->setEnabled(CBEnablePanUD->isChecked());
|
||||
SliderPanUD ->setEnabled(CBEnablePanUD->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBReversePanUD_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("PanUDReverse", CBReversePanUD->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_SliderPanUD_sliderReleased()
|
||||
{
|
||||
spaceballMotionGroup()->SetInt("PanUDSensitivity", SliderPanUD->value());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBEnableZoom_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("ZoomEnable", CBEnableZoom->isChecked());
|
||||
|
||||
CBReverseZoom ->setEnabled(CBEnableZoom->isChecked());
|
||||
SliderZoom ->setEnabled(CBEnableZoom->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBReverseZoom_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("ZoomReverse", CBReverseZoom->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_SliderZoom_sliderReleased()
|
||||
{
|
||||
spaceballMotionGroup()->SetInt("ZoomSensitivity", SliderZoom->value());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBEnableTilt_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("TiltEnable", CBEnableTilt->isChecked());
|
||||
|
||||
CBReverseTilt->setEnabled(CBEnableTilt->isChecked());
|
||||
SliderTilt ->setEnabled(CBEnableTilt->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBReverseTilt_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("TiltReverse", CBReverseTilt->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_SliderTilt_sliderReleased()
|
||||
{
|
||||
spaceballMotionGroup()->SetInt("TiltSensitivity", SliderTilt->value());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBEnableRoll_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("RollEnable", CBEnableRoll->isChecked());
|
||||
|
||||
CBReverseRoll->setEnabled(CBEnableRoll->isChecked());
|
||||
SliderRoll ->setEnabled(CBEnableRoll->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBReverseRoll_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("RollReverse", CBReverseRoll->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_SliderRoll_sliderReleased()
|
||||
{
|
||||
spaceballMotionGroup()->SetInt("RollSensitivity", SliderRoll->value());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBEnableSpin_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("SpinEnable", CBEnableSpin->isChecked());
|
||||
|
||||
CBReverseSpin->setEnabled(CBEnableSpin->isChecked());
|
||||
SliderSpin ->setEnabled(CBEnableSpin->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_CBReverseSpin_clicked()
|
||||
{
|
||||
spaceballMotionGroup()->SetBool("SpinReverse", CBReverseSpin->isChecked());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::on_SliderSpin_sliderReleased()
|
||||
{
|
||||
spaceballMotionGroup()->SetInt("SpinSensitivity", SliderSpin->value());
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::onAddMacroAction(const QByteArray ¯oName)
|
||||
{
|
||||
//don't think I need to do anything here.
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::onRemoveMacroAction(const QByteArray ¯oName)
|
||||
{
|
||||
//don't think I need to do anything here.
|
||||
}
|
||||
|
||||
void DlgCustomizeSpNavSettings::onModifyMacroAction(const QByteArray ¯oName)
|
||||
{
|
||||
//don't think I need to do anything here.
|
||||
}
|
||||
|
||||
#include "moc_DlgCustomizeSpNavSettings.cpp"
|
85
src/Gui/DlgCustomizeSpNavSettings.h
Normal file
|
@ -0,0 +1,85 @@
|
|||
/***************************************************************************
|
||||
* Copyright (c) 2012 Petar Perisin <petar.perisin@gmail.com> *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 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 *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU Library General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Library General Public *
|
||||
* License along with this library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef DLGCUSTOMIZESPNAVSETTINGS_H
|
||||
#define DLGCUSTOMIZESPNAVSETTINGS_H
|
||||
|
||||
#include "ui_DlgCustomizeSpNavSettings.h"
|
||||
#include "PropertyPage.h"
|
||||
#include <Base/Parameter.h>
|
||||
|
||||
namespace Gui
|
||||
{
|
||||
namespace Dialog
|
||||
{
|
||||
class DlgCustomizeSpNavSettings : public CustomizeActionPage, public Ui_DlgCustomizeSpNavSettings
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit DlgCustomizeSpNavSettings(QWidget *parent = 0);
|
||||
~DlgCustomizeSpNavSettings();
|
||||
|
||||
|
||||
protected Q_SLOTS:
|
||||
void onAddMacroAction(const QByteArray&);
|
||||
void onRemoveMacroAction(const QByteArray&);
|
||||
void onModifyMacroAction(const QByteArray&);
|
||||
void on_CBDominant_clicked();
|
||||
void on_CBFlipYZ_clicked();
|
||||
void on_CBRotations_clicked();
|
||||
void on_CBTranslations_clicked();
|
||||
void on_SliderGlobal_sliderReleased();
|
||||
void on_CBEnablePanLR_clicked();
|
||||
void on_CBReversePanLR_clicked();
|
||||
void on_SliderPanLR_sliderReleased();
|
||||
void on_CBEnablePanUD_clicked();
|
||||
void on_CBReversePanUD_clicked();
|
||||
void on_SliderPanUD_sliderReleased();
|
||||
void on_CBEnableZoom_clicked();
|
||||
void on_CBReverseZoom_clicked();
|
||||
void on_SliderZoom_sliderReleased();
|
||||
void on_CBEnableTilt_clicked();
|
||||
void on_CBReverseTilt_clicked();
|
||||
void on_SliderTilt_sliderReleased();
|
||||
void on_CBEnableRoll_clicked();
|
||||
void on_CBReverseRoll_clicked();
|
||||
void on_SliderRoll_sliderReleased();
|
||||
void on_CBEnableSpin_clicked();
|
||||
void on_CBReverseSpin_clicked();
|
||||
void on_SliderSpin_sliderReleased();
|
||||
void on_ButtonDefaultSpNavMotions_clicked();
|
||||
void on_ButtonCalibrate_clicked();
|
||||
|
||||
protected:
|
||||
void changeEvent(QEvent *e);
|
||||
|
||||
private:
|
||||
ParameterGrp::handle spaceballMotionGroup() const;
|
||||
void setMessage(const QString& message);
|
||||
void initialize();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif // DLGCUSTOMIZESPNAVSETTINGS_H
|
534
src/Gui/DlgCustomizeSpNavSettings.ui
Normal file
|
@ -0,0 +1,534 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>DlgCustomizeSpNavSettings</class>
|
||||
<widget class="QWidget" name="DlgCustomizeSpNavSettings">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>439</width>
|
||||
<height>537</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Spaceball Motion</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_12">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="labelSlow">
|
||||
<property name="text">
|
||||
<string>Global Sensitivity: </string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="SliderGlobal">
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_10">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBDominant">
|
||||
<property name="text">
|
||||
<string>Dominant Mode</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBFlipYZ">
|
||||
<property name="text">
|
||||
<string>Flip Y/Z</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_11">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBTranslations">
|
||||
<property name="text">
|
||||
<string>Enable Translations</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBRotations">
|
||||
<property name="text">
|
||||
<string>Enable Rotations</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="ButtonCalibrate">
|
||||
<property name="text">
|
||||
<string>Calibrate</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="ButtonDefaultSpNavMotions">
|
||||
<property name="text">
|
||||
<string>Default</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>116</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="ImagePanLR">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="Icons/resource.qrc">:/icons/SpNav-PanLR.png</pixmap>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="ImagePanUD">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="Icons/resource.qrc">:/icons/SpNav-PanUD.png</pixmap>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="ImageZoom">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="Icons/resource.qrc">:/icons/SpNav-Zoom.png</pixmap>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="imageTilt">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="Icons/resource.qrc">:/icons/SpNav-Tilt.png</pixmap>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="ImageRoll">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="Icons/resource.qrc">:/icons/SpNav-Roll.png</pixmap>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="ImageSpin">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap resource="Icons/resource.qrc">:/icons/SpNav-Spin.png</pixmap>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_9">
|
||||
<property name="spacing">
|
||||
<number>20</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBEnablePanLR">
|
||||
<property name="text">
|
||||
<string>Enable</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBReversePanLR">
|
||||
<property name="text">
|
||||
<string>Reverse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBEnablePanUD">
|
||||
<property name="text">
|
||||
<string>Enable</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBReversePanUD">
|
||||
<property name="text">
|
||||
<string>Reverse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBEnableZoom">
|
||||
<property name="text">
|
||||
<string>Enable</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBReverseZoom">
|
||||
<property name="text">
|
||||
<string>Reverse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBEnableTilt">
|
||||
<property name="text">
|
||||
<string>Enable</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBReverseTilt">
|
||||
<property name="text">
|
||||
<string>Reverse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBEnableRoll">
|
||||
<property name="text">
|
||||
<string>Enable</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBReverseRoll">
|
||||
<property name="text">
|
||||
<string>Reverse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_8">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBEnableSpin">
|
||||
<property name="text">
|
||||
<string>Enable</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CBReverseSpin">
|
||||
<property name="text">
|
||||
<string>Reverse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<property name="spacing">
|
||||
<number>30</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QSlider" name="SliderPanLR">
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="pageStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="SliderPanUD">
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="pageStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="SliderZoom">
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="pageStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="SliderTilt">
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="pageStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="SliderRoll">
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="pageStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSlider" name="SliderSpin">
|
||||
<property name="minimum">
|
||||
<number>-50</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="pageStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="tickPosition">
|
||||
<enum>QSlider::TicksBelow</enum>
|
||||
</property>
|
||||
<property name="tickInterval">
|
||||
<number>10</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources>
|
||||
<include location="Icons/resource.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
|
@ -525,7 +525,7 @@ DlgCustomizeSpaceball::DlgCustomizeSpaceball(QWidget *parent)
|
|||
: CustomizeActionPage(parent), buttonView(0), buttonModel(0),
|
||||
commandView(0), commandModel(0), clearButton(0), printReference(0)
|
||||
{
|
||||
this->setWindowTitle(tr("Spaceball"));
|
||||
this->setWindowTitle(tr("Spaceball Buttons"));
|
||||
GUIApplicationNativeEventAware *app = qobject_cast<GUIApplicationNativeEventAware *>(QApplication::instance());
|
||||
if (!app)
|
||||
return;
|
||||
|
|
|
@ -143,8 +143,9 @@ bool Gui::GUIApplicationNativeEventAware::x11EventFilter(XEvent *event)
|
|||
if (navEvent.type == SPNAV_EVENT_MOTION)
|
||||
{
|
||||
Spaceball::MotionEvent *motionEvent = new Spaceball::MotionEvent();
|
||||
motionEvent->setTranslations(navEvent.motion.x, navEvent.motion.y, navEvent.motion.z);
|
||||
motionEvent->setRotations(navEvent.motion.rx, navEvent.motion.ry, navEvent.motion.rz);
|
||||
// motionEvent->setTranslations(navEvent.motion.x, navEvent.motion.y, navEvent.motion.z);
|
||||
// motionEvent->setRotations(navEvent.motion.rx, navEvent.motion.ry, navEvent.motion.rz);
|
||||
motionEvent->setMotionData(navEvent.motion.x, navEvent.motion.y, navEvent.motion.z, navEvent.motion.rx, navEvent.motion.ry, navEvent.motion.rz);
|
||||
this->postEvent(currentWidget, motionEvent);
|
||||
return true;
|
||||
}
|
||||
|
|
BIN
src/Gui/Icons/SpNav-PanLR.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
src/Gui/Icons/SpNav-PanUD.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
src/Gui/Icons/SpNav-Roll.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
src/Gui/Icons/SpNav-Spin.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
src/Gui/Icons/SpNav-Tilt.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
src/Gui/Icons/SpNav-Zoom.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 145 KiB |
|
@ -78,5 +78,11 @@
|
|||
<file>Tree_Dimension.svg</file>
|
||||
<file>Tree_Python.svg</file>
|
||||
<file>spaceball_button.svg</file>
|
||||
<file>SpNav-PanLR.png</file>
|
||||
<file>SpNav-PanUD.png</file>
|
||||
<file>SpNav-Roll.png</file>
|
||||
<file>SpNav-Spin.png</file>
|
||||
<file>SpNav-Tilt.png</file>
|
||||
<file>SpNav-Zoom.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
#include "PreCompiled.h"
|
||||
#include "SpaceballEvent.h"
|
||||
#include "Application.h"
|
||||
|
||||
using namespace Spaceball;
|
||||
|
||||
|
@ -40,15 +41,132 @@ MotionEvent::MotionEvent() : EventBase(static_cast<QEvent::Type>(MotionEventType
|
|||
|
||||
MotionEvent::MotionEvent(const MotionEvent& in) : EventBase(static_cast<QEvent::Type>(MotionEventType))
|
||||
{
|
||||
xTrans = in.xTrans;
|
||||
yTrans = in.yTrans;
|
||||
zTrans = in.zTrans;
|
||||
xRot = in.xRot;
|
||||
yRot = in.yRot;
|
||||
zRot = in.zRot;
|
||||
int motionDataArray[6] = {in.xTrans, in.yTrans, in.zTrans, in.xRot, in.yRot, in.zRot};
|
||||
importSettings(motionDataArray);
|
||||
handled = in.handled;
|
||||
}
|
||||
|
||||
float MotionEvent::convertPrefToSensitivity(int value)
|
||||
{
|
||||
if (value < 0)
|
||||
{
|
||||
return ((0.6/50)*float(value) + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
return ((1.1/50)*float(value) + 1);
|
||||
}
|
||||
}
|
||||
|
||||
void MotionEvent::importSettings(int* motionDataArray)
|
||||
{
|
||||
ParameterGrp::handle group = App::GetApplication().GetUserParameter().GetGroup("BaseApp")->GetGroup("Spaceball")->GetGroup("Motion");
|
||||
|
||||
// here I import settings from a dialog. For now they are set as is
|
||||
bool dominant = group->GetBool("Dominant"); // Is dominant checked
|
||||
bool flipXY = group->GetBool("FlipYZ");; // Is Flip X/Y checked
|
||||
float generalSensitivity = convertPrefToSensitivity(group->GetInt("GlobalSensitivity"));
|
||||
|
||||
// array that has stored info about "Enabled" checkboxes of all axes
|
||||
bool enabled[6];
|
||||
enabled[0] = group->GetBool("Translations", true) && group->GetBool("PanLREnable", true);
|
||||
enabled[1] = group->GetBool("Translations", true) && group->GetBool("PanUDEnable", true);
|
||||
enabled[2] = group->GetBool("Translations", true) && group->GetBool("ZoomEnable", true);
|
||||
enabled[3] = group->GetBool("Rotations", true) && group->GetBool("TiltEnable", true);
|
||||
enabled[4] = group->GetBool("Rotations", true) && group->GetBool("RollEnable", true);
|
||||
enabled[5] = group->GetBool("Rotations", true) && group->GetBool("SpinEnable", true);
|
||||
|
||||
// array that has stored info about "Reversed" checkboxes of all axes
|
||||
bool reversed[6];
|
||||
reversed[0] = group->GetBool("PanLRReverse");
|
||||
reversed[1] = group->GetBool("PanUDReverse");
|
||||
reversed[2] = group->GetBool("ZoomReverse");
|
||||
reversed[3] = group->GetBool("TiltReverse");
|
||||
reversed[4] = group->GetBool("RollReverse");
|
||||
reversed[5] = group->GetBool("SpinReverse");
|
||||
|
||||
// array that has stored info about sliders - on each slider you need to use method DlgSpaceballSettings::GetValuefromSlider
|
||||
// which will convert <-50, 50> linear integers from slider to <0.1, 10> exponential floating values
|
||||
float sensitivity[6];
|
||||
sensitivity[0] = convertPrefToSensitivity(group->GetInt("PanLRSensitivity"));
|
||||
sensitivity[1] = convertPrefToSensitivity(group->GetInt("PanUDSensitivity"));
|
||||
sensitivity[2] = convertPrefToSensitivity(group->GetInt("ZoomSensitivity"));
|
||||
sensitivity[3] = convertPrefToSensitivity(group->GetInt("TiltSensitivity"));
|
||||
sensitivity[4] = convertPrefToSensitivity(group->GetInt("RollSensitivity"));
|
||||
sensitivity[5] = convertPrefToSensitivity(group->GetInt("SpinSensitivity"));
|
||||
|
||||
int i;
|
||||
|
||||
if (group->GetBool("Calibrate"))
|
||||
{
|
||||
group->SetInt("CalibrationX",motionDataArray[0]);
|
||||
group->SetInt("CalibrationY",motionDataArray[1]);
|
||||
group->SetInt("CalibrationZ",motionDataArray[2]);
|
||||
group->SetInt("CalibrationXr",motionDataArray[3]);
|
||||
group->SetInt("CalibrationYr",motionDataArray[4]);
|
||||
group->SetInt("CalibrationZr",motionDataArray[5]);
|
||||
|
||||
group->RemoveBool("Calibrate");
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
motionDataArray[0] = motionDataArray[0] - group->GetInt("CalibrationX");
|
||||
motionDataArray[1] = motionDataArray[1] - group->GetInt("CalibrationY");
|
||||
motionDataArray[2] = motionDataArray[2] - group->GetInt("CalibrationZ");
|
||||
motionDataArray[3] = motionDataArray[3] - group->GetInt("CalibrationXr");
|
||||
motionDataArray[4] = motionDataArray[4] - group->GetInt("CalibrationYr");
|
||||
motionDataArray[5] = motionDataArray[5] - group->GetInt("CalibrationZr");
|
||||
}
|
||||
|
||||
if (dominant) { // if dominant is checked
|
||||
int max = 0;
|
||||
bool flag = false;
|
||||
for (i = 0; i < 6; ++i) {
|
||||
if (abs(motionDataArray[i]) > abs(max)) max = motionDataArray[i];
|
||||
}
|
||||
for (i = 0; i < 6; ++i) {
|
||||
if ((motionDataArray[i] != max) || (flag)) {
|
||||
motionDataArray[i] = 0;
|
||||
} else if (motionDataArray[i] == max){
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (flipXY) {
|
||||
int temp = motionDataArray[1];
|
||||
motionDataArray[1] = motionDataArray[2];
|
||||
motionDataArray[2] = - temp;
|
||||
}
|
||||
|
||||
for (i = 0; i < 6; ++i) {
|
||||
if (motionDataArray[i] != 0) {
|
||||
if (enabled[i] == false)
|
||||
motionDataArray[i] = 0;
|
||||
else {
|
||||
if (reversed[i] == true)
|
||||
motionDataArray[i] = - motionDataArray[i];
|
||||
motionDataArray[i] = (int)((float)(motionDataArray[i]) * sensitivity[i] * generalSensitivity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
xTrans = motionDataArray[0];
|
||||
yTrans = motionDataArray[1];
|
||||
zTrans = motionDataArray[2];
|
||||
xRot = motionDataArray[3];
|
||||
yRot = motionDataArray[4];
|
||||
zRot = motionDataArray[5];
|
||||
}
|
||||
|
||||
|
||||
void MotionEvent::setMotionData(int &xTransIn, int &yTransIn, int &zTransIn, int &xRotIn, int &yRotIn, int &zRotIn){
|
||||
int motionDataArray[6] = {xTransIn, yTransIn, zTransIn, xRotIn, yRotIn, zRotIn};
|
||||
importSettings(motionDataArray);
|
||||
}
|
||||
|
||||
void MotionEvent::translations(int &xTransOut, int &yTransOut, int &zTransOut)
|
||||
{
|
||||
xTransOut = xTrans;
|
||||
|
@ -58,9 +176,8 @@ void MotionEvent::translations(int &xTransOut, int &yTransOut, int &zTransOut)
|
|||
|
||||
void MotionEvent::setTranslations(const int &xTransIn, const int &yTransIn, const int &zTransIn)
|
||||
{
|
||||
xTrans = xTransIn;
|
||||
yTrans = yTransIn;
|
||||
zTrans = zTransIn;
|
||||
int motionDataArray[6] = {xTransIn, yTransIn, zTransIn, xRot, yRot, zRot};
|
||||
importSettings(motionDataArray);
|
||||
}
|
||||
|
||||
void MotionEvent::rotations(int &xRotOut, int &yRotOut, int &zRotOut)
|
||||
|
@ -72,9 +189,8 @@ void MotionEvent::rotations(int &xRotOut, int &yRotOut, int &zRotOut)
|
|||
|
||||
void MotionEvent::setRotations(const int &xRotIn, const int &yRotIn, const int &zRotIn)
|
||||
{
|
||||
xRot = xRotIn;
|
||||
yRot = yRotIn;
|
||||
zRot = zRotIn;
|
||||
int motionDataArray[6] = {xTrans, yTrans, zTrans, xRotIn, yRotIn, zRotIn};
|
||||
importSettings(motionDataArray);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@ namespace Spaceball
|
|||
int rotationY(){return yRot;}
|
||||
int rotationZ(){return zRot;}
|
||||
|
||||
void setMotionData(int &xTransOut, int &yTransOut, int &zTransOut, int &xRotOut, int &yRotOut, int &zRotOut);
|
||||
static int MotionEventType;
|
||||
|
||||
private:
|
||||
|
@ -66,6 +67,8 @@ namespace Spaceball
|
|||
int yRot;
|
||||
int zRot;
|
||||
bool handled;
|
||||
void importSettings(int* motionDataArray);
|
||||
float convertPrefToSensitivity(int value);
|
||||
};
|
||||
|
||||
class ButtonEvent : public EventBase
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include "DlgCommandsImp.h"
|
||||
#include "DlgKeyboardImp.h"
|
||||
#include "DlgCustomizeSpaceball.h"
|
||||
#include "DlgCustomizeSpNavSettings.h"
|
||||
|
||||
using namespace Gui;
|
||||
using namespace Gui::Dialog;
|
||||
|
@ -75,6 +76,7 @@ WidgetFactorySupplier::WidgetFactorySupplier()
|
|||
new CustomPageProducer<DlgCustomToolbarsImp>;
|
||||
//new CustomPageProducer<DlgCustomToolBoxbarsImp>;
|
||||
new CustomPageProducer<DlgCustomActionsImp>;
|
||||
new CustomPageProducer<DlgCustomizeSpNavSettings>;
|
||||
new CustomPageProducer<DlgCustomizeSpaceball>;
|
||||
|
||||
// ADD YOUR PREFERENCE WIDGETS HERE
|
||||
|
|
|
@ -102,6 +102,13 @@ class _Axis:
|
|||
obj.Shape = Part.Compound(geoms)
|
||||
obj.Placement = pl
|
||||
|
||||
def __getstate__(self):
|
||||
return self.Type
|
||||
|
||||
def __setstate__(self,state):
|
||||
if state:
|
||||
self.Type = state
|
||||
|
||||
class _ViewProviderAxis:
|
||||
"A View Provider for the Axis object"
|
||||
|
||||
|
@ -252,7 +259,6 @@ class _ViewProviderAxis:
|
|||
return None
|
||||
|
||||
|
||||
|
||||
class _AxisTaskPanel:
|
||||
'''The editmode TaskPanel for Axis objects'''
|
||||
def __init__(self):
|
||||
|
|
|
@ -99,6 +99,12 @@ def addComponents(objectsList,host):
|
|||
if hasattr(o,"Shape"):
|
||||
a.append(o)
|
||||
host.Objects = a
|
||||
elif host.isDerivedFrom("App::DocumentObjectGroup"):
|
||||
c = host.Group
|
||||
for o in objectsList:
|
||||
if not o in c:
|
||||
c.append(o)
|
||||
host.Group = c
|
||||
|
||||
def removeComponents(objectsList,host=None):
|
||||
'''removeComponents(objectsList,[hostObject]): removes the given component or
|
||||
|
|
|
@ -266,6 +266,13 @@ class Component:
|
|||
self.Type = "Component"
|
||||
self.Subvolume = None
|
||||
|
||||
def __getstate__(self):
|
||||
return self.Type
|
||||
|
||||
def __setstate__(self,state):
|
||||
if state:
|
||||
self.Type = state
|
||||
|
||||
class ViewProviderComponent:
|
||||
"A default View Provider for Component objects"
|
||||
def __init__(self,vobj):
|
||||
|
|
|
@ -83,10 +83,11 @@ class _Floor:
|
|||
self.Object = obj
|
||||
|
||||
def __getstate__(self):
|
||||
return None
|
||||
return self.Type
|
||||
|
||||
def __setstate__(self,state):
|
||||
return None
|
||||
if state:
|
||||
self.Type = state
|
||||
|
||||
def execute(self,obj):
|
||||
pass
|
||||
|
|
|
@ -110,6 +110,13 @@ class _SectionPlane:
|
|||
def getNormal(self,obj):
|
||||
return obj.Shape.Faces[0].normalAt(0,0)
|
||||
|
||||
def __getstate__(self):
|
||||
return self.Type
|
||||
|
||||
def __setstate__(self,state):
|
||||
if state:
|
||||
self.Type = state
|
||||
|
||||
class _ViewProviderSectionPlane(ArchComponent.ViewProviderComponent):
|
||||
"A View Provider for Section Planes"
|
||||
def __init__(self,vobj):
|
||||
|
@ -180,6 +187,12 @@ class _ViewProviderSectionPlane(ArchComponent.ViewProviderComponent):
|
|||
vobj.Object.Proxy.execute(vobj.Object)
|
||||
return
|
||||
|
||||
def __getstate__(self):
|
||||
return None
|
||||
|
||||
def __setstate__(self,state):
|
||||
return None
|
||||
|
||||
class _ArchDrawingView:
|
||||
def __init__(self, obj):
|
||||
obj.addProperty("App::PropertyLink","Source","Base","The linked object")
|
||||
|
@ -203,10 +216,11 @@ class _ArchDrawingView:
|
|||
obj.ViewResult = self.updateSVG(obj)
|
||||
|
||||
def __getstate__(self):
|
||||
return None
|
||||
return self.Type
|
||||
|
||||
def __setstate__(self,state):
|
||||
return None
|
||||
if state:
|
||||
self.Type = state
|
||||
|
||||
def getDisplayModes(self,vobj):
|
||||
modes=["Default"]
|
||||
|
|
|
@ -421,6 +421,7 @@ def getShape(obj):
|
|||
m[2], m[5], m[8], m[11],
|
||||
0, 0, 0, 1)
|
||||
sh.Placement = FreeCAD.Placement(mat)
|
||||
if DEBUG: print "getting Shape from ",obj
|
||||
return sh
|
||||
|
||||
def getWire(entity,placement=None):
|
||||
|
|
|
@ -1245,6 +1245,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct
|
|||
svg = ""
|
||||
linewidth = linewidth/scale
|
||||
fontsize = (fontsize/scale)/2
|
||||
pointratio = 4 # the number of times the dots are smaller than the font size
|
||||
plane = None
|
||||
if direction:
|
||||
if isinstance(direction,FreeCAD.Vector):
|
||||
|
@ -1388,13 +1389,13 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct
|
|||
svg += 'freecad:dimpoint="'+str(p2.x)+' '+str(p2.y)+'"'
|
||||
svg += '/>\n'
|
||||
svg += '<circle cx="'+str(p2.x)+'" cy="'+str(p2.y)
|
||||
svg += '" r="'+str(fontsize)+'" '
|
||||
svg += '" r="'+str(fontsize/pointratio)+'" '
|
||||
svg += 'fill="'+ getrgb(obj.ViewObject.LineColor) +'" stroke="none" '
|
||||
svg += 'style="stroke-miterlimit:4;stroke-dasharray:none" '
|
||||
svg += 'freecad:skip="1"'
|
||||
svg += '/>\n'
|
||||
svg += '<circle cx="'+str(p3.x)+'" cy="'+str(p3.y)
|
||||
svg += '" r="'+str(fontsize)+'" '
|
||||
svg += '" r="'+str(fontsize/pointratio)+'" '
|
||||
svg += 'fill="#000000" stroke="none" '
|
||||
svg += 'style="stroke-miterlimit:4;stroke-dasharray:none" '
|
||||
svg += 'freecad:skip="1"'
|
||||
|
@ -1529,18 +1530,21 @@ def makeDrawingView(obj,page,lwmod=None,tmod=None):
|
|||
if tmod: viewobj.TextModifier = tmod
|
||||
return viewobj
|
||||
|
||||
def makeShape2DView(baseobj,projectionVector=None):
|
||||
def makeShape2DView(baseobj,projectionVector=None,facenumbers=[]):
|
||||
'''
|
||||
makeShape2DView(object,[projectionVector]) - adds a 2D shape to the document, which is a
|
||||
2D projection of the given object. A specific projection vector can also be given.
|
||||
makeShape2DView(object,[projectionVector,facenumbers]) - adds a 2D shape to the document, which is a
|
||||
2D projection of the given object. A specific projection vector can also be given. You can also
|
||||
specify a list of face numbers to be considered in individual faces mode.
|
||||
'''
|
||||
obj = FreeCAD.ActiveDocument.addObject("Part::Part2DObjectPython","Shape2DView")
|
||||
_Shape2DView(obj)
|
||||
if gui:
|
||||
_ViewProviderDraft(obj.ViewObject)
|
||||
_ViewProviderDraftAlt(obj.ViewObject)
|
||||
obj.Base = baseobj
|
||||
if projectionVector:
|
||||
obj.Projection = projectionVector
|
||||
if facenumbers:
|
||||
obj.FaceNumbers = facenumbers
|
||||
select(obj)
|
||||
return obj
|
||||
|
||||
|
@ -1728,13 +1732,38 @@ def heal(objlist=None,delete=True,reparent=True):
|
|||
# Python Features definitions
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
class _DraftObject:
|
||||
"The base class for Draft objects"
|
||||
def __init__(self,obj,tp="Unknown"):
|
||||
obj.Proxy = self
|
||||
self.Type = tp
|
||||
|
||||
def __getstate__(self):
|
||||
return self.Type
|
||||
|
||||
def __setstate__(self,state):
|
||||
if state:
|
||||
self.Type = state
|
||||
|
||||
def execute(self,obj):
|
||||
pass
|
||||
|
||||
def onChanged(self, fp, prop):
|
||||
pass
|
||||
|
||||
class _ViewProviderDraft:
|
||||
"A generic View Provider for Draft objects"
|
||||
"The base class for Draft Viewproviders"
|
||||
|
||||
def __init__(self, obj):
|
||||
obj.Proxy = self
|
||||
self.Object = obj.Object
|
||||
|
||||
def __getstate__(self):
|
||||
return None
|
||||
|
||||
def __setstate__(self,state):
|
||||
return None
|
||||
|
||||
def attach(self, obj):
|
||||
self.Object = obj.Object
|
||||
return
|
||||
|
@ -1752,11 +1781,8 @@ class _ViewProviderDraft:
|
|||
def onChanged(self, vp, prop):
|
||||
return
|
||||
|
||||
def __getstate__(self):
|
||||
return None
|
||||
|
||||
def __setstate__(self,state):
|
||||
return None
|
||||
def execute(self,obj):
|
||||
return
|
||||
|
||||
def setEdit(self,vp,mode):
|
||||
FreeCADGui.runCommand("Draft_Edit")
|
||||
|
@ -1780,9 +1806,29 @@ class _ViewProviderDraft:
|
|||
objs.extend(self.Object.Components)
|
||||
return objs
|
||||
|
||||
class _Dimension:
|
||||
"The Dimension object"
|
||||
class _ViewProviderDraftAlt(_ViewProviderDraft):
|
||||
"a view provider that doesn't swallow its base object"
|
||||
|
||||
def __init__(self,vobj):
|
||||
_ViewProviderDraft.__init__(self,vobj)
|
||||
|
||||
def claimChildren(self):
|
||||
return []
|
||||
|
||||
class _ViewProviderDraftPart(_ViewProviderDraftAlt):
|
||||
"a view provider that displays a Part icon instead of a Draft icon"
|
||||
|
||||
def __init__(self,vobj):
|
||||
_ViewProviderDraftAlt.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return ":/icons/Tree_Part.svg"
|
||||
|
||||
|
||||
class _Dimension(_DraftObject):
|
||||
"The Draft Dimension object"
|
||||
def __init__(self, obj):
|
||||
_DraftObject.__init__(self,obj,"Dimension")
|
||||
obj.addProperty("App::PropertyVector","Start","Base",
|
||||
"Startpoint of dimension")
|
||||
obj.addProperty("App::PropertyVector","End","Base",
|
||||
|
@ -1797,8 +1843,6 @@ class _Dimension:
|
|||
obj.Start = FreeCAD.Vector(0,0,0)
|
||||
obj.End = FreeCAD.Vector(1,0,0)
|
||||
obj.Dimline = FreeCAD.Vector(0,1,0)
|
||||
obj.Proxy = self
|
||||
self.Type = "Dimension"
|
||||
|
||||
def onChanged(self, obj, prop):
|
||||
obj.setEditorMode('Distance',1)
|
||||
|
@ -1807,8 +1851,8 @@ class _Dimension:
|
|||
if obj.ViewObject:
|
||||
obj.ViewObject.update()
|
||||
|
||||
class _ViewProviderDimension:
|
||||
"A View Provider for the Dimension object"
|
||||
class _ViewProviderDimension(_ViewProviderDraft):
|
||||
"A View Provider for the Draft Dimension object"
|
||||
def __init__(self, obj):
|
||||
obj.addProperty("App::PropertyLength","FontSize","Base","Font size")
|
||||
obj.addProperty("App::PropertyString","FontName","Base","Font name")
|
||||
|
@ -1817,11 +1861,11 @@ class _ViewProviderDimension:
|
|||
obj.addProperty("App::PropertyLength","ExtLines","Base","Ext lines")
|
||||
obj.addProperty("App::PropertyVector","TextPosition","Base","The position of the text. Leave (0,0,0) for automatic position")
|
||||
obj.addProperty("App::PropertyString","Override","Base","Text override. Use 'dim' to insert the dimension length")
|
||||
obj.Proxy = self
|
||||
obj.FontSize=getParam("textheight")
|
||||
obj.FontName=getParam("textfont")
|
||||
obj.ExtLines=0.3
|
||||
obj.Override = ''
|
||||
_ViewProviderDraft.__init__(self,obj)
|
||||
|
||||
def calcGeom(self,obj):
|
||||
import Part, DraftGeomUtils
|
||||
|
@ -2009,16 +2053,22 @@ class _ViewProviderDimension:
|
|||
def onChanged(self, vp, prop):
|
||||
self.Object = vp.Object
|
||||
if prop == "FontSize":
|
||||
if hasattr(self,"font"):
|
||||
self.font.size = vp.FontSize
|
||||
if hasattr(self,"font3d"):
|
||||
self.font3d.size = vp.FontSize*100
|
||||
elif prop == "FontName":
|
||||
if hasattr(self,"font") and hasattr(self,"font3d"):
|
||||
self.font.name = self.font3d.name = str(vp.FontName)
|
||||
elif prop == "LineColor":
|
||||
c = vp.LineColor
|
||||
if hasattr(self,"color"):
|
||||
self.color.rgb.setValue(c[0],c[1],c[2])
|
||||
elif prop == "LineWidth":
|
||||
if hasattr(self,"drawstyle"):
|
||||
self.drawstyle.lineWidth = vp.LineWidth
|
||||
else:
|
||||
if hasattr(self,"drawstyle"):
|
||||
self.drawstyle.lineWidth = vp.LineWidth
|
||||
self.updateData(vp.Object, None)
|
||||
|
||||
|
@ -2098,9 +2148,10 @@ class _ViewProviderDimension:
|
|||
self.defaultmode = state
|
||||
self.setDisplayMode(state)
|
||||
|
||||
class _AngularDimension:
|
||||
"The AngularDimension object"
|
||||
class _AngularDimension(_DraftObject):
|
||||
"The Draft AngularDimension object"
|
||||
def __init__(self, obj):
|
||||
_DraftObject.__init__(self,obj,"AngularDimension")
|
||||
obj.addProperty("App::PropertyAngle","FirstAngle","Base",
|
||||
"Start angle of the dimension")
|
||||
obj.addProperty("App::PropertyAngle","LastAngle","Base",
|
||||
|
@ -2113,18 +2164,13 @@ class _AngularDimension:
|
|||
obj.LastAngle = 90
|
||||
obj.Dimline = FreeCAD.Vector(0,1,0)
|
||||
obj.Center = FreeCAD.Vector(0,0,0)
|
||||
obj.Proxy = self
|
||||
self.Type = "AngularDimension"
|
||||
|
||||
def onChanged(self, fp, prop):
|
||||
pass
|
||||
|
||||
def execute(self, fp):
|
||||
if fp.ViewObject:
|
||||
fp.ViewObject.update()
|
||||
|
||||
class _ViewProviderAngularDimension:
|
||||
"A View Provider for the Angular Dimension object"
|
||||
class _ViewProviderAngularDimension(_ViewProviderDraft):
|
||||
"A View Provider for the Draft Angular Dimension object"
|
||||
def __init__(self, obj):
|
||||
obj.addProperty("App::PropertyLength","FontSize","Base","Font size")
|
||||
obj.addProperty("App::PropertyString","FontName","Base","Font name")
|
||||
|
@ -2132,10 +2178,10 @@ class _ViewProviderAngularDimension:
|
|||
obj.addProperty("App::PropertyColor","LineColor","Base","Line color")
|
||||
obj.addProperty("App::PropertyVector","TextPosition","Base","The position of the text. Leave (0,0,0) for automatic position")
|
||||
obj.addProperty("App::PropertyString","Override","Base","Text override. Use 'dim' to insert the dimension length")
|
||||
obj.Proxy = self
|
||||
obj.FontSize=getParam("textheight")
|
||||
obj.FontName=getParam("textfont")
|
||||
obj.Override = ''
|
||||
_ViewProviderDraft.__init__(self,obj)
|
||||
|
||||
def attach(self, vobj):
|
||||
from pivy import coin
|
||||
|
@ -2309,17 +2355,16 @@ class _ViewProviderAngularDimension:
|
|||
" "};
|
||||
"""
|
||||
|
||||
class _Rectangle:
|
||||
class _Rectangle(_DraftObject):
|
||||
"The Rectangle object"
|
||||
|
||||
def __init__(self, obj):
|
||||
_DraftObject.__init__(self,obj,"Rectangle")
|
||||
obj.addProperty("App::PropertyDistance","Length","Base","Length of the rectangle")
|
||||
obj.addProperty("App::PropertyDistance","Height","Base","Height of the rectange")
|
||||
obj.addProperty("App::PropertyDistance","FilletRadius","Base","Radius to use to fillet the corners")
|
||||
obj.Proxy = self
|
||||
obj.Length=1
|
||||
obj.Height=1
|
||||
self.Type = "Rectangle"
|
||||
|
||||
def execute(self, fp):
|
||||
self.createGeometry(fp)
|
||||
|
@ -2371,18 +2416,17 @@ class _ViewProviderRectangle(_ViewProviderDraft):
|
|||
self.texture = None
|
||||
return
|
||||
|
||||
class _Circle:
|
||||
class _Circle(_DraftObject):
|
||||
"The Circle object"
|
||||
|
||||
def __init__(self, obj):
|
||||
_DraftObject.__init__(self,obj,"Circle")
|
||||
obj.addProperty("App::PropertyAngle","FirstAngle","Base",
|
||||
"Start angle of the arc")
|
||||
obj.addProperty("App::PropertyAngle","LastAngle","Base",
|
||||
"End angle of the arc (for a full circle, give it same value as First Angle)")
|
||||
obj.addProperty("App::PropertyDistance","Radius","Base",
|
||||
"Radius of the circle")
|
||||
obj.Proxy = self
|
||||
self.Type = "Circle"
|
||||
|
||||
def execute(self, fp):
|
||||
self.createGeometry(fp)
|
||||
|
@ -2402,10 +2446,11 @@ class _Circle:
|
|||
fp.Shape = shape
|
||||
fp.Placement = plm
|
||||
|
||||
class _Wire:
|
||||
class _Wire(_DraftObject):
|
||||
"The Wire object"
|
||||
|
||||
def __init__(self, obj):
|
||||
_DraftObject.__init__(self,obj,"Wire")
|
||||
obj.addProperty("App::PropertyVectorList","Points","Base",
|
||||
"The vertices of the wire")
|
||||
obj.addProperty("App::PropertyBool","Closed","Base",
|
||||
|
@ -2419,9 +2464,7 @@ class _Wire:
|
|||
obj.addProperty("App::PropertyVector","End","Base",
|
||||
"The end point of this line")
|
||||
obj.addProperty("App::PropertyDistance","FilletRadius","Base","Radius to use to fillet the corners")
|
||||
obj.Proxy = self
|
||||
obj.Closed = False
|
||||
self.Type = "Wire"
|
||||
|
||||
def execute(self, fp):
|
||||
self.createGeometry(fp)
|
||||
|
@ -2541,10 +2584,11 @@ class _ViewProviderWire(_ViewProviderDraft):
|
|||
def claimChildren(self):
|
||||
return [self.Object.Base,self.Object.Tool]
|
||||
|
||||
class _Polygon:
|
||||
class _Polygon(_DraftObject):
|
||||
"The Polygon object"
|
||||
|
||||
def __init__(self, obj):
|
||||
_DraftObject.__init__(self,obj,"Polygon")
|
||||
obj.addProperty("App::PropertyInteger","FacesNumber","Base","Number of faces")
|
||||
obj.addProperty("App::PropertyDistance","Radius","Base","Radius of the control circle")
|
||||
obj.addProperty("App::PropertyEnumeration","DrawMode","Base","How the polygon must be drawn from the control circle")
|
||||
|
@ -2552,8 +2596,6 @@ class _Polygon:
|
|||
obj.DrawMode = ['inscribed','circumscribed']
|
||||
obj.FacesNumber = 3
|
||||
obj.Radius = 1
|
||||
obj.Proxy = self
|
||||
self.Type = "Polygon"
|
||||
|
||||
def execute(self, fp):
|
||||
self.createGeometry(fp)
|
||||
|
@ -2585,8 +2627,10 @@ class _Polygon:
|
|||
fp.Shape = shape
|
||||
fp.Placement = plm
|
||||
|
||||
class _DrawingView:
|
||||
class _DrawingView(_DraftObject):
|
||||
"The Draft DrawingView object"
|
||||
def __init__(self, obj):
|
||||
_DraftObject.__init__(self,obj,"DrawingView")
|
||||
obj.addProperty("App::PropertyVector","Direction","Shape View","Projection direction")
|
||||
obj.addProperty("App::PropertyFloat","LineWidth","Drawing View","The width of the lines inside this object")
|
||||
obj.addProperty("App::PropertyFloat","FontSize","Drawing View","The size of the texts inside this object")
|
||||
|
@ -2596,10 +2640,8 @@ class _DrawingView:
|
|||
for f in FreeCAD.svgpatterns.keys():
|
||||
fills.append(f)
|
||||
obj.FillStyle = fills
|
||||
obj.Proxy = self
|
||||
obj.LineWidth = 0.35
|
||||
obj.FontSize = 12
|
||||
self.Type = "DrawingView"
|
||||
|
||||
def execute(self, obj):
|
||||
if obj.Source:
|
||||
|
@ -2623,17 +2665,16 @@ class _DrawingView:
|
|||
result += '</g>'
|
||||
return result
|
||||
|
||||
class _BSpline:
|
||||
class _BSpline(_DraftObject):
|
||||
"The BSpline object"
|
||||
|
||||
def __init__(self, obj):
|
||||
_DraftObject.__init__(self,obj,"BSpline")
|
||||
obj.addProperty("App::PropertyVectorList","Points","Base",
|
||||
"The points of the b-spline")
|
||||
obj.addProperty("App::PropertyBool","Closed","Base",
|
||||
"If the b-spline is closed or not")
|
||||
obj.Proxy = self
|
||||
obj.Closed = False
|
||||
self.Type = "BSpline"
|
||||
|
||||
def execute(self, fp):
|
||||
self.createGeometry(fp)
|
||||
|
@ -2696,14 +2737,13 @@ class _ViewProviderBSpline(_ViewProviderDraft):
|
|||
rn.removeChild(self.pt)
|
||||
return
|
||||
|
||||
class _Block:
|
||||
class _Block(_DraftObject):
|
||||
"The Block object"
|
||||
|
||||
def __init__(self, obj):
|
||||
_DraftObject.__init__(self,obj,"Block")
|
||||
obj.addProperty("App::PropertyLinkList","Components","Base",
|
||||
"The components of this block")
|
||||
obj.Proxy = self
|
||||
self.Type = "Block"
|
||||
|
||||
def execute(self, fp):
|
||||
self.createGeometry(fp)
|
||||
|
@ -2723,7 +2763,7 @@ class _Block:
|
|||
fp.Shape = shape
|
||||
fp.Placement = plm
|
||||
|
||||
class _Shape2DView:
|
||||
class _Shape2DView(_DraftObject):
|
||||
"The Shape2DView object"
|
||||
|
||||
def __init__(self,obj):
|
||||
|
@ -2731,17 +2771,30 @@ class _Shape2DView:
|
|||
"The base object this 2D view must represent")
|
||||
obj.addProperty("App::PropertyVector","Projection","Base",
|
||||
"The projection vector of this object")
|
||||
obj.Projection = Vector(0,0,-1)
|
||||
obj.Proxy = self
|
||||
self.Type = "2DShapeView"
|
||||
obj.addProperty("App::PropertyEnumeration","ProjectionMode","Base",
|
||||
"The way the viewed object must be projected")
|
||||
obj.addProperty("App::PropertyIntegerList","FaceNumbers","Base",
|
||||
"The indices of the faces to be projected in Individual Faces mode")
|
||||
obj.Projection = Vector(0,0,1)
|
||||
obj.ProjectionMode = ["Solid","Individual Faces","Cutlines"]
|
||||
_DraftObject.__init__(self,obj,"Shape2DView")
|
||||
|
||||
def execute(self,obj):
|
||||
self.createGeometry(obj)
|
||||
|
||||
def onChanged(self,obj,prop):
|
||||
if prop in ["Projection","Base"]:
|
||||
if prop in ["Projection","Base","ProjectionMode","FaceNumbers"]:
|
||||
self.createGeometry(obj)
|
||||
|
||||
def clean(self,shape):
|
||||
"returns a valid compound of edges"
|
||||
import Part
|
||||
oldedges = shape.Edges
|
||||
newedges = []
|
||||
for e in oldedges:
|
||||
newedges.append(e.Curve.toShape())
|
||||
return Part.makeCompound(newedges)
|
||||
|
||||
def createGeometry(self,obj):
|
||||
import Drawing, DraftGeomUtils
|
||||
pl = obj.Placement
|
||||
|
@ -2757,6 +2810,7 @@ class _Shape2DView:
|
|||
shapes.extend(o.Shape.Solids)
|
||||
cutp,cutv,iv =Arch.getCutVolume(obj.Base.Shape,shapes)
|
||||
cuts = []
|
||||
if obj.ProjectionMode == "Solid":
|
||||
for sh in shapes:
|
||||
if sh.Volume < 0:
|
||||
sh.reverse()
|
||||
|
@ -2766,20 +2820,49 @@ class _Shape2DView:
|
|||
opl = FreeCAD.Placement(obj.Base.Placement)
|
||||
proj = opl.Rotation.multVec(FreeCAD.Vector(0,0,1))
|
||||
[visibleG0,visibleG1,hiddenG0,hiddenG1] = Drawing.project(comp,proj)
|
||||
print visibleG0
|
||||
if visibleG0:
|
||||
obj.Shape = visibleG0
|
||||
obj.Shape = self.clean(visibleG0)
|
||||
elif obj.ProjectionMode == "Cutlines":
|
||||
for sh in shapes:
|
||||
if sh.Volume < 0:
|
||||
sh.reverse()
|
||||
c = sh.section(cutp)
|
||||
cuts.append(c)
|
||||
comp = Part.makeCompound(cuts)
|
||||
opl = FreeCAD.Placement(obj.Base.Placement)
|
||||
comp.Placement = opl.inverse()
|
||||
if comp:
|
||||
obj.Shape = comp
|
||||
|
||||
elif obj.Base.isDerivedFrom("Part::Feature"):
|
||||
if not DraftVecUtils.isNull(obj.Projection):
|
||||
if obj.ProjectionMode == "Solid":
|
||||
[visibleG0,visibleG1,hiddenG0,hiddenG1] = Drawing.project(obj.Base.Shape,obj.Projection)
|
||||
if visibleG0:
|
||||
obj.Shape = visibleG0
|
||||
obj.Shape = self.clean(visibleG0)
|
||||
elif obj.ProjectionMode == "Individual Faces":
|
||||
import Part
|
||||
if obj.FaceNumbers:
|
||||
faces = []
|
||||
for i in obj.FaceNumbers:
|
||||
if len(obj.Base.Shape.Faces) > i:
|
||||
faces.append(obj.Base.Shape.Faces[i])
|
||||
views = []
|
||||
for f in faces:
|
||||
[visibleG0,visibleG1,hiddenG0,hiddenG1] = Drawing.project(f,obj.Projection)
|
||||
if visibleG0:
|
||||
views.append(visibleG0)
|
||||
if views:
|
||||
obj.Shape = Part.makeCompound(views)
|
||||
if not DraftGeomUtils.isNull(pl):
|
||||
obj.Placement = pl
|
||||
|
||||
class _Array:
|
||||
class _Array(_DraftObject):
|
||||
"The Draft Array object"
|
||||
|
||||
def __init__(self,obj):
|
||||
_DraftObject.__init__(self,obj,"Array")
|
||||
obj.addProperty("App::PropertyLink","Base","Base",
|
||||
"The base object that must be duplicated")
|
||||
obj.addProperty("App::PropertyEnumeration","ArrayType","Base",
|
||||
|
@ -2804,8 +2887,6 @@ class _Array:
|
|||
"Center point")
|
||||
obj.addProperty("App::PropertyAngle","Angle","Base",
|
||||
"Angle to cover with copies")
|
||||
obj.Proxy = self
|
||||
self.Type = "Array"
|
||||
obj.ArrayType = ['ortho','polar']
|
||||
obj.NumberX = 1
|
||||
obj.NumberY = 1
|
||||
|
@ -2898,15 +2979,15 @@ class _Array:
|
|||
base.append(nshape)
|
||||
return Part.makeCompound(base)
|
||||
|
||||
class _Point:
|
||||
class _Point(_DraftObject):
|
||||
"The Draft Point object"
|
||||
def __init__(self, obj,x,y,z):
|
||||
_DraftObject.__init__(self,obj,"Point")
|
||||
obj.addProperty("App::PropertyFloat","X","Point","Location").X = x
|
||||
obj.addProperty("App::PropertyFloat","Y","Point","Location").Y = y
|
||||
obj.addProperty("App::PropertyFloat","Z","Point","Location").Z = z
|
||||
mode = 2
|
||||
obj.setEditorMode('Placement',mode)
|
||||
obj.Proxy = self
|
||||
self.Type = "Point"
|
||||
|
||||
def execute(self, fp):
|
||||
self.createGeometry(fp)
|
||||
|
@ -2916,9 +2997,10 @@ class _Point:
|
|||
shape = Part.Vertex(Vector(fp.X,fp.Y,fp.Z))
|
||||
fp.Shape = shape
|
||||
|
||||
class _ViewProviderPoint:
|
||||
class _ViewProviderPoint(_ViewProviderDraft):
|
||||
"A viewprovider for the Draft Point object"
|
||||
def __init__(self, obj):
|
||||
obj.Proxy = self
|
||||
_ViewProviderDraft.__init__(self,obj)
|
||||
|
||||
def onChanged(self, vp, prop):
|
||||
mode = 2
|
||||
|
@ -2938,17 +3020,16 @@ class _ViewProviderPoint:
|
|||
def getIcon(self):
|
||||
return ":/icons/Draft_Dot.svg"
|
||||
|
||||
class _Clone:
|
||||
class _Clone(_DraftObject):
|
||||
"The Clone object"
|
||||
|
||||
def __init__(self,obj):
|
||||
_DraftObject.__init__(self,obj,"Clone")
|
||||
obj.addProperty("App::PropertyLinkList","Objects","Base",
|
||||
"The objects included in this scale object")
|
||||
obj.addProperty("App::PropertyVector","Scale","Base",
|
||||
"The scale vector of this object")
|
||||
obj.Scale = Vector(1,1,1)
|
||||
obj.Proxy = self
|
||||
self.Type = "Clone"
|
||||
|
||||
def execute(self,obj):
|
||||
self.createGeometry(obj)
|
||||
|
@ -2978,29 +3059,15 @@ class _Clone:
|
|||
if not DraftGeomUtils.isNull(pl):
|
||||
obj.Placement = pl
|
||||
|
||||
class _ViewProviderDraftPart(_ViewProviderDraft):
|
||||
class _ViewProviderClone(_ViewProviderDraftAlt):
|
||||
"a view provider that displays a Part icon instead of a Draft icon"
|
||||
|
||||
def __init__(self,vobj):
|
||||
_ViewProviderDraft.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return ":/icons/Tree_Part.svg"
|
||||
|
||||
def claimChildren(self):
|
||||
return []
|
||||
|
||||
class _ViewProviderClone(_ViewProviderDraft):
|
||||
"a view provider that displays a Part icon instead of a Draft icon"
|
||||
|
||||
def __init__(self,vobj):
|
||||
_ViewProviderDraft.__init__(self,vobj)
|
||||
_ViewProviderDraftAlt.__init__(self,vobj)
|
||||
|
||||
def getIcon(self):
|
||||
return ":/icons/Draft_Clone.svg"
|
||||
|
||||
def claimChildren(self):
|
||||
return []
|
||||
|
||||
if not hasattr(FreeCADGui,"Snapper"):
|
||||
import DraftSnap
|
||||
|
|
|
@ -3658,15 +3658,27 @@ class Shape2DView():
|
|||
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Draft_Shape2DView", "Creates Shape 2D views of selected objects")}
|
||||
|
||||
def IsActive(self):
|
||||
if Draft.getSelection():
|
||||
if FreeCADGui.Selection.getSelection():
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def Activated(self):
|
||||
sellist = []
|
||||
for ob in Draft.getSelection():
|
||||
Draft.makeShape2DView(ob)
|
||||
faces = []
|
||||
objs = []
|
||||
sel = FreeCADGui.Selection.getSelectionEx()
|
||||
for s in sel:
|
||||
objs.append(s.Object)
|
||||
for e in s.SubElementNames:
|
||||
if "Face" in e:
|
||||
faces.append(int(e[4:])-1)
|
||||
print objs,faces
|
||||
if len(objs) == 1:
|
||||
if faces:
|
||||
Draft.makeShape2DView(objs[0],facenumbers=faces)
|
||||
return
|
||||
for o in objs:
|
||||
Draft.makeShape2DView(o)
|
||||
|
||||
class Draft2Sketch():
|
||||
"The Draft2Sketch FreeCAD command definition"
|
||||
|
@ -3752,6 +3764,9 @@ class Point:
|
|||
def Activated(self):
|
||||
self.view = Draft.get3DView()
|
||||
self.stack = []
|
||||
rot = self.view.getCameraNode().getField("orientation").getValue()
|
||||
upv = Vector(rot.multVec(coin.SbVec3f(0,1,0)).getValue())
|
||||
plane.setup(DraftVecUtils.neg(self.view.getViewDirection()), Vector(0,0,0), upv)
|
||||
self.point = None
|
||||
# adding 2 callback functions
|
||||
self.callbackClick = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.click)
|
||||
|
@ -3772,7 +3787,7 @@ class Point:
|
|||
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
||||
self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove)
|
||||
FreeCAD.ActiveDocument.openTransaction("Create Point")
|
||||
Draft.makePoint((self.stack[0][0]),(self.stack[0][1]),0.0)
|
||||
Draft.makePoint((self.stack[0][0]),(self.stack[0][1]),self.stack[0][2])
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
FreeCADGui.Snapper.off()
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
|
@ -13,9 +14,10 @@
|
|||
height="64px"
|
||||
id="svg3188"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docname="apply.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Draft_Apply.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs3190">
|
||||
<linearGradient
|
||||
|
@ -46,6 +48,16 @@
|
|||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective3196" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3354"
|
||||
id="linearGradient2996"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.15768287,0,0,0.15089213,-359.6514,-139.05703)"
|
||||
x1="2392.2313"
|
||||
y1="1162.2943"
|
||||
x2="2638.95"
|
||||
y2="1162.2943" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
|
@ -54,17 +66,18 @@
|
|||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.75"
|
||||
inkscape:cx="25.004198"
|
||||
inkscape:cy="2.8330839"
|
||||
inkscape:zoom="2.4909881"
|
||||
inkscape:cx="27.73103"
|
||||
inkscape:cy="10.858425"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="641"
|
||||
inkscape:window-height="722"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="777"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25" />
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata3193">
|
||||
<rdf:RDF>
|
||||
|
@ -80,71 +93,69 @@
|
|||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g3611"
|
||||
transform="matrix(0.1587551,0,0,0.1587551,-360.60166,-154.13114)">
|
||||
<path
|
||||
id="rect2392"
|
||||
d="M 2317.9152,1021.3304 L 2317.9152,1353.6741 L 2443.1339,1353.6741 L 2443.1339,1282.9867 L 2524.2902,1282.9867 L 2524.2902,1335.0491 L 2599.7589,1252.4241 L 2524.2902,1169.8304 L 2524.2902,1222.4554 L 2443.1339,1222.4554 L 2443.1339,1021.3304 L 2317.9152,1021.3304 z"
|
||||
style="fill:#000000;fill-opacity:0.56310676;fill-rule:evenodd;stroke:none;stroke-width:13.11065483;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#000000;fill-opacity:0.56310676;fill-rule:evenodd;stroke:none;stroke-width:13.11065483;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 7.3791994,8.0102698 0,52.7612572 19.8791076,0 0,-11.221985 12.883976,0 0,8.265171 11.981041,-13.11714 -11.981041,-13.112171 0,8.354487 -12.883976,0 0,-31.9296192 -19.8791076,0 z"
|
||||
id="rect2392" />
|
||||
<rect
|
||||
inkscape:export-ydpi="4.1683898"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/changeprop.png"
|
||||
y="995.47461"
|
||||
x="2343.1125"
|
||||
height="332.34647"
|
||||
width="125.20362"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.08138323;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect2364"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:13.11065483;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<rect
|
||||
inkscape:export-ydpi="4.1683898"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
width="19.876713"
|
||||
height="52.761696"
|
||||
x="11.379407"
|
||||
y="3.9055312"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/changeprop.png"
|
||||
y="1010.9336"
|
||||
x="2357.1428"
|
||||
height="68.571426"
|
||||
width="95.714279"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
inkscape:export-ydpi="4.1683898" />
|
||||
<rect
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12.60000038;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3335"
|
||||
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12.60000038;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<rect
|
||||
inkscape:export-ydpi="4.1683898"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
width="15.19513"
|
||||
height="10.886064"
|
||||
x="13.606785"
|
||||
y="6.3597236"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/changeprop.png"
|
||||
y="1086.9336"
|
||||
x="2357.1428"
|
||||
height="68.571426"
|
||||
width="95.714279"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
inkscape:export-ydpi="4.1683898" />
|
||||
<rect
|
||||
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12.60000038;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3337"
|
||||
style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12.60000038;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<rect
|
||||
inkscape:export-ydpi="4.1683898"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
width="15.19513"
|
||||
height="10.886064"
|
||||
x="13.606785"
|
||||
y="18.425112"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/changeprop.png"
|
||||
y="1164.9336"
|
||||
x="2357.1428"
|
||||
height="68.571426"
|
||||
width="95.714279"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
inkscape:export-ydpi="4.1683898" />
|
||||
<rect
|
||||
style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12.60000038;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3339"
|
||||
style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12.60000038;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
width="15.19513"
|
||||
height="10.886064"
|
||||
x="13.606785"
|
||||
y="30.80801"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/changeprop.png"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
inkscape:export-ydpi="4.1683898" />
|
||||
<rect
|
||||
inkscape:export-ydpi="4.1683898"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/changeprop.png"
|
||||
y="1242.9336"
|
||||
x="2357.1428"
|
||||
height="68.571426"
|
||||
width="95.714279"
|
||||
style="fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12.60000038;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3341"
|
||||
style="fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:12.60000038;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<path
|
||||
inkscape:export-ydpi="4.1683898"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
width="15.19513"
|
||||
height="10.886064"
|
||||
x="13.606785"
|
||||
y="43.190907"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/changeprop.png"
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
inkscape:export-ydpi="4.1683898" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#linearGradient2996);fill-opacity:1;fill-rule:evenodd;stroke:#000842;stroke-width:2.78860092;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 43.654661,18.832553 0,8.192669 -25.079926,0 0,18.79758 25.079926,0 0,7.992728 16.992596,-17.491499 z"
|
||||
id="path3343"
|
||||
d="M 2549.4844,1143.9677 L 2549.4844,1196.597 L 2389.1018,1196.597 L 2389.1018,1257.1308 L 2549.4844,1257.1308 L 2549.4844,1309.1924 L 2624.9367,1226.58 L 2549.4844,1143.9677 z"
|
||||
style="fill:url(#linearGradient3599);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:10.88381958;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/changeprop.png"
|
||||
inkscape:export-xdpi="4.1683898"
|
||||
inkscape:export-ydpi="4.1683898" />
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 6.4 KiB |
|
@ -14,8 +14,8 @@
|
|||
height="64px"
|
||||
id="svg3611"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="New document 2">
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Draft_Construction.svg">
|
||||
<defs
|
||||
id="defs3613">
|
||||
<inkscape:perspective
|
||||
|
@ -44,7 +44,7 @@
|
|||
<linearGradient
|
||||
id="linearGradient4292">
|
||||
<stop
|
||||
style="stop-color:#8b8b8b;stop-opacity:1;"
|
||||
style="stop-color:#62d9c5;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4294" />
|
||||
<stop
|
||||
|
@ -83,6 +83,47 @@
|
|||
id="linearGradient3609"
|
||||
xlink:href="#linearGradient4300"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4292"
|
||||
id="linearGradient3001"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="657.42859"
|
||||
y1="92.117249"
|
||||
x2="696.53217"
|
||||
y2="92.117249"
|
||||
gradientTransform="matrix(0.90492818,0.46143357,-0.43649386,0.95663257,-533.80417,-377.42664)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4292-4"
|
||||
id="linearGradient3001-0"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="657.42859"
|
||||
y1="92.117249"
|
||||
x2="696.53217"
|
||||
y2="92.117249"
|
||||
gradientTransform="matrix(0.93342445,0.4455918,-0.45023909,0.92378981,-552.52671,-364.08327)" />
|
||||
<linearGradient
|
||||
id="linearGradient4292-4">
|
||||
<stop
|
||||
style="stop-color:#62d9c5;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4294-4" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop4296-4" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
y2="92.117249"
|
||||
x2="696.53217"
|
||||
y1="92.117249"
|
||||
x1="657.42859"
|
||||
gradientTransform="matrix(0.93342445,0.4455918,-0.45023909,0.92378981,-527.86118,-368.62645)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient3807"
|
||||
xlink:href="#linearGradient4292-4"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
|
@ -92,8 +133,8 @@
|
|||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.5"
|
||||
inkscape:cx="32"
|
||||
inkscape:cy="32"
|
||||
inkscape:cx="35.417697"
|
||||
inkscape:cy="40.071519"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
|
@ -111,7 +152,7 @@
|
|||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
|
@ -119,23 +160,29 @@
|
|||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g4120"
|
||||
transform="translate(-642.18287,-69.358733)">
|
||||
<path
|
||||
id="path3498-2"
|
||||
d="m 692.625,79.90625 c -9.00513,0.257863 -31.25,23.125 -31.25,23.125 l 7.125,3.375 c -5.88827,4.53943 -11.83414,10.167 -13.8125,14.84375 -1.3112,3.43874 -0.61976,9.84842 4.40625,8.9375 6.24167,-0.72854 9.07314,-4.27175 11.59375,-9.40625 0.9284,-2.00661 3.58141,-6.33884 5.65625,-10.65625 l 11.4375,5.40625 c 0,0 16.48282,-31.148446 6.4375,-35.34375 -0.47221,-0.197212 -0.99341,-0.298441 -1.59375,-0.28125 z"
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.78431373;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
style="opacity:0.52166664;fill:#000000;fill-opacity:1;stroke:none"
|
||||
d="m 53.941638,17.166729 c -11.749305,0.425528 -32.628767,8.510945 -32.628767,8.510945 l 2.726638,3.592071 c -6.678937,1.647956 -13.430919,4.149432 -16.9051551,7.378309 -2.6875313,2.68458 -4.8548987,9.101934 0.090888,10.549688 5.9662671,2.183171 10.0502161,0.09195 14.5723651,-3.656794 1.494645,-1.298828 4.950786,-3.686788 8.301098,-6.375118 l 9.664416,12.653153 c 0,0 28.496547,-22.191422 21.23748,-30.840037 -1.194313,-1.422931 -3.769157,-1.931364 -7.058963,-1.812217 z"
|
||||
id="path3498-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccs"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:url(#linearGradient3001);fill-opacity:1;stroke:#003b2d;stroke-width:3.09901094;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="M 59.662253,13.123968 C 54.202538,6.6191446 19.951889,19.828464 19.951889,19.828464 l 18.459793,24.152939 c 0,0 28.509638,-22.208819 21.250571,-30.857435 z"
|
||||
id="path3498"
|
||||
d="m 691.78572,74.571428 c -7.55532,-3.155387 -32.85715,22.857143 -32.85715,22.857143 l 26.42858,12.499999 c 0,0 16.47389,-31.161834 6.42857,-35.357142 z"
|
||||
style="fill:url(#linearGradient4125);fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
sodipodi:nodetypes="cccs" />
|
||||
<rect
|
||||
style="color:#000000;fill:#00beb5;fill-opacity:1;fill-rule:nonzero;stroke:#003b2d;stroke-width:3.09901094;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3772"
|
||||
width="2.2914774"
|
||||
height="11.10865"
|
||||
x="34.728481"
|
||||
y="21.25304" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#00beb5;fill-opacity:1;stroke:#003b2d;stroke-width:3.09901094;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 36.848002,21.139332 c -7.945366,0.430644 -24.815998,3.84428 -31.0676284,9.654406 -2.6875309,2.68458 -4.85165092,9.118283 0.094138,10.566036 5.9662664,2.183171 10.0604134,0.08856 14.5825624,-3.660176 3.398096,-2.952905 16.886634,-11.482407 16.390928,-16.560266 z"
|
||||
id="path3500"
|
||||
d="m 676.15615,94.031827 c -6.94672,3.800931 -20.67459,13.990983 -23.90244,21.621463 -1.3112,3.43874 -0.6196,9.83051 4.40641,8.91959 6.24167,-0.72854 9.0552,-4.27522 11.57581,-9.40972 1.83845,-3.97355 10.4417,-17.039517 7.92022,-21.131333 z"
|
||||
style="fill:url(#linearGradient3609);fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
</g>
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 7.0 KiB |
|
@ -1,29 +1,210 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg4054"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docname="finish.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
id="svg3612"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Draft_Finish.svg">
|
||||
<defs
|
||||
id="defs4056">
|
||||
id="defs3614">
|
||||
<linearGradient
|
||||
id="linearGradient4280">
|
||||
<stop
|
||||
style="stop-color:#007b09;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4282" />
|
||||
<stop
|
||||
style="stop-color:#46ff00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop4284" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective4062" />
|
||||
id="perspective3620" />
|
||||
<inkscape:perspective
|
||||
id="perspective3588"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3692"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-6"
|
||||
id="radialGradient3684"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3144-6">
|
||||
<stop
|
||||
id="stop3146-9"
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop3148-2"
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-6"
|
||||
id="radialGradient3686"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3701">
|
||||
<stop
|
||||
id="stop3703"
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop3705"
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-6"
|
||||
id="radialGradient3688"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3708">
|
||||
<stop
|
||||
id="stop3710"
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop3712"
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="34.345188"
|
||||
fy="672.79736"
|
||||
fx="225.26402"
|
||||
cy="672.79736"
|
||||
cx="225.26402"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient3723"
|
||||
xlink:href="#linearGradient3144-6"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective3805"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<linearGradient
|
||||
id="linearGradient3864-0-0">
|
||||
<stop
|
||||
id="stop3866-5-7"
|
||||
offset="0"
|
||||
style="stop-color:#0619c0;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3868-7-6"
|
||||
offset="1"
|
||||
style="stop-color:#379cfb;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3377">
|
||||
<stop
|
||||
id="stop3379"
|
||||
offset="0"
|
||||
style="stop-color:#ffaa00;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3381"
|
||||
offset="1"
|
||||
style="stop-color:#faff2b;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3864-0">
|
||||
<stop
|
||||
id="stop3866-5"
|
||||
offset="0"
|
||||
style="stop-color:#0619c0;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3868-7"
|
||||
offset="1"
|
||||
style="stop-color:#379cfb;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4280"
|
||||
id="linearGradient4286"
|
||||
x1="36.681817"
|
||||
y1="36.272728"
|
||||
x2="66.772727"
|
||||
y2="36.272728"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4280"
|
||||
id="linearGradient4331"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="36.681817"
|
||||
y1="36.272728"
|
||||
x2="66.772727"
|
||||
y2="36.272728" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4280-5"
|
||||
id="linearGradient4331-2"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="36.681816"
|
||||
y1="36.272728"
|
||||
x2="66.772728"
|
||||
y2="36.272728" />
|
||||
<linearGradient
|
||||
id="linearGradient4280-5">
|
||||
<stop
|
||||
style="stop-color:#007b09;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4282-9" />
|
||||
<stop
|
||||
style="stop-color:#46ff00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop4284-5" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
|
@ -32,25 +213,30 @@
|
|||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.75"
|
||||
inkscape:cx="9.0331757"
|
||||
inkscape:cy="8.4168436"
|
||||
inkscape:zoom="3.8890872"
|
||||
inkscape:cx="13.668976"
|
||||
inkscape:cy="10.980782"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="689"
|
||||
inkscape:window-height="722"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="777"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="25" />
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="false"
|
||||
inkscape:snap-nodes="true"
|
||||
inkscape:object-nodes="true" />
|
||||
<metadata
|
||||
id="metadata4059">
|
||||
id="metadata3617">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
|
@ -59,11 +245,60 @@
|
|||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
style="fill:#00d000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.7;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 2.3754367,35.218235 C 12.688177,42.484861 13.905483,57.162317 13.905483,57.162317 L 27.760678,57.162317 C 27.760678,57.162317 38.2786,23.027867 51.176402,12.985784 C 64.074185,2.9436901 61.393424,4.7891824 61.393424,4.7891824 C 61.393424,4.7891824 41.957837,8.0404191 30.400435,22.343017 C 18.843012,36.645595 19.513213,41.951403 19.513213,41.951403 C 19.513213,41.951403 17.229088,38.181102 10.951159,36.097722 C 4.6732292,34.014322 2.5532429,35.167765 2.3754367,35.218235 z"
|
||||
id="path2381"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/finish.png"
|
||||
inkscape:export-xdpi="4.6092048"
|
||||
inkscape:export-ydpi="4.6092048" />
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4235-8-7"
|
||||
d="m 28.873502,8.1632589 c -2.837435,0.2881572 -5.0625,2.7115381 -5.0625,5.6250001 0,1.085407 0.311381,2.077914 0.843749,2.9375 L 11.061002,29.882009 C 10.198524,29.34446 9.1833717,29.007008 8.0922517,29.007008 c -3.1076916,0 -5.6250003,2.51731 -5.6250003,5.625001 0,3.10769 2.5173087,5.625 5.6250003,5.625 0.2913453,0 0.5955877,-0.01981 0.8749994,-0.0625 l 14.4999999,14.65625 c -0.07495,0.3663 -0.124999,0.73654 -0.124999,1.125 0,3.10769 2.517309,5.625 5.624999,5.625 3.107692,0 5.625001,-2.51731 5.625001,-5.625 0,-0.51871 -0.08736,-1.02305 -0.21875,-1.500001 l 7.562499,-7.687499 c 1.448885,0.75273 3.039722,1.2967 4.750001,1.53125 8.007085,1.09811 15.37064,-4.49291 16.46875,-12.5 1.09811,-8.007087 -4.492914,-15.401885 -12.5,-16.5 -8.007087,-1.098115 -15.370636,4.524164 -16.46875,12.53125 -0.690574,5.035429 1.240843,9.80409 4.781249,12.9375 l -6.593749,6.6875 c -0.943363,-0.7142 -2.131802,-1.125 -3.406251,-1.125 -1.376472,0 -2.647179,0.4918 -3.624999,1.3125 L 12.154751,38.538259 c 0.971456,-1.01124 1.5625,-2.39326 1.5625,-3.90625 0,-0.77692 -0.15276,-1.5143 -0.4375,-2.1875 l 13.843751,-13.53125 c 0.70626,0.319315 1.487018,0.499999 2.3125,0.499999 3.10769,0 5.624999,-2.517309 5.624999,-5.624999 0,-3.107691 -2.517309,-5.6250001 -5.624999,-5.6250001 -0.194232,0 -0.373339,-0.019209 -0.5625,0 z"
|
||||
style="opacity:0.525;fill:#000000;fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
id="path4235-8"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
|
||||
d="M 51.088219,32.609591 28.222994,55.817606 4.2513883,31.570426 29.329376,7.3232466 31.568077,9.701098 9.0978561,31.621409 28.245092,50.724986 48.50255,30.21124 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:url(#linearGradient4331);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path4278"
|
||||
sodipodi:cx="51.727272"
|
||||
sodipodi:cy="36.272728"
|
||||
sodipodi:rx="13.545455"
|
||||
sodipodi:ry="13.545455"
|
||||
d="m 65.272727,36.272728 a 13.545455,13.545455 0 1 1 -27.09091,0 13.545455,13.545455 0 1 1 27.09091,0 z"
|
||||
transform="matrix(0.14678818,-1.0703303,1.0703303,0.14678818,1.7228232,79.496419)" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 37.283515,26.72743 6.35716,13.292442 13.985756,-17.592938 -13.19111,7.819084 z"
|
||||
id="path4290"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:#3f81f9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.97554541;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path4292"
|
||||
sodipodi:cx="11.056579"
|
||||
sodipodi:cy="36.229988"
|
||||
sodipodi:rx="7.4567623"
|
||||
sodipodi:ry="7.4567623"
|
||||
d="m 18.513341,36.229988 a 7.4567623,7.4567623 0 1 1 -14.9135247,0 7.4567623,7.4567623 0 1 1 14.9135247,0 z"
|
||||
transform="matrix(0.75461342,0,0,0.75461342,-0.77038182,2.9275619)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:#3f81f9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.97554541;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path4292-3"
|
||||
sodipodi:cx="11.056579"
|
||||
sodipodi:cy="36.229988"
|
||||
sodipodi:rx="7.4567623"
|
||||
sodipodi:ry="7.4567623"
|
||||
d="m 18.513341,36.229988 a 7.4567623,7.4567623 0 1 1 -14.9135247,0 7.4567623,7.4567623 0 1 1 14.9135247,0 z"
|
||||
transform="matrix(0.75461342,0,0,0.75461342,20.560933,-17.934934)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:#3f81f9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.97554541;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path4292-35"
|
||||
sodipodi:cx="11.056579"
|
||||
sodipodi:cy="36.229988"
|
||||
sodipodi:rx="7.4567623"
|
||||
sodipodi:ry="7.4567623"
|
||||
d="m 18.513341,36.229988 a 7.4567623,7.4567623 0 1 1 -14.9135247,0 7.4567623,7.4567623 0 1 1 14.9135247,0 z"
|
||||
transform="matrix(0.75461342,0,0,0.75461342,20.092113,24.258877)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 12 KiB |
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
|
@ -11,13 +12,192 @@
|
|||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg3230"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:docname="lock.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
id="svg3612"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Draft_Finish.svg">
|
||||
<defs
|
||||
id="defs3232">
|
||||
id="defs3614">
|
||||
<linearGradient
|
||||
id="linearGradient4280">
|
||||
<stop
|
||||
style="stop-color:#ff6000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4282" />
|
||||
<stop
|
||||
style="stop-color:#ffee00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop4284" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective3620" />
|
||||
<inkscape:perspective
|
||||
id="perspective3588"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<inkscape:perspective
|
||||
id="perspective3692"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-6"
|
||||
id="radialGradient3684"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3144-6">
|
||||
<stop
|
||||
id="stop3146-9"
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop3148-2"
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-6"
|
||||
id="radialGradient3686"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3701">
|
||||
<stop
|
||||
id="stop3703"
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop3705"
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-6"
|
||||
id="radialGradient3688"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3708">
|
||||
<stop
|
||||
id="stop3710"
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop3712"
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="34.345188"
|
||||
fy="672.79736"
|
||||
fx="225.26402"
|
||||
cy="672.79736"
|
||||
cx="225.26402"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient3723"
|
||||
xlink:href="#linearGradient3144-6"
|
||||
inkscape:collect="always" />
|
||||
<inkscape:perspective
|
||||
id="perspective3805"
|
||||
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||
inkscape:vp_z="1 : 0.5 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_x="0 : 0.5 : 1"
|
||||
sodipodi:type="inkscape:persp3d" />
|
||||
<linearGradient
|
||||
id="linearGradient3864-0-0">
|
||||
<stop
|
||||
id="stop3866-5-7"
|
||||
offset="0"
|
||||
style="stop-color:#0619c0;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3868-7-6"
|
||||
offset="1"
|
||||
style="stop-color:#379cfb;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3377">
|
||||
<stop
|
||||
id="stop3379"
|
||||
offset="0"
|
||||
style="stop-color:#ffaa00;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3381"
|
||||
offset="1"
|
||||
style="stop-color:#faff2b;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3864-0">
|
||||
<stop
|
||||
id="stop3866-5"
|
||||
offset="0"
|
||||
style="stop-color:#0619c0;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop3868-7"
|
||||
offset="1"
|
||||
style="stop-color:#379cfb;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4280"
|
||||
id="linearGradient4331"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="36.681817"
|
||||
y1="36.272728"
|
||||
x2="66.772727"
|
||||
y2="36.272728" />
|
||||
<linearGradient
|
||||
id="linearGradient4280-5">
|
||||
<stop
|
||||
style="stop-color:#007b09;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4282-9" />
|
||||
<stop
|
||||
style="stop-color:#46ff00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop4284-5" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3273"
|
||||
id="radialGradient2411"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.1937875,0,0,0.20943582,-425.95281,-115.26147)"
|
||||
cx="2787.5991"
|
||||
cy="552.89734"
|
||||
fx="2787.5991"
|
||||
fy="552.89734"
|
||||
r="38.829369" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3273">
|
||||
|
@ -30,37 +210,16 @@
|
|||
offset="1"
|
||||
id="stop3277" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3273"
|
||||
id="radialGradient2411"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,1.0807499,0,-44.646407)"
|
||||
cx="2787.5991"
|
||||
cy="552.89736"
|
||||
fx="2787.5991"
|
||||
fy="552.89736"
|
||||
r="38.829369" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3293"
|
||||
id="linearGradient2409"
|
||||
id="linearGradient2405"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-1,0,0,-1,5656.8338,1408.2216)"
|
||||
gradientTransform="matrix(-1,0,0,-1,5656.8338,1344.2216)"
|
||||
x1="2754.6858"
|
||||
y1="671.11081"
|
||||
x2="2900.148"
|
||||
y2="671.11081" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3293"
|
||||
id="linearGradient2407"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-1,0,0,-1,5656.8338,1376.2216)"
|
||||
x1="2754.6858"
|
||||
y1="671.11081"
|
||||
x2="2900.148"
|
||||
y2="671.11081" />
|
||||
y1="671.11084"
|
||||
x2="2900.1479"
|
||||
y2="671.11084" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3293">
|
||||
|
@ -76,13 +235,33 @@
|
|||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3293"
|
||||
id="linearGradient2405"
|
||||
id="linearGradient2407"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-1,0,0,-1,5656.8338,1344.2216)"
|
||||
gradientTransform="matrix(-1,0,0,-1,5656.8338,1376.2216)"
|
||||
x1="2754.6858"
|
||||
y1="671.11081"
|
||||
x2="2900.148"
|
||||
y2="671.11081" />
|
||||
y1="671.11084"
|
||||
x2="2900.1479"
|
||||
y2="671.11084" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3293"
|
||||
id="linearGradient2409"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-1,0,0,-1,5656.8338,1408.2216)"
|
||||
x1="2754.6858"
|
||||
y1="671.11084"
|
||||
x2="2900.1479"
|
||||
y2="671.11084" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3255"
|
||||
id="linearGradient2403"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.15119754,0,0,0.1937875,-309.70907,-106.60955)"
|
||||
x1="2732.3572"
|
||||
y1="711.11218"
|
||||
x2="2839.0713"
|
||||
y2="711.11218" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3255">
|
||||
|
@ -97,21 +276,54 @@
|
|||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3255"
|
||||
id="linearGradient2403"
|
||||
xlink:href="#linearGradient3293"
|
||||
id="linearGradient4673"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.7802234,0,0,1,599.85156,0)"
|
||||
x1="2732.3571"
|
||||
y1="711.11219"
|
||||
x2="2839.0713"
|
||||
y2="711.11219" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective3238" />
|
||||
gradientTransform="matrix(-0.1937875,0,0,-0.1937875,670.27087,167.83649)"
|
||||
x1="2754.6858"
|
||||
y1="671.11084"
|
||||
x2="2900.1479"
|
||||
y2="671.11084" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3293"
|
||||
id="linearGradient4676"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.1937875,0,0,-0.1937875,670.27087,161.63529)"
|
||||
x1="2754.6858"
|
||||
y1="671.11084"
|
||||
x2="2900.1479"
|
||||
y2="671.11084" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3293"
|
||||
id="linearGradient4679"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.1937875,0,0,-0.1937875,670.27087,155.43409)"
|
||||
x1="2754.6858"
|
||||
y1="671.11084"
|
||||
x2="2900.1479"
|
||||
y2="671.11084" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4280-8"
|
||||
id="linearGradient4331-8"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="36.681816"
|
||||
y1="36.272728"
|
||||
x2="66.772728"
|
||||
y2="36.272728" />
|
||||
<linearGradient
|
||||
id="linearGradient4280-8">
|
||||
<stop
|
||||
style="stop-color:#ff6000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4282-94" />
|
||||
<stop
|
||||
style="stop-color:#ffee00;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop4284-7" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
|
@ -120,25 +332,30 @@
|
|||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.5"
|
||||
inkscape:cx="26.229024"
|
||||
inkscape:cy="26.419218"
|
||||
inkscape:current-layer="g2383"
|
||||
inkscape:zoom="1.9445436"
|
||||
inkscape:cx="37.240913"
|
||||
inkscape:cy="-11.10556"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1012"
|
||||
inkscape:window-height="722"
|
||||
inkscape:window-x="109"
|
||||
inkscape:window-y="25" />
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="777"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="false"
|
||||
inkscape:snap-nodes="true"
|
||||
inkscape:object-nodes="true" />
|
||||
<metadata
|
||||
id="metadata3235">
|
||||
id="metadata3617">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
|
@ -146,56 +363,74 @@
|
|||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g2383"
|
||||
transform="matrix(0.1937875,0,0,0.1937875,-515.01651,-93.777617)"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/close.png"
|
||||
inkscape:export-xdpi="4.4961462"
|
||||
inkscape:export-ydpi="4.4961462">
|
||||
<g
|
||||
inkscape:export-ydpi="6.5019679"
|
||||
inkscape:export-xdpi="6.5019679"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/close.png"
|
||||
transform="translate(-6,-8)"
|
||||
id="g2385">
|
||||
<path
|
||||
style="opacity:1;fill:#ffd000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:7.74043733;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 2830.8888,516.4852 C 2788.1638,516.48519 2753.3894,551.24098 2752.5573,594.39382 L 2752.5325,594.39382 L 2752.5325,595.98531 L 2752.5325,663.15135 L 2782.0746,663.15135 L 2782.0746,594.39382 L 2782.0249,594.39382 C 2783.2954,567.56146 2805.1518,546.17652 2831.9083,546.17652 C 2859.0136,546.17651 2881.0583,568.08689 2881.7917,595.4631 L 2882.0155,595.4631 L 2882.0155,662.82807 L 2909.3195,662.82807 L 2909.3195,593.87161 L 2909.1952,593.87161 C 2908.0773,550.90388 2873.4234,516.48521 2830.8888,516.4852 z"
|
||||
id="path2387" />
|
||||
style="opacity:0.5625;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 28.389205,7.9886364 c -3.107691,0 -5.625,2.5485586 -5.625,5.6562496 0,1.085407 0.311382,2.077914 0.84375,2.9375 l -13.59375,13.125 c -0.8595865,-0.532368 -1.8833435,-0.84375 -2.9687505,-0.84375 -3.107691,0 -5.625,2.517309 -5.625,5.625 0,3.107691 2.517309,5.625 5.625,5.625 0.291346,0 0.595588,-0.01981 0.875,-0.0625 l 14.4687505,14.625 c -0.07496,0.366302 -0.09375,0.767789 -0.09375,1.15625 0,3.107691 2.517309,5.625 5.625,5.625 3.10769,0 5.625,-2.517309 5.625,-5.625 0,-0.515189 -0.08907,-1.02595 -0.21875,-1.5 l 7.5625,-7.6875 c 1.44889,0.752733 3.03972,1.296697 4.75,1.53125 8.00709,1.098115 15.37064,-4.492914 16.46875,-12.5 1.09811,-8.007086 -4.49291,-15.401885 -12.5,-16.5 -4.07521,-0.558887 -7.99484,0.623091 -11,2.96875 l -5.4375,-5.53125 c 0.53205,-0.859273 0.84375,-1.883343 0.84375,-2.96875 0,-3.107691 -2.51731,-5.6562496 -5.625,-5.6562496 z m -2.28125,10.7499996 c 0.70018,0.312724 1.46484,0.53125 2.28125,0.53125 0.70508,0 1.3782,-0.138342 2,-0.375 l 5.6875,5.8125 c -1.53023,1.965212 -2.60598,4.354802 -2.96875,7 -0.69057,5.035434 1.27209,9.804093 4.8125,12.9375 l -6.625,6.6875 c -0.94189,-0.710233 -2.10446,-1.125 -3.375,-1.125 -1.376473,0 -2.647179,0.491805 -3.625,1.3125 l -13.1875,-13.15625 c 0.969574,-1.010921 1.5625,-2.363665 1.5625,-3.875 0,-0.787112 -0.145648,-1.538504 -0.4375,-2.21875 l 13.875,-13.53125 z"
|
||||
id="rect4425-7"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ffd000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:7.74043733;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect2389"
|
||||
width="190.15494"
|
||||
height="145.67435"
|
||||
x="2736.5015"
|
||||
y="646.33221" />
|
||||
</g>
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect4425"
|
||||
width="34.583946"
|
||||
height="3.5998166"
|
||||
x="26.779446"
|
||||
y="-15.409233"
|
||||
transform="matrix(0.69977942,0.71435899,-0.71435899,0.69977942,0,0)" />
|
||||
<path
|
||||
sodipodi:nodetypes="csscccc"
|
||||
id="path2391"
|
||||
d="M 2814.5713,640.57648 C 2814.5713,640.57648 2799.0474,658.58964 2797.0164,678.07648 C 2794.4804,702.40726 2805.0972,709.14791 2807.3264,735.57648 C 2809.5556,762.00505 2800.0815,781.64791 2800.0815,781.64791 L 2732.3693,781.64791 L 2732.0906,640.93363 L 2814.5713,640.57648 z"
|
||||
style="fill:url(#linearGradient2403);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
id="path4235-8"
|
||||
style="fill:#ffffff;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
|
||||
d="M 51.088219,32.609591 28.222994,55.817606 4.2513883,31.570426 29.329376,7.3232466 31.568077,9.701098 9.0978561,31.621409 28.245092,50.724986 48.50255,30.21124 z"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<g
|
||||
transform="translate(0,8)"
|
||||
id="g2393">
|
||||
id="g4327"
|
||||
transform="matrix(1.0803489,0,0,1.0803489,-5.9760819,-8.3209228)">
|
||||
<path
|
||||
style="opacity:1;fill:url(#linearGradient2405);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.79999971;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 2767.1875,661.5 C 2762.5699,661.5 2758.659,664.51139 2757.25,668.71875 C 2757.9725,668.55952 2758.6981,668.46875 2759.4688,668.46875 L 2883.9688,668.46875 C 2889.7809,668.46874 2894.4375,673.23326 2894.4375,679.15625 L 2894.4375,681 C 2894.4375,682.21435 2894.2378,683.38262 2893.875,684.46875 C 2898.6151,683.43716 2902.1562,679.1785 2902.1562,674.03125 L 2902.1562,672.1875 C 2902.1563,666.26451 2897.4684,661.49999 2891.6562,661.5 L 2767.1875,661.5 z"
|
||||
id="path2395" />
|
||||
<path
|
||||
style="opacity:1;fill:url(#linearGradient2407);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.79999971;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 2767.1875,693.5 C 2762.5699,693.5 2758.659,696.51139 2757.25,700.71875 C 2757.9725,700.55952 2758.6981,700.46875 2759.4688,700.46875 L 2883.9688,700.46875 C 2889.7809,700.46874 2894.4375,705.23326 2894.4375,711.15625 L 2894.4375,713 C 2894.4375,714.21435 2894.2378,715.38262 2893.875,716.46875 C 2898.6151,715.43716 2902.1562,711.1785 2902.1562,706.03125 L 2902.1562,704.1875 C 2902.1563,698.26451 2897.4684,693.49999 2891.6562,693.5 L 2767.1875,693.5 z"
|
||||
id="path2397" />
|
||||
<path
|
||||
style="opacity:1;fill:url(#linearGradient2409);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.79999971;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 2767.1875,725.5 C 2762.5699,725.5 2758.659,728.51139 2757.25,732.71875 C 2757.9725,732.55952 2758.6981,732.46875 2759.4688,732.46875 L 2883.9688,732.46875 C 2889.7809,732.46874 2894.4375,737.23326 2894.4375,743.15625 L 2894.4375,745 C 2894.4375,746.21435 2894.2378,747.38262 2893.875,748.46875 C 2898.6151,747.43716 2902.1562,743.1785 2902.1562,738.03125 L 2902.1562,736.1875 C 2902.1563,730.26451 2897.4684,725.49999 2891.6562,725.5 L 2767.1875,725.5 z"
|
||||
id="path2399" />
|
||||
transform="matrix(0.13587109,-0.99072652,0.99072652,0.13587109,7.1263136,81.286094)"
|
||||
d="m 65.272727,36.272728 a 13.545455,13.545455 0 1 1 -27.09091,0 13.545455,13.545455 0 1 1 27.09091,0 z"
|
||||
sodipodi:ry="13.545455"
|
||||
sodipodi:rx="13.545455"
|
||||
sodipodi:cy="36.272728"
|
||||
sodipodi:cx="51.727272"
|
||||
id="path4278"
|
||||
style="color:#000000;fill:url(#linearGradient4331);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
sodipodi:type="arc" />
|
||||
</g>
|
||||
<path
|
||||
sodipodi:nodetypes="csscczzzcc"
|
||||
id="path2401"
|
||||
d="M 2826.4285,510.93363 C 2826.4285,510.93363 2801.7856,510.57648 2784.6428,522.71934 C 2767.4999,534.8622 2758.9285,545.93363 2753.2142,563.07648 C 2747.4999,580.21934 2748.9285,590.93362 2748.9285,590.93362 L 2761.4285,594.8622 C 2761.4285,594.8622 2771.8749,595.84434 2773.5713,584.14791 C 2775.2612,572.49696 2776.6071,565.21933 2786.7857,553.79076 C 2796.9642,542.36219 2810.4463,537.27291 2819.9999,535.93363 C 2829.5108,534.60032 2828.2142,525.93363 2828.2142,525.93363 L 2826.4285,510.93363 z"
|
||||
style="fill:url(#radialGradient2411);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:#3f81f9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.97554541;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path4292"
|
||||
sodipodi:cx="11.056579"
|
||||
sodipodi:cy="36.229988"
|
||||
sodipodi:rx="7.4567623"
|
||||
sodipodi:ry="7.4567623"
|
||||
d="m 18.513341,36.229988 a 7.4567623,7.4567623 0 1 1 -14.9135247,0 7.4567623,7.4567623 0 1 1 14.9135247,0 z"
|
||||
transform="matrix(0.75461342,0,0,0.75461342,-0.77038182,2.9275619)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:#3f81f9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.97554541;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path4292-3"
|
||||
sodipodi:cx="11.056579"
|
||||
sodipodi:cy="36.229988"
|
||||
sodipodi:rx="7.4567623"
|
||||
sodipodi:ry="7.4567623"
|
||||
d="m 18.513341,36.229988 a 7.4567623,7.4567623 0 1 1 -14.9135247,0 7.4567623,7.4567623 0 1 1 14.9135247,0 z"
|
||||
transform="matrix(0.75461342,0,0,0.75461342,20.560933,-17.934934)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:#3f81f9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.97554541;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path4292-35"
|
||||
sodipodi:cx="11.056579"
|
||||
sodipodi:cy="36.229988"
|
||||
sodipodi:rx="7.4567623"
|
||||
sodipodi:ry="7.4567623"
|
||||
d="m 18.513341,36.229988 a 7.4567623,7.4567623 0 1 1 -14.9135247,0 7.4567623,7.4567623 0 1 1 14.9135247,0 z"
|
||||
transform="matrix(0.75461342,0,0,0.75461342,20.092113,24.258877)" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.16735911;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 48.43322,17.751552 c -3.571667,-1e-6 -6.482061,2.903751 -6.551623,6.511178 l 0,0.134808 0,4.205978 -1.334595,0 0,9.349478 15.893753,0 0,-9.349478 -1.442442,0 0,-4.381228 -0.01344,0 c -0.09341,-3.591952 -2.995875,-6.470734 -6.551612,-6.470736 z m 0.01519,3.926805 c 1.874434,0 3.395139,1.508085 3.445859,3.401245 l 0.01112,0 0,3.523914 -6.914014,0 0,-3.590824 c 0,-1.857629 1.606701,-3.334335 3.457012,-3.334335 z"
|
||||
id="path2387"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="sccccccccccsssccccsss" />
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 17 KiB |
|
@ -14,8 +14,8 @@
|
|||
height="64px"
|
||||
id="svg3612"
|
||||
version="1.1"
|
||||
inkscape:version="0.47 r22583"
|
||||
sodipodi:docname="Draft_BSpline.svg">
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Draft_SelectPlane.svg">
|
||||
<defs
|
||||
id="defs3614">
|
||||
<inkscape:perspective
|
||||
|
@ -193,18 +193,21 @@
|
|||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.5"
|
||||
inkscape:cx="32"
|
||||
inkscape:cy="32"
|
||||
inkscape:zoom="2.75"
|
||||
inkscape:cx="23.565355"
|
||||
inkscape:cy="22.134067"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="758"
|
||||
inkscape:window-height="777"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="19"
|
||||
inkscape:window-maximized="0" />
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="false"
|
||||
inkscape:snap-nodes="true"
|
||||
inkscape:object-nodes="true" />
|
||||
<metadata
|
||||
id="metadata3617">
|
||||
<rdf:RDF>
|
||||
|
@ -222,37 +225,60 @@
|
|||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
transform="matrix(1,0,0,0.92636154,-576.3879,-0.56436901)"
|
||||
id="Draft_selectPlane"
|
||||
style="display:inline">
|
||||
id="g4075">
|
||||
<path
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.78431373;fill-rule:nonzero;stroke:none;stroke-width:2.4000001;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 595.75293,59.474599 c 8.60514,-6.955627 17.21028,-13.911253 25.81542,-20.86688 -5.41661,-2.670296 -10.83323,-5.340591 -16.24984,-8.010887 -8.60514,6.955627 -17.21029,13.911253 -25.81543,20.86688 5.41661,2.670296 10.83324,5.340591 16.24985,8.010887 z"
|
||||
id="rect3436-9" />
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3305"
|
||||
d="M 33.636364,3.0909091 9.4545455,16 l 0,45.454545 L 12.545455,61.272727 51.636364,39.818182 51.272727,3.0909091 z"
|
||||
style="fill:#00bcbf;stroke:#004550;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:0.73333335;opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="rect3434-3"
|
||||
d="m 612.18459,67.643374 25.81542,-20.86688 -16.24984,-8.010887 -25.81542,20.86688 16.24984,8.010887 z"
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.78431373;fill-rule:nonzero;stroke:none;stroke-width:2.4000001;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3190"
|
||||
d="M 2.6817614,19.853542 34.227331,2.7648421"
|
||||
style="fill:none;stroke:#004550;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<path
|
||||
style="color:#000000;fill:url(#linearGradient3934);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.4000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 595.75292,53.474598 c 8.60514,-6.955627 17.21028,-13.911253 25.81542,-20.86688 -5.41661,-2.670296 -10.83323,-5.340591 -16.24984,-8.010887 -8.60514,6.955627 -17.21028,13.911253 -25.81542,20.86688 5.41661,2.670296 10.83323,5.340591 16.24984,8.010887 z"
|
||||
id="rect3436" />
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3190-7"
|
||||
d="M 2.6817603,43.362531 61.318239,11.546559"
|
||||
style="fill:none;stroke:#004550;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="rect3438"
|
||||
d="m 595.72358,24.443131 c 8.58695,-6.085906 17.46719,-12.758376 26.52973,-19.795459 l -0.54367,35.922168 -25.81542,20.866886 -0.17064,-36.993595 z"
|
||||
style="color:#000000;fill:url(#linearGradient3942);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.4000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3190-9"
|
||||
d="M 12.681761,61.180713 61.136421,34.819286"
|
||||
style="fill:none;stroke:#004550;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="rect3434"
|
||||
d="M 612.18458,61.643373 638,40.776493 l -16.24984,-8.010887 -25.81542,20.86688 16.24984,8.010887 z"
|
||||
style="color:#000000;fill:url(#linearGradient3657);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.4000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3190-1"
|
||||
d="m 51.778932,61.073314 9.545569,-4.361427"
|
||||
style="fill:none;stroke:#004550;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<path
|
||||
id="path4374"
|
||||
d="m 605.17532,37.084279 -0.12667,-9.530071 10.231,-7.637695 c -0.0129,6.094259 0.0799,6.177422 0.11986,9.266133 l -10.22419,7.901633 z"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.10687399;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3224"
|
||||
d="m 9.6363637,2.6639428 0,58.7180442"
|
||||
style="fill:none;stroke:#004550;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3224-4"
|
||||
d="m 30.727272,3.4574795 0,57.9941315"
|
||||
style="fill:none;stroke:#004550;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<rect
|
||||
transform="matrix(0.87830639,-0.4780982,0,1,0,0)"
|
||||
y="35.24979"
|
||||
x="21.541641"
|
||||
height="21.627987"
|
||||
width="26.756208"
|
||||
id="rect3170"
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.20109248;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3224-7"
|
||||
d="m 51.454545,2.7325478 0,58.3530852"
|
||||
style="fill:none;stroke:#004550;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.8 KiB |
|
@ -14,10 +14,21 @@
|
|||
height="64"
|
||||
id="svg4025"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Draft_Edit.svg">
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Draft_Snap.svg">
|
||||
<defs
|
||||
id="defs4027">
|
||||
<linearGradient
|
||||
id="linearGradient3760">
|
||||
<stop
|
||||
style="stop-color:#003b8c;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3762" />
|
||||
<stop
|
||||
style="stop-color:#419ff7;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3764" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 16 : 1"
|
||||
|
@ -63,6 +74,26 @@
|
|||
y1="1190.875"
|
||||
x2="1267.9062"
|
||||
y2="1190.875" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3760"
|
||||
id="linearGradient3766"
|
||||
x1="21.512983"
|
||||
y1="40.196293"
|
||||
x2="18.734758"
|
||||
y2="17.210812"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient3760-8">
|
||||
<stop
|
||||
style="stop-color:#003b8c;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3762-0" />
|
||||
<stop
|
||||
style="stop-color:#419ff7;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3764-3" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
|
@ -72,16 +103,16 @@
|
|||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.9795105"
|
||||
inkscape:cx="11.130625"
|
||||
inkscape:cy="21.220207"
|
||||
inkscape:cx="-20.648533"
|
||||
inkscape:cy="-4.8977275"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="755"
|
||||
inkscape:window-height="777"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4030">
|
||||
|
@ -91,7 +122,7 @@
|
|||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
|
@ -100,28 +131,40 @@
|
|||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
transform="translate(0,32)">
|
||||
<path
|
||||
style="opacity:0.5125;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 58.782886,-6.2838377 -16.03125,10.1875 c -1.838518,-1.386109 -4.113879,-2.25 -6.59375,-2.25 -6.066461,0 -11,4.933539 -11,10.9999997 0,0.780011 0.09541,1.54723 0.25,2.28125 l -15.5312495,9.875 3.5312495,5.5625 15.25,-9.6875 c 1.962454,1.831554 4.603867,2.9375 7.5,2.9375 6.066461,0 10.96875,-4.902289 10.96875,-10.96875 0,-1.17252 -0.159785,-2.315512 -0.5,-3.3749996 l 15.71875,-10.00000008 -3.5625,-5.56250002 z"
|
||||
id="rect3780-8"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.54299998;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3780"
|
||||
width="58.225712"
|
||||
height="8.5731106"
|
||||
x="-5.9577603"
|
||||
y="21.327433"
|
||||
width="57.972908"
|
||||
height="6.6166019"
|
||||
x="-3.088403"
|
||||
y="21.954212"
|
||||
transform="matrix(0.84392386,-0.53646298,0.53646298,0.84392386,0,0)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.54299998;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
style="color:#000000;fill:url(#linearGradient3766);fill-opacity:1;fill-rule:evenodd;stroke:#00092b;stroke-width:3.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path3782"
|
||||
sodipodi:cx="20.629047"
|
||||
sodipodi:cy="29.082434"
|
||||
sodipodi:rx="10.984299"
|
||||
sodipodi:ry="10.984299"
|
||||
d="m 31.613346,29.082434 a 10.984299,10.984299 0 1 1 -21.9685973,0 10.984299,10.984299 0 1 1 21.9685973,0 z"
|
||||
transform="translate(12.563742,-21.048974)" />
|
||||
transform="translate(14.83703,-21.048975)" />
|
||||
<path
|
||||
style="color:#000000;fill:#ff0c00;fill-opacity:1;fill-rule:evenodd;stroke:#470000;stroke-width:3.2386322;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 14.180392,-28.246295 0,12.195928 -9.29969,0 0,6.5670378 9.29969,0 7.139155,0 9.675435,0 0,-6.5670378 -9.675435,0 0,-12.195928 -7.139155,0 z"
|
||||
style="opacity:0.525;color:#000000;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.2386322;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 13.837304,-25.425773 0,17.8846493 -7.9063406,0 0,5.5831146 7.9063406,0 6.069514,0 8.225788,0 0,-5.5831146 -8.225788,0 0,-17.8846493 z"
|
||||
id="rect3784-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccccc" />
|
||||
<path
|
||||
style="color:#000000;fill:#00d8ba;fill-opacity:1;fill-rule:evenodd;stroke:#00473d;stroke-width:2.7533958;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 11.281486,-29.246676 0,17.88465 -7.9063407,0 0,5.5831144 7.9063407,0 6.069513,0 8.225788,0 0,-5.5831144 -8.225788,0 0,-17.88465 z"
|
||||
id="rect3784"
|
||||
inkscape:connector-curvature="0" />
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccccc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 6.8 KiB |
|
@ -14,8 +14,8 @@
|
|||
height="64px"
|
||||
id="svg3230"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Draft_Lock.svg"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="Snap_Lock.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<defs
|
||||
|
@ -37,11 +37,11 @@
|
|||
xlink:href="#linearGradient3273"
|
||||
id="radialGradient2411"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,1.0807499,0,-44.646407)"
|
||||
cx="2787.5991"
|
||||
cy="552.89736"
|
||||
fx="2787.5991"
|
||||
fy="552.89736"
|
||||
gradientTransform="matrix(1,0,0,1.0807499,5.629409,-41.831703)"
|
||||
cx="2780.5623"
|
||||
cy="543.78192"
|
||||
fx="2780.5623"
|
||||
fy="543.78192"
|
||||
r="38.829369" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
|
@ -101,7 +101,7 @@
|
|||
xlink:href="#linearGradient3255"
|
||||
id="linearGradient2403"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.7802234,0,0,1,599.85156,0)"
|
||||
gradientTransform="matrix(0.7890986,0,0,0.92684144,580.75719,52.023946)"
|
||||
x1="2732.3571"
|
||||
y1="711.11219"
|
||||
x2="2839.0713"
|
||||
|
@ -121,17 +121,17 @@
|
|||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.5"
|
||||
inkscape:cx="29.409228"
|
||||
inkscape:cy="27.320267"
|
||||
inkscape:current-layer="g2393"
|
||||
inkscape:zoom="3.8890873"
|
||||
inkscape:cx="51.419166"
|
||||
inkscape:cy="17.054101"
|
||||
inkscape:current-layer="g2383"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="755"
|
||||
inkscape:window-height="777"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata3235">
|
||||
|
@ -141,7 +141,7 @@
|
|||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
|
@ -160,13 +160,14 @@
|
|||
inkscape:export-xdpi="6.5019679"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/close.png"
|
||||
transform="translate(-6,-8)"
|
||||
id="g2385">
|
||||
id="g2385"
|
||||
style="stroke-width:15.48087467;stroke-miterlimit:4;stroke-dasharray:none">
|
||||
<path
|
||||
style="opacity:1;fill:#009573;fill-opacity:1;fill-rule:evenodd;stroke:#002a2d;stroke-width:7.74043732999999889;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
style="opacity:1;fill:#009573;fill-opacity:1;fill-rule:evenodd;stroke:#002a2d;stroke-width:15.48087467;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="M 2830.8888,516.4852 C 2788.1638,516.48519 2753.3894,551.24098 2752.5573,594.39382 L 2752.5325,594.39382 L 2752.5325,595.98531 L 2752.5325,663.15135 L 2782.0746,663.15135 L 2782.0746,594.39382 L 2782.0249,594.39382 C 2783.2954,567.56146 2805.1518,546.17652 2831.9083,546.17652 C 2859.0136,546.17651 2881.0583,568.08689 2881.7917,595.4631 L 2882.0155,595.4631 L 2882.0155,662.82807 L 2909.3195,662.82807 L 2909.3195,593.87161 L 2909.1952,593.87161 C 2908.0773,550.90388 2873.4234,516.48521 2830.8888,516.4852 z"
|
||||
id="path2387" />
|
||||
<rect
|
||||
style="opacity:1;fill:#009174;fill-opacity:1;fill-rule:evenodd;stroke:#002a2d;stroke-width:7.74043732999999978;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
style="opacity:1;fill:#009174;fill-opacity:1;fill-rule:evenodd;stroke:#002a2d;stroke-width:15.48087467;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect2389"
|
||||
width="190.15494"
|
||||
height="145.67435"
|
||||
|
@ -176,8 +177,9 @@
|
|||
<path
|
||||
sodipodi:nodetypes="csscccc"
|
||||
id="path2391"
|
||||
d="M 2814.5713,640.57648 C 2814.5713,640.57648 2799.0474,658.58964 2797.0164,678.07648 C 2794.4804,702.40726 2805.0972,709.14791 2807.3264,735.57648 C 2809.5556,762.00505 2800.0815,781.64791 2800.0815,781.64791 L 2732.3693,781.64791 L 2732.0906,640.93363 L 2814.5713,640.57648 z"
|
||||
style="fill:url(#linearGradient2403);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
d="m 2820.6698,645.73677 c 0,0 -15.7005,16.69534 -17.7546,34.75655 -2.5648,22.55078 8.1728,28.79829 10.4273,53.29339 2.2546,24.49509 -7.3273,42.70091 -7.3273,42.70091 l -68.4824,0 -0.2819,-130.41983 83.4189,-0.33102 z"
|
||||
style="fill:url(#linearGradient2403);fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
transform="translate(0,8)"
|
||||
id="g2393">
|
||||
|
@ -197,8 +199,9 @@
|
|||
<path
|
||||
sodipodi:nodetypes="csscczzzcc"
|
||||
id="path2401"
|
||||
d="M 2826.4285,510.93363 C 2826.4285,510.93363 2801.7856,510.57648 2784.6428,522.71934 C 2767.4999,534.8622 2758.9285,545.93363 2753.2142,563.07648 C 2747.4999,580.21934 2748.9285,590.93362 2748.9285,590.93362 L 2761.4285,594.8622 C 2761.4285,594.8622 2771.8749,595.84434 2773.5713,584.14791 C 2775.2612,572.49696 2776.6071,565.21933 2786.7857,553.79076 C 2796.9642,542.36219 2810.4463,537.27291 2819.9999,535.93363 C 2829.5108,534.60032 2828.2142,525.93363 2828.2142,525.93363 L 2826.4285,510.93363 z"
|
||||
style="fill:url(#radialGradient2411);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
d="m 2832.0579,513.74833 c 0,0 -24.6429,-0.35715 -41.7857,11.78571 -17.1429,12.14286 -25.7143,23.21429 -31.4286,40.35714 -5.7143,17.14286 -4.2857,27.85714 -4.2857,27.85714 l 12.5,3.92858 c 0,0 -0.3433,-0.89433 1.3531,-12.59076 1.6899,-11.65095 5.8505,-25.49622 16.0291,-36.92479 10.1785,-11.42857 27.8827,-17.92521 41.1892,-17.38802 13.3065,0.53719 8.2143,-2.025 8.2143,-2.025 z"
|
||||
style="fill:url(#radialGradient2411);fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
@ -7,7 +7,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>259</width>
|
||||
<height>491</height>
|
||||
<height>496</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
|
@ -122,22 +122,22 @@
|
|||
<widget class="QComboBox" name="rotate">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>0</string>
|
||||
<string notr="true">0</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>90</string>
|
||||
<string notr="true">90</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>180</string>
|
||||
<string notr="true">180</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>270</string>
|
||||
<string notr="true">270</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
|
|
0
src/Mod/Fem/App/AppFem.cpp
Normal file → Executable file
81
src/Mod/Fem/App/AppFemPy.cpp
Normal file → Executable file
|
@ -150,7 +150,82 @@ static PyObject * SMESH_PCA(PyObject *self, PyObject *args)
|
|||
Base::Matrix4D Trafo = pca.Transform();
|
||||
/*Let´s transform the input mesh with the PCA Matrix*/
|
||||
inputMesh->getFemMeshPtr()->transformGeometry(Trafo);
|
||||
//inputMesh->getFemMeshPtr()->getSMesh()->ExportUNV("C:/PCA_alignment.unv");
|
||||
//inputMesh->getFemMeshPtr()->getSMesh()->ExportUNV("C:/Temp/PCA_alignment.unv");
|
||||
//Now lets check if the smallest dimension of the BBox is oriented towards the Z-Axis. If not, lets rotate it around the X or Y axis
|
||||
//Use the SMESH structure for that
|
||||
// aMesh.Transform(Trafo);
|
||||
|
||||
//Base::Rotation rotatex,rotatey,rotatez;
|
||||
//const Base::Vector3d rotate_axis_x(1.0,0.0,0.0),rotate_axis_y(0.0,1.0,0.0),rotate_axis_z(0.0,0.0,1.0);
|
||||
//double bbox_length_x,bbox_length_y,bbox_length_z;
|
||||
////Rotate around the each axes and choose the settings for the min bbox
|
||||
//Base::Matrix4D final_trafo;
|
||||
//Base::BoundBox3f aBBox;
|
||||
////Get the current BBOX and look for the size
|
||||
//aBBox = aMesh.GetBoundBox();
|
||||
//bbox_length_x = aBBox.LengthX();bbox_length_y = aBBox.LengthY();bbox_length_z = aBBox.LengthZ();
|
||||
////Now do the rotation stuff
|
||||
//if (bbox_length_z < bbox_length_x && bbox_length_z < bbox_length_y)
|
||||
// Py_Return;
|
||||
//else if (
|
||||
|
||||
|
||||
//MeshCore::MeshKernel atempkernel;
|
||||
|
||||
//float it_steps=10.0;
|
||||
//double step_size;
|
||||
//double alpha_x=0.0,alpha_y=0.0,alpha_z=0.0;
|
||||
//double perfect_ax=0.0,perfect_ay=0.0,perfect_az=0.0;
|
||||
|
||||
////Do a Monte Carlo approach and start from the Principal Axis System
|
||||
////and rotate +/- 60° around each axis in a first iteration
|
||||
//double angle_range_min_x=-PI/3.0,angle_range_max_x=PI/3.0,
|
||||
// angle_range_min_y=-PI/3.0,angle_range_max_y=PI/3.0,
|
||||
// angle_range_min_z=-PI/3.0,angle_range_max_z=PI/3.0;
|
||||
|
||||
////We rotate until we are 0.1° sure to be in the right position
|
||||
//for (step_size = (2.0*PI/it_steps);step_size>(2.0*PI/3600.0);step_size=(2.0*PI/it_steps))
|
||||
//{
|
||||
// for(alpha_x=angle_range_min_x;alpha_x<angle_range_max_x;alpha_x=alpha_x+step_size)
|
||||
// {
|
||||
// rotatex.setValue(rotate_axis_x,alpha_x);
|
||||
// for(alpha_y=angle_range_min_y;alpha_y<angle_range_max_y;alpha_y=alpha_y+step_size)
|
||||
// {
|
||||
// rotatey.setValue(rotate_axis_y,alpha_y);
|
||||
// for(alpha_z=angle_range_min_z;alpha_z<angle_range_max_z;alpha_z=alpha_z+step_size)
|
||||
// {
|
||||
// rotatez.setValue(rotate_axis_z,alpha_z);
|
||||
// (rotatex*rotatey*rotatez).getValue(final_trafo);
|
||||
// atempkernel = aMesh;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} PY_CATCH;
|
||||
|
||||
Py_Return;
|
||||
|
@ -317,7 +392,7 @@ static PyObject * checkBB(PyObject *self, PyObject *args)
|
|||
const SMDS_MeshNode* aNode = aNodeIter->next();
|
||||
current_node.Set(float(aNode->X()),float(aNode->Y()),float(aNode->Z()));
|
||||
current_node = matrix * current_node;
|
||||
if(current_node.z > billet_thickness || current_node.z < 0.0)
|
||||
if(current_node.z > billet_thickness || current_node.z < -0.1)
|
||||
{
|
||||
//lets jump out of the function as soon as we find a
|
||||
//Node that is higher or lower than billet thickness
|
||||
|
@ -564,7 +639,7 @@ static PyObject * minBoundingBox(PyObject *self, PyObject *args)
|
|||
float(0.0),float(0.0),float(0.0),float(1.0));
|
||||
inputMesh->getFemMeshPtr()->transformGeometry(trans_matrix);
|
||||
|
||||
//inputMesh->getFemMeshPtr()->getSMesh()->ExportUNV("C:/fine_tuning.unv");
|
||||
//inputMesh->getFemMeshPtr()->getSMesh()->ExportUNV("C:/temp/fine_tuning.unv");
|
||||
|
||||
} PY_CATCH;
|
||||
|
||||
|
|
0
src/Mod/Fem/App/CMakeLists.txt
Normal file → Executable file
65
src/Mod/Fem/App/FemMesh.cpp
Normal file → Executable file
|
@ -58,9 +58,13 @@
|
|||
#include <StdMeshers_Quadrangle_2D.hxx>
|
||||
#include <StdMeshers_QuadraticMesh.hxx>
|
||||
|
||||
//to simplify parsing input files we use the boost lib
|
||||
#include <boost/tokenizer.hpp>
|
||||
|
||||
|
||||
using namespace Fem;
|
||||
using namespace Base;
|
||||
using namespace boost;
|
||||
|
||||
TYPESYSTEM_SOURCE(Fem::FemMesh , Base::Persistence);
|
||||
|
||||
|
@ -374,23 +378,32 @@ void FemMesh::readNastran(const std::string &Filename)
|
|||
inputfile.open(Filename.c_str());
|
||||
inputfile.seekg(std::ifstream::beg);
|
||||
std::string line1,line2,temp;
|
||||
std::vector<string> token_results;
|
||||
token_results.clear();
|
||||
Base::Vector3d current_node;
|
||||
std::vector<Base::Vector3d> vertices;
|
||||
vertices.clear();
|
||||
std::vector<unsigned int> nodal_id;
|
||||
nodal_id.clear();
|
||||
std::vector<unsigned int> tetra_element;
|
||||
std::vector<std::vector<unsigned int> > all_elements;
|
||||
std::vector<unsigned int> element_id;
|
||||
element_id.clear();
|
||||
bool nastran_free_format = false;
|
||||
do
|
||||
{
|
||||
std::getline(inputfile,line1);
|
||||
if (line1.size() == 0) continue;
|
||||
if (line1.find("GRID*")!= std::string::npos) //We found a Grid line
|
||||
if (!nastran_free_format && line1.find(",")!= std::string::npos)
|
||||
nastran_free_format = true;
|
||||
if (!nastran_free_format && line1.find("GRID*")!= std::string::npos ) //We found a Grid line
|
||||
{
|
||||
//Now lets extract the GRID Points = Nodes
|
||||
//As each GRID Line consists of two subsequent lines we have to
|
||||
//take care of that as well
|
||||
std::getline(inputfile,line2);
|
||||
//Get the Nodal ID
|
||||
nodal_id.push_back(atoi(line1.substr(8,24).c_str()));
|
||||
//Extract X Value
|
||||
current_node.x = atof(line1.substr(40,56).c_str());
|
||||
//Extract Y Value
|
||||
|
@ -400,7 +413,7 @@ void FemMesh::readNastran(const std::string &Filename)
|
|||
|
||||
vertices.push_back(current_node);
|
||||
}
|
||||
else if (line1.find("CTETRA")!= std::string::npos)
|
||||
else if (!nastran_free_format && line1.find("CTETRA")!= std::string::npos)
|
||||
{
|
||||
tetra_element.clear();
|
||||
//Lets extract the elements
|
||||
|
@ -422,6 +435,46 @@ void FemMesh::readNastran(const std::string &Filename)
|
|||
|
||||
all_elements.push_back(tetra_element);
|
||||
}
|
||||
else if (nastran_free_format && line1.find("GRID")!= std::string::npos ) //We found a Grid line
|
||||
{
|
||||
char_separator<char> sep(",");
|
||||
tokenizer<char_separator<char> > tokens(line1, sep);
|
||||
token_results.assign(tokens.begin(),tokens.end());
|
||||
if (token_results.size() < 3)
|
||||
continue;//Line does not include Nodal coordinates
|
||||
nodal_id.push_back(atoi(token_results[1].c_str()));
|
||||
current_node.x = atof(token_results[3].c_str());
|
||||
current_node.y = atof(token_results[4].c_str());
|
||||
current_node.z = atof(token_results[5].c_str());
|
||||
vertices.push_back(current_node);
|
||||
}
|
||||
else if (nastran_free_format && line1.find("CTETRA")!= std::string::npos)
|
||||
{
|
||||
tetra_element.clear();
|
||||
//Lets extract the elements
|
||||
//As each Element Line consists of two subsequent lines as well
|
||||
//we have to take care of that
|
||||
//At a first step we only extract Quadratic Tetrahedral Elements
|
||||
std::getline(inputfile,line2);
|
||||
char_separator<char> sep(",");
|
||||
tokenizer<char_separator<char> > tokens(line1.append(line2), sep);
|
||||
token_results.assign(tokens.begin(),tokens.end());
|
||||
if (token_results.size() < 11)
|
||||
continue;//Line does not include enough nodal IDs
|
||||
element_id.push_back(atoi(token_results[1].c_str()));
|
||||
tetra_element.push_back(atoi(token_results[3].c_str()));
|
||||
tetra_element.push_back(atoi(token_results[4].c_str()));
|
||||
tetra_element.push_back(atoi(token_results[5].c_str()));
|
||||
tetra_element.push_back(atoi(token_results[6].c_str()));
|
||||
tetra_element.push_back(atoi(token_results[7].c_str()));
|
||||
tetra_element.push_back(atoi(token_results[8].c_str()));
|
||||
tetra_element.push_back(atoi(token_results[10].c_str()));
|
||||
tetra_element.push_back(atoi(token_results[11].c_str()));
|
||||
tetra_element.push_back(atoi(token_results[12].c_str()));
|
||||
tetra_element.push_back(atoi(token_results[13].c_str()));
|
||||
|
||||
all_elements.push_back(tetra_element);
|
||||
}
|
||||
|
||||
}
|
||||
while (inputfile.good());
|
||||
|
@ -431,10 +484,10 @@ void FemMesh::readNastran(const std::string &Filename)
|
|||
std::vector<Base::Vector3d>::const_iterator anodeiterator;
|
||||
SMESHDS_Mesh* meshds = this->myMesh->GetMeshDS();
|
||||
meshds->ClearMesh();
|
||||
int j=1;
|
||||
unsigned int j=0;
|
||||
for(anodeiterator=vertices.begin(); anodeiterator!=vertices.end(); anodeiterator++)
|
||||
{
|
||||
meshds->AddNodeWithID((*anodeiterator).x,(*anodeiterator).y,(*anodeiterator).z,j);
|
||||
meshds->AddNodeWithID((*anodeiterator).x,(*anodeiterator).y,(*anodeiterator).z,nodal_id[j]);
|
||||
j++;
|
||||
}
|
||||
|
||||
|
@ -442,7 +495,8 @@ void FemMesh::readNastran(const std::string &Filename)
|
|||
{
|
||||
//Die Reihenfolge wie hier die Elemente hinzugefügt werden ist sehr wichtig.
|
||||
//Ansonsten ist eine konsistente Datenstruktur nicht möglich
|
||||
meshds->AddVolumeWithID(
|
||||
meshds->AddVolumeWithID
|
||||
(
|
||||
meshds->FindNode(all_elements[i][0]),
|
||||
meshds->FindNode(all_elements[i][2]),
|
||||
meshds->FindNode(all_elements[i][1]),
|
||||
|
@ -458,6 +512,7 @@ void FemMesh::readNastran(const std::string &Filename)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void FemMesh::read(const char *FileName)
|
||||
{
|
||||
Base::FileInfo File(FileName);
|
||||
|
|
0
src/Mod/Fem/App/FemMesh.h
Normal file → Executable file
0
src/Mod/Fem/App/FemMeshObject.cpp
Normal file → Executable file
0
src/Mod/Fem/App/FemMeshObject.h
Normal file → Executable file
0
src/Mod/Fem/App/FemMeshProperty.cpp
Normal file → Executable file
0
src/Mod/Fem/App/FemMeshProperty.h
Normal file → Executable file
0
src/Mod/Fem/App/FemMeshPy.xml
Normal file → Executable file
0
src/Mod/Fem/App/FemMeshPyImp.cpp
Normal file → Executable file
0
src/Mod/Fem/App/HypothesisPy.cpp
Normal file → Executable file
0
src/Mod/Fem/App/HypothesisPy.h
Normal file → Executable file
0
src/Mod/Fem/App/Makefile.am
Normal file → Executable file
0
src/Mod/Fem/App/PreCompiled.cpp
Normal file → Executable file
0
src/Mod/Fem/App/PreCompiled.h
Normal file → Executable file
0
src/Mod/Fem/CMakeLists.txt
Normal file → Executable file
0
src/Mod/Fem/FemExample.py
Normal file → Executable file
0
src/Mod/Fem/Gui/AppFemGui.cpp
Normal file → Executable file
0
src/Mod/Fem/Gui/AppFemGuiPy.cpp
Normal file → Executable file
0
src/Mod/Fem/Gui/CMakeLists.txt
Normal file → Executable file
0
src/Mod/Fem/Gui/Command.cpp
Normal file → Executable file
0
src/Mod/Fem/Gui/Makefile.am
Normal file → Executable file
0
src/Mod/Fem/Gui/PreCompiled.cpp
Normal file → Executable file
0
src/Mod/Fem/Gui/PreCompiled.h
Normal file → Executable file
0
src/Mod/Fem/Gui/Resources/Fem.qrc
Normal file → Executable file
0
src/Mod/Fem/Gui/Resources/Makefile.am
Normal file → Executable file
0
src/Mod/Fem/Gui/Resources/UpdateResources.bat
Normal file → Executable file
0
src/Mod/Fem/Gui/Resources/icons/Fem_FemMesh.svg
Normal file → Executable file
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |