added TechDrawTools Commands
This commit is contained in:
@@ -75,6 +75,7 @@ void CreateTechDrawCommands(void);
|
||||
void CreateTechDrawCommandsDims(void);
|
||||
void CreateTechDrawCommandsDecorate(void);
|
||||
void CreateTechDrawCommandsAnnotate(void);
|
||||
void CreateTechDrawCommandsTools(void);
|
||||
|
||||
void loadTechDrawResource()
|
||||
{
|
||||
@@ -120,6 +121,7 @@ PyMOD_INIT_FUNC(TechDrawGui)
|
||||
CreateTechDrawCommandsDims();
|
||||
CreateTechDrawCommandsDecorate();
|
||||
CreateTechDrawCommandsAnnotate();
|
||||
CreateTechDrawCommandsTools();
|
||||
|
||||
TechDrawGui::Workbench::init();
|
||||
TechDrawGui::MDIViewPage::init();
|
||||
|
||||
@@ -111,6 +111,7 @@ SET(TechDrawGui_SRCS
|
||||
CommandCreateDims.cpp
|
||||
CommandDecorate.cpp
|
||||
CommandAnnotate.cpp
|
||||
CommandTools.cpp
|
||||
Resources/TechDraw.qrc
|
||||
PreCompiled.cpp
|
||||
PreCompiled.h
|
||||
|
||||
@@ -602,6 +602,7 @@ CmdTechDrawHorizontalDimension::CmdTechDrawHorizontalDimension()
|
||||
void CmdTechDrawHorizontalDimension::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
QMessageBox::warning(Gui::getMainWindow(),QObject::tr("Gestartet"),QObject::tr("Horizontal dimension"));
|
||||
bool result = _checkSelection(this,2);
|
||||
if (!result)
|
||||
return;
|
||||
|
||||
731
src/Mod/TechDraw/Gui/CommandTools.cpp
Normal file
731
src/Mod/TechDraw/Gui/CommandTools.cpp
Normal file
@@ -0,0 +1,731 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2021 edi *
|
||||
* *
|
||||
* 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 <QMessageBox>
|
||||
# include <iostream>
|
||||
# include <string>
|
||||
# include <sstream>
|
||||
# include <cstdlib>
|
||||
# include <exception>
|
||||
#endif //#ifndef _PreComp_
|
||||
|
||||
#include <QGraphicsView>
|
||||
|
||||
# include <App/DocumentObject.h>
|
||||
# include <Base/Exception.h>
|
||||
#include <Base/Console.h>
|
||||
#include <Base/Type.h>
|
||||
# include <Gui/Action.h>
|
||||
# include <Gui/Application.h>
|
||||
# include <Gui/BitmapFactory.h>
|
||||
# include <Gui/Command.h>
|
||||
# include <Gui/Control.h>
|
||||
# include <Gui/Document.h>
|
||||
# include <Gui/Selection.h>
|
||||
# include <Gui/MainWindow.h>
|
||||
# include <Gui/FileDialog.h>
|
||||
# include <Gui/ViewProvider.h>
|
||||
|
||||
# include <Mod/Part/App/PartFeature.h>
|
||||
|
||||
# include <Mod/TechDraw/App/DrawViewPart.h>
|
||||
# include <Mod/TechDraw/App/DrawProjGroupItem.h>
|
||||
# include <Mod/TechDraw/App/DrawProjGroup.h>
|
||||
# include <Mod/TechDraw/App/DrawViewDimension.h>
|
||||
# include <Mod/TechDraw/App/DrawDimHelper.h>
|
||||
# include <Mod/TechDraw/App/LandmarkDimension.h>
|
||||
# include <Mod/TechDraw/App/DrawPage.h>
|
||||
# include <Mod/TechDraw/App/DrawUtil.h>
|
||||
# include <Mod/TechDraw/App/Geometry.h>
|
||||
|
||||
#include <Mod/TechDraw/Gui/QGVPage.h>
|
||||
|
||||
|
||||
#include "DrawGuiUtil.h"
|
||||
#include "MDIViewPage.h"
|
||||
#include "ViewProviderPage.h"
|
||||
#include "TaskLinkDim.h"
|
||||
|
||||
using namespace TechDrawGui;
|
||||
using namespace TechDraw;
|
||||
using namespace std;
|
||||
|
||||
enum EdgeType{
|
||||
isInvalid,
|
||||
isHorizontal,
|
||||
isVertical,
|
||||
isDiagonal,
|
||||
isCircle,
|
||||
isEllipse,
|
||||
isBSplineCircle,
|
||||
isBSpline,
|
||||
isAngle,
|
||||
isAngle3Pt
|
||||
};
|
||||
|
||||
//internal test functions
|
||||
int _isMyValidSingleEdge(Gui::Command* cmd);
|
||||
std::vector<std::string> _getSubNames(Gui::Command* cmd);
|
||||
void _printSelected(Gui::Command* cmd);
|
||||
void _addCosEdge(Gui::Command* cmd);
|
||||
void _addCosCircle(Gui::Command* cmd);
|
||||
void _addCosCircleArc(Gui::Command* cmd);
|
||||
void _addCosVertex(Gui::Command* cmd);
|
||||
//internal helper functions
|
||||
bool _circulation(Base::Vector3d A, Base::Vector3d B, Base::Vector3d C);
|
||||
void _createThreadCircle(std::string Name, TechDraw::DrawViewPart* objFeat, float factor);
|
||||
void _createThreadLines(std::vector<std::string> SubNames, TechDraw::DrawViewPart* objFeat, float factor);
|
||||
void _setStyleAndWeight(TechDraw::CosmeticEdge* cosEdge, int style, float weight);
|
||||
|
||||
|
||||
//===========================================================================
|
||||
// TechDraw_ToolCircleCenterLines
|
||||
//===========================================================================
|
||||
|
||||
DEF_STD_CMD_A(CmdTechDrawToolCircleCenterLines)
|
||||
|
||||
CmdTechDrawToolCircleCenterLines::CmdTechDrawToolCircleCenterLines()
|
||||
: Command("TechDraw_ToolCircleCenterLines")
|
||||
{
|
||||
sAppModule = "TechDraw";
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Draw circle center lines");
|
||||
sToolTipText = QT_TR_NOOP("Draw circle center line cross at circles\n\
|
||||
- select many circles or arcs\n\
|
||||
- click this button");
|
||||
sWhatsThis = "TechDraw_ToolCircleCenterLines";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_ToolCircleCenterLines";
|
||||
}
|
||||
|
||||
void CmdTechDrawToolCircleCenterLines::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Base::Console().Message("ToolCircleCenterLines gestartet\n");
|
||||
auto selection = getSelection().getSelectionEx();
|
||||
if( selection.empty() ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Circle Centerlines"),
|
||||
QObject::tr("Selection is empty"));
|
||||
return;
|
||||
}
|
||||
auto objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
if( objFeat == nullptr ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Circle Centerlines"),
|
||||
QObject::tr("No object selected"));
|
||||
return;
|
||||
}
|
||||
const std::vector<std::string> SubNames = selection[0].getSubNames();
|
||||
for (std::string Name : SubNames) {
|
||||
int GeoId = TechDraw::DrawUtil::getIndexFromName(Name);
|
||||
TechDraw::BaseGeom* geom = objFeat->getGeomByIndex(GeoId);
|
||||
std::string GeoType = TechDraw::DrawUtil::getGeomTypeFromName(Name);
|
||||
if (GeoType == "Edge"){
|
||||
if (geom->geomType == TechDraw::CIRCLE ||
|
||||
geom->geomType == TechDraw::ARCOFCIRCLE){
|
||||
TechDraw::Circle* cgen = static_cast<TechDraw::Circle *>(geom);
|
||||
Base::Vector3d center = cgen->center;
|
||||
center.y = -center.y;
|
||||
float radius = cgen->radius;
|
||||
Base::Vector3d right(center.x+radius+2.0,center.y,0.0);
|
||||
Base::Vector3d top(center.x,center.y+radius+2.0,0.0);
|
||||
Base::Vector3d left(center.x-radius-2.0,center.y,0.0);
|
||||
Base::Vector3d bottom(center.x,center.y-radius-2.0,0.0);
|
||||
std::string line1tag = objFeat->addCosmeticEdge(right, left);
|
||||
std::string line2tag = objFeat->addCosmeticEdge(top, bottom);
|
||||
TechDraw::CosmeticEdge* horiz = objFeat->getCosmeticEdge(line1tag);
|
||||
_setStyleAndWeight(horiz,4,0.35);
|
||||
TechDraw::CosmeticEdge* vert = objFeat->getCosmeticEdge(line2tag);
|
||||
_setStyleAndWeight(vert,4,0.35);
|
||||
}
|
||||
}
|
||||
}
|
||||
getSelection().clearSelection();
|
||||
objFeat->refreshCEGeoms();
|
||||
objFeat->requestPaint();
|
||||
}
|
||||
|
||||
bool CmdTechDrawToolCircleCenterLines::isActive(void)
|
||||
{
|
||||
bool havePage = DrawGuiUtil::needPage(this);
|
||||
bool haveView = DrawGuiUtil::needView(this);
|
||||
return (havePage && haveView);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// TechDraw_ToolThreadHoleSide
|
||||
//===========================================================================
|
||||
|
||||
DEF_STD_CMD_A(CmdTechDrawToolThreadHoleSide)
|
||||
|
||||
CmdTechDrawToolThreadHoleSide::CmdTechDrawToolThreadHoleSide()
|
||||
: Command("TechDraw_ToolThreadHoleSide")
|
||||
{
|
||||
sAppModule = "TechDraw";
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Cosmetic thread hole side view");
|
||||
sToolTipText = QT_TR_NOOP("Draw cosmetic thread hole side view\n\
|
||||
- select two parallel lines\n\
|
||||
- click this button");
|
||||
sWhatsThis = "TechDraw_ToolThreadHoleSide";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_ToolThreadHoleSide";
|
||||
}
|
||||
|
||||
void CmdTechDrawToolThreadHoleSide::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Base::Console().Message("ToolThreadHoleSide gestartet\n");
|
||||
auto selection = getSelection().getSelectionEx();
|
||||
if( selection.empty() ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Thread Hole Side"),
|
||||
QObject::tr("Selection is empty"));
|
||||
return;
|
||||
}
|
||||
TechDraw::DrawViewPart* objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
if( objFeat == nullptr ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Thread Hole Side"),
|
||||
QObject::tr("No object selected"));
|
||||
return;
|
||||
}
|
||||
const std::vector<std::string> SubNames = selection[0].getSubNames();
|
||||
if (SubNames.size() >= 2) {
|
||||
_createThreadLines(SubNames, objFeat, 1.176);
|
||||
}
|
||||
getSelection().clearSelection();
|
||||
objFeat->refreshCEGeoms();
|
||||
objFeat->requestPaint();
|
||||
}
|
||||
|
||||
bool CmdTechDrawToolThreadHoleSide::isActive(void)
|
||||
{
|
||||
bool havePage = DrawGuiUtil::needPage(this);
|
||||
bool haveView = DrawGuiUtil::needView(this);
|
||||
return (havePage && haveView);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// TechDraw_ToolThreadBoltSide
|
||||
//===========================================================================
|
||||
|
||||
DEF_STD_CMD_A(CmdTechDrawToolThreadBoltSide)
|
||||
|
||||
CmdTechDrawToolThreadBoltSide::CmdTechDrawToolThreadBoltSide()
|
||||
: Command("TechDraw_ToolThreadBoltSide")
|
||||
{
|
||||
sAppModule = "TechDraw";
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Cosmetic thread bolt side view");
|
||||
sToolTipText = QT_TR_NOOP("Draw cosmetic crew thread side view\n\
|
||||
- select two parallel lines\n\
|
||||
- click this button");
|
||||
sWhatsThis = "TechDraw_ToolThreadBoltSide";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_ToolThreadBoltSide";
|
||||
}
|
||||
|
||||
void CmdTechDrawToolThreadBoltSide::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Base::Console().Message("ToolThreadBoltSide gestartet\n");
|
||||
auto selection = getSelection().getSelectionEx();
|
||||
if( selection.empty() ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Thread Bolt Side"),
|
||||
QObject::tr("Selection is empty"));
|
||||
return;
|
||||
}
|
||||
TechDraw::DrawViewPart* objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
if( objFeat == nullptr ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Thread Bolt Side"),
|
||||
QObject::tr("No object selected"));
|
||||
return;
|
||||
}
|
||||
const std::vector<std::string> SubNames = selection[0].getSubNames();
|
||||
if (SubNames.size() >= 2) {
|
||||
_createThreadLines(SubNames, objFeat, 0.85);
|
||||
}
|
||||
getSelection().clearSelection();
|
||||
objFeat->refreshCEGeoms();
|
||||
objFeat->requestPaint();
|
||||
}
|
||||
|
||||
bool CmdTechDrawToolThreadBoltSide::isActive(void)
|
||||
{
|
||||
bool havePage = DrawGuiUtil::needPage(this);
|
||||
bool haveView = DrawGuiUtil::needView(this);
|
||||
return (havePage && haveView);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// TechDraw_ToolThreadHoleBottom
|
||||
//===========================================================================
|
||||
|
||||
DEF_STD_CMD_A(CmdTechDrawToolThreadHoleBottom)
|
||||
|
||||
CmdTechDrawToolThreadHoleBottom::CmdTechDrawToolThreadHoleBottom()
|
||||
: Command("TechDraw_ToolThreadHoleBottom")
|
||||
{
|
||||
sAppModule = "TechDraw";
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Cosmetic thread hole bottom view");
|
||||
sToolTipText = QT_TR_NOOP("Draw cosmetic hole thread ground view\n\
|
||||
- select many circles\n\
|
||||
- click this button");
|
||||
sWhatsThis = "TechDraw_ToolThreadHoleBottom";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_ToolThreadHoleBottom";
|
||||
}
|
||||
|
||||
void CmdTechDrawToolThreadHoleBottom::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Base::Console().Message("ToolThreadHoleBottom gestartet\n");
|
||||
auto selection = getSelection().getSelectionEx();
|
||||
if( selection.empty() ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Thread Hole Bottom"),
|
||||
QObject::tr("Selection is empty"));
|
||||
return;
|
||||
}
|
||||
auto objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
if( objFeat == nullptr ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Thread Hole Bottom"),
|
||||
QObject::tr("No object selected"));
|
||||
return;
|
||||
}
|
||||
const std::vector<std::string> SubNames = selection[0].getSubNames();
|
||||
for (std::string Name : SubNames) {
|
||||
_createThreadCircle(Name, objFeat, 1.177);
|
||||
}
|
||||
getSelection().clearSelection();
|
||||
objFeat->refreshCEGeoms();
|
||||
objFeat->requestPaint();
|
||||
}
|
||||
|
||||
bool CmdTechDrawToolThreadHoleBottom::isActive(void)
|
||||
{
|
||||
bool havePage = DrawGuiUtil::needPage(this);
|
||||
bool haveView = DrawGuiUtil::needView(this);
|
||||
return (havePage && haveView);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// TechDraw_ToolThreadBoltBottom
|
||||
//===========================================================================
|
||||
|
||||
DEF_STD_CMD_A(CmdTechDrawToolThreadBoltBottom)
|
||||
|
||||
CmdTechDrawToolThreadBoltBottom::CmdTechDrawToolThreadBoltBottom()
|
||||
: Command("TechDraw_ToolThreadBoltBottom")
|
||||
{
|
||||
sAppModule = "TechDraw";
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Cosmetic thread bolt bottom view");
|
||||
sToolTipText = QT_TR_NOOP("Draw cosmetic screw thread ground view\n\
|
||||
- select many circles\n\
|
||||
- click this button");
|
||||
sWhatsThis = "TechDraw_ToolThreadBoltBottom";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_ToolThreadBoltBottom";
|
||||
}
|
||||
|
||||
void CmdTechDrawToolThreadBoltBottom::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Base::Console().Message("ToolThreadBoltBottom gestartet\n");
|
||||
auto selection = getSelection().getSelectionEx();
|
||||
if( selection.empty() ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Tread Bolt Bottom"),
|
||||
QObject::tr("Selection is empty"));
|
||||
return;
|
||||
}
|
||||
auto objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
if( objFeat == nullptr ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Tread Bolt Bottom"),
|
||||
QObject::tr("No object selected"));
|
||||
return;
|
||||
}
|
||||
const std::vector<std::string> SubNames = selection[0].getSubNames();
|
||||
for (std::string Name : SubNames) {
|
||||
_createThreadCircle(Name, objFeat, 0.85);
|
||||
}
|
||||
getSelection().clearSelection();
|
||||
objFeat->refreshCEGeoms();
|
||||
objFeat->requestPaint();
|
||||
}
|
||||
|
||||
bool CmdTechDrawToolThreadBoltBottom::isActive(void)
|
||||
{
|
||||
bool havePage = DrawGuiUtil::needPage(this);
|
||||
bool haveView = DrawGuiUtil::needView(this);
|
||||
return (havePage && haveView);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// TechDraw_MyCommand
|
||||
//===========================================================================
|
||||
|
||||
DEF_STD_CMD_A(CmdTechDrawMyCommand)
|
||||
|
||||
CmdTechDrawMyCommand::CmdTechDrawMyCommand()
|
||||
: Command("TechDraw_MyCommand")
|
||||
{
|
||||
sAppModule = "TechDraw";
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Insert My Command");
|
||||
sToolTipText = sMenuText;
|
||||
sWhatsThis = "TechDraw_MyCommand";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "TechDraw_MyCommand";
|
||||
}
|
||||
|
||||
void CmdTechDrawMyCommand::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Base::Console().Message("My Command gestartet\n");
|
||||
std::vector<std::string> SubNames;
|
||||
//SubNames = _getSubNames(this);
|
||||
_addCosEdge(this);
|
||||
_addCosCircle(this);
|
||||
_addCosVertex(this);
|
||||
_addCosCircleArc(this);
|
||||
/*
|
||||
for (std::string Name : SubNames){
|
||||
Base::Console().Message("%s\n",Name.c_str());
|
||||
}
|
||||
*/
|
||||
//int edgeType = _isMyValidSingleEdge(this);
|
||||
//Base::Console().Message("Type: %d\n",edgeType);
|
||||
|
||||
/*
|
||||
std::string Viewname; // name der View
|
||||
//-------------------------------------------
|
||||
std::vector<Gui::SelectionObject> selection = getSelection().getSelectionEx(); //Python: gui.Selection.getCompleteSelection()
|
||||
TechDraw::DrawViewPart * objFeat = 0;
|
||||
std::vector<std::string> SubNames;
|
||||
|
||||
std::vector<Gui::SelectionObject>::iterator itSel = selection.begin();
|
||||
for (; itSel != selection.end(); itSel++) {
|
||||
if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) {
|
||||
objFeat = static_cast<TechDraw::DrawViewPart*> ((*itSel).getObject()); //Python: gui.Selection.getCompleteSelection()[0]
|
||||
SubNames = (*itSel).getSubNames(); //Python: gui.Selection.getSelectionEx()[0].SubElementNames
|
||||
}
|
||||
}
|
||||
// gewählte Objekte als string: "Vertex5","Edge3",...
|
||||
for (std::string Name : SubNames){
|
||||
Base::Console().Message("%s\n",Name.c_str());
|
||||
}
|
||||
// Name der gewählten View
|
||||
Viewname = objFeat->getNameInDocument(); //Py: gui.Selection.getCompleteSelection()[0].Name
|
||||
Base::Console().Message("Name der View: %s\n",Viewname.c_str());
|
||||
// Liste der Koordinaten aller Vertexes der View
|
||||
std::vector<TechDraw::Vertex*> gVerts; // Vektor aus Pointern zu den vertexes
|
||||
gVerts = objFeat->getVertexGeometry(); // definiert in DrawViewPart.cpp
|
||||
for (auto& gv: gVerts) {
|
||||
Base::Console().Message("x-Pos: %f\n",gv->point().x);
|
||||
Base::Console().Message("Tag: %s\n",gv->getTagAsString().c_str()); // definiert in cosmetic.h
|
||||
gv->dump();
|
||||
int ii;
|
||||
ii = objFeat->getCVIndex(gv->getTagAsString());
|
||||
Base::Console().Message("Index: %d\n",ii);
|
||||
//Base::Console().Message("Vertex: %s\n",gv->toString().c_str()); //... gibt es nicht
|
||||
//Base::Console().Message("Style: %d\n",gv->style); //... gibt es nicht, nur bei ::CosmeticVertex ?
|
||||
}
|
||||
// ------------- ab hier Versuch -----------------
|
||||
//DrawViewPart* dvp = getDrawViewPartPtr();
|
||||
//TechDraw::CosmeticVertex* cov = dvp->getCosmeticVertexBySelection("Vertex5");
|
||||
*/
|
||||
}
|
||||
|
||||
bool CmdTechDrawMyCommand::isActive(void)
|
||||
{
|
||||
bool havePage = DrawGuiUtil::needPage(this);
|
||||
bool haveView = DrawGuiUtil::needView(this);
|
||||
return (havePage && haveView);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// internal helper routines
|
||||
//===========================================================================
|
||||
|
||||
bool _circulation(Base::Vector3d A, Base::Vector3d B, Base::Vector3d C){
|
||||
// test the circulation of the triangle A-B-C
|
||||
if (A.x*B.y+A.y*C.x+B.x*C.y-C.x*B.y-C.y*A.x-B.x*A.y > 0.0)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
void _createThreadCircle(std::string Name, TechDraw::DrawViewPart* objFeat, float factor){
|
||||
// create the 3/4 arc symbolizing a thread from top seen
|
||||
int GeoId = TechDraw::DrawUtil::getIndexFromName(Name);
|
||||
TechDraw::BaseGeom* geom = objFeat->getGeomByIndex(GeoId);
|
||||
std::string GeoType = TechDraw::DrawUtil::getGeomTypeFromName(Name);
|
||||
if (GeoType == "Edge"){
|
||||
if (geom->geomType == TechDraw::CIRCLE){
|
||||
TechDraw::Circle* cgen = static_cast<TechDraw::Circle *>(geom);
|
||||
Base::Vector3d center = cgen->center;
|
||||
float radius = cgen->radius;
|
||||
TechDraw::BaseGeom* threadArc = new TechDraw::AOC(center, radius*factor, 255.0, 165.0);
|
||||
std::string arcTag = objFeat->addCosmeticEdge(threadArc);
|
||||
TechDraw::CosmeticEdge* arc = objFeat->getCosmeticEdge(arcTag);
|
||||
_setStyleAndWeight(arc,1,0.35);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _createThreadLines(std::vector<std::string> SubNames, TechDraw::DrawViewPart* objFeat, float factor){
|
||||
// create symbolizing lines of a thread from the side seen
|
||||
std::string GeoType0 = TechDraw::DrawUtil::getGeomTypeFromName(SubNames[0]);
|
||||
std::string GeoType1 = TechDraw::DrawUtil::getGeomTypeFromName(SubNames[1]);
|
||||
if ((GeoType0 == "Edge") && (GeoType1 == "Edge")) {
|
||||
int GeoId0 = TechDraw::DrawUtil::getIndexFromName(SubNames[0]);
|
||||
int GeoId1 = TechDraw::DrawUtil::getIndexFromName(SubNames[1]);
|
||||
TechDraw::BaseGeom* geom0 = objFeat->getGeomByIndex(GeoId0);
|
||||
TechDraw::BaseGeom* geom1 = objFeat->getGeomByIndex(GeoId1);
|
||||
if ((geom0->geomType == TechDraw::GENERIC) && (geom1->geomType == TechDraw::GENERIC)) {
|
||||
TechDraw::Generic* line0 = static_cast<TechDraw::Generic *>(geom0);
|
||||
TechDraw::Generic* line1 = static_cast<TechDraw::Generic *>(geom1);
|
||||
Base::Vector3d start0 = line0->points.at(0);
|
||||
Base::Vector3d end0 = line0->points.at(1);
|
||||
Base::Vector3d start1 = line1->points.at(0);
|
||||
Base::Vector3d end1 = line1->points.at(1);
|
||||
if (_circulation(start0,end0,start1) != _circulation(end0,end1,start1)) {
|
||||
Base::Vector3d help1 = start1;
|
||||
Base::Vector3d help2 = end1;
|
||||
start1 = help2;
|
||||
end1 = help1;
|
||||
}
|
||||
start0.y = -start0.y;
|
||||
end0.y = -end0.y;
|
||||
start1.y = -start1.y;
|
||||
end1.y = -end1.y;
|
||||
float kernelDiam = (start1-start0).Length();
|
||||
float kernelFactor = (kernelDiam*factor-kernelDiam)/2;
|
||||
Base::Vector3d delta = (start1-start0).Normalize()*kernelFactor;
|
||||
std::string line0Tag = objFeat->addCosmeticEdge(start0-delta, end0-delta);
|
||||
std::string line1Tag = objFeat->addCosmeticEdge(start1+delta, end1+delta);
|
||||
TechDraw::CosmeticEdge* cosTag0 = objFeat->getCosmeticEdge(line0Tag);
|
||||
TechDraw::CosmeticEdge* cosTag1 = objFeat->getCosmeticEdge(line1Tag);
|
||||
_setStyleAndWeight(cosTag0,1,0.35);
|
||||
_setStyleAndWeight(cosTag1,1,0.35);
|
||||
} else {
|
||||
QMessageBox::warning(Gui::getMainWindow(),
|
||||
QObject::tr("TechDraw Thread Hole Side"),
|
||||
QObject::tr("Please select two straight lines"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _setStyleAndWeight(TechDraw::CosmeticEdge* cosEdge, int style, float weight) {
|
||||
// set style and weight of a cosmetic edge
|
||||
cosEdge->m_format.m_style = style;
|
||||
cosEdge->m_format.m_weight = weight;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// internal test routines
|
||||
//===========================================================================
|
||||
|
||||
std::vector<std::string> _getSubNames(Gui::Command* cmd) {
|
||||
// get the Subnames of all selected elements
|
||||
auto selection = cmd->getSelection().getSelectionEx();
|
||||
const std::vector<std::string> SubNames = selection[0].getSubNames();
|
||||
return SubNames;
|
||||
}
|
||||
|
||||
void _addCosVertex(Gui::Command* cmd) {
|
||||
// create a cosmetic vertex at point pnt
|
||||
auto selection = cmd->getSelection().getSelectionEx();
|
||||
auto objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
Base::Vector3d pnt(-10.0, -10.0, 0.0);
|
||||
pnt = DrawUtil::invertY(objFeat->projectPoint(pnt));
|
||||
std::string id = objFeat->addCosmeticVertex(pnt);
|
||||
objFeat->add1CVToGV(id); // needed ?
|
||||
objFeat->refreshCVGeoms();
|
||||
|
||||
//objFeat->refreshCEGeoms();
|
||||
objFeat->requestPaint();
|
||||
}
|
||||
|
||||
void _addCosCircleArc(Gui::Command* cmd) {
|
||||
// create a cosmetic arc of circle with center pc, radius and angle1, angle2
|
||||
auto selection = cmd->getSelection().getSelectionEx();
|
||||
auto objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
Base::Vector3d pc(10.0, -10.0, 0.0);
|
||||
float radius = 10.0;
|
||||
float angle1 = 0.0;
|
||||
float angle2 = 90.0;
|
||||
pc = DrawUtil::invertY(objFeat->projectPoint(pc));
|
||||
TechDraw::BaseGeom* baseGeo = new TechDraw::AOC(pc, radius, angle1, angle2);
|
||||
std::string cTag = objFeat->addCosmeticEdge(baseGeo);
|
||||
objFeat->refreshCEGeoms();
|
||||
objFeat->requestPaint();
|
||||
}
|
||||
|
||||
void _addCosCircle(Gui::Command* cmd) {
|
||||
// create a cosmetic circle with center pc and radius
|
||||
auto selection = cmd->getSelection().getSelectionEx();
|
||||
auto objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
Base::Vector3d pc(-20.0, -20.0, 0.0);
|
||||
float radius = 10.0;
|
||||
pc = DrawUtil::invertY(objFeat->projectPoint(pc));
|
||||
TechDraw::BaseGeom* baseGeo = new TechDraw::Circle(pc, radius);
|
||||
std::string cTag = objFeat->addCosmeticEdge(baseGeo);
|
||||
objFeat->refreshCEGeoms();
|
||||
objFeat->requestPaint();
|
||||
}
|
||||
|
||||
void _addCosEdge(Gui::Command* cmd) {
|
||||
// create a cosmetic edge from p0 to p1
|
||||
auto selection = cmd->getSelection().getSelectionEx();
|
||||
auto objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
Base::Vector3d p0(-20.0, -20.0, 0.0);
|
||||
Base::Vector3d p1(20.0, 20.0, 0.0);
|
||||
p0 = DrawUtil::invertY(objFeat->projectPoint(p0));
|
||||
p1 = DrawUtil::invertY(objFeat->projectPoint(p1));
|
||||
std::string etag = objFeat->addCosmeticEdge(p0, p1); // ..für Gerade
|
||||
auto ce = objFeat->getCosmeticEdge(etag);
|
||||
ce->m_format.m_style = 1;
|
||||
ce->m_format.m_weight = 0.5;
|
||||
ce->m_format.m_color = App::Color(1.0f,0.0f,0.0f);
|
||||
objFeat->refreshCEGeoms();
|
||||
objFeat->requestPaint();
|
||||
}
|
||||
|
||||
void _printSelected(Gui::Command* cmd) {
|
||||
// print info of selected Line, Circle, Arc and Vertex to the console
|
||||
auto selection = cmd->getSelection().getSelectionEx();
|
||||
auto objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
const std::vector<std::string> SubNames = selection[0].getSubNames();
|
||||
for (std::string Name : SubNames) {
|
||||
int GeoId = TechDraw::DrawUtil::getIndexFromName(Name);
|
||||
TechDraw::BaseGeom* geom = objFeat->getGeomByIndex(GeoId);
|
||||
std::string GeoType = TechDraw::DrawUtil::getGeomTypeFromName(Name);
|
||||
if (GeoType == "Edge"){
|
||||
if (geom->geomType == TechDraw::GENERIC){
|
||||
Base::Console().Message("%s ist eine Gerade\n",Name.c_str());
|
||||
TechDraw::Generic* gen = static_cast<TechDraw::Generic *>(geom);
|
||||
Base::Console().Message("und hat %d Punkte ",gen->points.size());
|
||||
Base::Vector3d P0 = gen->points.at(0);
|
||||
Base::Vector3d P1 = gen->points.at(1);
|
||||
Base::Console().Message("bei %f %f und %f %f\n",P0.x,P0.y,P1.x,P1.y);
|
||||
} else if (geom->geomType == TechDraw::CIRCLE) {
|
||||
Base::Console().Message("%s ist ein Kreis\n",Name.c_str());
|
||||
TechDraw::Circle* cgen = static_cast<TechDraw::Circle *>(geom);
|
||||
Base::Vector3d Mitte = cgen->center;
|
||||
float Radius = cgen->radius;
|
||||
Base::Console().Message("Mitte bei %f %f mit dem Radius: %f\n",Mitte.x,Mitte.y,Radius);
|
||||
} else if (geom->geomType == TechDraw::ARCOFCIRCLE) {
|
||||
Base::Console().Message("%s ist ein Bogen\n",Name.c_str());
|
||||
TechDraw::Circle* agen = static_cast<TechDraw::Circle *>(geom);
|
||||
Base::Vector3d Mitte = agen->center;
|
||||
float Radius = agen->radius;
|
||||
Base::Console().Message("Mitte bei %f %f mit dem Radius: %f\n",Mitte.x,Mitte.y,Radius);
|
||||
}
|
||||
} else if (GeoType == "Vertex") {
|
||||
Base::Console().Message("%s ist ein Punkt",Name.c_str());
|
||||
TechDraw::Vertex* vert = objFeat->getProjVertexByIndex(GeoId);
|
||||
Base::Console().Message("bei: %f %f\n",vert->point().x,vert->point().y);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//! verify that Selection contains a valid Geometry for a single Edge Dimension
|
||||
// kopiert von CommandCreateDims.cpp
|
||||
|
||||
int _isMyValidSingleEdge(Gui::Command* cmd) {
|
||||
auto edgeType( isInvalid );
|
||||
auto selection = cmd->getSelection().getSelectionEx();
|
||||
|
||||
auto objFeat = dynamic_cast<TechDraw::DrawViewPart *>(selection[0].getObject());
|
||||
if( objFeat == nullptr ) {
|
||||
return isInvalid;
|
||||
}
|
||||
|
||||
const std::vector<std::string> SubNames = selection[0].getSubNames();
|
||||
if (SubNames.size() == 1) { //only 1 subshape selected
|
||||
if (TechDraw::DrawUtil::getGeomTypeFromName(SubNames[0]) == "Edge") { //the Name starts with "Edge"
|
||||
int GeoId( TechDraw::DrawUtil::getIndexFromName(SubNames[0]) );
|
||||
TechDraw::BaseGeom* geom = objFeat->getGeomByIndex(GeoId);
|
||||
if (!geom) {
|
||||
Base::Console().Error("Logic Error: no geometry for GeoId: %d\n",GeoId);
|
||||
return isInvalid;
|
||||
}
|
||||
|
||||
if(geom->geomType == TechDraw::GENERIC) {
|
||||
TechDraw::Generic* gen1 = static_cast<TechDraw::Generic *>(geom);
|
||||
if(gen1->points.size() > 2) { //the edge is a polyline
|
||||
return isInvalid;
|
||||
}
|
||||
Base::Vector3d line = gen1->points.at(1) - gen1->points.at(0);
|
||||
if(fabs(line.y) < FLT_EPSILON ) {
|
||||
edgeType = isHorizontal;
|
||||
} else if(fabs(line.x) < FLT_EPSILON) {
|
||||
edgeType = isVertical;
|
||||
} else {
|
||||
edgeType = isDiagonal;
|
||||
}
|
||||
} else if (geom->geomType == TechDraw::CIRCLE ||
|
||||
geom->geomType == TechDraw::ARCOFCIRCLE ) {
|
||||
edgeType = isCircle;
|
||||
} else if (geom->geomType == TechDraw::ELLIPSE ||
|
||||
geom->geomType == TechDraw::ARCOFELLIPSE) {
|
||||
edgeType = isEllipse;
|
||||
} else if (geom->geomType == TechDraw::BSPLINE) {
|
||||
TechDraw::BSpline* spline = static_cast<TechDraw::BSpline*>(geom);
|
||||
if (spline->isCircle()) {
|
||||
edgeType = isBSplineCircle;
|
||||
} else {
|
||||
edgeType = isBSpline;
|
||||
}
|
||||
} else {
|
||||
edgeType = isInvalid;
|
||||
}
|
||||
}
|
||||
}
|
||||
return edgeType;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void CreateTechDrawCommandsTools(void)
|
||||
{
|
||||
Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager();
|
||||
|
||||
rcCmdMgr.addCommand(new CmdTechDrawMyCommand());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawToolCircleCenterLines());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawToolThreadHoleSide());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawToolThreadBoltSide());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawToolThreadHoleBottom());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawToolThreadBoltBottom());
|
||||
}
|
||||
@@ -27,6 +27,11 @@
|
||||
<file>icons/TechDraw_3PtAngleDimension.svg</file>
|
||||
<file>icons/TechDraw_DiameterDimension.svg</file>
|
||||
<file>icons/TechDraw_HorizontalDimension.svg</file>
|
||||
<file>icons/TechDraw_ToolCircleCenterLines.svg</file>
|
||||
<file>icons/TechDraw_ToolThreadHoleSide.svg</file>
|
||||
<file>icons/TechDraw_ToolThreadBoltSide.svg</file>
|
||||
<file>icons/TechDraw_ToolThreadHoleBottom.svg</file>
|
||||
<file>icons/TechDraw_ToolThreadBoltBottom.svg</file>
|
||||
<file>icons/TechDraw_LengthDimension.svg</file>
|
||||
<file>icons/TechDraw_RadiusDimension.svg</file>
|
||||
<file>icons/TechDraw_Balloon.svg</file>
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
||||
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
viewBox="0 0 16.933333 16.933334"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="assi_mezzerie_giallo.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
id="linearGradient5969"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5967" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="28.547192"
|
||||
inkscape:cy="30.303061"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="745"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<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
|
||||
inkscape:label="Livello 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-280.06665)">
|
||||
<path
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path839"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="8.4666872"
|
||||
sodipodi:cy="288.53336"
|
||||
sodipodi:rx="6.1199794"
|
||||
sodipodi:ry="6.1199794"
|
||||
sodipodi:start="2.540798"
|
||||
sodipodi:end="2.5299071"
|
||||
sodipodi:open="true"
|
||||
d="m 3.4183979,291.99297 a 6.1199794,6.1199794 0 0 1 1.574944,-8.49847 a 6.1199794,6.1199794 0 0 1 8.5027211,1.5518 a 6.1199794,6.1199794 0 0 1 -1.528643,8.50692 a 6.1199794,6.1199794 0 0 1 -8.5110452,-1.50548" />
|
||||
<path
|
||||
d="m 2.0543273,292.92777 a 7.7736254,7.7736254 0 0 1 2.0005011,-10.79479 a 7.7736254,7.7736254 0 0 1 10.8001946,1.97111 a 7.7736254,7.7736254 0 0 1 -1.94169,10.80552 A 7.7736254,7.7736254 0 0 1 2.1025658,292.99735"
|
||||
sodipodi:open="true"
|
||||
sodipodi:end="2.5299071"
|
||||
sodipodi:start="2.540798"
|
||||
sodipodi:ry="7.7736254"
|
||||
sodipodi:rx="7.7736254"
|
||||
sodipodi:cy="288.53336"
|
||||
sodipodi:cx="8.4666872"
|
||||
sodipodi:type="arc"
|
||||
id="path837"
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffff00;stroke-width:1.29999995;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path4508"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="8.4666872"
|
||||
sodipodi:cy="288.53336"
|
||||
sodipodi:rx="6.9231811"
|
||||
sodipodi:ry="6.9704261"
|
||||
sodipodi:start="2.540798"
|
||||
sodipodi:end="2.5299071"
|
||||
sodipodi:open="true"
|
||||
d="m 2.7558475,292.47372 a 6.9231811,6.9704261 0 0 1 1.7816437,-9.67943 a 6.9231811,6.9704261 0 0 1 9.6186398,1.76745 a 6.9231811,6.9704261 0 0 1 -1.729266,9.68905 a 6.9231811,6.9704261 0 0 1 -9.6280564,-1.71468" />
|
||||
<path
|
||||
style="fill:#ffff00;fill-opacity:1;stroke:#ff0000;stroke-width:1.30731916;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.22927664, 2.61463832000000007, 1.30731916000000004, 2.61463832000000007;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M -0.04651861,288.39186 L 18.4862,288.4857"
|
||||
id="path5989"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:label="path5989" />
|
||||
<path
|
||||
style="fill:#00ffff;fill-opacity:1;stroke:#ff0000;stroke-width:1.29999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.2, 2.6, 1.3, 2.6;stroke-dashoffset:10.13279915;stroke-opacity:1"
|
||||
d="M 8.4901406,278.5436 L 8.4431916,298.646"
|
||||
id="path5989-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:label="path5989"
|
||||
inkscape:transform-center-y="-0.41756205" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
@@ -0,0 +1,124 @@
|
||||
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
viewBox="0 0 16.933333 16.933334"
|
||||
version="1.1"
|
||||
id="svg843"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="filettatura_foro_in_pianta_giallo.svg">
|
||||
<defs
|
||||
id="defs837" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.959798"
|
||||
inkscape:cx="-43.983804"
|
||||
inkscape:cy="32.609236"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="745"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-others="false" />
|
||||
<metadata
|
||||
id="metadata840">
|
||||
<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
|
||||
inkscape:label="Livello 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-280.06665)">
|
||||
<g
|
||||
id="g824"
|
||||
transform="translate(0.19510269,-3.3333334e-6)">
|
||||
<path
|
||||
sodipodi:open="true"
|
||||
d="m 1.9929926,288.52266 a 6.4740801,6.4740801 0 0 1 6.4829481,-6.46341 a 6.4740801,6.4740801 0 0 1 6.4651993,6.48116 a 6.4740801,6.4740801 0 0 1 -6.4793749,6.46699 a 6.4740801,6.4740801 0 0 1 -6.4687803,-6.47758"
|
||||
sodipodi:end="3.1421348"
|
||||
sodipodi:start="3.1432401"
|
||||
sodipodi:ry="6.4740801"
|
||||
sodipodi:rx="6.4740801"
|
||||
sodipodi:cy="288.53333"
|
||||
sodipodi:cx="8.4670639"
|
||||
sodipodi:type="arc"
|
||||
id="path1031"
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path1029"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="8.4670639"
|
||||
sodipodi:cy="288.53333"
|
||||
sodipodi:rx="7.8914909"
|
||||
sodipodi:ry="7.8914909"
|
||||
sodipodi:start="3.1432401"
|
||||
sodipodi:end="3.1421348"
|
||||
d="m 0.57558368,288.52032 a 7.8914909,7.8914909 0 0 1 7.90230042,-7.87848 a 7.8914909,7.8914909 0 0 1 7.8806659,7.90012 a 7.8914909,7.8914909 0 0 1 -7.8979451,7.88285 a 7.8914909,7.8914909 0 0 1 -7.88503077,-7.89576"
|
||||
sodipodi:open="true" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path862"
|
||||
d="m 8.5668927,280.18115 c -0.200452,16.70434 -0.200452,16.70434 -0.200452,16.70434"
|
||||
style="fill:none;stroke:#ffff00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.00000008, 1.50000004, 0.75000002, 1.50000004;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path862-3"
|
||||
d="m 16.746133,288.70034 c -16.94913804,-0.2004 -16.94913804,-0.2004 -16.94913804,-0.2004"
|
||||
style="fill:none;stroke:#ffff00;stroke-width:0.755;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.01999997, 1.50999999, 0.75499999, 1.50999999;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
transform="scale(-1)"
|
||||
sodipodi:open="true"
|
||||
d="m -12.735178,-288.54265 a 4.2687368,4.2687368 0 0 1 4.2734194,-4.2617 a 4.2687368,4.2687368 0 0 1 4.2640479,4.27108 a 4.2687368,4.2687368 0 0 1 -4.2687361,4.26639"
|
||||
sodipodi:end="1.5707963"
|
||||
sodipodi:start="3.1432401"
|
||||
sodipodi:ry="4.2687368"
|
||||
sodipodi:rx="4.2687368"
|
||||
sodipodi:cy="-288.53561"
|
||||
sodipodi:cx="-8.4664469"
|
||||
sodipodi:type="arc"
|
||||
id="path1408-5"
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:open="true"
|
||||
d="m 1.3568956,288.52134 a 7.110178,7.2772799 0 0 1 7.1199172,-7.26529 a 7.110178,7.2772799 0 0 1 7.1004252,7.28524 A 7.110178,7.2772799 0 0 1 8.4612444,295.8106 A 7.110178,7.2772799 0 0 1 1.356887,288.52938"
|
||||
sodipodi:end="3.1421348"
|
||||
sodipodi:start="3.1432401"
|
||||
sodipodi:ry="7.2772799"
|
||||
sodipodi:rx="7.110178"
|
||||
sodipodi:cy="288.53333"
|
||||
sodipodi:cx="8.4670639"
|
||||
sodipodi:type="arc"
|
||||
id="path1408"
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffff00;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.5 KiB |
@@ -0,0 +1,133 @@
|
||||
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
viewBox="0 0 16.933333 16.933334"
|
||||
version="1.1"
|
||||
id="svg843"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="filettatura_vite_perno_vista_leterale_sez_giallo.svg">
|
||||
<defs
|
||||
id="defs837" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.959798"
|
||||
inkscape:cx="-28.121209"
|
||||
inkscape:cy="37.299682"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="745"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-others="false" />
|
||||
<metadata
|
||||
id="metadata840">
|
||||
<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
|
||||
inkscape:label="Livello 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-280.06665)">
|
||||
<g
|
||||
id="g834"
|
||||
transform="translate(1.4702479e-7,-0.03725213)">
|
||||
<rect
|
||||
y="280.95236"
|
||||
x="0.79279482"
|
||||
height="14.956573"
|
||||
width="1.349432"
|
||||
id="rect1093"
|
||||
style="opacity:1;fill:#ffff00;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ffff00;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1095"
|
||||
width="1.349432"
|
||||
height="14.956573"
|
||||
x="14.791106"
|
||||
y="281.05502" />
|
||||
<g
|
||||
transform="translate(-0.10022637)"
|
||||
id="g1179">
|
||||
<path
|
||||
style="fill:#a02c2c;stroke:#ffff00;stroke-width:0.74900001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.99599995, 1.49799998, 0.74899999, 1.49799998;stroke-dashoffset:6.66610003;stroke-opacity:1"
|
||||
d="m 8.4967016,280.25378 c -0.057032,16.68194 -0.057032,16.68194 -0.057032,16.68194"
|
||||
id="path862"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
y="280.28027"
|
||||
x="8.0449562"
|
||||
height="3.0834899"
|
||||
width="0.91023898"
|
||||
id="rect1097"
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<rect
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1105"
|
||||
width="0.91023898"
|
||||
height="3.0834899"
|
||||
x="8.0115471"
|
||||
y="293.77737" />
|
||||
<rect
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1107"
|
||||
width="0.91023898"
|
||||
height="3.0834899"
|
||||
x="7.9781384"
|
||||
y="286.99542" />
|
||||
<rect
|
||||
y="284.79971"
|
||||
x="8.0625801"
|
||||
height="0.80150861"
|
||||
width="0.82487911"
|
||||
id="rect1109"
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<rect
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1111"
|
||||
width="0.82487911"
|
||||
height="0.80150861"
|
||||
x="8.0625801"
|
||||
y="291.58167" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;stroke:#ff0000;stroke-width:1.30170107;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 3.9588485,280.84372 c 0.066419,15.26509 0.066419,15.26509 0.066419,15.26509"
|
||||
id="path1151"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#ff0000;stroke-width:1.29780579;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 12.909993,280.91552 c 0.06644,15.1703 0.06644,15.1703 0.06644,15.1703"
|
||||
id="path1153"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.6 KiB |
@@ -0,0 +1,123 @@
|
||||
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
viewBox="0 0 16.933333 16.933334"
|
||||
version="1.1"
|
||||
id="svg843"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="filettatura_vite_perno_in_pianta_giallo.svg">
|
||||
<defs
|
||||
id="defs837" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="-11.494932"
|
||||
inkscape:cy="23.49302"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="745"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-others="false" />
|
||||
<metadata
|
||||
id="metadata840">
|
||||
<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
|
||||
inkscape:label="Livello 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-280.06665)">
|
||||
<path
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffff00;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path1408-5"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="-8.6379261"
|
||||
sodipodi:cy="-288.37024"
|
||||
sodipodi:rx="4.7936058"
|
||||
sodipodi:ry="4.7364583"
|
||||
sodipodi:start="1.5550658"
|
||||
sodipodi:end="1.5496367"
|
||||
d="m -8.5625233,-283.63437 a 4.7936058,4.7364583 0 0 1 -4.8683087,-4.65494 a 4.7936058,4.7364583 0 0 1 4.7044925,-4.81658 a 4.7936058,4.7364583 0 0 1 4.8810794,4.64186 a 4.7936058,4.7364583 0 0 1 -4.6912427,4.82919"
|
||||
sodipodi:open="true"
|
||||
transform="scale(-1)" />
|
||||
<path
|
||||
transform="scale(-1)"
|
||||
sodipodi:open="true"
|
||||
d="m -8.550788,-282.83127 a 5.5396576,5.5396576 0 0 1 -5.625987,-5.44431 a 5.5396576,5.5396576 0 0 1 5.4366753,-5.63337 a 5.5396576,5.5396576 0 0 1 5.6407451,5.42902 a 5.5396576,5.5396576 0 0 1 -5.4213632,5.64811"
|
||||
sodipodi:end="1.5496367"
|
||||
sodipodi:start="1.5550658"
|
||||
sodipodi:ry="5.5396576"
|
||||
sodipodi:rx="5.5396576"
|
||||
sodipodi:cy="-288.37024"
|
||||
sodipodi:cx="-8.6379261"
|
||||
sodipodi:type="arc"
|
||||
id="path1059"
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.5;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path1061"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="-8.6379261"
|
||||
sodipodi:cy="-288.37024"
|
||||
sodipodi:rx="4.0749998"
|
||||
sodipodi:ry="4.0749998"
|
||||
sodipodi:start="1.5550658"
|
||||
sodipodi:end="1.5496367"
|
||||
d="m -8.5738269,-284.29574 a 4.0749998,4.0749998 0 0 1 -4.1385041,-4.00487 a 4.0749998,4.0749998 0 0 1 3.9992455,-4.14394 a 4.0749998,4.0749998 0 0 1 4.1493603,3.99362 a 4.0749998,4.0749998 0 0 1 -3.9879819,4.15478"
|
||||
sodipodi:open="true"
|
||||
transform="scale(-1)" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffff00;stroke-width:0.75706565;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.02826266, 1.51413133, 0.75706566, 1.51413133;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 8.7382827,280.01544 C 8.5380093,297.05119 8.5380093,297.05119 8.5380093,297.05119"
|
||||
id="path862"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffff00;stroke-width:0.76400477;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.05601904, 1.52800953, 0.76400476, 1.52800953;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 17.154273,288.53486 C -0.22093996,288.33468 -0.22093996,288.33468 -0.22093996,288.33468"
|
||||
id="path862-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:1.20000005;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path1408"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="-8.6385527"
|
||||
sodipodi:cy="-288.36795"
|
||||
sodipodi:rx="7.3717742"
|
||||
sodipodi:ry="7.3717742"
|
||||
sodipodi:start="3.1432401"
|
||||
sodipodi:end="1.5907123"
|
||||
d="m -16.010317,-288.3801 a 7.3717742,7.3717742 0 0 1 4.593088,-6.81588 a 7.3717742,7.3717742 0 0 1 8.0472049,1.6719 a 7.3717742,7.3717742 0 0 1 1.4980023,8.08138 a 7.3717742,7.3717742 0 0 1 -6.9133372,4.44506"
|
||||
sodipodi:open="true"
|
||||
transform="scale(-1)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.5 KiB |
@@ -0,0 +1,129 @@
|
||||
<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
height="64"
|
||||
viewBox="0 0 16.933333 16.933334"
|
||||
version="1.1"
|
||||
id="svg843"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="filettatura_foro_vista_leterale_sez_giallo.svg">
|
||||
<defs
|
||||
id="defs837" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="-76.57437"
|
||||
inkscape:cy="4.7420529"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:pagecheckerboard="true"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="745"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-nodes="false"
|
||||
inkscape:snap-others="false" />
|
||||
<metadata
|
||||
id="metadata840">
|
||||
<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
|
||||
inkscape:label="Livello 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-280.06665)">
|
||||
<g
|
||||
id="g835"
|
||||
transform="translate(2.1860055e-7,-0.03725213)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path862"
|
||||
d="m 8.5105388,280.25378 c -0.057032,16.68194 -0.057032,16.68194 -0.057032,16.68194"
|
||||
style="fill:#a02c2c;stroke:#ffff00;stroke-width:0.74900001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.99599995, 1.49799998, 0.74899999, 1.49799998;stroke-dashoffset:6.66610003;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path845"
|
||||
d="m 1.3195616,280.7769 c 0.066419,15.26509 0.066419,15.26509 0.066419,15.26509"
|
||||
style="fill:none;stroke:#ff0000;stroke-width:1.30170107;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path845-6"
|
||||
d="m 15.549279,280.98234 c 0.06644,15.1703 0.06644,15.1703 0.06644,15.1703"
|
||||
style="fill:none;stroke:#ff0000;stroke-width:1.29780579;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1097"
|
||||
width="0.91023898"
|
||||
height="3.0834899"
|
||||
x="8.0587931"
|
||||
y="280.28027" />
|
||||
<rect
|
||||
y="281.086"
|
||||
x="3.2650385"
|
||||
height="14.956573"
|
||||
width="1.349432"
|
||||
id="rect1093"
|
||||
style="opacity:1;fill:#ffff00;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ffff00;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1095"
|
||||
width="1.349432"
|
||||
height="14.956573"
|
||||
x="12.318863"
|
||||
y="281.05502" />
|
||||
<rect
|
||||
y="293.77737"
|
||||
x="8.0253839"
|
||||
height="3.0834899"
|
||||
width="0.91023898"
|
||||
id="rect1105"
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<rect
|
||||
y="286.99542"
|
||||
x="7.9919758"
|
||||
height="3.0834899"
|
||||
width="0.91023898"
|
||||
id="rect1107"
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<rect
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect1109"
|
||||
width="0.82487911"
|
||||
height="0.80150861"
|
||||
x="8.076417"
|
||||
y="284.79971" />
|
||||
<rect
|
||||
y="291.58167"
|
||||
x="8.076417"
|
||||
height="0.80150861"
|
||||
width="0.82487911"
|
||||
id="rect1111"
|
||||
style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2b2200;stroke-width:0.30000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
@@ -80,6 +80,16 @@ Gui::MenuItem* Workbench::setupMenuBar() const
|
||||
*dimensions << "TechDraw_LinkDimension";
|
||||
*dimensions << "TechDraw_LandmarkDimension";
|
||||
|
||||
// toolattributes
|
||||
Gui::MenuItem* toolattrib = new Gui::MenuItem;
|
||||
toolattrib->setCommand("Tools: centerlines and threading");
|
||||
// *toolattrib << "TechDraw_MyCommand";
|
||||
*toolattrib << "TechDraw_ToolCircleCenterLines";
|
||||
*toolattrib << "TechDraw_ToolThreadHoleSide";
|
||||
*toolattrib << "TechDraw_ToolThreadBoltSide";
|
||||
*toolattrib << "TechDraw_ToolThreadHoleBottom";
|
||||
*toolattrib << "TechDraw_ToolThreadBoltBottom";
|
||||
|
||||
// annotations
|
||||
Gui::MenuItem* annotations = new Gui::MenuItem;
|
||||
annotations->setCommand("Annotations");
|
||||
@@ -124,6 +134,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
|
||||
*draw << "TechDraw_ClipGroupRemove";
|
||||
*draw << "Separator";
|
||||
*draw << dimensions;
|
||||
*draw << toolattrib;
|
||||
*draw << "Separator";
|
||||
*draw << "TechDraw_ExportPageSVG";
|
||||
*draw << "TechDraw_ExportPageDXF";
|
||||
@@ -187,6 +198,15 @@ Gui::ToolBarItem* Workbench::setupToolBars() const
|
||||
*dims << "TechDraw_LandmarkDimension";
|
||||
// *dims << "TechDraw_Dimension"
|
||||
|
||||
Gui::ToolBarItem *attribs = new Gui::ToolBarItem(root);
|
||||
attribs->setCommand("TechDraw Toolattributes");
|
||||
// *attribs << "TechDraw_MyCommand";
|
||||
*attribs << "TechDraw_ToolCircleCenterLines";
|
||||
*attribs << "TechDraw_ToolThreadHoleSide";
|
||||
*attribs << "TechDraw_ToolThreadBoltSide";
|
||||
*attribs << "TechDraw_ToolThreadHoleBottom";
|
||||
*attribs << "TechDraw_ToolThreadBoltBottom";
|
||||
|
||||
Gui::ToolBarItem *file = new Gui::ToolBarItem(root);
|
||||
file->setCommand("TechDraw File Access");
|
||||
*file << "TechDraw_ExportPageSVG";
|
||||
@@ -261,6 +281,16 @@ Gui::ToolBarItem* Workbench::setupCommandBars() const
|
||||
*dims << "TechDraw_LandmarkDimension";
|
||||
// *dims << "TechDraw_Dimension";
|
||||
|
||||
Gui::ToolBarItem *attribs = new Gui::ToolBarItem(root);
|
||||
attribs->setCommand("TechDraw Toolattributes");
|
||||
// *attribs << "TechDraw_MyCommand";
|
||||
*attribs << "TechDraw_ToolCircleCenterLines";
|
||||
*attribs << "TechDraw_ToolThreadHoleSide";
|
||||
*attribs << "TechDraw_ToolThreadBoltSide";
|
||||
*attribs << "TechDraw_ToolThreadHoleBottom";
|
||||
*attribs << "TechDraw_ToolThreadBoltBottom";
|
||||
|
||||
|
||||
Gui::ToolBarItem *file = new Gui::ToolBarItem(root);
|
||||
file->setCommand("TechDraw File Access");
|
||||
*file << "TechDraw_ExportPageSVG";
|
||||
|
||||
Reference in New Issue
Block a user