ArcSlot DSH : implement the Arc slot tool with tool parameters support.
This commit is contained in:
@@ -65,6 +65,7 @@ SET(SketcherGui_SRCS
|
||||
DrawSketchHandlerArcOfEllipse.h
|
||||
DrawSketchHandlerArcOfHyperbola.h
|
||||
DrawSketchHandlerArcOfParabola.h
|
||||
DrawSketchHandlerArcSlot.h
|
||||
DrawSketchHandlerBSpline.h
|
||||
DrawSketchHandlerBSplineByInterpolation.h
|
||||
DrawSketchHandlerPoint.h
|
||||
|
||||
@@ -85,7 +85,9 @@ CmdSketcherToggleConstruction::CmdSketcherToggleConstruction()
|
||||
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreateOblong");
|
||||
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CompCreateRectangles");
|
||||
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreatePolyline");
|
||||
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreateArcSlot");
|
||||
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreateSlot");
|
||||
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CompSlot");
|
||||
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreateArc");
|
||||
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_Create3PointArc");
|
||||
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CompCreateArc");
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
#include "DrawSketchHandlerArcOfEllipse.h"
|
||||
#include "DrawSketchHandlerArcOfHyperbola.h"
|
||||
#include "DrawSketchHandlerArcOfParabola.h"
|
||||
#include "DrawSketchHandlerArcSlot.h"
|
||||
#include "DrawSketchHandlerBSpline.h"
|
||||
#include "DrawSketchHandlerBSplineByInterpolation.h"
|
||||
#include "DrawSketchHandlerCarbonCopy.h"
|
||||
@@ -1737,10 +1738,58 @@ bool CmdSketcherCarbonCopy::isActive()
|
||||
return isCommandActive(getActiveGuiDocument());
|
||||
}
|
||||
|
||||
// Comp for slot tools =============================================
|
||||
|
||||
/**
|
||||
* Create Slot
|
||||
*/
|
||||
class CmdSketcherCompSlot: public Gui::GroupCommand
|
||||
{
|
||||
public:
|
||||
CmdSketcherCompSlot()
|
||||
: GroupCommand("Sketcher_CompSlot")
|
||||
{
|
||||
sAppModule = "Sketcher";
|
||||
sGroup = "Sketcher";
|
||||
sMenuText = QT_TR_NOOP("Slots");
|
||||
sToolTipText = QT_TR_NOOP("Slot tools.");
|
||||
sWhatsThis = "Sketcher_CompSlot";
|
||||
sStatusTip = sToolTipText;
|
||||
eType = ForEdit;
|
||||
|
||||
setCheckable(false);
|
||||
|
||||
addCommand("Sketcher_CreateSlot");
|
||||
addCommand("Sketcher_CreateArcSlot");
|
||||
}
|
||||
|
||||
void updateAction(int mode) override
|
||||
{
|
||||
Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(getAction());
|
||||
if (!pcAction) {
|
||||
return;
|
||||
}
|
||||
|
||||
QList<QAction*> al = pcAction->actions();
|
||||
int index = pcAction->property("defaultAction").toInt();
|
||||
switch (static_cast<GeometryCreationMode>(mode)) {
|
||||
case GeometryCreationMode::Normal:
|
||||
al[0]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreateSlot"));
|
||||
al[1]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreateArcSlot"));
|
||||
getAction()->setIcon(al[index]->icon());
|
||||
break;
|
||||
case GeometryCreationMode::Construction:
|
||||
al[0]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreateSlot_Constr"));
|
||||
al[1]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreateArcSlot_Constr"));
|
||||
getAction()->setIcon(al[index]->icon());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const char* className() const override
|
||||
{
|
||||
return "CmdSketcherCompSlot";
|
||||
}
|
||||
};
|
||||
|
||||
/* Create Slot =============================================================*/
|
||||
|
||||
DEF_STD_CMD_AU(CmdSketcherCreateSlot)
|
||||
|
||||
@@ -1771,6 +1820,37 @@ bool CmdSketcherCreateSlot::isActive()
|
||||
return isCommandActive(getActiveGuiDocument());
|
||||
}
|
||||
|
||||
/* Create Arc Slot =========================================================*/
|
||||
|
||||
DEF_STD_CMD_AU(CmdSketcherCreateArcSlot)
|
||||
|
||||
CmdSketcherCreateArcSlot::CmdSketcherCreateArcSlot()
|
||||
: Command("Sketcher_CreateArcSlot")
|
||||
{
|
||||
sAppModule = "Sketcher";
|
||||
sGroup = "Sketcher";
|
||||
sMenuText = QT_TR_NOOP("Create arc slot");
|
||||
sToolTipText = QT_TR_NOOP("Create an arc slot in the sketch");
|
||||
sWhatsThis = "Sketcher_CreateArcSlot";
|
||||
sStatusTip = sToolTipText;
|
||||
sPixmap = "Sketcher_CreateArcSlot";
|
||||
sAccel = "G, S, 2";
|
||||
eType = ForEdit;
|
||||
}
|
||||
|
||||
CONSTRUCTION_UPDATE_ACTION(CmdSketcherCreateArcSlot, "Sketcher_CreateArcSlot")
|
||||
|
||||
void CmdSketcherCreateArcSlot::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
ActivateHandler(getActiveGuiDocument(), new DrawSketchHandlerArcSlot());
|
||||
}
|
||||
|
||||
bool CmdSketcherCreateArcSlot::isActive(void)
|
||||
{
|
||||
return isCommandActive(getActiveGuiDocument());
|
||||
}
|
||||
|
||||
/* Create Regular Polygon ==============================================*/
|
||||
|
||||
DEF_STD_CMD_AU(CmdSketcherCreateTriangle)
|
||||
@@ -2213,6 +2293,8 @@ void CreateSketcherCommandsCreateGeo()
|
||||
rcCmdMgr.addCommand(new CmdSketcherCreateRegularPolygon());
|
||||
rcCmdMgr.addCommand(new CmdSketcherCompCreateRectangles());
|
||||
rcCmdMgr.addCommand(new CmdSketcherCreateSlot());
|
||||
rcCmdMgr.addCommand(new CmdSketcherCreateArcSlot());
|
||||
rcCmdMgr.addCommand(new CmdSketcherCompSlot());
|
||||
rcCmdMgr.addCommand(new CmdSketcherCompCreateFillets());
|
||||
rcCmdMgr.addCommand(new CmdSketcherCreateFillet());
|
||||
rcCmdMgr.addCommand(new CmdSketcherCreatePointFillet());
|
||||
|
||||
935
src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h
Normal file
935
src/Mod/Sketcher/Gui/DrawSketchHandlerArcSlot.h
Normal file
@@ -0,0 +1,935 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2023 Ondsel <development@ondsel.com> *
|
||||
* *
|
||||
* This file is part of the FreeCAD CAx development system. *
|
||||
* *
|
||||
* This library is free software; you can redistribute it and/or *
|
||||
* modify it under the terms of the GNU Library General Public *
|
||||
* License as published by the Free Software Foundation; either *
|
||||
* version 2 of the License, or (at your option) any later version. *
|
||||
* *
|
||||
* This library is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU Library General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU Library General Public *
|
||||
* License along with this library; see the file COPYING.LIB. If not, *
|
||||
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
||||
* Suite 330, Boston, MA 02111-1307, USA *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#ifndef SKETCHERGUI_DrawSketchHandlerArcSlot_H
|
||||
#define SKETCHERGUI_DrawSketchHandlerArcSlot_H
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
#include <Gui/BitmapFactory.h>
|
||||
#include <Gui/Notifications.h>
|
||||
#include <Gui/Command.h>
|
||||
#include <Gui/CommandT.h>
|
||||
|
||||
#include <Mod/Sketcher/App/SketchObject.h>
|
||||
|
||||
#include "DrawSketchDefaultWidgetController.h"
|
||||
#include "DrawSketchControllableHandler.h"
|
||||
|
||||
#include "GeometryCreationMode.h"
|
||||
#include "Utils.h"
|
||||
|
||||
namespace SketcherGui
|
||||
{
|
||||
|
||||
extern GeometryCreationMode geometryCreationMode; // defined in CommandCreateGeo.cpp
|
||||
|
||||
class DrawSketchHandlerArcSlot;
|
||||
|
||||
namespace ConstructionMethods
|
||||
{
|
||||
|
||||
enum class ArcSlotConstructionMethod
|
||||
{
|
||||
ArcSlot,
|
||||
RectangleSlot,
|
||||
End // Must be the last one
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
using DSHArcSlotController =
|
||||
DrawSketchDefaultWidgetController<DrawSketchHandlerArcSlot,
|
||||
StateMachines::FourSeekEnd,
|
||||
/*PAutoConstraintSize =*/3,
|
||||
/*OnViewParametersT =*/OnViewParameters<6, 6>,
|
||||
/*WidgetParametersT =*/WidgetParameters<0, 0>,
|
||||
/*WidgetCheckboxesT =*/WidgetCheckboxes<0, 0>,
|
||||
/*WidgetComboboxesT =*/WidgetComboboxes<1, 1>,
|
||||
ConstructionMethods::ArcSlotConstructionMethod,
|
||||
/*bool PFirstComboboxIsConstructionMethod =*/true>;
|
||||
|
||||
using DSHArcSlotControllerBase = DSHArcSlotController::ControllerBase;
|
||||
|
||||
using DrawSketchHandlerArcSlotBase = DrawSketchControllableHandler<DSHArcSlotController>;
|
||||
|
||||
class DrawSketchHandlerArcSlot: public DrawSketchHandlerArcSlotBase
|
||||
{
|
||||
friend DSHArcSlotController;
|
||||
friend DSHArcSlotControllerBase;
|
||||
|
||||
public:
|
||||
explicit DrawSketchHandlerArcSlot(ConstructionMethod constrMethod = ConstructionMethod::ArcSlot)
|
||||
: DrawSketchHandlerArcSlotBase(constrMethod)
|
||||
, startAngle(0.)
|
||||
, startAngleBackup(0.)
|
||||
, endAngle(0.)
|
||||
, arcAngle(0.)
|
||||
{}
|
||||
|
||||
~DrawSketchHandlerArcSlot() override = default;
|
||||
|
||||
private:
|
||||
void updateDataAndDrawToPosition(Base::Vector2d onSketchPos) override
|
||||
{
|
||||
switch (state()) {
|
||||
case SelectMode::SeekFirst: {
|
||||
toolWidgetManager.drawPositionAtCursor(onSketchPos);
|
||||
|
||||
centerPoint = onSketchPos;
|
||||
|
||||
if (seekAutoConstraint(sugConstraints[0], onSketchPos, Base::Vector2d(0.f, 0.f))) {
|
||||
renderSuggestConstraintsCursor(sugConstraints[0]);
|
||||
return;
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekSecond: {
|
||||
toolWidgetManager.drawDirectionAtCursor(onSketchPos, centerPoint);
|
||||
|
||||
startPoint = onSketchPos;
|
||||
startAngle = (startPoint - centerPoint).Angle();
|
||||
startAngleBackup = startAngle;
|
||||
radius = (startPoint - centerPoint).Length();
|
||||
|
||||
CreateAndDrawShapeGeometry();
|
||||
|
||||
if (seekAutoConstraint(sugConstraints[1], onSketchPos, Base::Vector2d(0.f, 0.f))) {
|
||||
renderSuggestConstraintsCursor(sugConstraints[1]);
|
||||
return;
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
endPoint = centerPoint + (onSketchPos - centerPoint).Normalize() * radius;
|
||||
if (constructionMethod() == DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) {
|
||||
r = radius / 10;
|
||||
}
|
||||
else {
|
||||
r = radius * 1.2;
|
||||
}
|
||||
|
||||
startAngle = startAngleBackup;
|
||||
|
||||
double angle1 = (onSketchPos - centerPoint).Angle() - startAngle;
|
||||
double angle2 = angle1 + (angle1 < 0. ? 2 : -2) * M_PI;
|
||||
arcAngle = abs(angle1 - arcAngle) < abs(angle2 - arcAngle) ? angle1 : angle2;
|
||||
|
||||
reverseIfNecessary();
|
||||
|
||||
CreateAndDrawShapeGeometry();
|
||||
|
||||
toolWidgetManager.drawDoubleAtCursor(onSketchPos, arcAngle, Base::Unit::Angle);
|
||||
|
||||
if (seekAutoConstraint(sugConstraints[2], onSketchPos, Base::Vector2d(0.0, 0.0))) {
|
||||
renderSuggestConstraintsCursor(sugConstraints[2]);
|
||||
return;
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekFourth: {
|
||||
|
||||
if (constructionMethod() == DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) {
|
||||
r = std::min(radius, fabs(radius - (onSketchPos - centerPoint).Length()));
|
||||
}
|
||||
else {
|
||||
r = (onSketchPos - centerPoint).Length();
|
||||
}
|
||||
|
||||
toolWidgetManager.drawDoubleAtCursor(onSketchPos, r);
|
||||
|
||||
CreateAndDrawShapeGeometry();
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void executeCommands() override
|
||||
{
|
||||
try {
|
||||
createShape(false);
|
||||
|
||||
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Add sketch arc slot"));
|
||||
|
||||
commandAddShapeGeometryAndConstraints();
|
||||
|
||||
Gui::Command::commitCommand();
|
||||
}
|
||||
catch (const Base::Exception& e) {
|
||||
Gui::NotifyError(sketchgui,
|
||||
QT_TRANSLATE_NOOP("Notifications", "Error"),
|
||||
QT_TRANSLATE_NOOP("Notifications", "Failed to add arc slot"));
|
||||
|
||||
Gui::Command::abortCommand();
|
||||
THROWM(Base::RuntimeError,
|
||||
QT_TRANSLATE_NOOP(
|
||||
"Notifications",
|
||||
"Tool execution aborted") "\n") // This prevents constraints from being
|
||||
// applied on non existing geometry
|
||||
}
|
||||
}
|
||||
|
||||
void generateAutoConstraints() override
|
||||
{
|
||||
auto& ac2 = sugConstraints[1];
|
||||
auto& ac3 = sugConstraints[2];
|
||||
|
||||
generateAutoConstraintsOnElement(
|
||||
sugConstraints[0],
|
||||
getHighestCurveIndex() - 3,
|
||||
Sketcher::PointPos::mid); // add auto constraints for the center point
|
||||
|
||||
if (constructionMethod() == ConstructionMethod::ArcSlot) {
|
||||
generateAutoConstraintsOnElement(ac2,
|
||||
getHighestCurveIndex() - 1,
|
||||
Sketcher::PointPos::mid);
|
||||
generateAutoConstraintsOnElement(ac3, getHighestCurveIndex(), Sketcher::PointPos::mid);
|
||||
}
|
||||
else {
|
||||
generateAutoConstraintsOnElement(ac2,
|
||||
getHighestCurveIndex() - 3,
|
||||
(arcAngle > 0) ? Sketcher::PointPos::start
|
||||
: Sketcher::PointPos::end);
|
||||
generateAutoConstraintsOnElement(ac3,
|
||||
getHighestCurveIndex() - 3,
|
||||
(arcAngle > 0) ? Sketcher::PointPos::end
|
||||
: Sketcher::PointPos::start);
|
||||
}
|
||||
|
||||
// Ensure temporary autoconstraints do not generate a redundancy and that the geometry
|
||||
// parameters are accurate This is particularly important for adding widget mandated
|
||||
// constraints.
|
||||
removeRedundantAutoConstraints();
|
||||
}
|
||||
|
||||
void createAutoConstraints() override
|
||||
{
|
||||
// execute python command to create autoconstraints
|
||||
createGeneratedAutoConstraints(true);
|
||||
|
||||
sugConstraints[0].clear();
|
||||
sugConstraints[1].clear();
|
||||
sugConstraints[2].clear();
|
||||
}
|
||||
|
||||
std::string getToolName() const override
|
||||
{
|
||||
return "DSH_ArcSlot";
|
||||
}
|
||||
|
||||
QString getCrosshairCursorSVGName() const override
|
||||
{
|
||||
if (constructionMethod() == DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) {
|
||||
return QString::fromLatin1("Sketcher_Pointer_Create_ArcSlot");
|
||||
}
|
||||
else {
|
||||
return QString::fromLatin1("Sketcher_Pointer_Create_RectangleSlot");
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<QWidget> createWidget() const override
|
||||
{
|
||||
return std::make_unique<SketcherToolDefaultWidget>();
|
||||
}
|
||||
|
||||
bool isWidgetVisible() const override
|
||||
{
|
||||
return true;
|
||||
};
|
||||
|
||||
QPixmap getToolIcon() const override
|
||||
{
|
||||
return Gui::BitmapFactory().pixmap("Sketcher_CreateArcSlot");
|
||||
}
|
||||
|
||||
QString getToolWidgetText() const override
|
||||
{
|
||||
return QString(QObject::tr("Arc Slot parameters"));
|
||||
}
|
||||
|
||||
bool canGoToNextMode() override
|
||||
{
|
||||
// Prevent validation of null arc.
|
||||
if (state() == SelectMode::SeekSecond && radius < Precision::Confusion()) {
|
||||
return false;
|
||||
}
|
||||
if (state() == SelectMode::SeekThird && fabs(arcAngle) < Precision::Confusion()) {
|
||||
return false;
|
||||
}
|
||||
if (state() == SelectMode::SeekFourth) {
|
||||
if (constructionMethod() == DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) {
|
||||
if (r < Precision::Confusion()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (fabs(radius - r) < Precision::Confusion()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void angleSnappingControl() override
|
||||
{
|
||||
if (state() == SelectMode::SeekSecond || state() == SelectMode::SeekThird) {
|
||||
setAngleSnapping(true, centerPoint);
|
||||
}
|
||||
else {
|
||||
setAngleSnapping(false);
|
||||
}
|
||||
}
|
||||
|
||||
void createShape(bool onlyeditoutline) override
|
||||
{
|
||||
ShapeGeometry.clear();
|
||||
|
||||
if (radius < Precision::Confusion()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (state() == SelectMode::SeekSecond) {
|
||||
addCircleToShapeGeometry(toVector3d(centerPoint), radius, isConstructionMode());
|
||||
}
|
||||
else {
|
||||
if (fabs(arcAngle) < Precision::Confusion()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (state() == SelectMode::SeekFourth && r < Precision::Confusion()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (constructionMethod() == DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) {
|
||||
addArcToShapeGeometry(toVector3d(centerPoint),
|
||||
startAngle,
|
||||
endAngle,
|
||||
radius + r,
|
||||
isConstructionMode());
|
||||
|
||||
addArcToShapeGeometry(toVector3d(startPoint),
|
||||
angleReversed ? endAngle : startAngle + M_PI,
|
||||
angleReversed ? endAngle + M_PI : startAngle + 2 * M_PI,
|
||||
r,
|
||||
isConstructionMode());
|
||||
|
||||
addArcToShapeGeometry(toVector3d(endPoint),
|
||||
angleReversed ? startAngle + M_PI : endAngle,
|
||||
angleReversed ? startAngle + 2 * M_PI : M_PI + endAngle,
|
||||
r,
|
||||
isConstructionMode());
|
||||
|
||||
if (radius - r > Precision::Confusion()) {
|
||||
addArcToShapeGeometry(toVector3d(centerPoint),
|
||||
startAngle,
|
||||
endAngle,
|
||||
radius - r,
|
||||
isConstructionMode());
|
||||
}
|
||||
}
|
||||
else {
|
||||
Part::GeomArcOfCircle* arc1 = addArcToShapeGeometry(toVector3d(centerPoint),
|
||||
startAngle,
|
||||
endAngle,
|
||||
radius,
|
||||
isConstructionMode());
|
||||
|
||||
Base::Vector3d p11 = arc1->getStartPoint();
|
||||
Base::Vector3d p12 = arc1->getEndPoint();
|
||||
|
||||
if (r > Precision::Confusion()) {
|
||||
auto arc2 = std::make_unique<Part::GeomArcOfCircle>();
|
||||
arc2->setRadius(r);
|
||||
arc2->setRange(startAngle, endAngle, true);
|
||||
arc2->setCenter(toVector3d(centerPoint));
|
||||
Sketcher::GeometryFacade::setConstruction(arc2.get(), isConstructionMode());
|
||||
|
||||
Base::Vector3d p21 = arc2->getStartPoint();
|
||||
Base::Vector3d p22 = arc2->getEndPoint();
|
||||
|
||||
addLineToShapeGeometry(p11, p21, isConstructionMode());
|
||||
|
||||
addLineToShapeGeometry(p12, p22, isConstructionMode());
|
||||
|
||||
// arc2 is added last to make it easy if it does not exist
|
||||
ShapeGeometry.push_back(std::move(arc2));
|
||||
}
|
||||
else {
|
||||
addLineToShapeGeometry(p11, toVector3d(centerPoint), isConstructionMode());
|
||||
|
||||
addLineToShapeGeometry(p12, toVector3d(centerPoint), isConstructionMode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!onlyeditoutline) {
|
||||
int firstCurve = getHighestCurveIndex() + 1;
|
||||
|
||||
if (constructionMethod() == DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) {
|
||||
bool allArcs = fabs(radius - r) > Precision::Confusion();
|
||||
|
||||
Sketcher::PointPos pos1 =
|
||||
angleReversed ? Sketcher::PointPos::start : Sketcher::PointPos::end;
|
||||
Sketcher::PointPos pos2 =
|
||||
angleReversed ? Sketcher::PointPos::end : Sketcher::PointPos::start;
|
||||
|
||||
if (allArcs) {
|
||||
addToShapeConstraints(Sketcher::Coincident,
|
||||
firstCurve,
|
||||
Sketcher::PointPos::mid,
|
||||
firstCurve + 3,
|
||||
Sketcher::PointPos::mid);
|
||||
|
||||
addToShapeConstraints(Sketcher::Tangent,
|
||||
firstCurve + 3,
|
||||
pos1,
|
||||
firstCurve + 2,
|
||||
pos1);
|
||||
|
||||
addToShapeConstraints(Sketcher::Tangent,
|
||||
firstCurve + 3,
|
||||
pos2,
|
||||
firstCurve + 1,
|
||||
pos2);
|
||||
}
|
||||
else {
|
||||
addToShapeConstraints(Sketcher::Coincident,
|
||||
firstCurve,
|
||||
Sketcher::PointPos::mid,
|
||||
firstCurve + 1,
|
||||
pos2);
|
||||
|
||||
addToShapeConstraints(Sketcher::Coincident,
|
||||
firstCurve,
|
||||
Sketcher::PointPos::mid,
|
||||
firstCurve + 2,
|
||||
pos1);
|
||||
}
|
||||
|
||||
addToShapeConstraints(Sketcher::Tangent, firstCurve, pos1, firstCurve + 2, pos2);
|
||||
|
||||
addToShapeConstraints(Sketcher::Tangent, firstCurve, pos2, firstCurve + 1, pos1);
|
||||
}
|
||||
else {
|
||||
bool allGeos = r > Precision::Confusion();
|
||||
|
||||
addToShapeConstraints(Sketcher::Perpendicular,
|
||||
firstCurve,
|
||||
Sketcher::PointPos::none,
|
||||
firstCurve + 1,
|
||||
Sketcher::PointPos::none);
|
||||
|
||||
addToShapeConstraints(Sketcher::Perpendicular,
|
||||
firstCurve,
|
||||
Sketcher::PointPos::none,
|
||||
firstCurve + 2,
|
||||
Sketcher::PointPos::none);
|
||||
|
||||
|
||||
addToShapeConstraints(Sketcher::Coincident,
|
||||
firstCurve,
|
||||
Sketcher::PointPos::start,
|
||||
firstCurve + 1,
|
||||
Sketcher::PointPos::start);
|
||||
|
||||
addToShapeConstraints(Sketcher::Coincident,
|
||||
firstCurve,
|
||||
Sketcher::PointPos::end,
|
||||
firstCurve + 2,
|
||||
Sketcher::PointPos::start);
|
||||
|
||||
if (allGeos) {
|
||||
addToShapeConstraints(Sketcher::Coincident,
|
||||
firstCurve,
|
||||
Sketcher::PointPos::mid,
|
||||
firstCurve + 3,
|
||||
Sketcher::PointPos::mid);
|
||||
|
||||
addToShapeConstraints(Sketcher::Coincident,
|
||||
firstCurve + 3,
|
||||
Sketcher::PointPos::start,
|
||||
firstCurve + 1,
|
||||
Sketcher::PointPos::end);
|
||||
|
||||
addToShapeConstraints(Sketcher::Coincident,
|
||||
firstCurve + 3,
|
||||
Sketcher::PointPos::end,
|
||||
firstCurve + 2,
|
||||
Sketcher::PointPos::end);
|
||||
}
|
||||
else {
|
||||
addToShapeConstraints(Sketcher::Coincident,
|
||||
firstCurve,
|
||||
Sketcher::PointPos::mid,
|
||||
firstCurve + 1,
|
||||
Sketcher::PointPos::end);
|
||||
|
||||
addToShapeConstraints(Sketcher::Coincident,
|
||||
firstCurve,
|
||||
Sketcher::PointPos::mid,
|
||||
firstCurve + 2,
|
||||
Sketcher::PointPos::end);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void reverseIfNecessary()
|
||||
{
|
||||
if (arcAngle > 0) {
|
||||
endAngle = startAngle + arcAngle;
|
||||
angleReversed = false;
|
||||
}
|
||||
else {
|
||||
endAngle = startAngle;
|
||||
startAngle = startAngle + arcAngle;
|
||||
angleReversed = true;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
Base::Vector2d centerPoint, startPoint, endPoint;
|
||||
double startAngle, startAngleBackup, endAngle, arcAngle, r, radius;
|
||||
bool angleReversed;
|
||||
};
|
||||
|
||||
template<>
|
||||
auto DSHArcSlotControllerBase::getState(int labelindex) const
|
||||
{
|
||||
switch (labelindex) {
|
||||
case OnViewParameter::First:
|
||||
case OnViewParameter::Second:
|
||||
return SelectMode::SeekFirst;
|
||||
break;
|
||||
case OnViewParameter::Third:
|
||||
case OnViewParameter::Fourth:
|
||||
return SelectMode::SeekSecond;
|
||||
break;
|
||||
case OnViewParameter::Fifth:
|
||||
return SelectMode::SeekThird;
|
||||
break;
|
||||
case OnViewParameter::Sixth:
|
||||
return SelectMode::SeekFourth;
|
||||
break;
|
||||
default:
|
||||
THROWM(Base::ValueError, "OnViewParameter index without an associated machine state")
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void DSHArcSlotController::configureToolWidget()
|
||||
{
|
||||
if (!init) { // Code to be executed only upon initialisation
|
||||
QStringList names = {QStringLiteral("Arc ends"), QStringLiteral("Flat ends")};
|
||||
toolWidget->setComboboxElements(WCombobox::FirstCombo, names);
|
||||
|
||||
if (isConstructionMode()) {
|
||||
toolWidget->setComboboxItemIcon(
|
||||
WCombobox::FirstCombo,
|
||||
0,
|
||||
Gui::BitmapFactory().iconFromTheme("Sketcher_CreateArcSlot_Constr"));
|
||||
toolWidget->setComboboxItemIcon(
|
||||
WCombobox::FirstCombo,
|
||||
1,
|
||||
Gui::BitmapFactory().iconFromTheme("Sketcher_CreateRectangleSlot_Constr"));
|
||||
}
|
||||
else {
|
||||
toolWidget->setComboboxItemIcon(
|
||||
WCombobox::FirstCombo,
|
||||
0,
|
||||
Gui::BitmapFactory().iconFromTheme("Sketcher_CreateArcSlot"));
|
||||
toolWidget->setComboboxItemIcon(
|
||||
WCombobox::FirstCombo,
|
||||
1,
|
||||
Gui::BitmapFactory().iconFromTheme("Sketcher_CreateRectangleSlot"));
|
||||
}
|
||||
}
|
||||
|
||||
onViewParameters[OnViewParameter::First]->setLabelType(Gui::SoDatumLabel::DISTANCEX);
|
||||
onViewParameters[OnViewParameter::Second]->setLabelType(Gui::SoDatumLabel::DISTANCEY);
|
||||
onViewParameters[OnViewParameter::Third]->setLabelType(
|
||||
Gui::SoDatumLabel::RADIUS,
|
||||
Gui::EditableDatumLabel::Function::Dimensioning);
|
||||
onViewParameters[OnViewParameter::Fourth]->setLabelType(
|
||||
Gui::SoDatumLabel::ANGLE,
|
||||
Gui::EditableDatumLabel::Function::Dimensioning);
|
||||
onViewParameters[OnViewParameter::Fifth]->setLabelType(
|
||||
Gui::SoDatumLabel::ANGLE,
|
||||
Gui::EditableDatumLabel::Function::Dimensioning);
|
||||
|
||||
if (handler->constructionMethod() == DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) {
|
||||
onViewParameters[OnViewParameter::Sixth]->setLabelType(
|
||||
Gui::SoDatumLabel::RADIUS,
|
||||
Gui::EditableDatumLabel::Function::Dimensioning);
|
||||
}
|
||||
else {
|
||||
onViewParameters[OnViewParameter::Sixth]->setLabelType(
|
||||
Gui::SoDatumLabel::DISTANCE,
|
||||
Gui::EditableDatumLabel::Function::Dimensioning);
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void DSHArcSlotControllerBase::doEnforceControlParameters(Base::Vector2d& onSketchPos)
|
||||
{
|
||||
|
||||
switch (handler->state()) {
|
||||
case SelectMode::SeekFirst: {
|
||||
if (onViewParameters[OnViewParameter::First]->isSet) {
|
||||
onSketchPos.x = onViewParameters[OnViewParameter::First]->getValue();
|
||||
}
|
||||
|
||||
if (onViewParameters[OnViewParameter::Second]->isSet) {
|
||||
onSketchPos.y = onViewParameters[OnViewParameter::Second]->getValue();
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekSecond: {
|
||||
auto dir = onSketchPos - handler->centerPoint;
|
||||
if (dir.Length() < Precision::Confusion()) {
|
||||
dir.x = 1.0; // if direction null, default to (1,0)
|
||||
}
|
||||
double radius = dir.Length();
|
||||
|
||||
if (onViewParameters[OnViewParameter::Third]->isSet) {
|
||||
radius = onViewParameters[OnViewParameter::Third]->getValue();
|
||||
if (radius < Precision::Confusion()) {
|
||||
unsetOnViewParameter(onViewParameters[OnViewParameter::Third].get());
|
||||
return;
|
||||
}
|
||||
|
||||
onSketchPos = handler->centerPoint + radius * dir.Normalize();
|
||||
}
|
||||
|
||||
if (onViewParameters[OnViewParameter::Fourth]->isSet) {
|
||||
double angle = onViewParameters[OnViewParameter::Fourth]->getValue() * M_PI / 180;
|
||||
onSketchPos.x = handler->centerPoint.x + cos(angle) * radius;
|
||||
onSketchPos.y = handler->centerPoint.y + sin(angle) * radius;
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
if (onViewParameters[OnViewParameter::Fifth]->isSet) {
|
||||
double arcAngle = onViewParameters[OnViewParameter::Fifth]->getValue() * M_PI / 180;
|
||||
if (fmod(fabs(arcAngle), 2 * M_PI) < Precision::Confusion()) {
|
||||
unsetOnViewParameter(onViewParameters[OnViewParameter::Fifth].get());
|
||||
}
|
||||
else {
|
||||
double length = (onSketchPos - handler->centerPoint).Length();
|
||||
double angle = handler->startAngleBackup + arcAngle;
|
||||
onSketchPos.x = handler->centerPoint.x + cos(angle) * length;
|
||||
onSketchPos.y = handler->centerPoint.y + sin(angle) * length;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekFourth: {
|
||||
if (onViewParameters[OnViewParameter::Sixth]->isSet) {
|
||||
double radius2 = onViewParameters[OnViewParameter::Sixth]->getValue();
|
||||
if ((fabs(radius2) < Precision::Confusion()
|
||||
&& handler->constructionMethod()
|
||||
== DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot)
|
||||
|| (fabs(handler->radius - radius2) < Precision::Confusion()
|
||||
&& handler->constructionMethod()
|
||||
== DrawSketchHandlerArcSlot::ConstructionMethod::RectangleSlot)) {
|
||||
unsetOnViewParameter(onViewParameters[OnViewParameter::Sixth].get());
|
||||
}
|
||||
else {
|
||||
onSketchPos =
|
||||
handler->centerPoint + Base::Vector2d(handler->radius + radius2, 0.);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void DSHArcSlotController::adaptParameters(Base::Vector2d onSketchPos)
|
||||
{
|
||||
switch (handler->state()) {
|
||||
case SelectMode::SeekFirst: {
|
||||
if (!onViewParameters[OnViewParameter::First]->isSet) {
|
||||
setOnViewParameterValue(OnViewParameter::First, onSketchPos.x);
|
||||
}
|
||||
|
||||
if (!onViewParameters[OnViewParameter::Second]->isSet) {
|
||||
setOnViewParameterValue(OnViewParameter::Second, onSketchPos.y);
|
||||
}
|
||||
|
||||
bool sameSign = onSketchPos.x * onSketchPos.y > 0.;
|
||||
onViewParameters[OnViewParameter::First]->setLabelAutoDistanceReverse(!sameSign);
|
||||
onViewParameters[OnViewParameter::Second]->setLabelAutoDistanceReverse(sameSign);
|
||||
onViewParameters[OnViewParameter::First]->setPoints(Base::Vector3d(),
|
||||
toVector3d(onSketchPos));
|
||||
onViewParameters[OnViewParameter::Second]->setPoints(Base::Vector3d(),
|
||||
toVector3d(onSketchPos));
|
||||
} break;
|
||||
case SelectMode::SeekSecond: {
|
||||
if (!onViewParameters[OnViewParameter::Third]->isSet) {
|
||||
setOnViewParameterValue(OnViewParameter::Third, handler->radius);
|
||||
}
|
||||
double range = handler->startAngle * 180 / M_PI;
|
||||
if (!onViewParameters[OnViewParameter::Fourth]->isSet) {
|
||||
setOnViewParameterValue(OnViewParameter::Fourth, range, Base::Unit::Angle);
|
||||
}
|
||||
|
||||
Base::Vector3d start = toVector3d(handler->centerPoint);
|
||||
Base::Vector3d end = toVector3d(onSketchPos);
|
||||
|
||||
onViewParameters[OnViewParameter::Third]->setPoints(start, end);
|
||||
onViewParameters[OnViewParameter::Fourth]->setPoints(start, Base::Vector3d());
|
||||
onViewParameters[OnViewParameter::Fourth]->setLabelRange(handler->startAngle);
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
double range = handler->arcAngle * 180 / M_PI;
|
||||
|
||||
if (!onViewParameters[OnViewParameter::Fifth]->isSet) {
|
||||
setOnViewParameterValue(OnViewParameter::Fifth, range, Base::Unit::Angle);
|
||||
}
|
||||
|
||||
Base::Vector3d start = toVector3d(handler->centerPoint);
|
||||
onViewParameters[OnViewParameter::Fifth]->setPoints(start, Base::Vector3d());
|
||||
|
||||
onViewParameters[OnViewParameter::Fifth]->setLabelStartAngle(handler->startAngleBackup);
|
||||
onViewParameters[OnViewParameter::Fifth]->setLabelRange(handler->arcAngle);
|
||||
} break;
|
||||
case SelectMode::SeekFourth: {
|
||||
double dist = handler->r;
|
||||
if (handler->constructionMethod()
|
||||
== DrawSketchHandlerArcSlot::ConstructionMethod::RectangleSlot) {
|
||||
dist = (handler->r - handler->radius);
|
||||
}
|
||||
|
||||
if (!onViewParameters[OnViewParameter::Sixth]->isSet) {
|
||||
setOnViewParameterValue(OnViewParameter::Sixth, dist);
|
||||
}
|
||||
|
||||
Base::Vector3d start = toVector3d(handler->endPoint);
|
||||
Base::Vector3d end =
|
||||
start + (start - toVector3d(handler->centerPoint)).Normalize() * dist;
|
||||
|
||||
onViewParameters[OnViewParameter::Sixth]->setPoints(start, end);
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void DSHArcSlotController::doChangeDrawSketchHandlerMode()
|
||||
{
|
||||
switch (handler->state()) {
|
||||
case SelectMode::SeekFirst: {
|
||||
if (onViewParameters[OnViewParameter::First]->isSet
|
||||
&& onViewParameters[OnViewParameter::Second]->isSet) {
|
||||
|
||||
handler->setState(SelectMode::SeekSecond);
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekSecond: {
|
||||
if (onViewParameters[OnViewParameter::Third]->isSet
|
||||
&& onViewParameters[OnViewParameter::Fourth]->isSet) {
|
||||
|
||||
handler->setState(SelectMode::SeekThird);
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekThird: {
|
||||
if (onViewParameters[OnViewParameter::Fifth]->isSet) {
|
||||
|
||||
handler->setState(SelectMode::SeekFourth);
|
||||
}
|
||||
} break;
|
||||
case SelectMode::SeekFourth: {
|
||||
if (onViewParameters[OnViewParameter::Sixth]->isSet) {
|
||||
|
||||
handler->setState(SelectMode::End);
|
||||
}
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void DSHArcSlotController::addConstraints()
|
||||
{
|
||||
App::DocumentObject* obj = handler->sketchgui->getObject();
|
||||
|
||||
int firstCurve = handler->getHighestCurveIndex() - 3;
|
||||
using namespace Sketcher;
|
||||
|
||||
auto x0 = onViewParameters[OnViewParameter::First]->getValue();
|
||||
auto y0 = onViewParameters[OnViewParameter::Second]->getValue();
|
||||
auto radius = onViewParameters[OnViewParameter::Third]->getValue();
|
||||
auto slotRadius = onViewParameters[OnViewParameter::Sixth]->getValue();
|
||||
|
||||
auto x0set = onViewParameters[OnViewParameter::First]->isSet;
|
||||
auto y0set = onViewParameters[OnViewParameter::Second]->isSet;
|
||||
auto radiusSet = onViewParameters[OnViewParameter::Third]->isSet;
|
||||
auto arcAngleSet = onViewParameters[OnViewParameter::Fifth]->isSet;
|
||||
auto slotRadiusSet = onViewParameters[OnViewParameter::Sixth]->isSet;
|
||||
|
||||
auto constraintx0 = [&]() {
|
||||
ConstraintToAttachment(GeoElementId(firstCurve, PointPos::mid),
|
||||
GeoElementId::VAxis,
|
||||
x0,
|
||||
obj);
|
||||
};
|
||||
|
||||
auto constrainty0 = [&]() {
|
||||
ConstraintToAttachment(GeoElementId(firstCurve, PointPos::mid),
|
||||
GeoElementId::HAxis,
|
||||
y0,
|
||||
obj);
|
||||
};
|
||||
|
||||
auto constraintRadius = [&]() {
|
||||
if (handler->constructionMethod()
|
||||
== DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) {
|
||||
Gui::cmdAppObjectArgs(obj,
|
||||
"addConstraint(Sketcher.Constraint('Distance',%d,%d,%d,%d,%f)) ",
|
||||
firstCurve,
|
||||
3,
|
||||
firstCurve + 2,
|
||||
3,
|
||||
fabs(radius));
|
||||
}
|
||||
else {
|
||||
Gui::cmdAppObjectArgs(obj,
|
||||
"addConstraint(Sketcher.Constraint('Radius',%d,%f)) ",
|
||||
firstCurve,
|
||||
fabs(radius));
|
||||
}
|
||||
};
|
||||
|
||||
auto constraintArcAngle = [&]() {
|
||||
Gui::cmdAppObjectArgs(obj,
|
||||
"addConstraint(Sketcher.Constraint('Angle',%d,%f)) ",
|
||||
firstCurve,
|
||||
fabs(handler->arcAngle));
|
||||
};
|
||||
|
||||
auto constraintSlotRadius = [&]() {
|
||||
if (handler->constructionMethod()
|
||||
== DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) {
|
||||
Gui::cmdAppObjectArgs(obj,
|
||||
"addConstraint(Sketcher.Constraint('Radius',%d,%f)) ",
|
||||
firstCurve + 2,
|
||||
fabs(slotRadius));
|
||||
}
|
||||
else {
|
||||
Gui::cmdAppObjectArgs(obj,
|
||||
"addConstraint(Sketcher.Constraint('Distance',%d,%f)) ",
|
||||
firstCurve + 2,
|
||||
fabs(slotRadius));
|
||||
}
|
||||
};
|
||||
|
||||
if (handler->AutoConstraints.empty()) { // No valid diagnosis. Every constraint can be added.
|
||||
if (x0set && y0set && x0 == 0. && y0 == 0.) {
|
||||
ConstraintToAttachment(GeoElementId(firstCurve, PointPos::mid),
|
||||
GeoElementId::RtPnt,
|
||||
0.,
|
||||
obj);
|
||||
}
|
||||
else {
|
||||
if (x0set) {
|
||||
constraintx0();
|
||||
}
|
||||
|
||||
if (y0set) {
|
||||
constrainty0();
|
||||
}
|
||||
}
|
||||
|
||||
if (radiusSet) {
|
||||
constraintRadius();
|
||||
}
|
||||
|
||||
if (arcAngleSet) {
|
||||
constraintArcAngle();
|
||||
}
|
||||
|
||||
if (slotRadiusSet) {
|
||||
constraintSlotRadius();
|
||||
}
|
||||
}
|
||||
else { // Valid diagnosis. Must check which constraints may be added.
|
||||
auto startpointinfo = handler->getPointInfo(GeoElementId(firstCurve, PointPos::mid));
|
||||
|
||||
if (x0set && startpointinfo.isXDoF()) {
|
||||
constraintx0();
|
||||
|
||||
handler->diagnoseWithAutoConstraints(); // ensure we have recalculated parameters after
|
||||
// each constraint addition
|
||||
// get updated point position
|
||||
startpointinfo = handler->getPointInfo(GeoElementId(firstCurve, PointPos::mid));
|
||||
}
|
||||
|
||||
if (y0set && startpointinfo.isYDoF()) {
|
||||
constrainty0();
|
||||
|
||||
handler->diagnoseWithAutoConstraints(); // ensure we have recalculated parameters after
|
||||
// each constraint addition
|
||||
// get updated point position
|
||||
startpointinfo = handler->getPointInfo(GeoElementId(firstCurve, PointPos::mid));
|
||||
}
|
||||
|
||||
|
||||
startpointinfo = handler->getPointInfo(GeoElementId(firstCurve, PointPos::start));
|
||||
auto endpointinfo = handler->getPointInfo(GeoElementId(firstCurve, PointPos::end));
|
||||
auto midpointinfo = handler->getPointInfo(GeoElementId(firstCurve, PointPos::mid));
|
||||
|
||||
int DoFs = startpointinfo.getDoFs();
|
||||
DoFs += endpointinfo.getDoFs();
|
||||
DoFs += midpointinfo.getDoFs();
|
||||
|
||||
if (radiusSet && DoFs > 0) {
|
||||
constraintRadius();
|
||||
DoFs--;
|
||||
}
|
||||
|
||||
if (arcAngleSet && DoFs > 0) {
|
||||
constraintArcAngle();
|
||||
}
|
||||
|
||||
startpointinfo = handler->getPointInfo(GeoElementId(firstCurve + 2, PointPos::start));
|
||||
endpointinfo = handler->getPointInfo(GeoElementId(firstCurve + 2, PointPos::end));
|
||||
|
||||
DoFs = startpointinfo.getDoFs();
|
||||
DoFs += endpointinfo.getDoFs();
|
||||
|
||||
if (handler->constructionMethod()
|
||||
== DrawSketchHandlerArcSlot::ConstructionMethod::ArcSlot) {
|
||||
midpointinfo = handler->getPointInfo(GeoElementId(firstCurve + 2, PointPos::mid));
|
||||
DoFs += midpointinfo.getDoFs();
|
||||
}
|
||||
|
||||
if (slotRadiusSet && DoFs > 0) {
|
||||
constraintSlotRadius();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace SketcherGui
|
||||
|
||||
|
||||
#endif // SKETCHERGUI_DrawSketchHandlerArcSlot_H
|
||||
@@ -128,6 +128,8 @@
|
||||
<file>icons/geometry/Sketcher_Create3PointCircle_Constr.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateArc.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateArc_Constr.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateArcSlot.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateArcSlot_Constr.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateBSpline.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateBSpline_Constr.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateBSplineByInterpolation.svg</file>
|
||||
@@ -179,6 +181,8 @@
|
||||
<file>icons/geometry/Sketcher_CreateRectangle3Points_Constr.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateRectangle3Points_Center.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateRectangle3Points_Center_Constr.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateRectangleSlot.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateRectangleSlot_Constr.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateRegularPolygon.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateRegularPolygon_Constr.svg</file>
|
||||
<file>icons/geometry/Sketcher_CreateSlot.svg</file>
|
||||
@@ -213,6 +217,7 @@
|
||||
<file>icons/pointers/Sketcher_Pointer_Create_ArcOfEllipse.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Create_ArcOfHyperbola.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Create_ArcOfParabola.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Create_ArcSlot.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Create_Box.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Create_Box_Center.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Create_BSpline.svg</file>
|
||||
@@ -234,6 +239,7 @@
|
||||
<file>icons/pointers/Sketcher_Pointer_Oblong_Frame.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Oblong_Frame_Center.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Regular_Polygon.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Create_RectangleSlot.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Slot.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Splitting.svg</file>
|
||||
<file>icons/pointers/Sketcher_Pointer_Trimming.svg</file>
|
||||
|
||||
@@ -0,0 +1,344 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg4564"
|
||||
version="1.1"
|
||||
sodipodi:docname="Sketcher_CreateArcSlot.svg"
|
||||
inkscape:version="1.1-beta1 (77e7b44db3, 2021-03-28)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview44"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
objecttolerance="10.0"
|
||||
gridtolerance="10.0"
|
||||
guidetolerance="10.0"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
showguides="false"
|
||||
inkscape:zoom="4"
|
||||
inkscape:cx="43.625"
|
||||
inkscape:cy="38.125"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1571"
|
||||
inkscape:window-x="-9"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4564" />
|
||||
<defs
|
||||
id="defs4566">
|
||||
<linearGradient
|
||||
id="linearGradient3838">
|
||||
<stop
|
||||
style="stop-color:#d3d7cf;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3840" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3842" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3830">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3832" />
|
||||
<stop
|
||||
style="stop-color:#d3d7cf;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3834" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-3"
|
||||
id="radialGradient4572"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3144-3">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3146-7" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3148-0" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-0"
|
||||
id="radialGradient4574"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3144-0">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3146-2" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3148-9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3830"
|
||||
id="linearGradient3836"
|
||||
x1="36"
|
||||
y1="1037.3622"
|
||||
x2="32"
|
||||
y2="1005.3622"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(102.20943,-950.01075)" />
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3838"
|
||||
id="linearGradient3844"
|
||||
x1="36"
|
||||
y1="1039.3622"
|
||||
x2="32"
|
||||
y2="1003.3622"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(76.046477,-943.5584)" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-3"
|
||||
id="radialGradient3846"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-0"
|
||||
id="radialGradient3848"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6-4"
|
||||
id="linearGradient3801-1-3-7"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
<linearGradient
|
||||
id="linearGradient3836-0-6-4">
|
||||
<stop
|
||||
style="stop-color:#a40000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3838-2-7-0" />
|
||||
<stop
|
||||
style="stop-color:#ef2929;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3840-5-5-9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6"
|
||||
id="linearGradient3801-1-3"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
<linearGradient
|
||||
id="linearGradient3836-0-6">
|
||||
<stop
|
||||
style="stop-color:#a40000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3838-2-7" />
|
||||
<stop
|
||||
style="stop-color:#ef2929;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3840-5-5" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6-4"
|
||||
id="linearGradient3801-1-3-9"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
</defs>
|
||||
<metadata
|
||||
id="metadata4569">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>[jriegel]</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:date>2014-04-15</dc:date>
|
||||
<dc:relation>http://www.freecadweb.org/wiki/index.php?title=Artwork</dc:relation>
|
||||
<dc:publisher>
|
||||
<cc:Agent>
|
||||
<dc:title>FreeCAD</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:identifier>FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateSlot.svg</dc:identifier>
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title>FreeCAD LGPL2+</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<cc:license>https://www.gnu.org/copyleft/lesser.html</cc:license>
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>[agryson] Alexander Gryson</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
transform="matrix(0.77869192,0,0,0.77869178,9.3645627,4.9596534)"
|
||||
id="g3827-1-3-4"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5-8"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6-8"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3-7);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2-2"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.77869192,0,0,0.77869178,35.839438,-21.733628)"
|
||||
id="g3827-1-3"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g2949"
|
||||
transform="translate(-0.5303301)">
|
||||
<path
|
||||
id="path1424"
|
||||
style="fill:none;stroke:#2e3436;stroke-width:8"
|
||||
transform="scale(-1)"
|
||||
d="M -5.6261024,-45.711533 A 40.574177,40.574177 0 0 1 -46.200279,-5.1373558" />
|
||||
<path
|
||||
id="path1678"
|
||||
style="fill:none;stroke:#2e3436;stroke-width:8"
|
||||
d="m 32.80709,45.653553 a 13.590611,13.590611 0 0 1 -6.795306,11.769815 13.590611,13.590611 0 0 1 -13.590612,0 13.590611,13.590611 0 0 1 -6.7953051,-11.769815" />
|
||||
<path
|
||||
id="path1678-9"
|
||||
style="fill:none;stroke:#2e3436;stroke-width:8"
|
||||
transform="rotate(-90)"
|
||||
d="m -5.135951,46.153893 a 13.590611,13.590611 0 0 1 -6.795306,11.769814 13.590611,13.590611 0 0 1 -13.590612,0 13.590611,13.590611 0 0 1 -6.795305,-11.769814" />
|
||||
<path
|
||||
id="path1424-5"
|
||||
style="fill:none;stroke:#2e3436;stroke-width:8.01169"
|
||||
transform="scale(-1)"
|
||||
d="m -32.816535,-45.711121 a 13.400769,13.396863 0 0 1 -13.400769,13.396863" />
|
||||
</g>
|
||||
<g
|
||||
id="g3019"
|
||||
transform="translate(67.705476,-3.8006973)">
|
||||
<path
|
||||
id="path1424-9"
|
||||
style="fill:none;stroke:#d3d7cf;stroke-width:4"
|
||||
transform="scale(-1)"
|
||||
d="M 62.609701,-49.51223 A 40.574177,40.574177 0 0 1 22.035524,-8.9380531" />
|
||||
<path
|
||||
id="path1678-4"
|
||||
style="fill:none;stroke:#d3d7cf;stroke-width:4"
|
||||
d="m -35.428714,49.45425 a 13.590611,13.590611 0 0 1 -6.795306,11.769815 13.590611,13.590611 0 0 1 -13.590611,0 13.590611,13.590611 0 0 1 -6.795306,-11.769815" />
|
||||
<path
|
||||
id="path1678-9-3"
|
||||
style="fill:none;stroke:#d3d7cf;stroke-width:4"
|
||||
transform="rotate(-90)"
|
||||
d="m -8.9366484,-22.081911 a 13.590611,13.590611 0 0 1 -6.7953056,11.769815 13.590611,13.590611 0 0 1 -13.590612,-10e-7 13.590611,13.590611 0 0 1 -6.795305,-11.769814" />
|
||||
<path
|
||||
id="path1424-5-2"
|
||||
style="fill:none;stroke:#d3d7cf;stroke-width:4"
|
||||
transform="scale(-1)"
|
||||
d="m 35.419269,-49.511818 a 13.400769,13.396863 0 0 1 -13.40077,13.396863" />
|
||||
</g>
|
||||
<path
|
||||
id="path1424-9-1"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:2.05913"
|
||||
transform="scale(-1)"
|
||||
d="M -4.0957909,-45.837807 A 41.866669,41.681 0 0 1 -45.96246,-4.1568069" />
|
||||
<path
|
||||
id="path1678-4-8"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1.98694"
|
||||
d="m 31.332714,45.783081 a 13.635511,13.36954 0 0 1 -6.817756,11.578362 13.635511,13.36954 0 0 1 -13.635511,-1e-6 13.635511,13.36954 0 0 1 -6.8177557,-11.578361" />
|
||||
<path
|
||||
id="path1678-9-3-2"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:2"
|
||||
transform="rotate(-90)"
|
||||
d="m -4.139431,45.942238 a 13.59516,13.479994 0 0 1 -6.79758,11.674017 13.59516,13.479994 0 0 1 -13.59516,0 13.59516,13.479994 0 0 1 -6.797579,-11.674017" />
|
||||
<path
|
||||
id="path1424-5-2-1"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:2.01102"
|
||||
transform="scale(-1)"
|
||||
d="m -31.301743,-45.814209 a 14.651169,14.478485 0 0 1 -14.651168,14.478485" />
|
||||
<g
|
||||
transform="matrix(0.68405397,0,0,0.68405385,38.815917,11.184757)"
|
||||
id="g3827-1-3-1"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5-9"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6-9"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3-9);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2-20"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,350 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg4564"
|
||||
version="1.1"
|
||||
sodipodi:docname="Sketcher_CreateArcSlot_Constr.svg"
|
||||
inkscape:version="1.1-beta1 (77e7b44db3, 2021-03-28)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview44"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
objecttolerance="10.0"
|
||||
gridtolerance="10.0"
|
||||
guidetolerance="10.0"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
showguides="false"
|
||||
inkscape:zoom="4"
|
||||
inkscape:cx="10.875"
|
||||
inkscape:cy="30.375"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1571"
|
||||
inkscape:window-x="-9"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4564" />
|
||||
<defs
|
||||
id="defs4566">
|
||||
<linearGradient
|
||||
id="linearGradient3838">
|
||||
<stop
|
||||
style="stop-color:#d3d7cf;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3840" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3842" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3830">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3832" />
|
||||
<stop
|
||||
style="stop-color:#d3d7cf;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3834" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-3"
|
||||
id="radialGradient4572"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3144-3">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3146-7" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3148-0" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-0"
|
||||
id="radialGradient4574"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3144-0">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3146-2" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3148-9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3830"
|
||||
id="linearGradient3836"
|
||||
x1="36"
|
||||
y1="1037.3622"
|
||||
x2="32"
|
||||
y2="1005.3622"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(102.20943,-950.01075)" />
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3838"
|
||||
id="linearGradient3844"
|
||||
x1="36"
|
||||
y1="1039.3622"
|
||||
x2="32"
|
||||
y2="1003.3622"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(76.046477,-943.5584)" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-3"
|
||||
id="radialGradient3846"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-0"
|
||||
id="radialGradient3848"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6-4"
|
||||
id="linearGradient3801-1-3-7"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
<linearGradient
|
||||
id="linearGradient3836-0-6-4">
|
||||
<stop
|
||||
style="stop-color:#a40000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3838-2-7-0" />
|
||||
<stop
|
||||
style="stop-color:#ef2929;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3840-5-5-9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6"
|
||||
id="linearGradient3801-1-3"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
<linearGradient
|
||||
id="linearGradient3836-0-6">
|
||||
<stop
|
||||
style="stop-color:#a40000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3838-2-7" />
|
||||
<stop
|
||||
style="stop-color:#ef2929;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3840-5-5" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6-4"
|
||||
id="linearGradient3801-1-3-9"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
</defs>
|
||||
<metadata
|
||||
id="metadata4569">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>[jriegel]</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:date>2014-04-15</dc:date>
|
||||
<dc:relation>http://www.freecadweb.org/wiki/index.php?title=Artwork</dc:relation>
|
||||
<dc:publisher>
|
||||
<cc:Agent>
|
||||
<dc:title>FreeCAD</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:identifier>FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateSlot.svg</dc:identifier>
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title>FreeCAD LGPL2+</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<cc:license>https://www.gnu.org/copyleft/lesser.html</cc:license>
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>[agryson] Alexander Gryson</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
transform="matrix(0.77869192,0,0,0.77869178,9.3645627,4.9596534)"
|
||||
id="g3827-1-3-4"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5-8"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6-8"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3-7);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2-2"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.77869192,0,0,0.77869178,35.839438,-21.733628)"
|
||||
id="g3827-1-3"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="g2949"
|
||||
transform="translate(-0.5303301)"
|
||||
style="stroke:#0b1521;stroke-opacity:1">
|
||||
<path
|
||||
id="path1424"
|
||||
style="fill:none;stroke-width:8"
|
||||
transform="scale(-1)"
|
||||
d="M -5.6261024,-45.711533 A 40.574177,40.574177 0 0 1 -46.200279,-5.1373558" />
|
||||
<path
|
||||
id="path1678"
|
||||
style="fill:none;stroke-width:8"
|
||||
d="m 32.80709,45.653553 a 13.590611,13.590611 0 0 1 -6.795306,11.769815 13.590611,13.590611 0 0 1 -13.590612,0 13.590611,13.590611 0 0 1 -6.7953051,-11.769815" />
|
||||
<path
|
||||
id="path1678-9"
|
||||
style="fill:none;stroke-width:8"
|
||||
transform="rotate(-90)"
|
||||
d="m -5.135951,46.153893 a 13.590611,13.590611 0 0 1 -6.795306,11.769814 13.590611,13.590611 0 0 1 -13.590612,0 13.590611,13.590611 0 0 1 -6.795305,-11.769814" />
|
||||
<path
|
||||
id="path1424-5"
|
||||
style="fill:none;stroke-width:8.01169"
|
||||
transform="scale(-1)"
|
||||
d="m -32.816535,-45.711121 a 13.400769,13.396863 0 0 1 -13.400769,13.396863" />
|
||||
</g>
|
||||
<g
|
||||
id="g3019"
|
||||
transform="translate(67.705476,-3.8006973)"
|
||||
style="stroke:#204a87;stroke-opacity:1">
|
||||
<path
|
||||
id="path1424-9"
|
||||
style="fill:none;stroke-width:4"
|
||||
transform="scale(-1)"
|
||||
d="M 62.609701,-49.51223 A 40.574177,40.574177 0 0 1 22.035524,-8.9380531" />
|
||||
<path
|
||||
id="path1678-4"
|
||||
style="fill:none;stroke-width:4"
|
||||
d="m -35.428714,49.45425 a 13.590611,13.590611 0 0 1 -6.795306,11.769815 13.590611,13.590611 0 0 1 -13.590611,0 13.590611,13.590611 0 0 1 -6.795306,-11.769815" />
|
||||
<path
|
||||
id="path1678-9-3"
|
||||
style="fill:none;stroke-width:4"
|
||||
transform="rotate(-90)"
|
||||
d="m -8.9366484,-22.081911 a 13.590611,13.590611 0 0 1 -6.7953056,11.769815 13.590611,13.590611 0 0 1 -13.590612,-10e-7 13.590611,13.590611 0 0 1 -6.795305,-11.769814" />
|
||||
<path
|
||||
id="path1424-5-2"
|
||||
style="fill:none;stroke-width:4"
|
||||
transform="scale(-1)"
|
||||
d="m 35.419269,-49.511818 a 13.400769,13.396863 0 0 1 -13.40077,13.396863" />
|
||||
</g>
|
||||
<g
|
||||
id="g878"
|
||||
style="stroke:#729fcf;stroke-opacity:1">
|
||||
<path
|
||||
id="path1424-9-1"
|
||||
style="fill:none;stroke-width:2.05913"
|
||||
transform="scale(-1)"
|
||||
d="M -4.0957909,-45.837807 A 41.866669,41.681 0 0 1 -45.96246,-4.1568069" />
|
||||
<path
|
||||
id="path1678-4-8"
|
||||
style="fill:none;stroke-width:1.98694"
|
||||
d="m 31.332714,45.783081 a 13.635511,13.36954 0 0 1 -6.817756,11.578362 13.635511,13.36954 0 0 1 -13.635511,-1e-6 13.635511,13.36954 0 0 1 -6.8177557,-11.578361" />
|
||||
<path
|
||||
id="path1678-9-3-2"
|
||||
style="fill:none;stroke-width:2"
|
||||
transform="rotate(-90)"
|
||||
d="m -4.139431,45.942238 a 13.59516,13.479994 0 0 1 -6.79758,11.674017 13.59516,13.479994 0 0 1 -13.59516,0 13.59516,13.479994 0 0 1 -6.797579,-11.674017" />
|
||||
<path
|
||||
id="path1424-5-2-1"
|
||||
style="fill:none;stroke-width:2.01102"
|
||||
transform="scale(-1)"
|
||||
d="m -31.301743,-45.814209 a 14.651169,14.478485 0 0 1 -14.651168,14.478485" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.68405397,0,0,0.68405385,38.815917,11.184757)"
|
||||
id="g3827-1-3-1"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5-9"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6-9"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3-9);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2-20"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,399 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg4564"
|
||||
version="1.1"
|
||||
sodipodi:docname="Sketcher_CreateRectangleSlot.svg"
|
||||
inkscape:version="1.1-beta1 (77e7b44db3, 2021-03-28)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview44"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
objecttolerance="10.0"
|
||||
gridtolerance="10.0"
|
||||
guidetolerance="10.0"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
showguides="false"
|
||||
inkscape:zoom="11.313709"
|
||||
inkscape:cx="59.883103"
|
||||
inkscape:cy="24.704542"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1571"
|
||||
inkscape:window-x="-9"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4564" />
|
||||
<defs
|
||||
id="defs4566">
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect2046"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect2042"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect2038"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect1807"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect1803"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect1602"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<linearGradient
|
||||
id="linearGradient3838">
|
||||
<stop
|
||||
style="stop-color:#d3d7cf;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3840" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3842" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3830">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3832" />
|
||||
<stop
|
||||
style="stop-color:#d3d7cf;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3834" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-3"
|
||||
id="radialGradient4572"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3144-3">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3146-7" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3148-0" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-0"
|
||||
id="radialGradient4574"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3144-0">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3146-2" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3148-9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3830"
|
||||
id="linearGradient3836"
|
||||
x1="36"
|
||||
y1="1037.3622"
|
||||
x2="32"
|
||||
y2="1005.3622"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(102.20943,-950.01075)" />
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3838"
|
||||
id="linearGradient3844"
|
||||
x1="36"
|
||||
y1="1039.3622"
|
||||
x2="32"
|
||||
y2="1003.3622"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(76.046477,-943.5584)" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-3"
|
||||
id="radialGradient3846"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-0"
|
||||
id="radialGradient3848"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6-4"
|
||||
id="linearGradient3801-1-3-7"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
<linearGradient
|
||||
id="linearGradient3836-0-6-4">
|
||||
<stop
|
||||
style="stop-color:#a40000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3838-2-7-0" />
|
||||
<stop
|
||||
style="stop-color:#ef2929;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3840-5-5-9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6"
|
||||
id="linearGradient3801-1-3"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
<linearGradient
|
||||
id="linearGradient3836-0-6">
|
||||
<stop
|
||||
style="stop-color:#a40000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3838-2-7" />
|
||||
<stop
|
||||
style="stop-color:#ef2929;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3840-5-5" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6-4"
|
||||
id="linearGradient3801-1-3-9"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
</defs>
|
||||
<metadata
|
||||
id="metadata4569">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>[jriegel]</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:date>2014-04-15</dc:date>
|
||||
<dc:relation>http://www.freecadweb.org/wiki/index.php?title=Artwork</dc:relation>
|
||||
<dc:publisher>
|
||||
<cc:Agent>
|
||||
<dc:title>FreeCAD</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:identifier>FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateSlot.svg</dc:identifier>
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title>FreeCAD LGPL2+</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<cc:license>https://www.gnu.org/copyleft/lesser.html</cc:license>
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>[agryson] Alexander Gryson</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<path
|
||||
style="fill:none;stroke:#2e3436;stroke-width:8.00945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 35.456118,53.769921 c -10.086444,0 -20.171749,0 -30.25591,0"
|
||||
id="path1600-3" />
|
||||
<path
|
||||
style="fill:none;stroke:#2e3436;stroke-width:8.07104;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 51.741679,7.0646148 c 0,10.2421492 0,20.4831482 0,30.7229862"
|
||||
id="path1600" />
|
||||
<path
|
||||
id="path1424"
|
||||
style="fill:none;stroke:#2e3436;stroke-width:8;stroke-opacity:1"
|
||||
transform="scale(-1)"
|
||||
d="M -9.1945572,-51.633518 A 40.574177,40.574177 0 0 1 -49.768734,-11.059341" />
|
||||
<path
|
||||
id="path1424-9"
|
||||
style="fill:none;stroke:#d3d7cf;stroke-width:4;stroke-opacity:1"
|
||||
transform="scale(-1)"
|
||||
d="m -9.194561,-51.633518 a 40.574177,40.574177 0 0 1 -40.574177,40.574177" />
|
||||
<path
|
||||
id="path1424-9-1"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:2.05913;fill-opacity:1;stroke-opacity:1"
|
||||
transform="scale(-1)"
|
||||
d="M -8.1945763,-51.759792 A 41.866669,41.681 0 0 1 -50.061245,-10.078793" />
|
||||
<path
|
||||
id="path1424-5"
|
||||
style="fill:none;stroke:#2e3436;stroke-width:8;stroke-opacity:1"
|
||||
transform="scale(-1)"
|
||||
d="m -31.40913,-52.125439 a 18.340073,18.334726 0 0 1 -18.340073,18.334727" />
|
||||
<path
|
||||
id="path1424-5-2"
|
||||
style="fill:none;stroke:#d3d7cf;stroke-width:4;stroke-opacity:1"
|
||||
transform="scale(-1)"
|
||||
d="m -31.409134,-52.125439 a 18.340073,18.334726 0 0 1 -18.340073,18.334727" />
|
||||
<path
|
||||
id="path1424-5-2-1"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:2;fill-opacity:1;stroke-opacity:1"
|
||||
transform="scale(-1)"
|
||||
d="m -30.06181,-52.266525 a 20.05135,19.815018 0 0 1 -20.051349,19.815017" />
|
||||
<path
|
||||
style="fill:none;stroke:#d3d7cf;stroke-width:4.06864;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 51.740076,9.0505865 c 0,8.9137695 0,17.8265285 0,26.7382755"
|
||||
id="path1801" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1.91937;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
|
||||
d="m 50.652877,9.0441144 c 0,8.1363316 0,16.2717496 0,24.4062446"
|
||||
id="path1805" />
|
||||
<path
|
||||
style="fill:none;stroke:#d3d7cf;stroke-width:4.03081;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 33.406426,53.768318 c -8.748793,0 -17.496589,0 -26.2433901,0"
|
||||
id="path1801-8" />
|
||||
<path
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1.89976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
|
||||
d="m 31.072566,52.592731 c -7.970969,0 -15.941038,0 -23.9102001,0"
|
||||
id="path1805-0" />
|
||||
<g
|
||||
transform="matrix(0.77869192,0,0,0.77869178,22.113855,13.126469)"
|
||||
id="g3827-1-3-4"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5-8"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6-8"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3-7);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2-2"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.77869192,0,0,0.77869178,42.324719,-28.097589)"
|
||||
id="g3827-1-3"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.68405397,0,0,0.68405385,42.737933,17.592911)"
|
||||
id="g3827-1-3-1"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5-9"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6-9"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3-9);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2-20"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,399 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="64"
|
||||
height="64"
|
||||
id="svg4564"
|
||||
version="1.1"
|
||||
sodipodi:docname="Sketcher_CreateRectangleSlot_Constr.svg"
|
||||
inkscape:version="1.1-beta1 (77e7b44db3, 2021-03-28)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview44"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
objecttolerance="10.0"
|
||||
gridtolerance="10.0"
|
||||
guidetolerance="10.0"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
showguides="false"
|
||||
inkscape:zoom="11.313709"
|
||||
inkscape:cx="59.794715"
|
||||
inkscape:cy="24.704542"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1571"
|
||||
inkscape:window-x="-9"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4564" />
|
||||
<defs
|
||||
id="defs4566">
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect2046"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect2042"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect2038"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect1807"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect1803"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect1602"
|
||||
is_visible="true"
|
||||
lpeversion="1"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<linearGradient
|
||||
id="linearGradient3838">
|
||||
<stop
|
||||
style="stop-color:#d3d7cf;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3840" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3842" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3830">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3832" />
|
||||
<stop
|
||||
style="stop-color:#d3d7cf;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3834" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-3"
|
||||
id="radialGradient4572"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3144-3">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3146-7" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3148-0" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-0"
|
||||
id="radialGradient4574"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
id="linearGradient3144-0">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3146-2" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop3148-9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3830"
|
||||
id="linearGradient3836"
|
||||
x1="36"
|
||||
y1="1037.3622"
|
||||
x2="32"
|
||||
y2="1005.3622"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(102.20943,-950.01075)" />
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3838"
|
||||
id="linearGradient3844"
|
||||
x1="36"
|
||||
y1="1039.3622"
|
||||
x2="32"
|
||||
y2="1003.3622"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(76.046477,-943.5584)" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-3"
|
||||
id="radialGradient3846"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<radialGradient
|
||||
xlink:href="#linearGradient3144-0"
|
||||
id="radialGradient3848"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
cx="225.26402"
|
||||
cy="672.79736"
|
||||
fx="225.26402"
|
||||
fy="672.79736"
|
||||
r="34.345188" />
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6-4"
|
||||
id="linearGradient3801-1-3-7"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
<linearGradient
|
||||
id="linearGradient3836-0-6-4">
|
||||
<stop
|
||||
style="stop-color:#a40000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3838-2-7-0" />
|
||||
<stop
|
||||
style="stop-color:#ef2929;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3840-5-5-9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6"
|
||||
id="linearGradient3801-1-3"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
<linearGradient
|
||||
id="linearGradient3836-0-6">
|
||||
<stop
|
||||
style="stop-color:#a40000;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop3838-2-7" />
|
||||
<stop
|
||||
style="stop-color:#ef2929;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop3840-5-5" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
xlink:href="#linearGradient3836-0-6-4"
|
||||
id="linearGradient3801-1-3-9"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="-18"
|
||||
y1="18"
|
||||
x2="-22"
|
||||
y2="5" />
|
||||
</defs>
|
||||
<metadata
|
||||
id="metadata4569">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>[jriegel]</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:date>2014-04-15</dc:date>
|
||||
<dc:relation>http://www.freecadweb.org/wiki/index.php?title=Artwork</dc:relation>
|
||||
<dc:publisher>
|
||||
<cc:Agent>
|
||||
<dc:title>FreeCAD</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:publisher>
|
||||
<dc:identifier>FreeCAD/src/Mod/Sketcher/Gui/Resources/icons/Sketcher_CreateSlot.svg</dc:identifier>
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title>FreeCAD LGPL2+</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
<cc:license>https://www.gnu.org/copyleft/lesser.html</cc:license>
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>[agryson] Alexander Gryson</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<path
|
||||
style="fill:none;stroke:#0b1521;stroke-width:8.00945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 35.456118,53.769921 c -10.086444,0 -20.171749,0 -30.25591,0"
|
||||
id="path1600-3" />
|
||||
<path
|
||||
style="fill:none;stroke:#0b1521;stroke-width:8.07104;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 51.741679,7.0646148 c 0,10.2421492 0,20.4831482 0,30.7229862"
|
||||
id="path1600" />
|
||||
<path
|
||||
id="path1424"
|
||||
style="fill:none;stroke:#0b1521;stroke-width:8"
|
||||
transform="scale(-1)"
|
||||
d="M -9.1945572,-51.633518 A 40.574177,40.574177 0 0 1 -49.768734,-11.059341" />
|
||||
<path
|
||||
id="path1424-9"
|
||||
style="fill:none;stroke:#204a87;stroke-width:4"
|
||||
transform="scale(-1)"
|
||||
d="m -9.194561,-51.633518 a 40.574177,40.574177 0 0 1 -40.574177,40.574177" />
|
||||
<path
|
||||
id="path1424-9-1"
|
||||
style="fill:none;stroke:#729fcf;stroke-width:2.05913"
|
||||
transform="scale(-1)"
|
||||
d="M -8.1945763,-51.759792 A 41.866669,41.681 0 0 1 -50.061245,-10.078793" />
|
||||
<path
|
||||
id="path1424-5"
|
||||
style="fill:none;stroke:#0b1521;stroke-width:8"
|
||||
transform="scale(-1)"
|
||||
d="m -31.40913,-52.125439 a 18.340073,18.334726 0 0 1 -18.340073,18.334727" />
|
||||
<path
|
||||
id="path1424-5-2"
|
||||
style="fill:none;stroke:#204a87;stroke-width:4"
|
||||
transform="scale(-1)"
|
||||
d="m -31.409134,-52.125439 a 18.340073,18.334726 0 0 1 -18.340073,18.334727" />
|
||||
<path
|
||||
id="path1424-5-2-1"
|
||||
style="fill:none;stroke:#729fcf;stroke-width:2"
|
||||
transform="scale(-1)"
|
||||
d="m -30.06181,-52.266525 a 20.05135,19.815018 0 0 1 -20.051349,19.815017" />
|
||||
<path
|
||||
style="fill:none;stroke:#204a87;stroke-width:4.06864;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 51.740076,9.0505865 c 0,8.9137695 0,17.8265285 0,26.7382755"
|
||||
id="path1801" />
|
||||
<path
|
||||
style="fill:none;stroke:#729fcf;stroke-width:1.91937;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 50.652877,9.0441144 c 0,8.1363316 0,16.2717496 0,24.4062446"
|
||||
id="path1805" />
|
||||
<path
|
||||
style="fill:none;stroke:#204a87;stroke-width:4.03081;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 33.406426,53.768318 c -8.748793,0 -17.496589,0 -26.2433901,0"
|
||||
id="path1801-8" />
|
||||
<path
|
||||
style="fill:none;stroke:#729fcf;stroke-width:1.89976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 31.072566,52.592731 c -7.970969,0 -15.941038,0 -23.9102001,0"
|
||||
id="path1805-0" />
|
||||
<g
|
||||
transform="matrix(0.77869192,0,0,0.77869178,22.113855,13.126469)"
|
||||
id="g3827-1-3-4"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5-8"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6-8"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3-7);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2-2"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.77869192,0,0,0.77869178,42.324719,-28.097589)"
|
||||
id="g3827-1-3"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.68405397,0,0,0.68405385,42.737933,17.592911)"
|
||||
id="g3827-1-3-1"
|
||||
style="stroke-width:1.28421">
|
||||
<g
|
||||
transform="translate(31.322131,40.570289)"
|
||||
id="g3797-9-5-9"
|
||||
style="stroke-width:1.28421">
|
||||
<path
|
||||
style="fill:#ef2929;stroke:#280000;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-71-6-9"
|
||||
d="M -26.156204,5.582626 A 8.993818,8.9934077 0.02042283 1 1 -12.493793,17.282241 8.993818,8.9934077 0.02042283 1 1 -26.156204,5.582626 Z" />
|
||||
<path
|
||||
style="fill:url(#linearGradient3801-1-3-9);fill-opacity:1;stroke:#ef2929;stroke-width:2.56841;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4250-7-3-2-20"
|
||||
d="M -24.633588,6.893588 A 6.9999997,7.0000001 0 1 1 -14,16 6.9999997,7.0000001 0 0 1 -24.633588,6.893588 Z" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
height="64"
|
||||
width="64"
|
||||
id="svg12"
|
||||
sodipodi:docname="Sketcher_Pointer_Create_ArcSlot.svg"
|
||||
inkscape:version="1.1-beta1 (77e7b44db3, 2021-03-28)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview10"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
objecttolerance="10.0"
|
||||
gridtolerance="10.0"
|
||||
guidetolerance="10.0"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
inkscape:zoom="8.3195532"
|
||||
inkscape:cx="46.697219"
|
||||
inkscape:cy="36.179827"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1570"
|
||||
inkscape:window-x="-9"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg12" />
|
||||
<defs
|
||||
id="defs16" />
|
||||
<g
|
||||
id="crosshair"
|
||||
style="stroke:#ffffff;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter">
|
||||
<path
|
||||
d="m16,3v9m0,8v9m-13-13h9m8,0h9"
|
||||
id="path9" />
|
||||
</g>
|
||||
<path
|
||||
d="M 61.28154,17.379814 C 63.722444,36.365205 45.864357,60.711219 18.357238,60.559097"
|
||||
id="path2"
|
||||
style="fill:none;stroke:#cc0000;stroke-width:2"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
d="M 41.173823,16.75257 C 42.514851,27.183102 32.703657,40.558748 17.591306,40.475173"
|
||||
id="path2-5"
|
||||
style="fill:none;stroke:#cc0000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
d="M 41.290295,17.504818 C 40.75553,13.345415 45.41165,7.6928587 51.43803,7.7261864"
|
||||
id="path2-5-7"
|
||||
style="fill:none;stroke:#cc0000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
d="m 51.22668,7.763288 c 4.159403,-0.534765 10.088188,3.590146 10.05486,9.616526"
|
||||
id="path2-5-7-7"
|
||||
style="fill:none;stroke:#cc0000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
d="M 18.357238,60.559097 C 14.197835,61.093862 7.9043506,56.345063 7.9376786,50.318683"
|
||||
id="path2-5-7-5"
|
||||
style="fill:none;stroke:#cc0000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
d="M 7.9747796,50.530033 C 7.4400146,46.37063 11.564926,40.441845 17.591306,40.475173"
|
||||
id="path2-5-7-7-2"
|
||||
style="fill:none;stroke:#cc0000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
height="64"
|
||||
width="64"
|
||||
id="svg12"
|
||||
sodipodi:docname="Sketcher_Pointer_Create_RectangleSlot.svg"
|
||||
inkscape:version="1.1-beta1 (77e7b44db3, 2021-03-28)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview10"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
objecttolerance="10.0"
|
||||
gridtolerance="10.0"
|
||||
guidetolerance="10.0"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
showgrid="false"
|
||||
inkscape:zoom="8.3195532"
|
||||
inkscape:cx="20.734287"
|
||||
inkscape:cy="40.266585"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="1570"
|
||||
inkscape:window-x="-9"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg12" />
|
||||
<defs
|
||||
id="defs16" />
|
||||
<g
|
||||
id="crosshair"
|
||||
style="stroke:#ffffff;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter">
|
||||
<path
|
||||
d="m16,3v9m0,8v9m-13-13h9m8,0h9"
|
||||
id="path9" />
|
||||
</g>
|
||||
<line
|
||||
x1="17.351849"
|
||||
y1="62.403584"
|
||||
x2="17.325741"
|
||||
y2="40.130707"
|
||||
id="line2"
|
||||
style="fill:none;stroke:#cc0000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<line
|
||||
x1="39.239552"
|
||||
y1="18.421408"
|
||||
x2="61.512409"
|
||||
y2="18.3953"
|
||||
id="line2-1"
|
||||
style="fill:none;stroke:#cc0000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
|
||||
<path
|
||||
d="M 60.284618,18.071227 C 62.725522,37.056618 44.867435,61.402632 17.360316,61.25051"
|
||||
id="path2"
|
||||
style="fill:none;stroke:#cc0000;stroke-width:2"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
d="M 40.176901,17.443984 C 41.517929,27.874515 31.706735,41.250161 16.594384,41.166586"
|
||||
id="path2-5"
|
||||
style="fill:none;stroke:#cc0000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
@@ -352,6 +352,22 @@ inline void SketcherAddWorkspaceRectangles<Gui::ToolBarItem>(Gui::ToolBarItem& g
|
||||
geom << "Sketcher_CompCreateRectangles";
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void SketcherAddWorkspaceslots(T& geom);
|
||||
|
||||
template<>
|
||||
inline void SketcherAddWorkspaceslots<Gui::MenuItem>(Gui::MenuItem& geom)
|
||||
{
|
||||
geom << "Sketcher_CreateSlot"
|
||||
<< "Sketcher_CreateArcSlot";
|
||||
}
|
||||
|
||||
template<>
|
||||
inline void SketcherAddWorkspaceslots<Gui::ToolBarItem>(Gui::ToolBarItem& geom)
|
||||
{
|
||||
geom << "Sketcher_CompSlot";
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void SketcherAddWorkspaceFillets(T& geom);
|
||||
|
||||
@@ -378,8 +394,8 @@ inline void SketcherAddWorkbenchGeometries(T& geom)
|
||||
<< "Sketcher_CreatePolyline";
|
||||
SketcherAddWorkspaceRectangles(geom);
|
||||
SketcherAddWorkspaceRegularPolygon(geom);
|
||||
geom << "Sketcher_CreateSlot"
|
||||
<< "Separator";
|
||||
SketcherAddWorkspaceslots(geom);
|
||||
geom << "Separator";
|
||||
SketcherAddWorkspaceFillets(geom);
|
||||
geom << "Sketcher_Trimming"
|
||||
<< "Sketcher_Extend"
|
||||
|
||||
Reference in New Issue
Block a user