revidsed assembly constraint gui interaction
|
@ -34,13 +34,8 @@
|
||||||
#include "ItemAssembly.h"
|
#include "ItemAssembly.h"
|
||||||
#include "ItemPart.h"
|
#include "ItemPart.h"
|
||||||
|
|
||||||
#include "ConstraintAngle.h"
|
#include "Constraint.h"
|
||||||
#include "ConstraintCoincidence.h"
|
|
||||||
#include "ConstraintFix.h"
|
|
||||||
#include "ConstraintGroup.h"
|
#include "ConstraintGroup.h"
|
||||||
#include "ConstraintAlignment.h"
|
|
||||||
#include "ConstraintDistance.h"
|
|
||||||
#include "ConstraintOrientation.h"
|
|
||||||
|
|
||||||
|
|
||||||
extern struct PyMethodDef Assembly_methods[];
|
extern struct PyMethodDef Assembly_methods[];
|
||||||
|
@ -80,12 +75,6 @@ void AssemblyExport initAssembly()
|
||||||
|
|
||||||
// constraint hirachy
|
// constraint hirachy
|
||||||
Assembly::Constraint ::init();
|
Assembly::Constraint ::init();
|
||||||
Assembly::ConstraintAngle ::init();
|
|
||||||
Assembly::ConstraintDistance::init();
|
|
||||||
Assembly::ConstraintCoincidence::init();
|
|
||||||
Assembly::ConstraintFix ::init();
|
|
||||||
Assembly::ConstraintAlignment ::init();
|
|
||||||
Assembly::ConstraintOrientation::init();
|
|
||||||
Assembly::ConstraintGroup ::init();
|
Assembly::ConstraintGroup ::init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,18 +45,6 @@ SET(Features_SRCS
|
||||||
Constraint.h
|
Constraint.h
|
||||||
ConstraintGroup.cpp
|
ConstraintGroup.cpp
|
||||||
ConstraintGroup.h
|
ConstraintGroup.h
|
||||||
ConstraintAngle.cpp
|
|
||||||
ConstraintAngle.h
|
|
||||||
ConstraintDistance.cpp
|
|
||||||
ConstraintDistance.h
|
|
||||||
ConstraintCoincidence.cpp
|
|
||||||
ConstraintCoincidence.h
|
|
||||||
ConstraintFix.cpp
|
|
||||||
ConstraintFix.h
|
|
||||||
ConstraintAlignment.cpp
|
|
||||||
ConstraintAlignment.h
|
|
||||||
ConstraintOrientation.cpp
|
|
||||||
ConstraintOrientation.h
|
|
||||||
)
|
)
|
||||||
SOURCE_GROUP("Features" FILES ${Features_SRCS})
|
SOURCE_GROUP("Features" FILES ${Features_SRCS})
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
#ifndef _PreComp_
|
#ifndef _PreComp_
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
#include <Standard_Failure.hxx>
|
#include <Standard_Failure.hxx>
|
||||||
#include <TopTools_IndexedMapOfShape.hxx>
|
#include <TopTools_IndexedMapOfShape.hxx>
|
||||||
#include <TopExp.hxx>
|
#include <TopExp.hxx>
|
||||||
|
@ -57,7 +59,14 @@ using namespace Assembly;
|
||||||
namespace Assembly {
|
namespace Assembly {
|
||||||
|
|
||||||
struct ConstraintInitException : std::exception {
|
struct ConstraintInitException : std::exception {
|
||||||
const char* what() const throw() { return "Constraint cout not be initialised: unsoported geometry";}
|
const char* what() const throw() {
|
||||||
|
return "Constraint cout not be initialised: unsoported geometry";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
struct ConstraintLinkException : std::exception {
|
||||||
|
const char* what() const throw() {
|
||||||
|
return "Constraint cout not be initialised: unsoported link type";
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
PROPERTY_SOURCE(Assembly::Constraint, App::DocumentObject)
|
PROPERTY_SOURCE(Assembly::Constraint, App::DocumentObject)
|
||||||
|
@ -66,6 +75,26 @@ Constraint::Constraint()
|
||||||
{
|
{
|
||||||
ADD_PROPERTY(First, (0));
|
ADD_PROPERTY(First, (0));
|
||||||
ADD_PROPERTY(Second,(0));
|
ADD_PROPERTY(Second,(0));
|
||||||
|
ADD_PROPERTY(Value,(0));
|
||||||
|
ADD_PROPERTY(Orientation, (long(0)));
|
||||||
|
ADD_PROPERTY(Type, (long(6)));
|
||||||
|
|
||||||
|
std::vector<std::string> vec;
|
||||||
|
vec.push_back("Parallel");
|
||||||
|
vec.push_back("Equal");
|
||||||
|
vec.push_back("Opposite");
|
||||||
|
vec.push_back("Perpendicular");
|
||||||
|
Orientation.setEnumVector(vec);
|
||||||
|
|
||||||
|
std::vector<std::string> vec2;
|
||||||
|
vec2.push_back("Fix");
|
||||||
|
vec2.push_back("Distance");
|
||||||
|
vec2.push_back("Orientation");
|
||||||
|
vec2.push_back("Angle");
|
||||||
|
vec2.push_back("Align");
|
||||||
|
vec2.push_back("Coincident");
|
||||||
|
vec2.push_back("None");
|
||||||
|
Type.setEnumVector(vec2);
|
||||||
}
|
}
|
||||||
|
|
||||||
short Constraint::mustExecute() const
|
short Constraint::mustExecute() const
|
||||||
|
@ -76,7 +105,7 @@ short Constraint::mustExecute() const
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
App::DocumentObjectExecReturn *Constraint::execute(void)
|
App::DocumentObjectExecReturn* Constraint::execute(void)
|
||||||
{
|
{
|
||||||
touch();
|
touch();
|
||||||
return App::DocumentObject::StdReturn;
|
return App::DocumentObject::StdReturn;
|
||||||
|
@ -84,9 +113,13 @@ App::DocumentObjectExecReturn *Constraint::execute(void)
|
||||||
|
|
||||||
boost::shared_ptr<Geometry3D> Constraint::initLink(App::PropertyLinkSub& link) {
|
boost::shared_ptr<Geometry3D> Constraint::initLink(App::PropertyLinkSub& link) {
|
||||||
|
|
||||||
|
//empty links are allows
|
||||||
|
if(!link.getValue())
|
||||||
|
return boost::shared_ptr<Geometry3D>();
|
||||||
|
|
||||||
//check if we have Assembly::ItemPart
|
//check if we have Assembly::ItemPart
|
||||||
if( link.getValue()->getTypeId() != ItemPart::getClassTypeId() ) {
|
if(link.getValue()->getTypeId() != ItemPart::getClassTypeId()) {
|
||||||
Base::Console().Message("Link is not ItemPart, the constraint is invalid\n");
|
throw ConstraintLinkException();
|
||||||
return boost::shared_ptr<Geometry3D>();
|
return boost::shared_ptr<Geometry3D>();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -103,16 +136,72 @@ boost::shared_ptr<Geometry3D> Constraint::initLink(App::PropertyLinkSub& link) {
|
||||||
|
|
||||||
void Constraint::init(Assembly::ItemAssembly* ass)
|
void Constraint::init(Assembly::ItemAssembly* ass)
|
||||||
{
|
{
|
||||||
m_first_geom = initLink(First);
|
Assembly::ItemPart* part1, *part2;
|
||||||
m_second_geom = initLink(Second);
|
|
||||||
|
|
||||||
if(!m_first_geom || !m_second_geom)
|
if(First.getValue()) {
|
||||||
throw ConstraintInitException();
|
m_first_geom = initLink(First);
|
||||||
|
part1 = static_cast<Assembly::ItemPart*>(First.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Second.getValue()) {
|
||||||
|
m_second_geom = initLink(Second);
|
||||||
|
part2= static_cast<Assembly::ItemPart*>(Second.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
//fix constraint
|
||||||
|
if(Type.getValue() == 0) {
|
||||||
|
if(part1)
|
||||||
|
part1->m_part->fix(true);
|
||||||
|
else
|
||||||
|
if(part2)
|
||||||
|
part2->m_part->fix(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
//all other constraints need poth parts
|
||||||
|
if(!part1 || !part2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//we may need the orientation
|
||||||
|
dcm::Direction dir;
|
||||||
|
switch(Orientation.getValue()) {
|
||||||
|
case 0:
|
||||||
|
dir = dcm::parallel;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
dir = dcm::equal;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
dir = dcm::opposite;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dir = dcm::perpendicular;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
//distance constraint
|
||||||
|
if(Type.getValue() == 1)
|
||||||
|
m_constraint = ass->m_solver->createConstraint3D(getNameInDocument(), m_first_geom, m_second_geom, dcm::distance = Value.getValue());
|
||||||
|
|
||||||
|
//orientation constraint
|
||||||
|
if(Type.getValue() == 2)
|
||||||
|
m_constraint = ass->m_solver->createConstraint3D(getNameInDocument(), m_first_geom, m_second_geom, dcm::orientation = dir);
|
||||||
|
|
||||||
|
//angle constraint
|
||||||
|
if(Type.getValue() == 3)
|
||||||
|
m_constraint = ass->m_solver->createConstraint3D(getNameInDocument(), m_first_geom, m_second_geom, dcm::angle = Value.getValue()*M_PI/180.);
|
||||||
|
|
||||||
|
//alignemnt constraint
|
||||||
|
if(Type.getValue() == 4)
|
||||||
|
m_constraint = ass->m_solver->createConstraint3D(getNameInDocument(), m_first_geom, m_second_geom, dcm::alignment(dir, Value.getValue()));
|
||||||
|
|
||||||
|
//coincident constraint
|
||||||
|
if(Type.getValue() == 5)
|
||||||
|
m_constraint = ass->m_solver->createConstraint3D(getNameInDocument(), m_first_geom, m_second_geom, dcm::coincidence = dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *Constraint::getPyObject(void)
|
PyObject* Constraint::getPyObject(void)
|
||||||
{
|
{
|
||||||
if (PythonObject.is(Py::_None())){
|
if(PythonObject.is(Py::_None())) {
|
||||||
// ref counter is set to 1
|
// ref counter is set to 1
|
||||||
PythonObject = Py::Object(new ConstraintPy(this),true);
|
PythonObject = Py::Object(new ConstraintPy(this),true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,9 @@ public:
|
||||||
|
|
||||||
App::PropertyLinkSub First;
|
App::PropertyLinkSub First;
|
||||||
App::PropertyLinkSub Second;
|
App::PropertyLinkSub Second;
|
||||||
|
App::PropertyFloat Value;
|
||||||
|
App::PropertyEnumeration Orientation;
|
||||||
|
App::PropertyEnumeration Type;
|
||||||
|
|
||||||
/** @name methods override feature */
|
/** @name methods override feature */
|
||||||
//@{
|
//@{
|
||||||
|
@ -60,13 +63,13 @@ public:
|
||||||
short mustExecute() const;
|
short mustExecute() const;
|
||||||
/// returns the type name of the view provider
|
/// returns the type name of the view provider
|
||||||
const char* getViewProviderName(void) const {
|
const char* getViewProviderName(void) const {
|
||||||
return "Gui::ViewProviderDocumentObject";
|
return "AssemblyGui::ViewProviderConstraint";
|
||||||
}
|
}
|
||||||
PyObject *getPyObject(void);
|
PyObject *getPyObject(void);
|
||||||
|
|
||||||
/** @brief initialize the constraint in the assembly solver
|
/** @brief initialize the constraint in the assembly solver
|
||||||
*/
|
*/
|
||||||
virtual void init(Assembly::ItemAssembly* ass);
|
void init(Assembly::ItemAssembly* ass);
|
||||||
};
|
};
|
||||||
|
|
||||||
} //namespace Assembly
|
} //namespace Assembly
|
||||||
|
|
|
@ -1,87 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2010 Juergen Riegel <FreeCAD@juergen-riegel.net> *
|
|
||||||
* *
|
|
||||||
* 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"
|
|
||||||
#ifndef _PreComp_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Base/Placement.h>
|
|
||||||
|
|
||||||
#include "ConstraintAlignment.h"
|
|
||||||
|
|
||||||
|
|
||||||
using namespace Assembly;
|
|
||||||
|
|
||||||
namespace Assembly {
|
|
||||||
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(Assembly::ConstraintAlignment, Assembly::Constraint)
|
|
||||||
|
|
||||||
ConstraintAlignment::ConstraintAlignment()
|
|
||||||
{
|
|
||||||
ADD_PROPERTY(Offset,(0));
|
|
||||||
ADD_PROPERTY(Orientation, (long(0)));
|
|
||||||
|
|
||||||
std::vector<std::string> vec;
|
|
||||||
vec.push_back("Parallel");
|
|
||||||
vec.push_back("Equal");
|
|
||||||
vec.push_back("Opposite");
|
|
||||||
Orientation.setEnumVector(vec);
|
|
||||||
}
|
|
||||||
|
|
||||||
short ConstraintAlignment::mustExecute() const
|
|
||||||
{
|
|
||||||
//if (Sketch.isTouched() ||
|
|
||||||
// Length.isTouched())
|
|
||||||
// return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
App::DocumentObjectExecReturn *ConstraintAlignment::execute(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
return App::DocumentObject::StdReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConstraintAlignment::init(Assembly::ItemAssembly* ass) {
|
|
||||||
|
|
||||||
//cant use the base class init as we only need one part
|
|
||||||
Constraint::init(ass);
|
|
||||||
|
|
||||||
//init the constraint
|
|
||||||
dcm::Direction dir;
|
|
||||||
switch(Orientation.getValue()) {
|
|
||||||
case 0:
|
|
||||||
dir = dcm::parallel;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
dir = dcm::equal;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
dir = dcm::opposite;
|
|
||||||
};
|
|
||||||
|
|
||||||
m_constraint = ass->m_solver->createConstraint3D(getNameInDocument(), m_first_geom, m_second_geom, dcm::alignment(dir, Offset.getValue()));
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,61 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2010 Juergen Riegel <FreeCAD@juergen-riegel.net> *
|
|
||||||
* *
|
|
||||||
* 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 Assembly_ConstraintAlignment_H
|
|
||||||
#define Assembly_ConstraintAlignment_H
|
|
||||||
|
|
||||||
#include <App/PropertyStandard.h>
|
|
||||||
#include "Constraint.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Assembly
|
|
||||||
{
|
|
||||||
|
|
||||||
class AssemblyExport ConstraintAlignment : public Assembly::Constraint
|
|
||||||
{
|
|
||||||
PROPERTY_HEADER(Assembly::ConstraintAlignment);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ConstraintAlignment();
|
|
||||||
|
|
||||||
App::PropertyFloat Offset;
|
|
||||||
App::PropertyEnumeration Orientation;
|
|
||||||
|
|
||||||
/** @name methods override feature */
|
|
||||||
//@{
|
|
||||||
/// recalculate the feature
|
|
||||||
App::DocumentObjectExecReturn *execute(void);
|
|
||||||
short mustExecute() const;
|
|
||||||
/// returns the type name of the view provider
|
|
||||||
const char* getViewProviderName(void) const {
|
|
||||||
return "AssemblyGui::ViewProviderConstraintAlignment";
|
|
||||||
}
|
|
||||||
//@}
|
|
||||||
|
|
||||||
virtual void init(Assembly::ItemAssembly* ass);
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace PartDesign
|
|
||||||
|
|
||||||
|
|
||||||
#endif // PART_ConstraintAlignment_H
|
|
|
@ -1,69 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2010 Juergen Riegel <FreeCAD@juergen-riegel.net> *
|
|
||||||
* *
|
|
||||||
* 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"
|
|
||||||
#ifndef _PreComp_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Base/Placement.h>
|
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
#include "ConstraintAngle.h"
|
|
||||||
|
|
||||||
|
|
||||||
using namespace Assembly;
|
|
||||||
|
|
||||||
namespace Assembly {
|
|
||||||
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(Assembly::ConstraintAngle, Assembly::Constraint)
|
|
||||||
|
|
||||||
ConstraintAngle::ConstraintAngle()
|
|
||||||
{
|
|
||||||
ADD_PROPERTY(Angle,(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
short ConstraintAngle::mustExecute() const
|
|
||||||
{
|
|
||||||
//if (Sketch.isTouched() ||
|
|
||||||
// Length.isTouched())
|
|
||||||
// return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
App::DocumentObjectExecReturn *ConstraintAngle::execute(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
return App::DocumentObject::StdReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConstraintAngle::init(Assembly::ItemAssembly* ass)
|
|
||||||
{
|
|
||||||
//init the parts and geometries
|
|
||||||
Constraint::init(ass);
|
|
||||||
|
|
||||||
//init the constraint
|
|
||||||
m_constraint = ass->m_solver->createConstraint3D(getNameInDocument(), m_first_geom, m_second_geom, dcm::angle = Angle.getValue()*M_PI/180.);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2010 Juergen Riegel <FreeCAD@juergen-riegel.net> *
|
|
||||||
* *
|
|
||||||
* 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 Assembly_ConstraintAngle_H
|
|
||||||
#define Assembly_ConstraintAngle_H
|
|
||||||
|
|
||||||
#include <App/PropertyStandard.h>
|
|
||||||
#include "Constraint.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Assembly
|
|
||||||
{
|
|
||||||
|
|
||||||
class AssemblyExport ConstraintAngle : public Assembly::Constraint
|
|
||||||
{
|
|
||||||
PROPERTY_HEADER(Assembly::ConstraintAngle);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ConstraintAngle();
|
|
||||||
|
|
||||||
App::PropertyFloat Angle;
|
|
||||||
|
|
||||||
/** @name methods override feature */
|
|
||||||
//@{
|
|
||||||
/// recalculate the feature
|
|
||||||
App::DocumentObjectExecReturn *execute(void);
|
|
||||||
short mustExecute() const;
|
|
||||||
/// returns the type name of the view provider
|
|
||||||
const char* getViewProviderName(void) const {
|
|
||||||
return "AssemblyGui::ViewProviderConstraintAngle";
|
|
||||||
}
|
|
||||||
//@}
|
|
||||||
|
|
||||||
virtual void init(Assembly::ItemAssembly* ass);
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace Assembly
|
|
||||||
|
|
||||||
|
|
||||||
#endif // Assembly_ConstraintAngle_H
|
|
|
@ -1,87 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2012 Juergen Riegel <FreeCAD@juergen-riegel.net> *
|
|
||||||
* *
|
|
||||||
* 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"
|
|
||||||
#ifndef _PreComp_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Base/Placement.h>
|
|
||||||
|
|
||||||
#include "ConstraintCoincidence.h"
|
|
||||||
|
|
||||||
|
|
||||||
using namespace Assembly;
|
|
||||||
|
|
||||||
namespace Assembly {
|
|
||||||
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(Assembly::ConstraintCoincidence, Assembly::Constraint)
|
|
||||||
|
|
||||||
ConstraintCoincidence::ConstraintCoincidence()
|
|
||||||
{
|
|
||||||
|
|
||||||
ADD_PROPERTY(Orientation, (long(0)));
|
|
||||||
|
|
||||||
std::vector<std::string> vec;
|
|
||||||
vec.push_back("Parallel");
|
|
||||||
vec.push_back("Equal");
|
|
||||||
vec.push_back("Opposite");
|
|
||||||
Orientation.setEnumVector(vec);
|
|
||||||
}
|
|
||||||
|
|
||||||
short ConstraintCoincidence::mustExecute() const
|
|
||||||
{
|
|
||||||
//if (Sketch.isTouched() ||
|
|
||||||
// Length.isTouched())
|
|
||||||
// return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
App::DocumentObjectExecReturn *ConstraintCoincidence::execute(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
return App::DocumentObject::StdReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConstraintCoincidence::init(Assembly::ItemAssembly* ass) {
|
|
||||||
|
|
||||||
//cant use the base class init as we only need one part
|
|
||||||
Constraint::init(ass);
|
|
||||||
|
|
||||||
//init the constraint
|
|
||||||
dcm::Direction dir;
|
|
||||||
switch(Orientation.getValue()) {
|
|
||||||
case 0:
|
|
||||||
dir = dcm::parallel;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
dir = dcm::equal;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
dir = dcm::opposite;
|
|
||||||
};
|
|
||||||
|
|
||||||
m_constraint = ass->m_solver->createConstraint3D(getNameInDocument(), m_first_geom, m_second_geom, dcm::coincidence = dir);
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2012 Juergen Riegel <FreeCAD@juergen-riegel.net> *
|
|
||||||
* *
|
|
||||||
* 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 Assembly_ConstraintCoincidence_H
|
|
||||||
#define Assembly_ConstraintCoincidence_H
|
|
||||||
|
|
||||||
#include <App/PropertyStandard.h>
|
|
||||||
#include "Constraint.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Assembly
|
|
||||||
{
|
|
||||||
|
|
||||||
class AssemblyExport ConstraintCoincidence : public Assembly::Constraint
|
|
||||||
{
|
|
||||||
PROPERTY_HEADER(Assembly::ConstraintCoincidence);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ConstraintCoincidence();
|
|
||||||
|
|
||||||
App::PropertyEnumeration Orientation;
|
|
||||||
|
|
||||||
/** @name methods override feature */
|
|
||||||
//@{
|
|
||||||
/// recalculate the feature
|
|
||||||
App::DocumentObjectExecReturn *execute(void);
|
|
||||||
short mustExecute() const;
|
|
||||||
/// returns the type name of the view provider
|
|
||||||
const char* getViewProviderName(void) const {
|
|
||||||
return "AssemblyGui::ViewProviderConstraintCoincidence";
|
|
||||||
}
|
|
||||||
//@}
|
|
||||||
|
|
||||||
virtual void init(Assembly::ItemAssembly* ass);
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace Assembly
|
|
||||||
|
|
||||||
|
|
||||||
#endif // Assembly_ConstraintCoincidence_H
|
|
|
@ -1,83 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2012 Juergen Riegel <FreeCAD@juergen-riegel.net>
|
|
||||||
* 2013 Stefan Tröger <stefantroeger@gmx.net>
|
|
||||||
* *
|
|
||||||
* 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"
|
|
||||||
#ifndef _PreComp_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Base/Placement.h>
|
|
||||||
#include <Base/Console.h>
|
|
||||||
|
|
||||||
#include "ConstraintDistance.h"
|
|
||||||
#include "ConstraintPy.h"
|
|
||||||
|
|
||||||
#include "ItemPart.h"
|
|
||||||
|
|
||||||
using namespace Assembly;
|
|
||||||
|
|
||||||
namespace Assembly {
|
|
||||||
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(Assembly::ConstraintDistance, Assembly::Constraint)
|
|
||||||
|
|
||||||
ConstraintDistance::ConstraintDistance()
|
|
||||||
{
|
|
||||||
ADD_PROPERTY(Distance,(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
PyObject *ConstraintDistance::getPyObject(void)
|
|
||||||
{
|
|
||||||
if (PythonObject.is(Py::_None())){
|
|
||||||
// ref counter is set to 1
|
|
||||||
PythonObject = Py::Object(new ConstraintPy(this),true);
|
|
||||||
}
|
|
||||||
return Py::new_reference_to(PythonObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
short ConstraintDistance::mustExecute() const
|
|
||||||
{
|
|
||||||
//if (Sketch.isTouched() ||
|
|
||||||
// Length.isTouched())
|
|
||||||
// return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
App::DocumentObjectExecReturn *ConstraintDistance::execute(void)
|
|
||||||
{
|
|
||||||
Base::Console().Message("Recalculate axis constraint\n");
|
|
||||||
touch();
|
|
||||||
return App::DocumentObject::StdReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConstraintDistance::init(Assembly::ItemAssembly* ass)
|
|
||||||
{
|
|
||||||
//init the parts and geometries
|
|
||||||
Constraint::init(ass);
|
|
||||||
|
|
||||||
//init the constraint
|
|
||||||
m_constraint = ass->m_solver->createConstraint3D(getNameInDocument(), m_first_geom, m_second_geom, dcm::distance = Distance.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2012 Juergen Riegel <FreeCAD@juergen-riegel.net> *
|
|
||||||
* *
|
|
||||||
* 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 Assembly_ConstraintAxis_H
|
|
||||||
#define Assembly_ConstraintAxis_H
|
|
||||||
|
|
||||||
#include <App/PropertyStandard.h>
|
|
||||||
#include "Constraint.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Assembly
|
|
||||||
{
|
|
||||||
|
|
||||||
class AssemblyExport ConstraintDistance : public Assembly::Constraint
|
|
||||||
{
|
|
||||||
PROPERTY_HEADER(Assembly::ConstraintAxis);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ConstraintDistance();
|
|
||||||
|
|
||||||
App::PropertyFloat Distance;
|
|
||||||
|
|
||||||
PyObject *getPyObject(void);
|
|
||||||
|
|
||||||
/** @name methods override feature */
|
|
||||||
//@{
|
|
||||||
/// recalculate the feature
|
|
||||||
App::DocumentObjectExecReturn *execute(void);
|
|
||||||
short mustExecute() const;
|
|
||||||
/// returns the type name of the view provider
|
|
||||||
const char* getViewProviderName(void) const {
|
|
||||||
return "AssemblyGui::ViewProviderConstraintDistance";
|
|
||||||
}
|
|
||||||
//@}
|
|
||||||
|
|
||||||
virtual void init(Assembly::ItemAssembly* ass);
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace Assembly
|
|
||||||
|
|
||||||
|
|
||||||
#endif // Assembly_ConstraintAxis_H
|
|
|
@ -1,59 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2010 Juergen Riegel <FreeCAD@juergen-riegel.net> *
|
|
||||||
* *
|
|
||||||
* 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 Assembly_ConstraintFix_H
|
|
||||||
#define Assembly_ConstraintFix_H
|
|
||||||
|
|
||||||
#include <App/PropertyStandard.h>
|
|
||||||
#include "Constraint.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Assembly
|
|
||||||
{
|
|
||||||
|
|
||||||
class AssemblyExport ConstraintFix : public Assembly::Constraint
|
|
||||||
{
|
|
||||||
PROPERTY_HEADER(Assembly::ConstraintFix);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ConstraintFix();
|
|
||||||
~ConstraintFix();
|
|
||||||
|
|
||||||
/** @name methods override feature */
|
|
||||||
//@{
|
|
||||||
/// recalculate the feature
|
|
||||||
App::DocumentObjectExecReturn *execute(void);
|
|
||||||
short mustExecute() const;
|
|
||||||
/// returns the type name of the view provider
|
|
||||||
const char* getViewProviderName(void) const {
|
|
||||||
return "AssemblyGui::ViewProviderConstraintFix";
|
|
||||||
}
|
|
||||||
//@}
|
|
||||||
|
|
||||||
virtual void init(Assembly::ItemAssembly* ass);
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace Assembly
|
|
||||||
|
|
||||||
|
|
||||||
#endif // Assembly_ConstraintFix_H
|
|
|
@ -1,93 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2012 Juergen Riegel <FreeCAD@juergen-riegel.net>
|
|
||||||
* 2013 Stefan Tröger <stefantroeger@gmx.net>
|
|
||||||
* *
|
|
||||||
* 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"
|
|
||||||
#ifndef _PreComp_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <Base/Placement.h>
|
|
||||||
#include <Base/Console.h>
|
|
||||||
|
|
||||||
#include "ConstraintOrientation.h"
|
|
||||||
#include "ConstraintPy.h"
|
|
||||||
|
|
||||||
#include "ItemPart.h"
|
|
||||||
|
|
||||||
|
|
||||||
using namespace Assembly;
|
|
||||||
|
|
||||||
namespace Assembly {
|
|
||||||
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(Assembly::ConstraintOrientation, Assembly::Constraint)
|
|
||||||
|
|
||||||
ConstraintOrientation::ConstraintOrientation() {
|
|
||||||
ADD_PROPERTY(Orientation, (long(0)));
|
|
||||||
|
|
||||||
std::vector<std::string> vec;
|
|
||||||
vec.push_back("Parallel");
|
|
||||||
vec.push_back("Perpendicular");
|
|
||||||
vec.push_back("Equal");
|
|
||||||
vec.push_back("Opposite");
|
|
||||||
Orientation.setEnumVector(vec);
|
|
||||||
}
|
|
||||||
|
|
||||||
short ConstraintOrientation::mustExecute() const {
|
|
||||||
//if (Sketch.isTouched() ||
|
|
||||||
// Length.isTouched())
|
|
||||||
// return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
App::DocumentObjectExecReturn* ConstraintOrientation::execute(void) {
|
|
||||||
Base::Console().Message("Recalculate orientation constraint\n");
|
|
||||||
touch();
|
|
||||||
return App::DocumentObject::StdReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConstraintOrientation::init(Assembly::ItemAssembly* ass) {
|
|
||||||
//init the parts and geometries
|
|
||||||
Constraint::init(ass);
|
|
||||||
|
|
||||||
//init the constraint
|
|
||||||
dcm::Direction dir;
|
|
||||||
switch(Orientation.getValue()) {
|
|
||||||
case 0:
|
|
||||||
dir = dcm::parallel;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
dir = dcm::perpendicular;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
dir = dcm::equal;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
dir = dcm::opposite;
|
|
||||||
};
|
|
||||||
|
|
||||||
m_constraint = ass->m_solver->createConstraint3D(getNameInDocument(), m_first_geom, m_second_geom, dcm::orientation = dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2012 Juergen Riegel <FreeCAD@juergen-riegel.net> *
|
|
||||||
* *
|
|
||||||
* 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 Assembly_ConstraintOrientation_H
|
|
||||||
#define Assembly_ConstraintOrientation_H
|
|
||||||
|
|
||||||
#include <App/PropertyStandard.h>
|
|
||||||
#include "Constraint.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace Assembly
|
|
||||||
{
|
|
||||||
|
|
||||||
class AssemblyExport ConstraintOrientation : public Assembly::Constraint
|
|
||||||
{
|
|
||||||
PROPERTY_HEADER(Assembly::ConstraintOrientation);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ConstraintOrientation();
|
|
||||||
|
|
||||||
App::PropertyEnumeration Orientation;
|
|
||||||
|
|
||||||
/** @name methods override feature */
|
|
||||||
//@{
|
|
||||||
/// recalculate the feature
|
|
||||||
App::DocumentObjectExecReturn *execute(void);
|
|
||||||
short mustExecute() const;
|
|
||||||
/// returns the type name of the view provider
|
|
||||||
const char* getViewProviderName(void) const {
|
|
||||||
return "AssemblyGui::ViewProviderConstraintOrientation";
|
|
||||||
}
|
|
||||||
//@}
|
|
||||||
|
|
||||||
virtual void init(Assembly::ItemAssembly* ass);
|
|
||||||
};
|
|
||||||
|
|
||||||
} //namespace Assembly
|
|
||||||
|
|
||||||
|
|
||||||
#endif // Assembly_ConstraintAxis_H
|
|
|
@ -84,7 +84,9 @@ App::DocumentObjectExecReturn* ItemAssembly::execute(void) {
|
||||||
*boost::get_error_info<boost::errinfo_errno>(e),
|
*boost::get_error_info<boost::errinfo_errno>(e),
|
||||||
boost::get_error_info<dcm::error_message>(e)->c_str());
|
boost::get_error_info<dcm::error_message>(e)->c_str());
|
||||||
}
|
}
|
||||||
|
catch(std::exception& e) {
|
||||||
|
Base::Console().Error("Exception raised in assembly solver: %s", e.what());
|
||||||
|
};
|
||||||
this->touch();
|
this->touch();
|
||||||
return App::DocumentObject::StdReturn;
|
return App::DocumentObject::StdReturn;
|
||||||
}
|
}
|
||||||
|
|
|
@ -264,7 +264,7 @@ struct Distance : public Equation<Distance, double> {
|
||||||
};
|
};
|
||||||
|
|
||||||
//the possible directions
|
//the possible directions
|
||||||
enum Direction { parallel, equal, opposite, perpendicular };
|
enum Direction { parallel=0, equal, opposite, perpendicular };
|
||||||
|
|
||||||
struct Orientation : public Equation<Orientation, Direction, true> {
|
struct Orientation : public Equation<Orientation, Direction, true> {
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,24 @@ namespace dcm {
|
||||||
//signal we use for recalculation
|
//signal we use for recalculation
|
||||||
struct recalculated {};
|
struct recalculated {};
|
||||||
|
|
||||||
|
//all supported geometry types for easy access and comparison
|
||||||
|
namespace geometry {
|
||||||
|
enum types {
|
||||||
|
parameter = 0,
|
||||||
|
direction,
|
||||||
|
point,
|
||||||
|
line,
|
||||||
|
segment,
|
||||||
|
circle,
|
||||||
|
arc,
|
||||||
|
geometry,
|
||||||
|
ellipse,
|
||||||
|
elliptical_arc,
|
||||||
|
plane,
|
||||||
|
cylinder
|
||||||
|
};
|
||||||
|
}//namespace geometry
|
||||||
|
|
||||||
namespace tag {
|
namespace tag {
|
||||||
|
|
||||||
struct undefined {
|
struct undefined {
|
||||||
|
@ -66,17 +84,17 @@ struct undefined {
|
||||||
|
|
||||||
//we need to order tags, this values make it easy for module tags
|
//we need to order tags, this values make it easy for module tags
|
||||||
namespace weight {
|
namespace weight {
|
||||||
struct parameter : mpl::int_<0> {};
|
struct parameter : mpl::int_<geometry::parameter> {};
|
||||||
struct direction : mpl::int_<1> {};
|
struct direction : mpl::int_<geometry::direction> {};
|
||||||
struct point : mpl::int_<2> {};
|
struct point : mpl::int_<geometry::point> {};
|
||||||
struct line : mpl::int_<3> {};
|
struct line : mpl::int_<geometry::line> {};
|
||||||
struct segment : mpl::int_<4> {};
|
struct segment : mpl::int_<geometry::segment> {};
|
||||||
struct circle : mpl::int_<5> {};
|
struct circle : mpl::int_<geometry::circle> {};
|
||||||
struct arc : mpl::int_<6> {};
|
struct arc : mpl::int_<geometry::arc> {};
|
||||||
struct ellipse : mpl::int_<7> {};
|
struct ellipse : mpl::int_<geometry::ellipse> {};
|
||||||
struct elliptical_arc : mpl::int_<8> {};
|
struct elliptical_arc : mpl::int_<geometry::elliptical_arc> {};
|
||||||
struct plane : mpl::int_<9> {};
|
struct plane : mpl::int_<geometry::plane> {};
|
||||||
struct cylinder : mpl::int_<10> {};
|
struct cylinder : mpl::int_<geometry::cylinder> {};
|
||||||
}
|
}
|
||||||
} // tag
|
} // tag
|
||||||
|
|
||||||
|
@ -229,8 +247,8 @@ public:
|
||||||
};
|
};
|
||||||
void transform(const Transform& t);
|
void transform(const Transform& t);
|
||||||
|
|
||||||
int getGeneralType() {
|
geometry::types getGeometryType() {
|
||||||
return m_general_type;
|
return geometry::types(m_general_type);
|
||||||
};
|
};
|
||||||
|
|
||||||
int getExactType() {
|
int getExactType() {
|
||||||
|
|
|
@ -306,7 +306,7 @@ struct Distance::type< Kernel, tag::point3D, tag::cylinder3D > : public Distance
|
||||||
g(6) = -1;
|
g(6) = -1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
//TODO: this won't work for parallel lines. switch to point-line distance when lines are parallel
|
||||||
template<typename Kernel>
|
template<typename Kernel>
|
||||||
struct Distance::type< Kernel, tag::line3D, tag::line3D > {
|
struct Distance::type< Kernel, tag::line3D, tag::line3D > {
|
||||||
|
|
||||||
|
|
|
@ -314,6 +314,9 @@ struct Module3D {
|
||||||
using inheriter_base::m_this;
|
using inheriter_base::m_this;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
using inheriter_base::createGeometry3D;
|
||||||
|
using inheriter_base::createConstraint3D;
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
Geom createGeometry3D(T geom, Identifier id);
|
Geom createGeometry3D(T geom, Identifier id);
|
||||||
Geom createGeometry3D(Identifier id);
|
Geom createGeometry3D(Identifier id);
|
||||||
|
|
|
@ -125,7 +125,7 @@ struct segment3D {
|
||||||
virtual bool check() {
|
virtual bool check() {
|
||||||
|
|
||||||
//even we have a real geometry segment
|
//even we have a real geometry segment
|
||||||
if(base::m_shape->getGeneralType() == tag::weight::segment::value)
|
if(base::m_shape->getGeometryType() == tag::weight::segment::value)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
//or two point geometries
|
//or two point geometries
|
||||||
|
@ -137,7 +137,7 @@ struct segment3D {
|
||||||
//initialise all relations between the geometries
|
//initialise all relations between the geometries
|
||||||
virtual void init() {
|
virtual void init() {
|
||||||
|
|
||||||
if(base::m_shape->getGeneralType() == dcm::tag::weight::segment::value) {
|
if(base::m_shape->getGeometryType() == dcm::tag::weight::segment::value) {
|
||||||
|
|
||||||
//link the line geometrie to our shape
|
//link the line geometrie to our shape
|
||||||
boost::shared_ptr<Geometry3D> g1 = base::m_system->createGeometry3D();
|
boost::shared_ptr<Geometry3D> g1 = base::m_system->createGeometry3D();
|
||||||
|
@ -171,7 +171,7 @@ struct segment3D {
|
||||||
boost::shared_ptr<Geometry3D> g2 = base::m_geometries->operator[](1);
|
boost::shared_ptr<Geometry3D> g2 = base::m_geometries->operator[](1);
|
||||||
|
|
||||||
//possibility 1: two points. we add a segment line an link the point in
|
//possibility 1: two points. we add a segment line an link the point in
|
||||||
if(g1->getGeneralType() == tag::weight::point::value || g2->getGeneralType() == tag::weight::point::value) {
|
if(g1->getGeometryType() == tag::weight::point::value || g2->getGeometryType() == tag::weight::point::value) {
|
||||||
|
|
||||||
g1->template setProperty<typename base::shape_purpose_prop>(startpoint);
|
g1->template setProperty<typename base::shape_purpose_prop>(startpoint);
|
||||||
g2->template setProperty<typename base::shape_purpose_prop>(endpoint);
|
g2->template setProperty<typename base::shape_purpose_prop>(endpoint);
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef GCM_GEOMETRY_HL3D_H
|
#ifndef DCM_GEOMETRY_SHAPE3D_H
|
||||||
#define GCM_GEOMETRY_HL3D_H
|
#define DCM_GEOMETRY_SHAPE3D_H
|
||||||
|
|
||||||
#include "opendcm/core/geometry.hpp"
|
#include "opendcm/core/geometry.hpp"
|
||||||
#include "opendcm/module3d/geometry.hpp"
|
#include "opendcm/module3d/geometry.hpp"
|
||||||
|
|
|
@ -42,10 +42,12 @@
|
||||||
|
|
||||||
|
|
||||||
#define APPEND_SINGLE(z, n, data) \
|
#define APPEND_SINGLE(z, n, data) \
|
||||||
|
typedef typename Sys::Identifier Identifier; \
|
||||||
typedef typename system_traits<Sys>::template getModule<details::m3d>::type::geometry_types gtypes; \
|
typedef typename system_traits<Sys>::template getModule<details::m3d>::type::geometry_types gtypes; \
|
||||||
g_ptr = details::converter_g<BOOST_PP_CAT(Arg,n), Geometry3D>::template apply<gtypes, Sys>(BOOST_PP_CAT(arg,n), m_this); \
|
typedef typename system_traits<Sys>::template getModule<details::mshape3d>::type::geometry_types stypes; \
|
||||||
|
g_ptr = details::converter_g<BOOST_PP_CAT(Arg,n), Geometry3D>::template apply<gtypes, Sys, Identifier>(BOOST_PP_CAT(arg,n), m_this); \
|
||||||
if(!g_ptr) { \
|
if(!g_ptr) { \
|
||||||
hlg_ptr = details::converter_hlg<BOOST_PP_CAT(Arg,n), Shape3D>::template apply<Sys>(BOOST_PP_CAT(arg,n), data); \
|
hlg_ptr = details::converter_hlg<BOOST_PP_CAT(Arg,n), Shape3D>::template apply<stypes, Sys, Identifier>(BOOST_PP_CAT(arg,n), data, m_this); \
|
||||||
if(!hlg_ptr) \
|
if(!hlg_ptr) \
|
||||||
throw creation_error() << boost::errinfo_errno(216) << error_message("could not handle input"); \
|
throw creation_error() << boost::errinfo_errno(216) << error_message("could not handle input"); \
|
||||||
else \
|
else \
|
||||||
|
@ -99,27 +101,36 @@ namespace details {
|
||||||
template<typename T, typename R>
|
template<typename T, typename R>
|
||||||
struct converter_g {
|
struct converter_g {
|
||||||
//check if the type T is usable from within module3d, as it could also be a shape type
|
//check if the type T is usable from within module3d, as it could also be a shape type
|
||||||
template<typename gtypes, typename Sys>
|
template<typename gtypes, typename Sys, typename Identifier>
|
||||||
static typename boost::enable_if<
|
static typename boost::enable_if<
|
||||||
mpl::not_< boost::is_same<
|
mpl::and_<
|
||||||
typename mpl::find<gtypes, T>::type,typename mpl::end<gtypes>::type> >,
|
mpl::not_< boost::is_same<typename mpl::find<gtypes, T>::type,typename mpl::end<gtypes>::type> >,
|
||||||
boost::shared_ptr<R> >::type apply(T const& t, Sys* sys) {
|
mpl::not_<boost::is_same<Identifier, T> >
|
||||||
|
>, boost::shared_ptr<R> >::type apply(T const& t, Sys* sys) {
|
||||||
return sys->createGeometry3D(t);
|
return sys->createGeometry3D(t);
|
||||||
};
|
};
|
||||||
|
|
||||||
//seems to be a shape type, return an empty geometry
|
//seems to be a shape type, return an empty geometry
|
||||||
template<typename gtypes, typename Sys>
|
template<typename gtypes, typename Sys, typename Identifier>
|
||||||
static typename boost::enable_if<
|
static typename boost::enable_if<
|
||||||
boost::is_same<
|
mpl::and_<
|
||||||
typename mpl::find<gtypes, T>::type, typename mpl::end<gtypes>::type>,
|
boost::is_same<typename mpl::find<gtypes, T>::type, typename mpl::end<gtypes>::type>,
|
||||||
boost::shared_ptr<R> >::type apply(T const& t, Sys* sys) {
|
mpl::not_<boost::is_same<Identifier, T> >
|
||||||
|
>, boost::shared_ptr<R> >::type apply(T const& t, Sys* sys) {
|
||||||
return boost::shared_ptr<R>();
|
return boost::shared_ptr<R>();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//seems to be an identifier type, lets check if we have such a geometry
|
||||||
|
template<typename gtypes, typename Sys, typename Identifier>
|
||||||
|
static typename boost::enable_if<
|
||||||
|
boost::is_same<Identifier, T>, boost::shared_ptr<R> >::type apply(T const& t, Sys* sys) {
|
||||||
|
return sys->getGeometry3D(t);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename R>
|
template<typename R>
|
||||||
struct converter_g< boost::shared_ptr<R>, R> {
|
struct converter_g< boost::shared_ptr<R>, R> {
|
||||||
template<typename gtypes, typename Sys>
|
template<typename gtypes, typename Sys, typename Identifier>
|
||||||
static boost::shared_ptr<R> apply(boost::shared_ptr<R> t, Sys* sys) {
|
static boost::shared_ptr<R> apply(boost::shared_ptr<R> t, Sys* sys) {
|
||||||
return t;
|
return t;
|
||||||
};
|
};
|
||||||
|
@ -127,30 +138,41 @@ struct converter_g< boost::shared_ptr<R>, R> {
|
||||||
|
|
||||||
template<typename T, typename R>
|
template<typename T, typename R>
|
||||||
struct converter_hlg {
|
struct converter_hlg {
|
||||||
template<typename Sys>
|
template<typename gtypes, typename Sys, typename Identifier>
|
||||||
static typename boost::enable_if<
|
static typename boost::enable_if<
|
||||||
boost::is_same<
|
mpl::and_<
|
||||||
typename mpl::find<typename system_traits<Sys>::template getModule<details::mshape3d>::type::geometry_types, T>::type,
|
boost::is_same<typename mpl::find<gtypes, T>::type, typename mpl::end<gtypes>::type>,
|
||||||
typename mpl::end<typename system_traits<Sys>::template getModule<details::mshape3d>::type::geometry_types>::type>,
|
mpl::not_<boost::is_same<Identifier, T> >
|
||||||
boost::shared_ptr<R> >::type apply(T const& t, boost::shared_ptr<R> self) {
|
>,
|
||||||
|
boost::shared_ptr<R> >::type apply(T const& t, boost::shared_ptr<R> self, Sys* sys) {
|
||||||
return boost::shared_ptr<R>();
|
return boost::shared_ptr<R>();
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename Sys>
|
template<typename gtypes, typename Sys, typename Identifier>
|
||||||
static typename boost::enable_if<
|
static typename boost::enable_if<
|
||||||
mpl::not_< boost::is_same<
|
mpl::not_< boost::is_same<typename mpl::find<gtypes, T>::type, typename mpl::end<gtypes>::type> >,
|
||||||
typename mpl::find<typename system_traits<Sys>::template getModule<details::mshape3d>::type::geometry_types, T>::type,
|
boost::shared_ptr<R> >::type apply(T const& t, boost::shared_ptr<R> self, Sys* sys) {
|
||||||
typename mpl::end<typename system_traits<Sys>::template getModule<details::mshape3d>::type::geometry_types>::type> >,
|
|
||||||
boost::shared_ptr<R> >::type apply(T const& t, boost::shared_ptr<R> self) {
|
//shape can only be set one time, throw an error otherwise
|
||||||
|
if(self->holdsType())
|
||||||
|
throw creation_error() << boost::errinfo_errno(410) << error_message("Shape can only be set with one geometry");
|
||||||
|
|
||||||
self->set(t);
|
self->set(t);
|
||||||
return self;
|
return self;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//seems to be an identifier type, lets check if we have such a geometry
|
||||||
|
template<typename gtypes, typename Sys, typename Identifier>
|
||||||
|
static typename boost::enable_if<
|
||||||
|
boost::is_same<Identifier, T>, boost::shared_ptr<R> >::type apply(T const& t, boost::shared_ptr<R> self, Sys* sys) {
|
||||||
|
return sys->getShape3D(t);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename R>
|
template<typename R>
|
||||||
struct converter_hlg<boost::shared_ptr<R>, R> {
|
struct converter_hlg<boost::shared_ptr<R>, R> {
|
||||||
template<typename Sys>
|
template<typename gtypes, typename Sys, typename Identifier>
|
||||||
static boost::shared_ptr<R> apply(boost::shared_ptr<R> t, boost::shared_ptr<R> self) {
|
static boost::shared_ptr<R> apply(boost::shared_ptr<R> t, boost::shared_ptr<R> self, Sys* sys) {
|
||||||
return t;
|
return t;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -216,6 +238,7 @@ struct ModuleShape3D {
|
||||||
/*shape access functions*/
|
/*shape access functions*/
|
||||||
typedef typename std::vector<boost::shared_ptr<Geometry3D> >::const_iterator geometry3d_iterator;
|
typedef typename std::vector<boost::shared_ptr<Geometry3D> >::const_iterator geometry3d_iterator;
|
||||||
typedef typename std::vector<boost::shared_ptr<Shape3D> >::const_iterator shape3d_iterator;
|
typedef typename std::vector<boost::shared_ptr<Shape3D> >::const_iterator shape3d_iterator;
|
||||||
|
typedef typename std::vector<boost::shared_ptr<Constraint3D> >::const_iterator constraint3d_iterator;
|
||||||
shape3d_iterator beginShape3D() {
|
shape3d_iterator beginShape3D() {
|
||||||
return m_shapes.begin();
|
return m_shapes.begin();
|
||||||
};
|
};
|
||||||
|
@ -228,6 +251,12 @@ struct ModuleShape3D {
|
||||||
geometry3d_iterator endGeometry3D() {
|
geometry3d_iterator endGeometry3D() {
|
||||||
return m_geometries.end();
|
return m_geometries.end();
|
||||||
};
|
};
|
||||||
|
constraint3d_iterator beginConstraint3D() {
|
||||||
|
return m_constraints.begin();
|
||||||
|
};
|
||||||
|
constraint3d_iterator endConstraint3D() {
|
||||||
|
return m_constraints.end();
|
||||||
|
};
|
||||||
|
|
||||||
boost::shared_ptr<Geometry3D> geometry(purpose f);
|
boost::shared_ptr<Geometry3D> geometry(purpose f);
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
@ -346,19 +375,32 @@ struct ModuleShape3D {
|
||||||
//inheriter for own functions
|
//inheriter for own functions
|
||||||
struct inheriter_base {
|
struct inheriter_base {
|
||||||
|
|
||||||
inheriter_base(){
|
inheriter_base() {
|
||||||
m_this = (Sys*)this;
|
m_this = (Sys*)this;
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
Sys* m_this;
|
Sys* m_this;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//with no vararg templates before c++11 we need preprocessor to create the overloads of create we need
|
//with no vararg templates before c++11 we need preprocessor to create the overloads of create we need
|
||||||
BOOST_PP_REPEAT(5, CREATE_DEF, ~)
|
BOOST_PP_REPEAT(5, CREATE_DEF, ~)
|
||||||
|
|
||||||
|
void removeShape3D(boost::shared_ptr<Shape3D> g);
|
||||||
};
|
};
|
||||||
struct inheriter_id : public inheriter_base {};
|
|
||||||
|
struct inheriter_id : public inheriter_base {
|
||||||
|
//we don't have a createshape3d method with identifier, as identifiers can be used to
|
||||||
|
//specifie creation geometries or shapes. therefore a call would always be ambigious.
|
||||||
|
|
||||||
|
void removeShape3D(ID id);
|
||||||
|
bool hasShape3D(ID id);
|
||||||
|
boost::shared_ptr<Shape3D> getShape3D(ID id);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
using inheriter_base::m_this;
|
||||||
|
};
|
||||||
|
|
||||||
struct inheriter : public mpl::if_<boost::is_same<ID, No_Identifier>, inheriter_base, inheriter_id>::type {};
|
struct inheriter : public mpl::if_<boost::is_same<ID, No_Identifier>, inheriter_base, inheriter_id>::type {};
|
||||||
|
|
||||||
//add properties to geometry and constraint to evaluate their shape partipance
|
//add properties to geometry and constraint to evaluate their shape partipance
|
||||||
|
@ -586,6 +628,60 @@ ModuleShape3D<Typelist, ID>::type<Sys>::Shape3D::Shape3D(const T& geometry, Sys&
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename Typelist, typename ID>
|
||||||
|
template<typename Sys>
|
||||||
|
void ModuleShape3D<Typelist, ID>::type<Sys>::inheriter_base::removeShape3D(boost::shared_ptr<Shape3D> g) {
|
||||||
|
|
||||||
|
//remove all constraints
|
||||||
|
typedef typename Shape3D::constraint3d_iterator cit;
|
||||||
|
for(cit it=g->constraint3dBegin(); it!=g->constraint3dEnd(); it++)
|
||||||
|
m_this->removeConstraint3D(*it);
|
||||||
|
|
||||||
|
//remove all geometries
|
||||||
|
typedef typename Shape3D::geometry3d_iterator git;
|
||||||
|
for(git it=g->geometry3dBegin(); it!=g->geometry3dEnd(); it++)
|
||||||
|
m_this->removeGeometry3D(*it);
|
||||||
|
|
||||||
|
//remove all subshapes
|
||||||
|
typedef typename Shape3D::shape3d_iterator sit;
|
||||||
|
for(sit it=g->shape3dBegin(); it!=g->shape3dEnd(); it++)
|
||||||
|
m_this->removeShape3D(*it);
|
||||||
|
|
||||||
|
//emit remove shape signal bevore actually deleting it
|
||||||
|
g->template emitSignal<remove>(g);
|
||||||
|
m_this->erase(g);
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename Typelist, typename ID>
|
||||||
|
template<typename Sys>
|
||||||
|
bool ModuleShape3D<Typelist, ID>::type<Sys>::inheriter_id::hasShape3D(Identifier id) {
|
||||||
|
if(getShape3D(id))
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename Typelist, typename ID>
|
||||||
|
template<typename Sys>
|
||||||
|
boost::shared_ptr<typename ModuleShape3D<Typelist, ID>::template type<Sys>::Shape3D>
|
||||||
|
ModuleShape3D<Typelist, ID>::type<Sys>::inheriter_id::getShape3D(Identifier id) {
|
||||||
|
std::vector< boost::shared_ptr<Shape3D> >& vec = inheriter_base::m_this->template objectVector<Shape3D>();
|
||||||
|
typedef typename std::vector< boost::shared_ptr<Shape3D> >::iterator iter;
|
||||||
|
for(iter it=vec.begin(); it!=vec.end(); it++) {
|
||||||
|
if(compare_traits<Identifier>::compare((*it)->getIdentifier(), id))
|
||||||
|
return *it;
|
||||||
|
};
|
||||||
|
return boost::shared_ptr<Shape3D>();
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename Typelist, typename ID>
|
||||||
|
template<typename Sys>
|
||||||
|
void ModuleShape3D<Typelist, ID>::type<Sys>::inheriter_id::removeShape3D(Identifier id) {
|
||||||
|
|
||||||
|
boost::shared_ptr<Shape3D> s = getShape3D(id);
|
||||||
|
if(s)
|
||||||
|
removeShape3D(s);
|
||||||
|
};
|
||||||
|
|
||||||
}//dcm
|
}//dcm
|
||||||
|
|
||||||
#endif //GCM_MODULE_SHAPE3D_H
|
#endif //GCM_MODULE_SHAPE3D_H
|
||||||
|
|
|
@ -1,111 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>AlignmentDialog</class>
|
|
||||||
<widget class="QDialog" name="AlignmentDialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>270</width>
|
|
||||||
<height>95</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Constraint value</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label_2">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Offset:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBox">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Orientation:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QComboBox" name="comboBox">
|
|
||||||
<property name="frame">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0" colspan="2">
|
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>AlignmentDialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>248</x>
|
|
||||||
<y>254</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>157</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>rejected()</signal>
|
|
||||||
<receiver>AlignmentDialog</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>316</x>
|
|
||||||
<y>260</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>286</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
|
|
@ -36,12 +36,7 @@
|
||||||
#include "ViewProviderPart.h"
|
#include "ViewProviderPart.h"
|
||||||
#include "ViewProviderAssembly.h"
|
#include "ViewProviderAssembly.h"
|
||||||
#include "ViewProviderConstraintGroup.h"
|
#include "ViewProviderConstraintGroup.h"
|
||||||
#include "ViewProviderConstraintFix.h"
|
#include "ViewProviderConstraint.h"
|
||||||
#include "ViewProviderConstraintDistance.h"
|
|
||||||
#include "ViewProviderConstraintAngle.h"
|
|
||||||
#include "ViewProviderConstraintOrientation.h"
|
|
||||||
#include "ViewProviderConstraintCoincidence.h"
|
|
||||||
#include "ViewProviderConstraintAlignment.h"
|
|
||||||
|
|
||||||
#include <Mod/Assembly/App/ItemAssembly.h>
|
#include <Mod/Assembly/App/ItemAssembly.h>
|
||||||
|
|
||||||
|
@ -90,12 +85,7 @@ void AssemblyGuiExport initAssemblyGui()
|
||||||
AssemblyGui::ViewProviderItemAssembly::init();
|
AssemblyGui::ViewProviderItemAssembly::init();
|
||||||
|
|
||||||
AssemblyGui::ViewProviderConstraintGroup::init();
|
AssemblyGui::ViewProviderConstraintGroup::init();
|
||||||
AssemblyGui::ViewProviderConstraintFix::init();
|
AssemblyGui::ViewProviderConstraint::init();
|
||||||
AssemblyGui::ViewProviderConstraintDistance::init();
|
|
||||||
AssemblyGui::ViewProviderConstraintAngle::init();
|
|
||||||
AssemblyGui::ViewProviderConstraintOrientation::init();
|
|
||||||
AssemblyGui::ViewProviderConstraintCoincidence::init();
|
|
||||||
AssemblyGui::ViewProviderConstraintAlignment::init();
|
|
||||||
|
|
||||||
// add resources and reloads the translators
|
// add resources and reloads the translators
|
||||||
loadAssemblyResource();
|
loadAssemblyResource();
|
||||||
|
|
|
@ -26,10 +26,17 @@ set(AssemblyGui_LIBS
|
||||||
FreeCADGui
|
FreeCADGui
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set(AssemblyGui_MOC_HDRS
|
||||||
|
TaskAssemblyConstraints.h
|
||||||
|
TaskDlgAssemblyConstraints.h
|
||||||
|
)
|
||||||
|
fc_wrap_cpp(AssemblyGui_MOC_SRCS ${AssemblyGui_MOC_HDRS})
|
||||||
|
SOURCE_GROUP("Moc" FILES ${AssemblyGui_MOC_SRCS})
|
||||||
|
|
||||||
qt4_add_resources(AssemblyGui_SRCS Resources/Assembly.qrc)
|
qt4_add_resources(AssemblyGui_SRCS Resources/Assembly.qrc)
|
||||||
|
|
||||||
set(AssemblyGui_UIC_SRCS
|
set(AssemblyGui_UIC_SRCS
|
||||||
AlignmentDialog.ui
|
TaskAssemblyConstraints.ui
|
||||||
)
|
)
|
||||||
qt4_wrap_ui(AssemblyGui_UIC_HDRS ${AssemblyGui_UIC_SRCS})
|
qt4_wrap_ui(AssemblyGui_UIC_HDRS ${AssemblyGui_UIC_SRCS})
|
||||||
|
|
||||||
|
@ -44,18 +51,10 @@ SET(AssemblyGuiViewProvider_SRCS
|
||||||
ViewProviderConstraint.h
|
ViewProviderConstraint.h
|
||||||
ViewProviderConstraintGroup.cpp
|
ViewProviderConstraintGroup.cpp
|
||||||
ViewProviderConstraintGroup.h
|
ViewProviderConstraintGroup.h
|
||||||
ViewProviderConstraintFix.cpp
|
TaskDlgAssemblyConstraints.cpp
|
||||||
ViewProviderConstraintFix.h
|
TaskDlgAssemblyConstraints.h
|
||||||
ViewProviderConstraintDistance.cpp
|
TaskAssemblyConstraints.h
|
||||||
ViewProviderConstraintDistance.h
|
TaskAssemblyConstraints.cpp
|
||||||
ViewProviderConstraintAngle.cpp
|
|
||||||
ViewProviderConstraintAngle.h
|
|
||||||
ViewProviderConstraintOrientation.cpp
|
|
||||||
ViewProviderConstraintOrientation.h
|
|
||||||
ViewProviderConstraintCoincidence.cpp
|
|
||||||
ViewProviderConstraintCoincidence.h
|
|
||||||
ViewProviderConstraintAlignment.cpp
|
|
||||||
ViewProviderConstraintAlignment.h
|
|
||||||
)
|
)
|
||||||
SOURCE_GROUP("ViewProvider" FILES ${AssemblyGuiViewProvider_SRCS})
|
SOURCE_GROUP("ViewProvider" FILES ${AssemblyGuiViewProvider_SRCS})
|
||||||
|
|
||||||
|
|
|
@ -32,11 +32,14 @@
|
||||||
#include <Gui/MainWindow.h>
|
#include <Gui/MainWindow.h>
|
||||||
#include <Gui/FileDialog.h>
|
#include <Gui/FileDialog.h>
|
||||||
#include <Gui/Selection.h>
|
#include <Gui/Selection.h>
|
||||||
#include "ui_AlignmentDialog.h"
|
#include <Gui/TaskView/TaskDialog.h>
|
||||||
|
#include <Gui/Control.h>
|
||||||
|
#include <Gui/Document.h>
|
||||||
|
|
||||||
#include <Mod/Assembly/App/ItemAssembly.h>
|
#include <Mod/Assembly/App/ItemAssembly.h>
|
||||||
#include <Mod/Assembly/App/ItemPart.h>
|
#include <Mod/Assembly/App/ItemPart.h>
|
||||||
#include <Mod/Assembly/App/ConstraintGroup.h>
|
#include <Mod/Assembly/App/ConstraintGroup.h>
|
||||||
|
#include <Mod/Assembly/Gui/TaskDlgAssemblyConstraints.h>
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -106,6 +109,90 @@ std::string asSubLinkString(Assembly::ItemPart* part, std::string element)
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
|
DEF_STD_CMD(CmdAssemblyConstraint);
|
||||||
|
|
||||||
|
CmdAssemblyConstraint::CmdAssemblyConstraint()
|
||||||
|
: Command("Assembly_Constraint")
|
||||||
|
{
|
||||||
|
sAppModule = "Assembly";
|
||||||
|
sGroup = QT_TR_NOOP("Assembly");
|
||||||
|
sMenuText = QT_TR_NOOP("Constraint");
|
||||||
|
sToolTipText = QT_TR_NOOP("Add arbitrary constraints to the assembly");
|
||||||
|
sWhatsThis = sToolTipText;
|
||||||
|
sStatusTip = sToolTipText;
|
||||||
|
sPixmap = "Assembly_ConstraintGeneral";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CmdAssemblyConstraint::activated(int iMsg)
|
||||||
|
{
|
||||||
|
Assembly::ItemAssembly* Asm = 0;
|
||||||
|
Assembly::ConstraintGroup* ConstGrp = 0;
|
||||||
|
|
||||||
|
// retrive the standard objects needed
|
||||||
|
if(getConstraintPrerequisits(&Asm, &ConstGrp))
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::vector<Gui::SelectionObject> objs = Gui::Selection().getSelectionEx();
|
||||||
|
|
||||||
|
if(objs.size() > 2) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
|
QObject::tr("Only two geometries supported by constraints"));
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
std::stringstream typestr1, typestr2;
|
||||||
|
std::pair<Assembly::ItemPart*, Assembly::ItemAssembly*> part1, part2;
|
||||||
|
if(objs.size()>=1) {
|
||||||
|
part1 = Asm->getContainingPart(objs[0].getObject());
|
||||||
|
//checking the parts is enough, both or non!
|
||||||
|
if(!part1.first) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
|
QObject::tr("The selected parts need to belong to the active assembly (active product or one of it's subproducts)"));
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
typestr1 << "App.activeDocument().ActiveObject.First = " << asSubLinkString(part1.first, objs[0].getSubNames()[0]);
|
||||||
|
}
|
||||||
|
if(objs.size()>=2) {
|
||||||
|
part2 = Asm->getContainingPart(objs[1].getObject());
|
||||||
|
//checking the parts is enough, both or non!
|
||||||
|
if(!part2.first) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
|
QObject::tr("The selected parts need to belong to the active assembly (active product or one of it's subproducts)"));
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
typestr2 << "App.activeDocument().ActiveObject.Second = " << asSubLinkString(part2.first, objs[1].getSubNames()[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//check if this is the right place for the constraint
|
||||||
|
if(part1.first && part2.first && (part1.second == part2.second) && part1.second != Asm) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
|
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
openCommand("Insert Constraint Distance");
|
||||||
|
std::string ConstrName = getUniqueObjectName("Constraint");
|
||||||
|
doCommand(Doc, "App.activeDocument().addObject('Assembly::Constraint','%s')", ConstrName.c_str());
|
||||||
|
if(objs.size()>=1)
|
||||||
|
doCommand(Doc, typestr1.str().c_str());
|
||||||
|
if(objs.size()>=2)
|
||||||
|
doCommand(Doc, typestr2.str().c_str());
|
||||||
|
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
||||||
|
|
||||||
|
updateActive();
|
||||||
|
doCommand(Doc, "Gui.ActiveDocument.setEdit('%s',0)", ConstrName.c_str());
|
||||||
|
|
||||||
|
commitCommand();
|
||||||
|
|
||||||
|
Gui::Selection().clearCompleteSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
DEF_STD_CMD(CmdAssemblyConstraintDistance);
|
DEF_STD_CMD(CmdAssemblyConstraintDistance);
|
||||||
|
|
||||||
CmdAssemblyConstraintDistance::CmdAssemblyConstraintDistance()
|
CmdAssemblyConstraintDistance::CmdAssemblyConstraintDistance()
|
||||||
|
@ -149,31 +236,26 @@ void CmdAssemblyConstraintDistance::activated(int iMsg)
|
||||||
};
|
};
|
||||||
|
|
||||||
//check if this is the right place for the constraint
|
//check if this is the right place for the constraint
|
||||||
if( (part1.second == part2.second) && part1.second != Asm ) {
|
if((part1.second == part2.second) && part1.second != Asm) {
|
||||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ok;
|
|
||||||
|
|
||||||
double d = QInputDialog::getDouble(NULL, QObject::tr("Constraint value"),
|
|
||||||
QObject::tr("Distance:"), 0., -10000., 10000., 2, &ok);
|
|
||||||
|
|
||||||
if(!ok)
|
|
||||||
return;
|
|
||||||
|
|
||||||
openCommand("Insert Constraint Distance");
|
openCommand("Insert Constraint Distance");
|
||||||
std::string ConstrName = getUniqueObjectName("Distance");
|
std::string ConstrName = getUniqueObjectName("Distance");
|
||||||
doCommand(Doc, "App.activeDocument().addObject('Assembly::ConstraintDistance','%s')", ConstrName.c_str());
|
doCommand(Doc, "App.activeDocument().addObject('Assembly::Constraint','%s')", ConstrName.c_str());
|
||||||
|
doCommand(Doc, "App.activeDocument().ActiveObject.Type = 'Distance'");
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part1.first, objs[0].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part1.first, objs[0].getSubNames()[0]).c_str());
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Second = %s", asSubLinkString(part2.first, objs[1].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.Second = %s", asSubLinkString(part2.first, objs[1].getSubNames()[0]).c_str());
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Distance = %f", d);
|
|
||||||
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
||||||
|
|
||||||
commitCommand();
|
|
||||||
updateActive();
|
updateActive();
|
||||||
|
doCommand(Doc, "Gui.ActiveDocument.setEdit('%s',0)", ConstrName.c_str());
|
||||||
|
|
||||||
|
commitCommand();
|
||||||
|
|
||||||
|
Gui::Selection().clearCompleteSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************************/
|
/******************************************************************************************/
|
||||||
|
@ -226,15 +308,15 @@ void CmdAssemblyConstraintFix::activated(int iMsg)
|
||||||
|
|
||||||
std::string ConstrName = getUniqueObjectName("Fix");
|
std::string ConstrName = getUniqueObjectName("Fix");
|
||||||
|
|
||||||
doCommand(Doc, "App.activeDocument().addObject('Assembly::ConstraintFix','%s')", ConstrName.c_str());
|
doCommand(Doc, "App.activeDocument().addObject('Assembly::Constraint','%s')", ConstrName.c_str());
|
||||||
|
doCommand(Doc, "App.activeDocument().ActiveObject.Type = 'Fix'");
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part.first, objs[0].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part.first, objs[0].getSubNames()[0]).c_str());
|
||||||
|
|
||||||
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
||||||
|
|
||||||
commitCommand();
|
|
||||||
|
|
||||||
updateActive();
|
updateActive();
|
||||||
|
doCommand(Doc, "Gui.ActiveDocument.setEdit('%s',0)", ConstrName.c_str());
|
||||||
|
|
||||||
|
commitCommand();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -284,30 +366,24 @@ void CmdAssemblyConstraintAngle::activated(int iMsg)
|
||||||
};
|
};
|
||||||
|
|
||||||
//check if this is the right place for the constraint
|
//check if this is the right place for the constraint
|
||||||
if( ( (part1.second == part2.second) && part1.second != Asm ) && part1.second != Asm ) {
|
if(((part1.second == part2.second) && part1.second != Asm) && part1.second != Asm) {
|
||||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ok;
|
|
||||||
|
|
||||||
double d = QInputDialog::getDouble(NULL, QObject::tr("Constraint value"),
|
|
||||||
QObject::tr("Angle:"), 0., 0., 360., 2, &ok);
|
|
||||||
|
|
||||||
if(!ok)
|
|
||||||
return;
|
|
||||||
|
|
||||||
openCommand("Insert Constraint Angle");
|
openCommand("Insert Constraint Angle");
|
||||||
std::string ConstrName = getUniqueObjectName("Angle");
|
std::string ConstrName = getUniqueObjectName("Angle");
|
||||||
doCommand(Doc, "App.activeDocument().addObject('Assembly::ConstraintAngle','%s')", ConstrName.c_str());
|
doCommand(Doc, "App.activeDocument().addObject('Assembly::Constraint','%s')", ConstrName.c_str());
|
||||||
|
doCommand(Doc, "App.activeDocument().ActiveObject.Type = 'Angle'");
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part1.first, objs[0].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part1.first, objs[0].getSubNames()[0]).c_str());
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Second = %s", asSubLinkString(part2.first, objs[1].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.Second = %s", asSubLinkString(part2.first, objs[1].getSubNames()[0]).c_str());
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Angle = %f", d);
|
|
||||||
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
||||||
|
|
||||||
commitCommand();
|
|
||||||
updateActive();
|
updateActive();
|
||||||
|
doCommand(Doc, "Gui.ActiveDocument.setEdit('%s',0)", ConstrName.c_str());
|
||||||
|
|
||||||
|
commitCommand();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -358,35 +434,24 @@ void CmdAssemblyConstraintOrientation::activated(int iMsg)
|
||||||
};
|
};
|
||||||
|
|
||||||
//check if this is the right place for the constraint
|
//check if this is the right place for the constraint
|
||||||
if( (part1.second == part2.second) && part1.second != Asm ) {
|
if((part1.second == part2.second) && part1.second != Asm) {
|
||||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList items;
|
|
||||||
|
|
||||||
items << QObject::tr("Parallel") << QObject::tr("Perpendicular") << QObject::tr("Equal") << QObject::tr("Opposite");
|
|
||||||
|
|
||||||
bool ok;
|
|
||||||
|
|
||||||
QString item = QInputDialog::getItem(NULL, QObject::tr("Constraint value"),
|
|
||||||
QObject::tr("Orientation:"), items, 0, false, &ok);
|
|
||||||
|
|
||||||
if(!ok || item.isEmpty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
openCommand("Insert Constraint Orientation");
|
openCommand("Insert Constraint Orientation");
|
||||||
std::string ConstrName = getUniqueObjectName("Orientation");
|
std::string ConstrName = getUniqueObjectName("Orientation");
|
||||||
doCommand(Doc, "App.activeDocument().addObject('Assembly::ConstraintOrientation','%s')", ConstrName.c_str());
|
doCommand(Doc, "App.activeDocument().addObject('Assembly::Constraint','%s')", ConstrName.c_str());
|
||||||
|
doCommand(Doc, "App.activeDocument().ActiveObject.Type = 'Orientation'");
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part1.first, objs[0].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part1.first, objs[0].getSubNames()[0]).c_str());
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Second = %s", asSubLinkString(part2.first, objs[1].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.Second = %s", asSubLinkString(part2.first, objs[1].getSubNames()[0]).c_str());
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Orientation = '%s'", item.toStdString().c_str());
|
|
||||||
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
||||||
|
|
||||||
commitCommand();
|
|
||||||
updateActive();
|
updateActive();
|
||||||
|
doCommand(Doc, "Gui.ActiveDocument.setEdit('%s',0)", ConstrName.c_str());
|
||||||
|
|
||||||
|
commitCommand();
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************************/
|
/******************************************************************************************/
|
||||||
|
@ -435,35 +500,24 @@ void CmdAssemblyConstraintCoincidence::activated(int iMsg)
|
||||||
};
|
};
|
||||||
|
|
||||||
//check if this is the right place for the constraint
|
//check if this is the right place for the constraint
|
||||||
if( (part1.second == part2.second) && part1.second != Asm ) {
|
if((part1.second == part2.second) && part1.second != Asm) {
|
||||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList items;
|
|
||||||
|
|
||||||
items << QObject::tr("Parallel") << QObject::tr("Equal") << QObject::tr("Opposite");
|
|
||||||
|
|
||||||
bool ok;
|
|
||||||
|
|
||||||
QString item = QInputDialog::getItem(NULL, QObject::tr("Constraint value"),
|
|
||||||
QObject::tr("Orientation:"), items, 0, false, &ok);
|
|
||||||
|
|
||||||
if(!ok || item.isEmpty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
openCommand("Insert Constraint Coincidence");
|
openCommand("Insert Constraint Coincidence");
|
||||||
std::string ConstrName = getUniqueObjectName("Coincidence");
|
std::string ConstrName = getUniqueObjectName("Coincidence");
|
||||||
doCommand(Doc, "App.activeDocument().addObject('Assembly::ConstraintCoincidence','%s')", ConstrName.c_str());
|
doCommand(Doc, "App.activeDocument().addObject('Assembly::Constraint','%s')", ConstrName.c_str());
|
||||||
|
doCommand(Doc, "App.activeDocument().ActiveObject.Type = 'Coincident'");
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part1.first, objs[0].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part1.first, objs[0].getSubNames()[0]).c_str());
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Second = %s", asSubLinkString(part2.first, objs[1].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.Second = %s", asSubLinkString(part2.first, objs[1].getSubNames()[0]).c_str());
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Orientation = '%s'", item.toStdString().c_str());
|
|
||||||
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
||||||
|
|
||||||
commitCommand();
|
|
||||||
updateActive();
|
updateActive();
|
||||||
|
doCommand(Doc, "Gui.ActiveDocument.setEdit('%s',0)", ConstrName.c_str());
|
||||||
|
|
||||||
|
commitCommand();
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************************/
|
/******************************************************************************************/
|
||||||
|
@ -512,45 +566,31 @@ void CmdAssemblyConstraintAlignment::activated(int iMsg)
|
||||||
};
|
};
|
||||||
|
|
||||||
//check if this is the right place for the constraint
|
//check if this is the right place for the constraint
|
||||||
if( (part1.second == part2.second) && part1.second != Asm ) {
|
if((part1.second == part2.second) && part1.second != Asm) {
|
||||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||||
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
QObject::tr("The selected parts belong both to the same subproduct, please add constraints there"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList items;
|
|
||||||
|
|
||||||
items << QObject::tr("Parallel") << QObject::tr("Equal") << QObject::tr("Opposite");
|
|
||||||
|
|
||||||
QDialog dialog;
|
|
||||||
|
|
||||||
Ui_AlignmentDialog ui;
|
|
||||||
|
|
||||||
ui.setupUi(&dialog);
|
|
||||||
|
|
||||||
ui.comboBox->addItems(items);
|
|
||||||
|
|
||||||
if(dialog.exec() != QDialog::Accepted)
|
|
||||||
return;
|
|
||||||
|
|
||||||
openCommand("Insert Constraint Alignment");
|
openCommand("Insert Constraint Alignment");
|
||||||
std::string ConstrName = getUniqueObjectName("Alignment");
|
std::string ConstrName = getUniqueObjectName("Alignment");
|
||||||
doCommand(Doc, "App.activeDocument().addObject('Assembly::ConstraintAlignment','%s')", ConstrName.c_str());
|
doCommand(Doc, "App.activeDocument().addObject('Assembly::Constraint','%s')", ConstrName.c_str());
|
||||||
|
doCommand(Doc, "App.activeDocument().ActiveObject.Type = 'Align'");
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part1.first, objs[0].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.First = %s", asSubLinkString(part1.first, objs[0].getSubNames()[0]).c_str());
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Second = %s", asSubLinkString(part2.first, objs[1].getSubNames()[0]).c_str());
|
doCommand(Doc, "App.activeDocument().ActiveObject.Second = %s", asSubLinkString(part2.first, objs[1].getSubNames()[0]).c_str());
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Orientation = '%s'", ui.comboBox->currentText().toStdString().c_str());
|
|
||||||
doCommand(Doc, "App.activeDocument().ActiveObject.Offset = %f", ui.doubleSpinBox->value());
|
|
||||||
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
doCommand(Doc, "App.activeDocument().%s.Constraints = App.activeDocument().%s.Constraints + [App.activeDocument().ActiveObject]", ConstGrp->getNameInDocument(), ConstGrp->getNameInDocument());
|
||||||
|
|
||||||
commitCommand();
|
|
||||||
updateActive();
|
updateActive();
|
||||||
|
doCommand(Doc, "Gui.ActiveDocument.setEdit('%s',0)", ConstrName.c_str());
|
||||||
|
|
||||||
|
commitCommand();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateAssemblyConstraintCommands(void)
|
void CreateAssemblyConstraintCommands(void)
|
||||||
{
|
{
|
||||||
Gui::CommandManager& rcCmdMgr = Gui::Application::Instance->commandManager();
|
Gui::CommandManager& rcCmdMgr = Gui::Application::Instance->commandManager();
|
||||||
|
|
||||||
|
rcCmdMgr.addCommand(new CmdAssemblyConstraint());
|
||||||
rcCmdMgr.addCommand(new CmdAssemblyConstraintFix());
|
rcCmdMgr.addCommand(new CmdAssemblyConstraintFix());
|
||||||
rcCmdMgr.addCommand(new CmdAssemblyConstraintDistance());
|
rcCmdMgr.addCommand(new CmdAssemblyConstraintDistance());
|
||||||
rcCmdMgr.addCommand(new CmdAssemblyConstraintAngle());
|
rcCmdMgr.addCommand(new CmdAssemblyConstraintAngle());
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
<RCC>
|
<RCC>
|
||||||
<qresource>
|
<qresource>
|
||||||
|
<file>icons/Assembly_ConstraintBidirectional.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintUnidirectional1.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintUnidirectional2.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintPerpendicular.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintParallel.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintOpposite.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintEqual.svg</file>
|
||||||
<file>icons/Assembly_ConstraintLock.svg</file>
|
<file>icons/Assembly_ConstraintLock.svg</file>
|
||||||
<file>icons/Assembly_ConstraintDistance.svg</file>
|
<file>icons/Assembly_ConstraintDistance.svg</file>
|
||||||
<file>icons/Assembly_ConstraintAngle.svg</file>
|
<file>icons/Assembly_ConstraintAngle.svg</file>
|
||||||
<file>icons/Assembly_ConstraintOrientation.svg</file>
|
<file>icons/Assembly_ConstraintOrientation.svg</file>
|
||||||
<file>icons/Assembly_ConstraintCoincidence.svg</file>
|
<file>icons/Assembly_ConstraintCoincidence.svg</file>
|
||||||
<file>icons/Assembly_ConstraintAlignment.svg</file>
|
<file>icons/Assembly_ConstraintAlignment.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintGeneral.svg</file>
|
||||||
<file>translations/Assembly_af.qm</file>
|
<file>translations/Assembly_af.qm</file>
|
||||||
<file>translations/Assembly_de.qm</file>
|
<file>translations/Assembly_de.qm</file>
|
||||||
<file>translations/Assembly_fi.qm</file>
|
<file>translations/Assembly_fi.qm</file>
|
||||||
|
|
81
src/Mod/Assembly/Gui/Resources/Assembly.qrc.orig
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
<<<<<<< d6421cef81c1d7a191d1524d88c63e56e3f6d864
|
||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file>icons/Assembly_ConstraintLock.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintDistance.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintAngle.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintOrientation.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintCoincidence.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintAlignment.svg</file>
|
||||||
|
<file>translations/Assembly_af.qm</file>
|
||||||
|
<file>translations/Assembly_de.qm</file>
|
||||||
|
<file>translations/Assembly_fi.qm</file>
|
||||||
|
<file>translations/Assembly_fr.qm</file>
|
||||||
|
<file>translations/Assembly_hr.qm</file>
|
||||||
|
<file>translations/Assembly_it.qm</file>
|
||||||
|
<file>translations/Assembly_nl.qm</file>
|
||||||
|
<file>translations/Assembly_no.qm</file>
|
||||||
|
<file>translations/Assembly_ru.qm</file>
|
||||||
|
<file>translations/Assembly_uk.qm</file>
|
||||||
|
<file>translations/Assembly_tr.qm</file>
|
||||||
|
<file>translations/Assembly_sv-SE.qm</file>
|
||||||
|
<file>translations/Assembly_pl.qm</file>
|
||||||
|
<file>translations/Assembly_zh-TW.qm</file>
|
||||||
|
<file>translations/Assembly_pt-BR.qm</file>
|
||||||
|
<file>translations/Assembly_cs.qm</file>
|
||||||
|
<file>translations/Assembly_sk.qm</file>
|
||||||
|
<file>translations/Assembly_es-ES.qm</file>
|
||||||
|
<file>translations/Assembly_zh-CN.qm</file>
|
||||||
|
<file>translations/Assembly_ja.qm</file>
|
||||||
|
<file>translations/Assembly_ro.qm</file>
|
||||||
|
<file>translations/Assembly_hu.qm</file>
|
||||||
|
<file>translations/Assembly_pt-PT.qm</file>
|
||||||
|
<file>translations/Assembly_sr.qm</file>
|
||||||
|
<file>translations/Assembly_el.qm</file>
|
||||||
|
<file>translations/Assembly_sl.qm</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
||||||
|
=======
|
||||||
|
<RCC>
|
||||||
|
<qresource>
|
||||||
|
<file>icons/Assembly_ConstraintBidirectional.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintUnidirectional1.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintUnidirectional2.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintPerpendicular.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintParallel.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintOpposite.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintEqual.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintLock.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintDistance.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintAngle.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintOrientation.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintCoincidence.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintAlignment.svg</file>
|
||||||
|
<file>icons/Assembly_ConstraintGeneral.svg</file>
|
||||||
|
<file>translations/Assembly_af.qm</file>
|
||||||
|
<file>translations/Assembly_de.qm</file>
|
||||||
|
<file>translations/Assembly_fi.qm</file>
|
||||||
|
<file>translations/Assembly_fr.qm</file>
|
||||||
|
<file>translations/Assembly_hr.qm</file>
|
||||||
|
<file>translations/Assembly_it.qm</file>
|
||||||
|
<file>translations/Assembly_nl.qm</file>
|
||||||
|
<file>translations/Assembly_no.qm</file>
|
||||||
|
<file>translations/Assembly_ru.qm</file>
|
||||||
|
<file>translations/Assembly_uk.qm</file>
|
||||||
|
<file>translations/Assembly_tr.qm</file>
|
||||||
|
<file>translations/Assembly_sv-SE.qm</file>
|
||||||
|
<file>translations/Assembly_pl.qm</file>
|
||||||
|
<file>translations/Assembly_zh-TW.qm</file>
|
||||||
|
<file>translations/Assembly_pt-BR.qm</file>
|
||||||
|
<file>translations/Assembly_cs.qm</file>
|
||||||
|
<file>translations/Assembly_sk.qm</file>
|
||||||
|
<file>translations/Assembly_es-ES.qm</file>
|
||||||
|
<file>translations/Assembly_zh-CN.qm</file>
|
||||||
|
<file>translations/Assembly_ja.qm</file>
|
||||||
|
<file>translations/Assembly_ro.qm</file>
|
||||||
|
<file>translations/Assembly_hu.qm</file>
|
||||||
|
<file>translations/Assembly_pt-PT.qm</file>
|
||||||
|
<file>translations/Assembly_sr.qm</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
||||||
|
>>>>>>> revidsed assembly constraint gui interaction
|
|
@ -0,0 +1,410 @@
|
||||||
|
<?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="svg2816"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="Assembly_ConstraintEqual.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2818">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606" />
|
||||||
|
</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="perspective2824" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3618"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-7"
|
||||||
|
id="linearGradient3608-5"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-7">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-3" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3677"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
id="linearGradient3608-1"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-5">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-9" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3686"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3717"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
id="linearGradient3608-8"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-58">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-2" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-2" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3726"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4410"
|
||||||
|
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="perspective4944"
|
||||||
|
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="perspective4966"
|
||||||
|
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="perspective5009"
|
||||||
|
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="perspective5165"
|
||||||
|
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="perspective7581"
|
||||||
|
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="perspective7606"
|
||||||
|
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="perspective7638"
|
||||||
|
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="perspective7660"
|
||||||
|
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="perspective7704"
|
||||||
|
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="perspective7730"
|
||||||
|
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="perspective7762"
|
||||||
|
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="perspective7783"
|
||||||
|
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="perspective7843"
|
||||||
|
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="perspective7881"
|
||||||
|
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="perspective7932"
|
||||||
|
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="perspective7983"
|
||||||
|
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="perspective8036"
|
||||||
|
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="perspective8057"
|
||||||
|
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="perspective8080"
|
||||||
|
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="perspective8137"
|
||||||
|
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="perspective8205"
|
||||||
|
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="perspective3644"
|
||||||
|
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="perspective3667"
|
||||||
|
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="perspective3688"
|
||||||
|
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" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3702">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.9454633"
|
||||||
|
id="feGaussianBlur3704" />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
color-interpolation-filters="sRGB"
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3702-6">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.9454633"
|
||||||
|
id="feGaussianBlur3704-9" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="6.9202448"
|
||||||
|
inkscape:cx="34.256499"
|
||||||
|
inkscape:cy="36.425465"
|
||||||
|
inkscape:current-layer="g3050"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1216"
|
||||||
|
inkscape:window-height="780"
|
||||||
|
inkscape:window-x="61"
|
||||||
|
inkscape:window-y="-3"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata2821">
|
||||||
|
<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>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<g
|
||||||
|
id="g3050"
|
||||||
|
transform="matrix(0.88337209,0,0,0.88337209,-5.4454283,19.460803)">
|
||||||
|
<g
|
||||||
|
id="g3040"
|
||||||
|
transform="matrix(0.70815348,0,0,0.70815348,-4.8361263,16.006514)">
|
||||||
|
<path
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64629388;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3702);enable-background:accumulate"
|
||||||
|
d="M 61.312475,8.7935719 36.099709,14.905007 41.3814,20.44774 20.115401,40.712189 c 7.53106,7.877935 0.04547,0.02012 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
id="rect2860-4"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cccccccc" />
|
||||||
|
<path
|
||||||
|
style="color:#000000;fill:#ff2600;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:2.64629388;stroke-linecap:square;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 59.019295,5.874689 c 0,0 -8.279255,2.287145 -12.481383,3.3057175 -4.202128,1.0185725 -12.731383,2.8057175 -12.731383,2.8057175 l 5.281691,5.542733 c 0,0 -6.588666,6.879816 -10.132999,10.257225 -3.544334,3.377408 -11.133,10.007224 -11.133,10.007224 7.820067,8.166942 0.04547,0.164626 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
id="rect2860"
|
||||||
|
sodipodi:nodetypes="czcczccccc"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
<rect
|
||||||
|
style="color:#000000;fill:#ff2000;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:1.77474844;stroke-linecap:square;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="rect8680-5"
|
||||||
|
width="48.159821"
|
||||||
|
height="7.8346114"
|
||||||
|
x="14.16935"
|
||||||
|
y="-22.681246"
|
||||||
|
rx="0.14551316"
|
||||||
|
ry="0.095443547"
|
||||||
|
transform="matrix(0.71707082,0.69700031,-0.69700031,0.71707082,0,0)" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect2860-4-8"
|
||||||
|
d="M 61.312475,8.7935719 36.099709,14.905007 41.3814,20.44774 20.115401,40.712189 c 7.53106,7.877935 0.04547,0.02012 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64629388;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3702-6);enable-background:accumulate"
|
||||||
|
transform="matrix(-0.70815348,0,0,-0.70815348,91.910169,16.681614)" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="czcczccccc"
|
||||||
|
id="rect2860-49"
|
||||||
|
d="m 46.896,8.4840738 c 0,0 5.862983,-1.6196497 8.838735,-2.3409553 2.975751,-0.7213057 9.015773,-1.9868786 9.015773,-1.9868786 L 61.01026,0.23113421 c 0,0 4.665787,-4.87196561 7.175718,-7.26368961 2.509933,-2.391723 7.883873,-7.0866506 7.883873,-7.0866506 -5.537807,-5.783449 -0.0322,-0.116581 -5.358478,-5.623316 L 55.651782,-5.3921816 52.079463,-9.1410594 z"
|
||||||
|
style="color:#000000;fill:#ff2600;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:1.87398219;stroke-linecap:square;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" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,390 @@
|
||||||
|
<?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="svg2816"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="Constraint_Length.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2818">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606" />
|
||||||
|
</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="perspective2824" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3618"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-7"
|
||||||
|
id="linearGradient3608-5"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-7">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-3" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3677"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
id="linearGradient3608-1"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-5">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-9" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3686"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3717"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
id="linearGradient3608-8"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-58">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-2" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-2" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3726"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4410"
|
||||||
|
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="perspective4944"
|
||||||
|
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="perspective4966"
|
||||||
|
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="perspective5009"
|
||||||
|
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="perspective5165"
|
||||||
|
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="perspective7581"
|
||||||
|
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="perspective7606"
|
||||||
|
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="perspective7638"
|
||||||
|
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="perspective7660"
|
||||||
|
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="perspective7704"
|
||||||
|
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="perspective7730"
|
||||||
|
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="perspective7762"
|
||||||
|
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="perspective7783"
|
||||||
|
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="perspective7843"
|
||||||
|
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="perspective7881"
|
||||||
|
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="perspective7932"
|
||||||
|
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="perspective7983"
|
||||||
|
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="perspective8036"
|
||||||
|
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="perspective8057"
|
||||||
|
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="perspective8080"
|
||||||
|
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="perspective8137"
|
||||||
|
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="perspective8205"
|
||||||
|
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="perspective3644"
|
||||||
|
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="perspective3667"
|
||||||
|
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="perspective3688"
|
||||||
|
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" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3702">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.9454633"
|
||||||
|
id="feGaussianBlur3704" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="6.9202448"
|
||||||
|
inkscape:cx="34.256499"
|
||||||
|
inkscape:cy="31.037293"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1216"
|
||||||
|
inkscape:window-height="780"
|
||||||
|
inkscape:window-x="62"
|
||||||
|
inkscape:window-y="-3"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata2821">
|
||||||
|
<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>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<g
|
||||||
|
id="g3050"
|
||||||
|
transform="matrix(0.88337209,0,0,0.88337209,-13.393124,-2.7927451)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect2860-4"
|
||||||
|
d="M 61.312475,8.7935719 36.099709,14.905007 41.3814,20.44774 20.115401,40.712189 c 7.53106,7.877935 0.04547,0.02012 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64629388;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3702);enable-background:accumulate" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="czcczccccc"
|
||||||
|
id="rect2860"
|
||||||
|
d="m 59.019295,5.874689 c 0,0 -8.279255,2.287145 -12.481383,3.3057175 -4.202128,1.0185725 -12.731383,2.8057175 -12.731383,2.8057175 l 5.281691,5.542733 c 0,0 -6.588666,6.879816 -10.132999,10.257225 -3.544334,3.377408 -11.133,10.007224 -11.133,10.007224 7.820067,8.166942 0.04547,0.164626 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
style="color:#000000;fill:#ff2600;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:2.64629388;stroke-linecap:square;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" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="matrix(0.88337209,0,0,0.88337209,8.8604235,19.894314)"
|
||||||
|
id="g3054">
|
||||||
|
<path
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64629388;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3702);enable-background:accumulate"
|
||||||
|
d="M 61.312475,8.7935719 36.099709,14.905007 41.3814,20.44774 20.115401,40.712189 c 7.53106,7.877935 0.04547,0.02012 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
id="path3056"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cccccccc" />
|
||||||
|
<path
|
||||||
|
style="color:#000000;fill:#ff2600;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:2.64629388;stroke-linecap:square;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 59.019295,5.874689 c 0,0 -8.279255,2.287145 -12.481383,3.3057175 -4.202128,1.0185725 -12.731383,2.8057175 -12.731383,2.8057175 l 5.281691,5.542733 c 0,0 -6.588666,6.879816 -10.132999,10.257225 -3.544334,3.377408 -11.133,10.007224 -11.133,10.007224 7.820067,8.166942 0.04547,0.164626 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
id="path3058"
|
||||||
|
sodipodi:nodetypes="czcczccccc"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,305 @@
|
||||||
|
<?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="svg2816"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.47 r22583"
|
||||||
|
sodipodi:docname="Constraint_PointOnPoint.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2818">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606" />
|
||||||
|
</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="perspective2824" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602"
|
||||||
|
id="linearGradient3608"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.818181"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3618"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-7"
|
||||||
|
id="linearGradient3608-5"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-7">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-3" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3677"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
id="linearGradient3608-1"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-5">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-9" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3686"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3717"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
id="linearGradient3608-8"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-58">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-2" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-2" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3726"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4410"
|
||||||
|
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="perspective4944"
|
||||||
|
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="perspective4966"
|
||||||
|
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="perspective5009"
|
||||||
|
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="perspective5052"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-6"
|
||||||
|
id="linearGradient3608-88"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-6">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-0" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-4" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient5061"
|
||||||
|
xlink:href="#linearGradient3602-6"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective7008"
|
||||||
|
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
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient5061-2"
|
||||||
|
xlink:href="#linearGradient3602-6-6"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-6-6">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-0-4" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-4-7" />
|
||||||
|
</linearGradient>
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter7548">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.35927271"
|
||||||
|
id="feGaussianBlur7550" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.7499999"
|
||||||
|
inkscape:cx="39.421314"
|
||||||
|
inkscape:cy="23.682331"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1280"
|
||||||
|
inkscape:window-height="758"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="19"
|
||||||
|
inkscape:window-maximized="0" />
|
||||||
|
<metadata
|
||||||
|
id="metadata2821">
|
||||||
|
<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>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.5999999;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter7548);enable-background:accumulate"
|
||||||
|
id="path2826-6-2"
|
||||||
|
sodipodi:cx="14.363636"
|
||||||
|
sodipodi:cy="14.363636"
|
||||||
|
sodipodi:rx="9.454545"
|
||||||
|
sodipodi:ry="9.454545"
|
||||||
|
d="m 23.818181,14.363636 a 9.454545,9.454545 0 1 1 -18.90909,0 9.454545,9.454545 0 1 1 18.90909,0 z"
|
||||||
|
transform="matrix(1.1912715,0,0,1.1912715,17.601526,17.31909)" />
|
||||||
|
<path
|
||||||
|
sodipodi:type="arc"
|
||||||
|
style="color:#000000;fill:url(#linearGradient5061);fill-opacity:1;stroke:#731200;stroke-width:2.5999999;stroke-linecap:square;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="path2826-6"
|
||||||
|
sodipodi:cx="14.363636"
|
||||||
|
sodipodi:cy="14.363636"
|
||||||
|
sodipodi:rx="9.454545"
|
||||||
|
sodipodi:ry="9.454545"
|
||||||
|
d="m 23.818181,14.363636 a 9.454545,9.454545 0 1 1 -18.90909,0 9.454545,9.454545 0 1 1 18.90909,0 z"
|
||||||
|
transform="matrix(1.1912715,0,0,1.1912715,14.561922,13.257998)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 9.6 KiB |
|
@ -0,0 +1,390 @@
|
||||||
|
<?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="svg2816"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="Assembly_ConstraintEqual.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2818">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606" />
|
||||||
|
</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="perspective2824" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3618"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-7"
|
||||||
|
id="linearGradient3608-5"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-7">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-3" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3677"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
id="linearGradient3608-1"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-5">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-9" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3686"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3717"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
id="linearGradient3608-8"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-58">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-2" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-2" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3726"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4410"
|
||||||
|
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="perspective4944"
|
||||||
|
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="perspective4966"
|
||||||
|
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="perspective5009"
|
||||||
|
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="perspective5165"
|
||||||
|
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="perspective7581"
|
||||||
|
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="perspective7606"
|
||||||
|
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="perspective7638"
|
||||||
|
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="perspective7660"
|
||||||
|
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="perspective7704"
|
||||||
|
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="perspective7730"
|
||||||
|
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="perspective7762"
|
||||||
|
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="perspective7783"
|
||||||
|
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="perspective7843"
|
||||||
|
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="perspective7881"
|
||||||
|
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="perspective7932"
|
||||||
|
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="perspective7983"
|
||||||
|
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="perspective8036"
|
||||||
|
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="perspective8057"
|
||||||
|
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="perspective8080"
|
||||||
|
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="perspective8137"
|
||||||
|
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="perspective8205"
|
||||||
|
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="perspective3644"
|
||||||
|
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="perspective3667"
|
||||||
|
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="perspective3688"
|
||||||
|
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" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3702">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.9454633"
|
||||||
|
id="feGaussianBlur3704" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="6.9202448"
|
||||||
|
inkscape:cx="34.256499"
|
||||||
|
inkscape:cy="31.037293"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1216"
|
||||||
|
inkscape:window-height="780"
|
||||||
|
inkscape:window-x="62"
|
||||||
|
inkscape:window-y="-3"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata2821">
|
||||||
|
<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>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<g
|
||||||
|
id="g3050"
|
||||||
|
transform="matrix(0.88337209,0,0,0.88337209,-12.81511,-1.7812202)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect2860-4"
|
||||||
|
d="M 61.312475,8.7935719 36.099709,14.905007 41.3814,20.44774 20.115401,40.712189 c 7.53106,7.877935 0.04547,0.02012 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64629388;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3702);enable-background:accumulate" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="czcczccccc"
|
||||||
|
id="rect2860"
|
||||||
|
d="m 59.019295,5.874689 c 0,0 -8.279255,2.287145 -12.481383,3.3057175 -4.202128,1.0185725 -12.731383,2.8057175 -12.731383,2.8057175 l 5.281691,5.542733 c 0,0 -6.588666,6.879816 -10.132999,10.257225 -3.544334,3.377408 -11.133,10.007224 -11.133,10.007224 7.820067,8.166942 0.04547,0.164626 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
style="color:#000000;fill:#ff2600;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:2.64629388;stroke-linecap:square;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" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="matrix(0,0.88337209,0.88337209,0,19.006475,7.5807086)"
|
||||||
|
id="g3054">
|
||||||
|
<path
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64629388;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3702);enable-background:accumulate"
|
||||||
|
d="M 61.312475,8.7935719 36.099709,14.905007 41.3814,20.44774 20.115401,40.712189 c 7.53106,7.877935 0.04547,0.02012 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
id="path3056"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cccccccc" />
|
||||||
|
<path
|
||||||
|
style="color:#000000;fill:#ff2600;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:2.64629388;stroke-linecap:square;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 59.019295,5.874689 c 0,0 -8.279255,2.287145 -12.481383,3.3057175 -4.202128,1.0185725 -12.731383,2.8057175 -12.731383,2.8057175 l 5.281691,5.542733 c 0,0 -6.588666,6.879816 -10.132999,10.257225 -3.544334,3.377408 -11.133,10.007224 -11.133,10.007224 7.820067,8.166942 0.04547,0.164626 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
id="path3058"
|
||||||
|
sodipodi:nodetypes="czcczccccc"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,397 @@
|
||||||
|
<?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="svg2816"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="Assembly_ConstraintOpposite.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2818">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606" />
|
||||||
|
</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="perspective2824" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3618"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-7"
|
||||||
|
id="linearGradient3608-5"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-7">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-3" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3677"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
id="linearGradient3608-1"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-5">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-9" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3686"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3717"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
id="linearGradient3608-8"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-58">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-2" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-2" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3726"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4410"
|
||||||
|
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="perspective4944"
|
||||||
|
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="perspective4966"
|
||||||
|
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="perspective5009"
|
||||||
|
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="perspective5165"
|
||||||
|
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="perspective7581"
|
||||||
|
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="perspective7606"
|
||||||
|
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="perspective7638"
|
||||||
|
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="perspective7660"
|
||||||
|
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="perspective7704"
|
||||||
|
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="perspective7730"
|
||||||
|
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="perspective7762"
|
||||||
|
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="perspective7783"
|
||||||
|
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="perspective7843"
|
||||||
|
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="perspective7881"
|
||||||
|
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="perspective7932"
|
||||||
|
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="perspective7983"
|
||||||
|
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="perspective8036"
|
||||||
|
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="perspective8057"
|
||||||
|
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="perspective8080"
|
||||||
|
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="perspective8137"
|
||||||
|
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="perspective8205"
|
||||||
|
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="perspective3644"
|
||||||
|
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="perspective3667"
|
||||||
|
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="perspective3688"
|
||||||
|
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" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3702">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.9454633"
|
||||||
|
id="feGaussianBlur3704" />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
color-interpolation-filters="sRGB"
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3702-9">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.9454633"
|
||||||
|
id="feGaussianBlur3704-9" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="6.9202448"
|
||||||
|
inkscape:cx="34.256499"
|
||||||
|
inkscape:cy="31.037293"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1216"
|
||||||
|
inkscape:window-height="780"
|
||||||
|
inkscape:window-x="62"
|
||||||
|
inkscape:window-y="-3"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata2821">
|
||||||
|
<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>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<g
|
||||||
|
id="g3098"
|
||||||
|
transform="matrix(0.73373599,0,0,0.73373599,-0.9038719,-2.11167)">
|
||||||
|
<path
|
||||||
|
id="rect2860-4"
|
||||||
|
d="M 61.312475,8.7935719 36.099709,14.905007 41.3814,20.44774 20.115401,40.712189 14.575014,34.897974 7.2768832,59.809458 32.489649,53.698023 l -4.807417,-5.045019 21.266,-20.264449 5.044554,5.293877 7.319689,-24.8888601 z"
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64629388;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3702);enable-background:accumulate"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="czcczcccccccc"
|
||||||
|
id="rect2860"
|
||||||
|
d="m 59.019295,5.874689 c 0,0 -8.279255,2.287145 -12.481383,3.3057175 -4.202128,1.0185725 -12.731383,2.8057175 -12.731383,2.8057175 l 5.281691,5.542733 c 0,0 -6.588666,6.879816 -10.132999,10.257225 -3.544334,3.377408 -11.133,10.007224 -11.133,10.007224 L 12.281834,31.979091 4.9837031,56.890575 30.196469,50.77914 l -4.807417,-5.045019 21.266,-20.264449 5.044554,5.293877 7.319689,-24.88886 z"
|
||||||
|
style="color:#000000;fill:#ff2600;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:2.64629388;stroke-linecap:square;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"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g3098-5"
|
||||||
|
transform="matrix(0.74880754,0,0,0.74880754,15.986665,17.73916)">
|
||||||
|
<path
|
||||||
|
id="rect2860-4-0"
|
||||||
|
d="M 61.312475,8.7935719 36.099709,14.905007 41.3814,20.44774 20.115401,40.712189 14.575014,34.897974 7.2768832,59.809458 32.489649,53.698023 l -4.807417,-5.045019 21.266,-20.264449 5.044554,5.293877 7.319689,-24.8888601 z"
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64629388;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3702-9);enable-background:accumulate"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="czcczcccccccc"
|
||||||
|
id="rect2860-1"
|
||||||
|
d="m 59.019295,5.874689 c 0,0 -8.279255,2.287145 -12.481383,3.3057175 -4.202128,1.0185725 -12.731383,2.8057175 -12.731383,2.8057175 l 5.281691,5.542733 c 0,0 -6.588666,6.879816 -10.132999,10.257225 -3.544334,3.377408 -11.133,10.007224 -11.133,10.007224 L 12.281834,31.979091 4.9837031,56.890575 30.196469,50.77914 l -4.807417,-5.045019 21.266,-20.264449 5.044554,5.293877 7.319689,-24.88886 z"
|
||||||
|
style="color:#000000;fill:#ff2600;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:2.64629388;stroke-linecap:square;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"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,539 @@
|
||||||
|
<?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="svg2816"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.47 r22583"
|
||||||
|
sodipodi:docname="Constraint_Parallel.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2818">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606" />
|
||||||
|
</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="perspective2824" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3618"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-7"
|
||||||
|
id="linearGradient3608-5"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-7">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-3" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3677"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
id="linearGradient3608-1"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-5">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-9" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3686"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3717"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
id="linearGradient3608-8"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-58">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-2" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-2" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3726"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4410"
|
||||||
|
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="perspective4944"
|
||||||
|
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="perspective4966"
|
||||||
|
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="perspective5009"
|
||||||
|
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="perspective5165"
|
||||||
|
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="perspective7581"
|
||||||
|
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="perspective7606"
|
||||||
|
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="perspective7638"
|
||||||
|
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="perspective7660"
|
||||||
|
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="perspective7704"
|
||||||
|
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="perspective7730"
|
||||||
|
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="perspective7762"
|
||||||
|
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="perspective7783"
|
||||||
|
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="perspective7843"
|
||||||
|
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="perspective7881"
|
||||||
|
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="perspective7932"
|
||||||
|
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="perspective7983"
|
||||||
|
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="perspective8036"
|
||||||
|
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="perspective8057"
|
||||||
|
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="perspective8080"
|
||||||
|
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="perspective8137"
|
||||||
|
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="perspective8205"
|
||||||
|
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="perspective8233"
|
||||||
|
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="perspective8254"
|
||||||
|
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="perspective8276"
|
||||||
|
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="perspective8346"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-1"
|
||||||
|
id="linearGradient3608"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-1">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-22" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-1" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective8386"
|
||||||
|
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="linearGradient3602-1-9">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-22-5" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-1-4" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient8395"
|
||||||
|
xlink:href="#linearGradient3602-1-9"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective8423"
|
||||||
|
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="perspective8452"
|
||||||
|
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="linearGradient3602-1-2">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-22-55" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-1-8" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective8519"
|
||||||
|
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="perspective8540"
|
||||||
|
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="perspective8562"
|
||||||
|
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="perspective8584"
|
||||||
|
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="perspective8584-3"
|
||||||
|
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="perspective8616"
|
||||||
|
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="perspective8637"
|
||||||
|
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="perspective8690"
|
||||||
|
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="perspective8711"
|
||||||
|
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="perspective8733"
|
||||||
|
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" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter8751">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="1.0887561"
|
||||||
|
id="feGaussianBlur8753" />
|
||||||
|
</filter>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective8789"
|
||||||
|
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="perspective8810"
|
||||||
|
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" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter8824">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.985625"
|
||||||
|
id="feGaussianBlur8826" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="4"
|
||||||
|
inkscape:cx="59.820537"
|
||||||
|
inkscape:cy="14.955208"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1280"
|
||||||
|
inkscape:window-height="758"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="19"
|
||||||
|
inkscape:window-maximized="0" />
|
||||||
|
<metadata
|
||||||
|
id="metadata2821">
|
||||||
|
<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>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<path
|
||||||
|
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.92547666999999989;stroke-linecap:square;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;filter:url(#filter8824);opacity:0.6"
|
||||||
|
d="M 29.15625,8.625 C 29.06879,8.625 29,8.66138 29,8.71875 l 0,41.15625 -19.84375,0 c -0.087461,0 -0.1562499,0.03638 -0.1562499,0.09375 l 0,10.3125 c 0,0.05737 0.068789,0.09375 0.1562499,0.09375 l 51.6875,0 C 60.93121,60.375 61,60.33862 61,60.28125 l 0,-10.3125 C 61,49.91138 60.93121,49.875 60.84375,49.875 l -20.09375,0 0,-41.15625 C 40.75,8.66138 40.68121,8.625 40.59375,8.625 l -11.4375,0 z"
|
||||||
|
id="rect8776-7" />
|
||||||
|
<path
|
||||||
|
style="opacity:1;color:#000000;fill:#ff2000;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:1.92547666999999989;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
||||||
|
d="M 25.65625 5.75 C 25.568789 5.75 25.5 5.7863836 25.5 5.84375 L 25.5 47 L 5.65625 47 C 5.5687892 47 5.5 47.036384 5.5 47.09375 L 5.5 57.40625 C 5.5 57.463616 5.5687892 57.5 5.65625 57.5 L 57.34375 57.5 C 57.431211 57.5 57.5 57.463616 57.5 57.40625 L 57.5 47.09375 C 57.5 47.036384 57.431211 47 57.34375 47 L 37.25 47 L 37.25 5.84375 C 37.25 5.7863836 37.181211 5.75 37.09375 5.75 L 25.65625 5.75 z "
|
||||||
|
id="rect8776" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 19 KiB |
|
@ -0,0 +1,397 @@
|
||||||
|
<?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="svg2816"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="Assembly_ConstraintBidirectional.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2818">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606" />
|
||||||
|
</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="perspective2824" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3618"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-7"
|
||||||
|
id="linearGradient3608-5"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-7">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-3" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3677"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
id="linearGradient3608-1"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-5">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-9" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3686"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3717"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
id="linearGradient3608-8"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-58">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-2" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-2" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3726"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4410"
|
||||||
|
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="perspective4944"
|
||||||
|
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="perspective4966"
|
||||||
|
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="perspective5009"
|
||||||
|
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="perspective5165"
|
||||||
|
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="perspective7581"
|
||||||
|
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="perspective7606"
|
||||||
|
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="perspective7638"
|
||||||
|
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="perspective7660"
|
||||||
|
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="perspective7704"
|
||||||
|
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="perspective7730"
|
||||||
|
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="perspective7762"
|
||||||
|
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="perspective7783"
|
||||||
|
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="perspective7843"
|
||||||
|
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="perspective7881"
|
||||||
|
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="perspective7932"
|
||||||
|
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="perspective7983"
|
||||||
|
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="perspective8036"
|
||||||
|
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="perspective8057"
|
||||||
|
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="perspective8080"
|
||||||
|
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="perspective8137"
|
||||||
|
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="perspective8205"
|
||||||
|
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="perspective3644"
|
||||||
|
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="perspective3667"
|
||||||
|
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="perspective3688"
|
||||||
|
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" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3702">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.9454633"
|
||||||
|
id="feGaussianBlur3704" />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
color-interpolation-filters="sRGB"
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3702-6">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.9454633"
|
||||||
|
id="feGaussianBlur3704-9" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="6.9202448"
|
||||||
|
inkscape:cx="34.256499"
|
||||||
|
inkscape:cy="36.425465"
|
||||||
|
inkscape:current-layer="g3050"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1216"
|
||||||
|
inkscape:window-height="780"
|
||||||
|
inkscape:window-x="61"
|
||||||
|
inkscape:window-y="-3"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata2821">
|
||||||
|
<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>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<g
|
||||||
|
id="g3050"
|
||||||
|
transform="matrix(0.88337209,0,0,0.88337209,-5.4454283,19.460803)">
|
||||||
|
<g
|
||||||
|
id="g3040"
|
||||||
|
transform="matrix(0.70815348,0,0,0.70815348,-4.8361263,16.006514)">
|
||||||
|
<path
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64629388;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3702);enable-background:accumulate"
|
||||||
|
d="M 61.312475,8.7935719 36.099709,14.905007 41.3814,20.44774 20.115401,40.712189 c 7.53106,7.877935 0.04547,0.02012 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
id="rect2860-4"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cccccccc" />
|
||||||
|
<path
|
||||||
|
style="color:#000000;fill:#ff2600;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:2.64629388;stroke-linecap:square;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 59.019295,5.874689 c 0,0 -8.279255,2.287145 -12.481383,3.3057175 -4.202128,1.0185725 -12.731383,2.8057175 -12.731383,2.8057175 l 5.281691,5.542733 c 0,0 -6.588666,6.879816 -10.132999,10.257225 -3.544334,3.377408 -11.133,10.007224 -11.133,10.007224 7.820067,8.166942 0.04547,0.164626 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
id="rect2860"
|
||||||
|
sodipodi:nodetypes="czcczccccc"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
<rect
|
||||||
|
style="color:#000000;fill:#ff2000;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:1.77474844;stroke-linecap:square;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="rect8680-5"
|
||||||
|
width="48.159821"
|
||||||
|
height="7.8346114"
|
||||||
|
x="14.16935"
|
||||||
|
y="-22.681246"
|
||||||
|
rx="0.14551316"
|
||||||
|
ry="0.095443547"
|
||||||
|
transform="matrix(0.71707082,0.69700031,-0.69700031,0.71707082,0,0)" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,394 @@
|
||||||
|
<?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="svg2816"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.4 r9939"
|
||||||
|
sodipodi:docname="Assembly_ConstraintUnidirectional1.svg">
|
||||||
|
<defs
|
||||||
|
id="defs2818">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff2600;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606" />
|
||||||
|
</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="perspective2824" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3618"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-7"
|
||||||
|
id="linearGradient3608-5"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-7">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-1" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-3" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3677"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
id="linearGradient3608-1"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-5">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-9" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-9" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3686"
|
||||||
|
xlink:href="#linearGradient3602-5"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3717"
|
||||||
|
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
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
id="linearGradient3608-8"
|
||||||
|
x1="3.909091"
|
||||||
|
y1="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y2="14.363636"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3602-58">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#c51900;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3604-2" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ff5f00;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3606-2" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
y2="14.363636"
|
||||||
|
x2="24.81818"
|
||||||
|
y1="14.363636"
|
||||||
|
x1="3.909091"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
id="linearGradient3726"
|
||||||
|
xlink:href="#linearGradient3602-58"
|
||||||
|
inkscape:collect="always" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4410"
|
||||||
|
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="perspective4944"
|
||||||
|
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="perspective4966"
|
||||||
|
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="perspective5009"
|
||||||
|
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="perspective5165"
|
||||||
|
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="perspective7581"
|
||||||
|
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="perspective7606"
|
||||||
|
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="perspective7638"
|
||||||
|
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="perspective7660"
|
||||||
|
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="perspective7704"
|
||||||
|
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="perspective7730"
|
||||||
|
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="perspective7762"
|
||||||
|
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="perspective7783"
|
||||||
|
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="perspective7843"
|
||||||
|
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="perspective7881"
|
||||||
|
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="perspective7932"
|
||||||
|
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="perspective7983"
|
||||||
|
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="perspective8036"
|
||||||
|
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="perspective8057"
|
||||||
|
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="perspective8080"
|
||||||
|
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="perspective8137"
|
||||||
|
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="perspective8205"
|
||||||
|
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="perspective3644"
|
||||||
|
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="perspective3667"
|
||||||
|
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="perspective3688"
|
||||||
|
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" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3702">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.9454633"
|
||||||
|
id="feGaussianBlur3704" />
|
||||||
|
</filter>
|
||||||
|
<filter
|
||||||
|
color-interpolation-filters="sRGB"
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3702-6">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="0.9454633"
|
||||||
|
id="feGaussianBlur3704-9" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="6.9202448"
|
||||||
|
inkscape:cx="34.256499"
|
||||||
|
inkscape:cy="36.425465"
|
||||||
|
inkscape:current-layer="g3050"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1216"
|
||||||
|
inkscape:window-height="780"
|
||||||
|
inkscape:window-x="61"
|
||||||
|
inkscape:window-y="-3"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata2821">
|
||||||
|
<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>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<g
|
||||||
|
id="g3050"
|
||||||
|
transform="matrix(0.88337209,0,0,0.88337209,-5.4454283,19.460803)">
|
||||||
|
<rect
|
||||||
|
style="color:#000000;fill:#ff2000;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:1.77474844;stroke-linecap:square;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="rect8680-5"
|
||||||
|
width="48.159821"
|
||||||
|
height="7.8346114"
|
||||||
|
x="14.16935"
|
||||||
|
y="-22.681246"
|
||||||
|
rx="0.14551316"
|
||||||
|
ry="0.095443547"
|
||||||
|
transform="matrix(0.71707082,0.69700031,-0.69700031,0.71707082,0,0)" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="rect2860-4-8"
|
||||||
|
d="M 61.312475,8.7935719 36.099709,14.905007 41.3814,20.44774 20.115401,40.712189 c 7.53106,7.877935 0.04547,0.02012 7.566831,7.940815 l 21.266,-20.264449 5.044554,5.293877 z"
|
||||||
|
style="opacity:0.6;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.64629388;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3702-6);enable-background:accumulate"
|
||||||
|
transform="matrix(-0.70815348,0,0,-0.70815348,91.910169,16.681614)" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="czcczccccc"
|
||||||
|
id="rect2860-49"
|
||||||
|
d="m 46.896,8.4840738 c 0,0 5.862983,-1.6196497 8.838735,-2.3409553 2.975751,-0.7213057 9.015773,-1.9868786 9.015773,-1.9868786 L 61.01026,0.23113421 c 0,0 4.665787,-4.87196561 7.175718,-7.26368961 2.509933,-2.391723 7.883873,-7.0866506 7.883873,-7.0866506 -5.537807,-5.783449 -0.0322,-0.116581 -5.358478,-5.623316 L 55.651782,-5.3921816 52.079463,-9.1410594 z"
|
||||||
|
style="color:#000000;fill:#ff2600;fill-opacity:1;fill-rule:nonzero;stroke:#731200;stroke-width:1.87398219;stroke-linecap:square;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" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 14 KiB |
412
src/Mod/Assembly/Gui/TaskAssemblyConstraints.cpp
Normal file
|
@ -0,0 +1,412 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* Copyright (c) 2009 Juergen Riegel <juergen.riegel@web.de> *
|
||||||
|
* *
|
||||||
|
* 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"
|
||||||
|
|
||||||
|
#ifndef _PreComp_
|
||||||
|
# include <QRegExp>
|
||||||
|
# include <QString>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#include "TaskAssemblyConstraints.h"
|
||||||
|
|
||||||
|
#include <Constraint.h>
|
||||||
|
#include <ItemPart.h>
|
||||||
|
|
||||||
|
#include <Base/Tools.h>
|
||||||
|
#include <Base/Console.h>
|
||||||
|
#include <Gui/Application.h>
|
||||||
|
#include <Gui/Document.h>
|
||||||
|
#include <Gui/BitmapFactory.h>
|
||||||
|
#include <Gui/ViewProvider.h>
|
||||||
|
#include <Gui/MainWindow.h>
|
||||||
|
#include <Gui/BitmapFactory.h>
|
||||||
|
#include <boost/bind.hpp>
|
||||||
|
|
||||||
|
using namespace AssemblyGui;
|
||||||
|
using namespace Gui::TaskView;
|
||||||
|
|
||||||
|
extern Assembly::Item* ActiveAsmObject;
|
||||||
|
|
||||||
|
TaskAssemblyConstraints::TaskAssemblyConstraints(ViewProviderConstraint* vp)
|
||||||
|
: TaskBox(Gui::BitmapFactory().pixmap("document-new"),tr("Constraints"),true, 0), view(vp)
|
||||||
|
{
|
||||||
|
// we need a separate container widget to add all controls to
|
||||||
|
proxy = new QWidget(this);
|
||||||
|
ui = new Ui::TaskAssemblyConstraints();
|
||||||
|
ui->setupUi(proxy);
|
||||||
|
this->groupLayout()->addWidget(proxy);
|
||||||
|
|
||||||
|
//initialy hide the value and orientation field
|
||||||
|
ui->value_widget->hide();
|
||||||
|
ui->orientation_widget->hide();
|
||||||
|
|
||||||
|
//set all basic values
|
||||||
|
Assembly::ItemAssembly* ass = NULL;
|
||||||
|
Assembly::Constraint* obj = dynamic_cast<Assembly::Constraint*>(vp->getObject());
|
||||||
|
if(obj->First.getValue()) {
|
||||||
|
QString str;
|
||||||
|
str = QString::fromAscii(obj->First.getValue()->getNameInDocument()) + QString::fromAscii(".") + QString::fromStdString(obj->First.getSubValues().front());
|
||||||
|
ui->first_geom->setText(str);
|
||||||
|
ass = dynamic_cast<Assembly::ItemPart*>(obj->First.getValue())->getParentAssembly();
|
||||||
|
};
|
||||||
|
if(obj->Second.getValue()) {
|
||||||
|
QString str;
|
||||||
|
str = QString::fromAscii(obj->Second.getValue()->getNameInDocument()) + QString::fromAscii(".") + QString::fromStdString(obj->Second.getSubValues().front());
|
||||||
|
ui->second_geom->setText(str);
|
||||||
|
if(!ass)
|
||||||
|
ass = dynamic_cast<Assembly::ItemPart*>(obj->Second.getValue())->getParentAssembly();
|
||||||
|
};
|
||||||
|
|
||||||
|
if(ass)
|
||||||
|
ass->execute();
|
||||||
|
|
||||||
|
//get the individual constraint settings
|
||||||
|
ui->value->setValue(obj->Value.getValue());
|
||||||
|
setOrientation(dcm::Direction(obj->Orientation.getValue()));
|
||||||
|
|
||||||
|
int v = obj->Type.getValue();
|
||||||
|
if(v==0)
|
||||||
|
ui->fix->setChecked(true);
|
||||||
|
|
||||||
|
if(v==1)
|
||||||
|
ui->distance->setChecked(true);
|
||||||
|
|
||||||
|
if(v==2)
|
||||||
|
ui->orientation->setChecked(true);
|
||||||
|
|
||||||
|
if(v==3)
|
||||||
|
ui->angle->setChecked(true);
|
||||||
|
|
||||||
|
if(v==4)
|
||||||
|
ui->align->setChecked(true);
|
||||||
|
|
||||||
|
if(v==5)
|
||||||
|
ui->coincident->setChecked(true);
|
||||||
|
|
||||||
|
|
||||||
|
setPossibleConstraints();
|
||||||
|
|
||||||
|
//setup all signals for event processing
|
||||||
|
QObject::connect(
|
||||||
|
ui->fix, SIGNAL(toggled(bool)),
|
||||||
|
this, SLOT(on_constraint_selection(bool)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->distance, SIGNAL(toggled(bool)),
|
||||||
|
this, SLOT(on_constraint_selection(bool)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->orientation, SIGNAL(toggled(bool)),
|
||||||
|
this, SLOT(on_constraint_selection(bool)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->angle, SIGNAL(toggled(bool)),
|
||||||
|
this, SLOT(on_constraint_selection(bool)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->align, SIGNAL(toggled(bool)),
|
||||||
|
this, SLOT(on_constraint_selection(bool)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->coincident, SIGNAL(toggled(bool)),
|
||||||
|
this, SLOT(on_constraint_selection(bool)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->parallel, SIGNAL(toggled(bool)),
|
||||||
|
this, SLOT(on_orientation_selection(bool)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->equal, SIGNAL(toggled(bool)),
|
||||||
|
this, SLOT(on_orientation_selection(bool)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->opposite, SIGNAL(toggled(bool)),
|
||||||
|
this, SLOT(on_orientation_selection(bool)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->perpendicular, SIGNAL(toggled(bool)),
|
||||||
|
this, SLOT(on_orientation_selection(bool)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->value, SIGNAL(valueChanged(double)),
|
||||||
|
this, SLOT(on_value_change(double)));
|
||||||
|
QObject::connect(
|
||||||
|
ui->clear_first, SIGNAL(pressed()),
|
||||||
|
this, SLOT(on_clear_first()));
|
||||||
|
QObject::connect(
|
||||||
|
ui->clear_second, SIGNAL(pressed()),
|
||||||
|
this, SLOT(on_clear_second()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
dcm::Direction TaskAssemblyConstraints::getOrientation()
|
||||||
|
{
|
||||||
|
if(ui->parallel->isChecked())
|
||||||
|
return dcm::parallel;
|
||||||
|
if(ui->equal->isChecked())
|
||||||
|
return dcm::equal;
|
||||||
|
if(ui->opposite->isChecked())
|
||||||
|
return dcm::opposite;
|
||||||
|
|
||||||
|
return dcm::perpendicular;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskAssemblyConstraints::setOrientation(dcm::Direction d)
|
||||||
|
{
|
||||||
|
switch(d) {
|
||||||
|
case dcm::perpendicular:
|
||||||
|
ui->perpendicular->setChecked(true);
|
||||||
|
break;
|
||||||
|
case dcm::equal:
|
||||||
|
ui->equal->setChecked(true);
|
||||||
|
break;
|
||||||
|
case dcm::opposite:
|
||||||
|
ui->opposite->setChecked(true);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ui->parallel->setChecked(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TaskAssemblyConstraints::~TaskAssemblyConstraints()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskAssemblyConstraints::onSelectionChanged(const Gui::SelectionChanges& msg)
|
||||||
|
{
|
||||||
|
if(msg.Type == Gui::SelectionChanges::AddSelection) {
|
||||||
|
|
||||||
|
//add it as the first geometry?
|
||||||
|
if(ui->first_geom->text().isEmpty()) {
|
||||||
|
std::vector<Gui::SelectionObject> objs = Gui::Selection().getSelectionEx();
|
||||||
|
Assembly::Constraint* con = dynamic_cast<Assembly::Constraint*>(view->getObject());
|
||||||
|
|
||||||
|
if(!ActiveAsmObject || !ActiveAsmObject->getTypeId().isDerivedFrom(Assembly::ItemAssembly::getClassTypeId())) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No active Assembly"),
|
||||||
|
QObject::tr("You need a active (blue) Assembly to insert a Constraint. Please create a new one or make one active (double click)."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::pair<Assembly::ItemPart*, Assembly::ItemAssembly*> part1 = static_cast<Assembly::ItemAssembly*>(ActiveAsmObject)->getContainingPart(objs.back().getObject());
|
||||||
|
con->First.setValue(part1.first, objs.back().getSubNames());
|
||||||
|
QString str;
|
||||||
|
str = QString::fromAscii(part1.first->getNameInDocument()) + QString::fromAscii(".") + QString::fromStdString(con->First.getSubValues().front());
|
||||||
|
ui->first_geom->setText(str);
|
||||||
|
|
||||||
|
App::GetApplication().getActiveDocument()->recompute();
|
||||||
|
setPossibleConstraints();
|
||||||
|
view->draw();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ui->second_geom->text().isEmpty()) {
|
||||||
|
std::vector<Gui::SelectionObject> objs = Gui::Selection().getSelectionEx();
|
||||||
|
Assembly::Constraint* con = dynamic_cast<Assembly::Constraint*>(view->getObject());
|
||||||
|
|
||||||
|
if(!ActiveAsmObject || !ActiveAsmObject->getTypeId().isDerivedFrom(Assembly::ItemAssembly::getClassTypeId())) {
|
||||||
|
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No active Assembly"),
|
||||||
|
QObject::tr("You need a active (blue) Assembly to insert a Constraint. Please create a new one or make one active (double click)."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::pair<Assembly::ItemPart*, Assembly::ItemAssembly*> part2 = static_cast<Assembly::ItemAssembly*>(ActiveAsmObject)->getContainingPart(objs.back().getObject());
|
||||||
|
con->Second.setValue(part2.first, objs.back().getSubNames());
|
||||||
|
QString str;
|
||||||
|
str = QString::fromAscii(part2.first->getNameInDocument()) + QString::fromAscii(".") + QString::fromStdString(con->Second.getSubValues().front());
|
||||||
|
ui->second_geom->setText(str);
|
||||||
|
|
||||||
|
App::GetApplication().getActiveDocument()->recompute();
|
||||||
|
setPossibleConstraints();
|
||||||
|
view->draw();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskAssemblyConstraints::on_constraint_selection(bool clicked)
|
||||||
|
{
|
||||||
|
if(clicked) {
|
||||||
|
Assembly::Constraint* obj = dynamic_cast<Assembly::Constraint*>(view->getObject());
|
||||||
|
|
||||||
|
if(ui->fix->isChecked())
|
||||||
|
obj->Type.setValue("Fix");
|
||||||
|
|
||||||
|
if(ui->distance->isChecked())
|
||||||
|
obj->Type.setValue("Distance");
|
||||||
|
|
||||||
|
if(ui->orientation->isChecked())
|
||||||
|
obj->Type.setValue("Orientation");
|
||||||
|
|
||||||
|
if(ui->angle->isChecked())
|
||||||
|
obj->Type.setValue("Angle");
|
||||||
|
|
||||||
|
if(ui->align->isChecked())
|
||||||
|
obj->Type.setValue("Align");
|
||||||
|
|
||||||
|
if(ui->coincident->isChecked())
|
||||||
|
obj->Type.setValue("Coincident");
|
||||||
|
|
||||||
|
App::GetApplication().getActiveDocument()->recompute();
|
||||||
|
view->draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskAssemblyConstraints::on_orientation_selection(bool clicked)
|
||||||
|
{
|
||||||
|
if(clicked) {
|
||||||
|
Assembly::Constraint* obj = dynamic_cast<Assembly::Constraint*>(view->getObject());
|
||||||
|
obj->Orientation.setValue(getOrientation());
|
||||||
|
|
||||||
|
App::GetApplication().getActiveDocument()->recompute();
|
||||||
|
view->draw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskAssemblyConstraints::on_value_change(double val)
|
||||||
|
{
|
||||||
|
|
||||||
|
Assembly::Constraint* obj = dynamic_cast<Assembly::Constraint*>(view->getObject());
|
||||||
|
obj->Value.setValue(ui->value->value());
|
||||||
|
|
||||||
|
App::GetApplication().getActiveDocument()->recompute();
|
||||||
|
view->draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskAssemblyConstraints::on_clear_first()
|
||||||
|
{
|
||||||
|
Assembly::Constraint* obj = dynamic_cast<Assembly::Constraint*>(view->getObject());
|
||||||
|
obj->First.setValue(NULL);
|
||||||
|
ui->first_geom->clear();
|
||||||
|
setPossibleConstraints();
|
||||||
|
view->draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskAssemblyConstraints::on_clear_second()
|
||||||
|
{
|
||||||
|
|
||||||
|
Assembly::Constraint* obj = dynamic_cast<Assembly::Constraint*>(view->getObject());
|
||||||
|
obj->Second.setValue(NULL);
|
||||||
|
ui->second_geom->clear();
|
||||||
|
setPossibleConstraints();
|
||||||
|
view->draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskAssemblyConstraints::setPossibleConstraints()
|
||||||
|
{
|
||||||
|
ui->fix->setEnabled(false);
|
||||||
|
ui->distance->setEnabled(false);
|
||||||
|
ui->orientation->setEnabled(false);
|
||||||
|
ui->angle->setEnabled(false);
|
||||||
|
ui->align->setEnabled(false);
|
||||||
|
ui->coincident->setEnabled(false);
|
||||||
|
|
||||||
|
Assembly::Constraint* obj = dynamic_cast<Assembly::Constraint*>(view->getObject());
|
||||||
|
if(obj->First.getValue()) {
|
||||||
|
|
||||||
|
Assembly::ItemPart* p1 = dynamic_cast<Assembly::ItemPart*>(obj->First.getValue());
|
||||||
|
|
||||||
|
if(!p1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Assembly::ItemAssembly* ass = p1->getParentAssembly();
|
||||||
|
|
||||||
|
//extract the geometries to use for comparison
|
||||||
|
boost::shared_ptr<Geometry3D> g1 = ass->m_solver->getGeometry3D(obj->First.getSubValues()[0].c_str());
|
||||||
|
if(obj->Second.getValue()) {
|
||||||
|
Assembly::ItemPart* p2 = dynamic_cast<Assembly::ItemPart*>(obj->Second.getValue());
|
||||||
|
if(!p2)
|
||||||
|
return;
|
||||||
|
|
||||||
|
boost::shared_ptr<Geometry3D> g2 = ass->m_solver->getGeometry3D(obj->Second.getSubValues()[0].c_str());
|
||||||
|
|
||||||
|
//check all valid combinaions
|
||||||
|
if(isCombination(g1,g2, dcm::geometry::point, dcm::geometry::point)) {
|
||||||
|
ui->distance->setEnabled(true);
|
||||||
|
ui->coincident->setEnabled(true);
|
||||||
|
};
|
||||||
|
if(isCombination(g1,g2, dcm::geometry::point, dcm::geometry::line)) {
|
||||||
|
ui->distance->setEnabled(true);
|
||||||
|
ui->coincident->setEnabled(true);
|
||||||
|
};
|
||||||
|
if(isCombination(g1,g2, dcm::geometry::point, dcm::geometry::plane)) {
|
||||||
|
ui->distance->setEnabled(true);
|
||||||
|
ui->coincident->setEnabled(true);
|
||||||
|
};
|
||||||
|
if(isCombination(g1,g2, dcm::geometry::point, dcm::geometry::cylinder)) {
|
||||||
|
ui->distance->setEnabled(true);
|
||||||
|
ui->coincident->setEnabled(true);
|
||||||
|
};
|
||||||
|
if(isCombination(g1,g2, dcm::geometry::line, dcm::geometry::line)) {
|
||||||
|
ui->distance->setEnabled(true);
|
||||||
|
ui->orientation->setEnabled(true);
|
||||||
|
ui->angle->setEnabled(true);
|
||||||
|
ui->coincident->setEnabled(true);
|
||||||
|
ui->align->setEnabled(true);
|
||||||
|
};
|
||||||
|
if(isCombination(g1,g2, dcm::geometry::line, dcm::geometry::plane)) {
|
||||||
|
ui->orientation->setEnabled(true);
|
||||||
|
ui->angle->setEnabled(true);
|
||||||
|
ui->coincident->setEnabled(true);
|
||||||
|
ui->align->setEnabled(true);
|
||||||
|
};
|
||||||
|
if(isCombination(g1,g2, dcm::geometry::line, dcm::geometry::cylinder)) {
|
||||||
|
ui->distance->setEnabled(true);
|
||||||
|
ui->orientation->setEnabled(true);
|
||||||
|
ui->angle->setEnabled(true);
|
||||||
|
ui->coincident->setEnabled(true);
|
||||||
|
ui->align->setEnabled(true);
|
||||||
|
};
|
||||||
|
if(isCombination(g1,g2, dcm::geometry::plane, dcm::geometry::plane)) {
|
||||||
|
ui->orientation->setEnabled(true);
|
||||||
|
ui->angle->setEnabled(true);
|
||||||
|
ui->coincident->setEnabled(true);
|
||||||
|
ui->align->setEnabled(true);
|
||||||
|
};
|
||||||
|
if(isCombination(g1,g2, dcm::geometry::plane, dcm::geometry::cylinder)) {
|
||||||
|
ui->orientation->setEnabled(true);
|
||||||
|
ui->angle->setEnabled(true);
|
||||||
|
ui->coincident->setEnabled(true);
|
||||||
|
ui->align->setEnabled(true);
|
||||||
|
};
|
||||||
|
if(isCombination(g1,g2, dcm::geometry::cylinder, dcm::geometry::cylinder)) {
|
||||||
|
ui->coincident->setEnabled(true);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//only fix works
|
||||||
|
ui->fix->setEnabled(true);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TaskAssemblyConstraints::isCombination(boost::shared_ptr<Geometry3D> g1, boost::shared_ptr<Geometry3D> g2, dcm::geometry::types t1, dcm::geometry::types t2)
|
||||||
|
{
|
||||||
|
if(g1->getGeometryType() == t1 && g2->getGeometryType() == t2)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if(g1->getGeometryType() == t2 && g2->getGeometryType() == t1)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include "moc_TaskAssemblyConstraints.cpp"
|
||||||
|
|
|
@ -21,24 +21,52 @@
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTFIX_H
|
#ifndef GUI_TASKVIEW_TaskAssemblyConstraints_H
|
||||||
#define ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTFIX_H
|
#define GUI_TASKVIEW_TaskAssemblyConstraints_H
|
||||||
|
|
||||||
|
#include <Gui/TaskView/TaskView.h>
|
||||||
|
#include <Gui/Selection.h>
|
||||||
#include "ViewProviderConstraint.h"
|
#include "ViewProviderConstraint.h"
|
||||||
|
#include <opendcm/core/equations.hpp>
|
||||||
|
#include <Solver.h>
|
||||||
|
#include <boost/signals.hpp>
|
||||||
|
#include "ui_TaskAssemblyConstraints.h"
|
||||||
|
|
||||||
|
namespace App {
|
||||||
|
class Property;
|
||||||
|
}
|
||||||
|
|
||||||
namespace AssemblyGui {
|
namespace AssemblyGui {
|
||||||
|
|
||||||
class AssemblyGuiExport ViewProviderConstraintFix : public ViewProviderConstraint {
|
class TaskAssemblyConstraints : public Gui::TaskView::TaskBox, public Gui::SelectionObserver
|
||||||
|
{
|
||||||
PROPERTY_HEADER(AssemblyGui::ViewProviderConstraintFix);
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ViewProviderConstraintFix();
|
TaskAssemblyConstraints(ViewProviderConstraint* vp);
|
||||||
|
~TaskAssemblyConstraints();
|
||||||
|
|
||||||
// override linked shape as we want to highlight the whole part
|
/// Observer message from the Selection
|
||||||
TopoDS_Shape getConstraintShape(int link);
|
void onSelectionChanged(const Gui::SelectionChanges& msg);
|
||||||
|
|
||||||
|
public Q_SLOTS:
|
||||||
|
void on_constraint_selection(bool clicked);
|
||||||
|
void on_value_change(double val);
|
||||||
|
void on_orientation_selection(bool clicked);
|
||||||
|
void on_clear_first();
|
||||||
|
void on_clear_second();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QWidget* proxy;
|
||||||
|
Ui::TaskAssemblyConstraints* ui;
|
||||||
|
ViewProviderConstraint* view;
|
||||||
|
|
||||||
|
void setOrientation(dcm::Direction);
|
||||||
|
dcm::Direction getOrientation();
|
||||||
|
void setPossibleConstraints();
|
||||||
|
bool isCombination(boost::shared_ptr<Geometry3D> g1, boost::shared_ptr<Geometry3D> g2, dcm::geometry::types t1, dcm::geometry::types t2);
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
} //namespace AssemblyGui
|
||||||
|
|
||||||
#endif // VIEWPROVIDERCONSTRAINTFIX_H
|
#endif // GUI_TASKVIEW_TASKAPPERANCE_H
|
979
src/Mod/Assembly/Gui/TaskAssemblyConstraints.ui
Normal file
|
@ -0,0 +1,979 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>TaskAssemblyConstraints</class>
|
||||||
|
<widget class="QWidget" name="TaskAssemblyConstraints">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>297</width>
|
||||||
|
<height>541</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Form</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="first_geom">
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>First constraint geometry</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="clear_first">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset>
|
||||||
|
<normaloff>:/icons/delete.png</normaloff>:/icons/delete.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="second_geom">
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>Second constraint geometry</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="clear_second">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset>
|
||||||
|
<normaloff>:/icons/delete.png</normaloff>:/icons/delete.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>10</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QGridLayout" name="constraints">
|
||||||
|
<property name="sizeConstraint">
|
||||||
|
<enum>QLayout::SetNoConstraint</enum>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QToolButton" name="distance">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Distance</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintDistance.svg</normaloff>:/icons/Assembly_ConstraintDistance.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRepeat">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="3">
|
||||||
|
<widget class="QToolButton" name="coincident">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Coincident</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintCoincidence.svg</normaloff>:/icons/Assembly_ConstraintCoincidence.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRepeat">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QToolButton" name="fix">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Fix</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintLock.svg</normaloff>:/icons/Assembly_ConstraintLock.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRepeat">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="3">
|
||||||
|
<widget class="QToolButton" name="orientation">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Orientation</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintOrientation.svg</normaloff>:/icons/Assembly_ConstraintOrientation.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRepeat">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="2">
|
||||||
|
<widget class="QToolButton" name="align">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Align</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintAlignment.svg</normaloff>:/icons/Assembly_ConstraintAlignment.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRepeat">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QToolButton" name="angle">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Angle</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintAngle.svg</normaloff>:/icons/Assembly_ConstraintAngle.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRepeat">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>13</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QFrame" name="frame">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::HLine</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Raised</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>13</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="value_widget" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="value_label">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>value</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDoubleSpinBox" name="value">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="two_directional">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintBidirectional.svg</normaloff>:/icons/Assembly_ConstraintBidirectional.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="pos_direction">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintUnidirectional2.svg</normaloff>:/icons/Assembly_ConstraintUnidirectional2.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QToolButton" name="neg_direction">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintUnidirectional1.svg</normaloff>:/icons/Assembly_ConstraintUnidirectional1.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>16</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer_5">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Fixed</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>5</width>
|
||||||
|
<height>5</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="orientation_widget" native="true">
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QToolButton" name="parallel">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Parallel</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintParallel.svg</normaloff>:/icons/Assembly_ConstraintParallel.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextUnderIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QToolButton" name="equal">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Equal</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintEqual.svg</normaloff>:/icons/Assembly_ConstraintEqual.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextUnderIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QToolButton" name="opposite">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Opposite</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintOpposite.svg</normaloff>:/icons/Assembly_ConstraintOpposite.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextUnderIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="3">
|
||||||
|
<widget class="QToolButton" name="perpendicular">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Perpend.</string>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="Resources/Assembly.qrc">
|
||||||
|
<normaloff>:/icons/Assembly_ConstraintPerpendicular.svg</normaloff>:/icons/Assembly_ConstraintPerpendicular.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="autoExclusive">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonTextUnderIcon</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoRaise">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources>
|
||||||
|
<include location="Resources/Assembly.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>distance</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value_widget</receiver>
|
||||||
|
<slot>setVisible(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>170</x>
|
||||||
|
<y>94</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>172</x>
|
||||||
|
<y>210</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>distance</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>orientation_widget</receiver>
|
||||||
|
<slot>setHidden(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>170</x>
|
||||||
|
<y>94</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>209</x>
|
||||||
|
<y>247</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>fix</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value_widget</receiver>
|
||||||
|
<slot>setHidden(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>58</x>
|
||||||
|
<y>94</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>209</x>
|
||||||
|
<y>210</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>fix</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>orientation_widget</receiver>
|
||||||
|
<slot>setHidden(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>58</x>
|
||||||
|
<y>94</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>209</x>
|
||||||
|
<y>247</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>orientation</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value_widget</receiver>
|
||||||
|
<slot>setHidden(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>284</x>
|
||||||
|
<y>94</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>209</x>
|
||||||
|
<y>210</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>orientation</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>orientation_widget</receiver>
|
||||||
|
<slot>setVisible(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>284</x>
|
||||||
|
<y>94</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>209</x>
|
||||||
|
<y>247</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>angle</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value_widget</receiver>
|
||||||
|
<slot>setVisible(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>58</x>
|
||||||
|
<y>126</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>172</x>
|
||||||
|
<y>209</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>angle</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>orientation_widget</receiver>
|
||||||
|
<slot>setHidden(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>58</x>
|
||||||
|
<y>126</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>172</x>
|
||||||
|
<y>246</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>align</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value_widget</receiver>
|
||||||
|
<slot>setVisible(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>170</x>
|
||||||
|
<y>126</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>172</x>
|
||||||
|
<y>209</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>align</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>orientation_widget</receiver>
|
||||||
|
<slot>setVisible(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>170</x>
|
||||||
|
<y>126</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>172</x>
|
||||||
|
<y>246</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>coincident</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value_widget</receiver>
|
||||||
|
<slot>setHidden(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>284</x>
|
||||||
|
<y>126</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>172</x>
|
||||||
|
<y>209</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>coincident</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>orientation_widget</receiver>
|
||||||
|
<slot>setVisible(bool)</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>284</x>
|
||||||
|
<y>126</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>172</x>
|
||||||
|
<y>246</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>distance</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value</receiver>
|
||||||
|
<slot>setFocus()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>170</x>
|
||||||
|
<y>94</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>147</x>
|
||||||
|
<y>203</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>distance</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value</receiver>
|
||||||
|
<slot>selectAll()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>170</x>
|
||||||
|
<y>94</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>147</x>
|
||||||
|
<y>203</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>angle</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value</receiver>
|
||||||
|
<slot>setFocus()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>58</x>
|
||||||
|
<y>126</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>147</x>
|
||||||
|
<y>203</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>angle</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value</receiver>
|
||||||
|
<slot>selectAll()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>58</x>
|
||||||
|
<y>126</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>147</x>
|
||||||
|
<y>203</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>align</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value</receiver>
|
||||||
|
<slot>setFocus()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>170</x>
|
||||||
|
<y>126</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>147</x>
|
||||||
|
<y>203</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>align</sender>
|
||||||
|
<signal>toggled(bool)</signal>
|
||||||
|
<receiver>value</receiver>
|
||||||
|
<slot>selectAll()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>170</x>
|
||||||
|
<y>126</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>147</x>
|
||||||
|
<y>203</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
|
@ -1,5 +1,5 @@
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Copyright (c) 2010 Juergen Riegel <FreeCAD@juergen-riegel.net> *
|
* Copyright (c) 2009 Jürgen Riegel <juergen.riegel@web.de> *
|
||||||
* *
|
* *
|
||||||
* This file is part of the FreeCAD CAx development system. *
|
* This file is part of the FreeCAD CAx development system. *
|
||||||
* *
|
* *
|
||||||
|
@ -22,60 +22,68 @@
|
||||||
|
|
||||||
|
|
||||||
#include "PreCompiled.h"
|
#include "PreCompiled.h"
|
||||||
|
|
||||||
#ifndef _PreComp_
|
#ifndef _PreComp_
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <Base/Placement.h>
|
#include "TaskDlgAssemblyConstraints.h"
|
||||||
#include <Base/Console.h>
|
#include <Gui/Command.h>
|
||||||
#include "ItemPart.h"
|
#include <App/Application.h>
|
||||||
|
|
||||||
#include "ConstraintFix.h"
|
using namespace AssemblyGui;
|
||||||
|
|
||||||
|
|
||||||
using namespace Assembly;
|
//**************************************************************************
|
||||||
|
//**************************************************************************
|
||||||
|
// TaskDialog
|
||||||
|
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
namespace Assembly {
|
TaskDlgAssemblyConstraints::TaskDlgAssemblyConstraints(ViewProviderConstraint* vp)
|
||||||
|
: TaskDialog(), view(vp)
|
||||||
|
{
|
||||||
|
Constraints = new TaskAssemblyConstraints(vp);
|
||||||
|
|
||||||
|
Content.push_back(Constraints);
|
||||||
|
}
|
||||||
|
|
||||||
PROPERTY_SOURCE(Assembly::ConstraintFix, Assembly::Constraint)
|
TaskDlgAssemblyConstraints::~TaskDlgAssemblyConstraints()
|
||||||
|
{
|
||||||
ConstraintFix::ConstraintFix() {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ConstraintFix::~ConstraintFix() {
|
//==== calls from the TaskView ===============================================================
|
||||||
|
|
||||||
Assembly::ItemPart* part = static_cast<Assembly::ItemPart*>(First.getValue());
|
|
||||||
if(part && part->m_part) {
|
|
||||||
part->m_part->fix(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
short ConstraintFix::mustExecute() const {
|
void TaskDlgAssemblyConstraints::open()
|
||||||
//if (Sketch.isTouched() ||
|
{
|
||||||
// Length.isTouched())
|
|
||||||
// return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
App::DocumentObjectExecReturn* ConstraintFix::execute(void) {
|
|
||||||
|
|
||||||
return App::DocumentObject::StdReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ConstraintFix::init(Assembly::ItemAssembly* ass) {
|
|
||||||
|
|
||||||
//cant use the base class init as we only need one part
|
|
||||||
initLink(First);
|
|
||||||
|
|
||||||
//get the part
|
|
||||||
Assembly::ItemPart* part = static_cast<Assembly::ItemPart*>(First.getValue());
|
|
||||||
if(!part)
|
|
||||||
return;
|
|
||||||
|
|
||||||
//init the constraint
|
|
||||||
part->m_part->fix(true);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TaskDlgAssemblyConstraints::clicked(int)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TaskDlgAssemblyConstraints::accept()
|
||||||
|
{
|
||||||
|
std::string document = getDocumentName(); // needed because resetEdit() deletes this instance
|
||||||
|
Gui::Command::doCommand(Gui::Command::Gui,"Gui.getDocument('%s').resetEdit()", document.c_str());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TaskDlgAssemblyConstraints::reject()
|
||||||
|
{
|
||||||
|
std::string document = getDocumentName(); // needed because resetEdit() deletes this instance
|
||||||
|
Gui::Command::doCommand(Gui::Command::Gui,"Gui.getDocument('%s').resetEdit()", document.c_str());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TaskDlgAssemblyConstraints::helpRequested()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#include "moc_TaskDlgAssemblyConstraints.cpp"
|
|
@ -1,5 +1,5 @@
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
* Copyright (c) 2009 Jürgen Riegel <juergen.riegel@web.de> *
|
||||||
* *
|
* *
|
||||||
* This file is part of the FreeCAD CAx development system. *
|
* This file is part of the FreeCAD CAx development system. *
|
||||||
* *
|
* *
|
||||||
|
@ -21,22 +21,50 @@
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#ifndef ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTANGLE_H
|
#ifndef ASSEMBLYGUI_TaskDlgAssemblyConstraints_H
|
||||||
#define ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTANGLE_H
|
#define ASSEMBLYGUI_TaskDlgAssemblyConstraints_H
|
||||||
|
|
||||||
|
#include <Gui/TaskView/TaskDialog.h>
|
||||||
|
#include "TaskAssemblyConstraints.h"
|
||||||
#include "ViewProviderConstraint.h"
|
#include "ViewProviderConstraint.h"
|
||||||
|
|
||||||
namespace AssemblyGui {
|
namespace AssemblyGui {
|
||||||
|
|
||||||
class AssemblyGuiExport ViewProviderConstraintAngle : public ViewProviderConstraint {
|
|
||||||
|
|
||||||
PROPERTY_HEADER(AssemblyGui::ViewProviderConstraintAngle);
|
/// simulation dialog for the TaskView
|
||||||
|
class AssemblyGuiExport TaskDlgAssemblyConstraints : public Gui::TaskView::TaskDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ViewProviderConstraintAngle();
|
TaskDlgAssemblyConstraints(ViewProviderConstraint* vp);
|
||||||
|
~TaskDlgAssemblyConstraints();
|
||||||
|
|
||||||
|
public:
|
||||||
|
/// is called the TaskView when the dialog is opened
|
||||||
|
virtual void open();
|
||||||
|
/// is called by the framework if an button is clicked which has no accept or reject role
|
||||||
|
virtual void clicked(int);
|
||||||
|
/// is called by the framework if the dialog is accepted (Ok)
|
||||||
|
virtual bool accept();
|
||||||
|
/// is called by the framework if the dialog is rejected (Cancel)
|
||||||
|
virtual bool reject();
|
||||||
|
/// is called by the framework if the user presses the help button
|
||||||
|
virtual void helpRequested();
|
||||||
|
virtual bool isAllowedAlterDocument(void) const
|
||||||
|
{ return false; }
|
||||||
|
|
||||||
|
/// returns for Close and Help button
|
||||||
|
virtual QDialogButtonBox::StandardButtons getStandardButtons(void) const
|
||||||
|
{ return QDialogButtonBox::Ok|QDialogButtonBox::Help; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
TaskAssemblyConstraints *Constraints;
|
||||||
|
ViewProviderConstraint *view;
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // VIEWPROVIDERCONSTRAINTFIX_H
|
|
||||||
|
} //namespace AssemblyGui
|
||||||
|
|
||||||
|
#endif // ASSEMBLYGUI_TaskDlgAssemblyConstraints_H
|
|
@ -22,11 +22,14 @@
|
||||||
|
|
||||||
#include "PreCompiled.h"
|
#include "PreCompiled.h"
|
||||||
#include "ViewProviderConstraint.h"
|
#include "ViewProviderConstraint.h"
|
||||||
|
#include "TaskAssemblyConstraints.h"
|
||||||
|
#include "TaskDlgAssemblyConstraints.h"
|
||||||
#include "Mod/Assembly/App/Constraint.h"
|
#include "Mod/Assembly/App/Constraint.h"
|
||||||
#include "Mod/Assembly/App/ItemPart.h"
|
#include "Mod/Assembly/App/ItemPart.h"
|
||||||
#include <Mod/Part/App/PartFeature.h>
|
#include <Mod/Part/App/PartFeature.h>
|
||||||
#include <Base/Console.h>
|
#include <Base/Console.h>
|
||||||
#include <App/Application.h>
|
#include <App/Application.h>
|
||||||
|
#include <Gui/Control.h>
|
||||||
#include <BRep_Builder.hxx>
|
#include <BRep_Builder.hxx>
|
||||||
#include <Inventor/nodes/SoPolygonOffset.h>
|
#include <Inventor/nodes/SoPolygonOffset.h>
|
||||||
#include <Inventor/nodes/SoGroup.h>
|
#include <Inventor/nodes/SoGroup.h>
|
||||||
|
@ -74,6 +77,7 @@ ViewProviderConstraintInternal::ViewProviderConstraintInternal()
|
||||||
PointSize.setValue(lwidth);
|
PointSize.setValue(lwidth);
|
||||||
|
|
||||||
Transparency.setValue(50);
|
Transparency.setValue(50);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void ViewProviderConstraintInternal::updateVis(const TopoDS_Shape& shape)
|
void ViewProviderConstraintInternal::updateVis(const TopoDS_Shape& shape)
|
||||||
|
@ -196,6 +200,24 @@ void ViewProviderConstraint::update(const App::Property* prop) {
|
||||||
|
|
||||||
|
|
||||||
void ViewProviderConstraint::updateData(const App::Property* prop) {
|
void ViewProviderConstraint::updateData(const App::Property* prop) {
|
||||||
|
|
||||||
|
//set the icon
|
||||||
|
int v = dynamic_cast<Assembly::Constraint*>(getObject())->Type.getValue();
|
||||||
|
if(v == 4)
|
||||||
|
sPixmap = "Assembly_ConstraintAlignment";
|
||||||
|
if(v == 3)
|
||||||
|
sPixmap = "Assembly_ConstraintAngle";
|
||||||
|
if(v == 5)
|
||||||
|
sPixmap = "Assembly_ConstraintCoincidence";
|
||||||
|
if(v == 1)
|
||||||
|
sPixmap = "Assembly_ConstraintDistance";
|
||||||
|
if(v == 0)
|
||||||
|
sPixmap = "Assembly_ConstraintLock";
|
||||||
|
if(v == 2)
|
||||||
|
sPixmap = "Assembly_ConstraintOrientation";
|
||||||
|
if(v==6)
|
||||||
|
sPixmap = "Assembly_ConstraintGeneral";
|
||||||
|
|
||||||
if(Visibility.getValue() && m_selected) {
|
if(Visibility.getValue() && m_selected) {
|
||||||
|
|
||||||
draw();
|
draw();
|
||||||
|
@ -320,7 +342,7 @@ void ViewProviderConstraint::onSelectionChanged(const Gui::SelectionChanges& msg
|
||||||
pcModeSwitch->whichChild = 0;
|
pcModeSwitch->whichChild = 0;
|
||||||
draw();
|
draw();
|
||||||
}
|
}
|
||||||
else {
|
else if(!isEditing()) {
|
||||||
internal_vp.switch_node(false);
|
internal_vp.switch_node(false);
|
||||||
pcModeSwitch->whichChild = -1;
|
pcModeSwitch->whichChild = -1;
|
||||||
m_selected = false;
|
m_selected = false;
|
||||||
|
@ -350,7 +372,8 @@ TopoDS_Shape ViewProviderConstraint::getConstraintShape(int link)
|
||||||
if(feature1->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
|
if(feature1->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
|
||||||
ts = static_cast<Part::Feature*>(feature1)->Shape.getShape();
|
ts = static_cast<Part::Feature*>(feature1)->Shape.getShape();
|
||||||
}
|
}
|
||||||
else return TopoDS_Shape();
|
else
|
||||||
|
return TopoDS_Shape();
|
||||||
|
|
||||||
TopoDS_Shape s1 = ts.getSubShape(dynamic_cast<Assembly::Constraint*>(pcObject)->First.getSubValues()[0].c_str());
|
TopoDS_Shape s1 = ts.getSubShape(dynamic_cast<Assembly::Constraint*>(pcObject)->First.getSubValues()[0].c_str());
|
||||||
|
|
||||||
|
@ -375,7 +398,8 @@ TopoDS_Shape ViewProviderConstraint::getConstraintShape(int link)
|
||||||
if(feature2->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
|
if(feature2->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
|
||||||
ts2 = static_cast<Part::Feature*>(feature2)->Shape.getShape();
|
ts2 = static_cast<Part::Feature*>(feature2)->Shape.getShape();
|
||||||
}
|
}
|
||||||
else return TopoDS_Shape();
|
else
|
||||||
|
return TopoDS_Shape();
|
||||||
|
|
||||||
TopoDS_Shape s2 = ts2.getSubShape(dynamic_cast<Assembly::Constraint*>(pcObject)->Second.getSubValues()[0].c_str());
|
TopoDS_Shape s2 = ts2.getSubShape(dynamic_cast<Assembly::Constraint*>(pcObject)->Second.getSubValues()[0].c_str());
|
||||||
|
|
||||||
|
@ -387,3 +411,36 @@ void ViewProviderConstraint::setupContextMenu(QMenu* menu, QObject* receiver, co
|
||||||
{
|
{
|
||||||
ViewProviderDocumentObject::setupContextMenu(menu, receiver, member);
|
ViewProviderDocumentObject::setupContextMenu(menu, receiver, member);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ViewProviderConstraint::setEdit(int ModNum)
|
||||||
|
{
|
||||||
|
|
||||||
|
// When double-clicking on the item for this sketch the
|
||||||
|
// object unsets and sets its edit mode without closing
|
||||||
|
// the task panel
|
||||||
|
Gui::TaskView::TaskDialog* dlg = Gui::Control().activeDialog();
|
||||||
|
TaskDlgAssemblyConstraints* ConstraintsDlg = qobject_cast<TaskDlgAssemblyConstraints*>(dlg);
|
||||||
|
|
||||||
|
// start the edit dialog
|
||||||
|
if(ConstraintsDlg)
|
||||||
|
Gui::Control().showDialog(ConstraintsDlg);
|
||||||
|
else
|
||||||
|
Gui::Control().showDialog(new TaskDlgAssemblyConstraints(this));
|
||||||
|
|
||||||
|
//show the constraint geometries
|
||||||
|
internal_vp.switch_node(true);
|
||||||
|
pcModeSwitch->whichChild = 0;
|
||||||
|
draw();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ViewProviderConstraint::unsetEdit(int ModNum)
|
||||||
|
{
|
||||||
|
if(!Gui::Selection().isSelected(pcObject) || !Visibility.getValue()) {
|
||||||
|
internal_vp.switch_node(false);
|
||||||
|
pcModeSwitch->whichChild = -1;
|
||||||
|
m_selected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,16 +91,18 @@ public:
|
||||||
virtual void setDisplayMode(const char* ModeName);
|
virtual void setDisplayMode(const char* ModeName);
|
||||||
virtual std::vector<std::string> getDisplayModes(void) const;
|
virtual std::vector<std::string> getDisplayModes(void) const;
|
||||||
|
|
||||||
//avoid transformation on doouble click
|
//bring up constraint task when in edit mode
|
||||||
virtual bool doubleClicked(void) {return true;};
|
virtual bool setEdit(int ModNum);
|
||||||
|
virtual void unsetEdit(int ModNum);
|
||||||
|
|
||||||
|
//update visualisation and placements of the scenegraph
|
||||||
|
void draw();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//we need two seperate visual representations, as both constraint parts have different
|
//we need two seperate visual representations, as both constraint parts have different
|
||||||
//placements.
|
//placements.
|
||||||
ViewProviderConstraintInternal internal_vp;
|
ViewProviderConstraintInternal internal_vp;
|
||||||
|
|
||||||
//update visualisation and placements of the scenegraph
|
|
||||||
void draw();
|
|
||||||
void upstream_placement(Base::Placement& p, Assembly::Item* item);
|
void upstream_placement(Base::Placement& p, Assembly::Item* item);
|
||||||
|
|
||||||
//watch if something got selected in the tree
|
//watch if something got selected in the tree
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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 "ViewProviderConstraintAlignment.h"
|
|
||||||
|
|
||||||
using namespace AssemblyGui;
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(AssemblyGui::ViewProviderConstraintAlignment, Gui::ViewProviderDocumentObject)
|
|
||||||
|
|
||||||
ViewProviderConstraintAlignment::ViewProviderConstraintAlignment() {
|
|
||||||
|
|
||||||
sPixmap = "Assembly_ConstraintAlignment";
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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 ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTAlignment_H
|
|
||||||
#define ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTAlignment_H
|
|
||||||
|
|
||||||
#include "ViewProviderConstraint.h"
|
|
||||||
|
|
||||||
namespace AssemblyGui {
|
|
||||||
|
|
||||||
class AssemblyGuiExport ViewProviderConstraintAlignment : public ViewProviderConstraint {
|
|
||||||
|
|
||||||
PROPERTY_HEADER(AssemblyGui::ViewProviderConstraintAlignment);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ViewProviderConstraintAlignment();
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // VIEWPROVIDERCONSTRAINTFIX_H
|
|
|
@ -1,34 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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 "ViewProviderConstraintAngle.h"
|
|
||||||
|
|
||||||
using namespace AssemblyGui;
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(AssemblyGui::ViewProviderConstraintAngle, Gui::ViewProviderDocumentObject)
|
|
||||||
|
|
||||||
ViewProviderConstraintAngle::ViewProviderConstraintAngle() {
|
|
||||||
|
|
||||||
sPixmap = "Assembly_ConstraintAngle";
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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 "ViewProviderConstraintCoincidence.h"
|
|
||||||
|
|
||||||
using namespace AssemblyGui;
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(AssemblyGui::ViewProviderConstraintCoincidence, Gui::ViewProviderDocumentObject)
|
|
||||||
|
|
||||||
ViewProviderConstraintCoincidence::ViewProviderConstraintCoincidence() {
|
|
||||||
|
|
||||||
sPixmap = "Assembly_ConstraintCoincidence";
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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 ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTCoincidence_H
|
|
||||||
#define ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTCoincidence_H
|
|
||||||
|
|
||||||
#include "ViewProviderConstraint.h"
|
|
||||||
|
|
||||||
namespace AssemblyGui {
|
|
||||||
|
|
||||||
class AssemblyGuiExport ViewProviderConstraintCoincidence : public ViewProviderConstraint {
|
|
||||||
|
|
||||||
PROPERTY_HEADER(AssemblyGui::ViewProviderConstraintCoincidence);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ViewProviderConstraintCoincidence();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // VIEWPROVIDERCONSTRAINTFIX_H
|
|
|
@ -1,34 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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 "ViewProviderConstraintDistance.h"
|
|
||||||
|
|
||||||
using namespace AssemblyGui;
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(AssemblyGui::ViewProviderConstraintDistance, Gui::ViewProviderDocumentObject)
|
|
||||||
|
|
||||||
ViewProviderConstraintDistance::ViewProviderConstraintDistance() {
|
|
||||||
|
|
||||||
sPixmap = "Assembly_ConstraintDistance";
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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 ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTDISTANCE_H
|
|
||||||
#define ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTDISTANCE_H
|
|
||||||
|
|
||||||
#include <Gui/ViewProviderDocumentObject.h>
|
|
||||||
#include "ViewProviderConstraint.h"
|
|
||||||
|
|
||||||
namespace AssemblyGui {
|
|
||||||
|
|
||||||
class AssemblyGuiExport ViewProviderConstraintDistance : public ViewProviderConstraint {
|
|
||||||
|
|
||||||
PROPERTY_HEADER(AssemblyGui::ViewProviderConstraintDistance);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ViewProviderConstraintDistance();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // VIEWPROVIDERCONSTRAINTFIX_H
|
|
|
@ -1,56 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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 "ViewProviderConstraintFix.h"
|
|
||||||
#include "Mod/Assembly/App/ConstraintFix.h"
|
|
||||||
#include "Mod/Assembly/App/ItemPart.h"
|
|
||||||
#include <Base/Console.h>
|
|
||||||
|
|
||||||
using namespace AssemblyGui;
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(AssemblyGui::ViewProviderConstraintFix, Gui::ViewProviderDocumentObject)
|
|
||||||
|
|
||||||
ViewProviderConstraintFix::ViewProviderConstraintFix() {
|
|
||||||
|
|
||||||
sPixmap = "Assembly_ConstraintLock";
|
|
||||||
}
|
|
||||||
|
|
||||||
TopoDS_Shape ViewProviderConstraintFix::getConstraintShape(int link)
|
|
||||||
{
|
|
||||||
if(link == 1) {
|
|
||||||
|
|
||||||
App::DocumentObject* obj = dynamic_cast<Assembly::Constraint*>(pcObject)->First.getValue();
|
|
||||||
if(!obj)
|
|
||||||
return TopoDS_Shape();
|
|
||||||
|
|
||||||
Assembly::ItemPart* part = static_cast<Assembly::ItemPart*>(obj);
|
|
||||||
if(!part)
|
|
||||||
return TopoDS_Shape();
|
|
||||||
|
|
||||||
//return the whole shape
|
|
||||||
return part->getShape();
|
|
||||||
}
|
|
||||||
|
|
||||||
//there is no second link, only one part is fixed per constraint
|
|
||||||
return TopoDS_Shape();
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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 "ViewProviderConstraintOrientation.h"
|
|
||||||
|
|
||||||
using namespace AssemblyGui;
|
|
||||||
|
|
||||||
PROPERTY_SOURCE(AssemblyGui::ViewProviderConstraintOrientation, Gui::ViewProviderDocumentObject)
|
|
||||||
|
|
||||||
ViewProviderConstraintOrientation::ViewProviderConstraintOrientation() {
|
|
||||||
|
|
||||||
sPixmap = "Assembly_ConstraintOrientation";
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
/***************************************************************************
|
|
||||||
* Copyright (c) 2013 Stefan Tröger <stefantroeger@gmx.net> *
|
|
||||||
* *
|
|
||||||
* 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 ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTORIENTATION_H
|
|
||||||
#define ASSEMBLYGUI_VIEWPROVIDERCONSTRAINTORIENTATION_H
|
|
||||||
|
|
||||||
#include "ViewProviderConstraint.h"
|
|
||||||
|
|
||||||
namespace AssemblyGui {
|
|
||||||
|
|
||||||
class AssemblyGuiExport ViewProviderConstraintOrientation : public ViewProviderConstraint {
|
|
||||||
|
|
||||||
PROPERTY_HEADER(AssemblyGui::ViewProviderConstraintOrientation);
|
|
||||||
|
|
||||||
public:
|
|
||||||
ViewProviderConstraintOrientation();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // VIEWPROVIDERCONSTRAINTFIX_H
|
|
|
@ -52,6 +52,7 @@ Gui::ToolBarItem* Workbench::setupToolBars() const
|
||||||
Gui::ToolBarItem* root = StdWorkbench::setupToolBars();
|
Gui::ToolBarItem* root = StdWorkbench::setupToolBars();
|
||||||
Gui::ToolBarItem* part = new Gui::ToolBarItem(root);
|
Gui::ToolBarItem* part = new Gui::ToolBarItem(root);
|
||||||
part->setCommand(QT_TR_NOOP("Assembly"));
|
part->setCommand(QT_TR_NOOP("Assembly"));
|
||||||
|
*part << "Assembly_Constraint";
|
||||||
*part << "Assembly_ConstraintFix";
|
*part << "Assembly_ConstraintFix";
|
||||||
*part << "Assembly_ConstraintDistance";
|
*part << "Assembly_ConstraintDistance";
|
||||||
*part << "Assembly_ConstraintOrientation";
|
*part << "Assembly_ConstraintOrientation";
|
||||||
|
|