Merge pull request #4935 from edi271/TechDrawToolsEdi

[TD] added TechDrawTools Commands
This commit is contained in:
Yorik van Havre
2021-09-09 11:39:02 +02:00
committed by GitHub
10 changed files with 1123 additions and 0 deletions

View File

@@ -75,6 +75,7 @@ void CreateTechDrawCommands(void);
void CreateTechDrawCommandsDims(void);
void CreateTechDrawCommandsDecorate(void);
void CreateTechDrawCommandsAnnotate(void);
void CreateTechDrawCommandsExtensions(void);
void loadTechDrawResource()
{
@@ -120,6 +121,7 @@ PyMOD_INIT_FUNC(TechDrawGui)
CreateTechDrawCommandsDims();
CreateTechDrawCommandsDecorate();
CreateTechDrawCommandsAnnotate();
CreateTechDrawCommandsExtensions();
TechDrawGui::Workbench::init();
TechDrawGui::MDIViewPage::init();

View File

@@ -111,6 +111,7 @@ SET(TechDrawGui_SRCS
CommandCreateDims.cpp
CommandDecorate.cpp
CommandAnnotate.cpp
CommandExtensionPack.cpp
Resources/TechDraw.qrc
PreCompiled.cpp
PreCompiled.h

View File

@@ -0,0 +1,459 @@
/***************************************************************************
* 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;
//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_ExtensionCircleCenterLines
//===========================================================================
DEF_STD_CMD_A(CmdTechDrawExtensionCircleCenterLines)
CmdTechDrawExtensionCircleCenterLines::CmdTechDrawExtensionCircleCenterLines()
: Command("TechDraw_ExtensionCircleCenterLines")
{
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_ExtensionCircleCenterLines";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_ExtensionCircleCenterLines";
}
void CmdTechDrawExtensionCircleCenterLines::activated(int iMsg)
{
Q_UNUSED(iMsg);
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;
}
double scale = objFeat->getScale();
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/scale, left/scale);
std::string line2tag = objFeat->addCosmeticEdge(top/scale, bottom/scale);
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 CmdTechDrawExtensionCircleCenterLines::isActive(void)
{
bool havePage = DrawGuiUtil::needPage(this);
bool haveView = DrawGuiUtil::needView(this);
return (havePage && haveView);
}
//===========================================================================
// TechDraw_ExtensionThreadHoleSide
//===========================================================================
DEF_STD_CMD_A(CmdTechDrawExtensionThreadHoleSide)
CmdTechDrawExtensionThreadHoleSide::CmdTechDrawExtensionThreadHoleSide()
: Command("TechDraw_ExtensionThreadHoleSide")
{
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_ExtensionThreadHoleSide";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_ExtensionThreadHoleSide";
}
void CmdTechDrawExtensionThreadHoleSide::activated(int iMsg)
{
Q_UNUSED(iMsg);
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 CmdTechDrawExtensionThreadHoleSide::isActive(void)
{
bool havePage = DrawGuiUtil::needPage(this);
bool haveView = DrawGuiUtil::needView(this);
return (havePage && haveView);
}
//===========================================================================
// TechDraw_ExtensionThreadBoltSide
//===========================================================================
DEF_STD_CMD_A(CmdTechDrawExtensionThreadBoltSide)
CmdTechDrawExtensionThreadBoltSide::CmdTechDrawExtensionThreadBoltSide()
: Command("TechDraw_ExtensionThreadBoltSide")
{
sAppModule = "TechDraw";
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Cosmetic thread bolt side view");
sToolTipText = QT_TR_NOOP("Draw cosmetic screw thread side view\n\
- select two parallel lines\n\
- click this button");
sWhatsThis = "TechDraw_ExtensionThreadBoltSide";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_ExtensionThreadBoltSide";
}
void CmdTechDrawExtensionThreadBoltSide::activated(int iMsg)
{
Q_UNUSED(iMsg);
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 CmdTechDrawExtensionThreadBoltSide::isActive(void)
{
bool havePage = DrawGuiUtil::needPage(this);
bool haveView = DrawGuiUtil::needView(this);
return (havePage && haveView);
}
//===========================================================================
// TechDraw_ExtensionThreadHoleBottom
//===========================================================================
DEF_STD_CMD_A(CmdTechDrawExtensionThreadHoleBottom)
CmdTechDrawExtensionThreadHoleBottom::CmdTechDrawExtensionThreadHoleBottom()
: Command("TechDraw_ExtensionThreadHoleBottom")
{
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_ExtensionThreadHoleBottom";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_ExtensionThreadHoleBottom";
}
void CmdTechDrawExtensionThreadHoleBottom::activated(int iMsg)
{
Q_UNUSED(iMsg);
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 CmdTechDrawExtensionThreadHoleBottom::isActive(void)
{
bool havePage = DrawGuiUtil::needPage(this);
bool haveView = DrawGuiUtil::needView(this);
return (havePage && haveView);
}
//===========================================================================
// TechDraw_ExtensionThreadBoltBottom
//===========================================================================
DEF_STD_CMD_A(CmdTechDrawExtensionThreadBoltBottom)
CmdTechDrawExtensionThreadBoltBottom::CmdTechDrawExtensionThreadBoltBottom()
: Command("TechDraw_ExtensionThreadBoltBottom")
{
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_ExtensionThreadBoltBottom";
sStatusTip = sToolTipText;
sPixmap = "TechDraw_ExtensionThreadBoltBottom";
}
void CmdTechDrawExtensionThreadBoltBottom::activated(int iMsg)
{
Q_UNUSED(iMsg);
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 CmdTechDrawExtensionThreadBoltBottom::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
double scale = objFeat->getScale();
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/scale, radius*factor/scale, 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
double scale = objFeat->getScale();
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)/scale, (end0-delta)/scale);
std::string line1Tag = objFeat->addCosmeticEdge((start1+delta)/scale, (end1+delta)/scale);
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;
}
//------------------------------------------------------------------------------
void CreateTechDrawCommandsExtensions(void)
{
Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager();
rcCmdMgr.addCommand(new CmdTechDrawExtensionCircleCenterLines());
rcCmdMgr.addCommand(new CmdTechDrawExtensionThreadHoleSide());
rcCmdMgr.addCommand(new CmdTechDrawExtensionThreadBoltSide());
rcCmdMgr.addCommand(new CmdTechDrawExtensionThreadHoleBottom());
rcCmdMgr.addCommand(new CmdTechDrawExtensionThreadBoltBottom());
}

View File

@@ -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_ExtensionCircleCenterLines.svg</file>
<file>icons/TechDraw_ExtensionThreadHoleSide.svg</file>
<file>icons/TechDraw_ExtensionThreadBoltSide.svg</file>
<file>icons/TechDraw_ExtensionThreadHoleBottom.svg</file>
<file>icons/TechDraw_ExtensionThreadBoltBottom.svg</file>
<file>icons/TechDraw_LengthDimension.svg</file>
<file>icons/TechDraw_RadiusDimension.svg</file>
<file>icons/TechDraw_Balloon.svg</file>

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -80,6 +80,15 @@ Gui::MenuItem* Workbench::setupMenuBar() const
*dimensions << "TechDraw_LinkDimension";
*dimensions << "TechDraw_LandmarkDimension";
// toolattributes
Gui::MenuItem* toolattrib = new Gui::MenuItem;
toolattrib->setCommand("Extensions: centerlines and threading");
*toolattrib << "TechDraw_ExtensionCircleCenterLines";
*toolattrib << "TechDraw_ExtensionThreadHoleSide";
*toolattrib << "TechDraw_ExtensionThreadBoltSide";
*toolattrib << "TechDraw_ExtensionThreadHoleBottom";
*toolattrib << "TechDraw_ExtensionThreadBoltBottom";
// annotations
Gui::MenuItem* annotations = new Gui::MenuItem;
annotations->setCommand("Annotations");
@@ -124,6 +133,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 +197,14 @@ Gui::ToolBarItem* Workbench::setupToolBars() const
*dims << "TechDraw_LandmarkDimension";
// *dims << "TechDraw_Dimension"
Gui::ToolBarItem *attribs = new Gui::ToolBarItem(root);
attribs->setCommand("TechDraw Toolattributes");
*attribs << "TechDraw_ExtensionCircleCenterLines";
*attribs << "TechDraw_ExtensionThreadHoleSide";
*attribs << "TechDraw_ExtensionThreadBoltSide";
*attribs << "TechDraw_ExtensionThreadHoleBottom";
*attribs << "TechDraw_ExtensionThreadBoltBottom";
Gui::ToolBarItem *file = new Gui::ToolBarItem(root);
file->setCommand("TechDraw File Access");
*file << "TechDraw_ExportPageSVG";
@@ -261,6 +279,15 @@ Gui::ToolBarItem* Workbench::setupCommandBars() const
*dims << "TechDraw_LandmarkDimension";
// *dims << "TechDraw_Dimension";
Gui::ToolBarItem *attribs = new Gui::ToolBarItem(root);
attribs->setCommand("TechDraw Toolattributes");
*attribs << "TechDraw_ExtensionCircleCenterLines";
*attribs << "TechDraw_ExtensionThreadHoleSide";
*attribs << "TechDraw_ExtensionThreadBoltSide";
*attribs << "TechDraw_ExtensionThreadHoleBottom";
*attribs << "TechDraw_ExtensionThreadBoltBottom";
Gui::ToolBarItem *file = new Gui::ToolBarItem(root);
file->setCommand("TechDraw File Access");
*file << "TechDraw_ExportPageSVG";