New Draft Snap toolbar
A new toolbar will now appear when using the Draft Snap system (can be disabled in preferences) allowing to turn snaps on/off globally or invidually
@@ -70,7 +70,7 @@ class ArchWorkbench(Workbench):
|
||||
"Draft_Downgrade","Draft_Trimex"]
|
||||
self.draftcontexttools = ["Draft_ApplyStyle","Draft_ToggleDisplayMode",
|
||||
"Draft_AddToGroup","Draft_SelectGroup",
|
||||
"Draft_SelectPlane"]
|
||||
"Draft_SelectPlane","Draft_ToggleSnap"]
|
||||
self.meshtools = ["Arch_SplitMesh","Arch_MeshToShape",
|
||||
"Arch_SelectNonSolidMeshes","Arch_RemoveShape"]
|
||||
self.appendToolbar(str(DraftTools.translate("arch","Arch tools")),self.archtools)
|
||||
|
||||
@@ -101,7 +101,7 @@ def getParamType(param):
|
||||
elif param in ["textheight","tolerance","gridSpacing"]:
|
||||
return "float"
|
||||
elif param in ["selectBaseObjects","alwaysSnap","grid","fillmode","saveonexit","maxSnap",
|
||||
"SvgLinesBlack","dxfStdSize"]:
|
||||
"SvgLinesBlack","dxfStdSize","showSnapBar"]:
|
||||
return "bool"
|
||||
elif param in ["color","constructioncolor","snapcolor"]:
|
||||
return "unsigned"
|
||||
|
||||
@@ -1103,7 +1103,7 @@ class DraftToolBar:
|
||||
|
||||
def togglesnap(self):
|
||||
if hasattr(FreeCADGui,"Snapper"):
|
||||
FreeCADGui.Snapper.active = not FreeCADGui.Snapper.active
|
||||
FreeCADGui.Snapper.toggle()
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
@@ -27,7 +27,7 @@ __url__ = "http://free-cad.sourceforge.net"
|
||||
|
||||
|
||||
import FreeCAD, FreeCADGui, math, Draft, DraftGui, DraftTrackers
|
||||
from DraftGui import todo
|
||||
from DraftGui import todo,getMainWindow
|
||||
from draftlibs import fcvec
|
||||
from FreeCAD import Vector
|
||||
from pivy import coin
|
||||
@@ -84,16 +84,16 @@ class Snapper:
|
||||
'ortho':'dot',
|
||||
'intersection':'dot'}
|
||||
self.cursors = {'passive':None,
|
||||
'extension':':/icons/Constraint_Parallel.svg',
|
||||
'parallel':':/icons/Constraint_Parallel.svg',
|
||||
'grid':':/icons/Constraint_PointOnPoint.svg',
|
||||
'endpoint':':/icons/Constraint_PointOnEnd.svg',
|
||||
'midpoint':':/icons/Constraint_PointOnObject.svg',
|
||||
'perpendicular':':/icons/Constraint_PointToObject.svg',
|
||||
'angle':':/icons/Constraint_ExternalAngle.svg',
|
||||
'center':':/icons/Constraint_Concentric.svg',
|
||||
'ortho':':/icons/Constraint_Perpendicular.svg',
|
||||
'intersection':':/icons/Constraint_Tangent.svg'}
|
||||
'extension':':/icons/Snap_Extension.svg',
|
||||
'parallel':':/icons/Snap_Parallel.svg',
|
||||
'grid':':/icons/Snap_Grid.svg',
|
||||
'endpoint':':/icons/Snap_Endpoint.svg',
|
||||
'midpoint':':/icons/Snap_Midpoint.svg',
|
||||
'perpendicular':':/icons/Snap_Perpendicular.svg',
|
||||
'angle':':/icons/Snap_Angle.svg',
|
||||
'center':':/icons/Snap_Center.svg',
|
||||
'ortho':':/icons/Snap_Ortho.svg',
|
||||
'intersection':':/icons/Snap_Intersection.svg'}
|
||||
|
||||
def snap(self,screenpos,lastpoint=None,active=True,constrain=False):
|
||||
"""snap(screenpos,lastpoint=None,active=True,constrain=False): returns a snapped
|
||||
@@ -104,9 +104,19 @@ class Snapper:
|
||||
Screenpos can be a list, a tuple or a coin.SbVec2s object."""
|
||||
|
||||
global Part,fcgeo
|
||||
import Part, SketcherGui
|
||||
import Part
|
||||
from draftlibs import fcgeo
|
||||
|
||||
if not hasattr(self,"toolbar"):
|
||||
self.makeSnapToolBar()
|
||||
mw = getMainWindow()
|
||||
bt = mw.findChild(QtGui.QToolBar,"Draft Snap")
|
||||
if not bt:
|
||||
mw.addToolBar(self.toolbar)
|
||||
else:
|
||||
if Draft.getParam("showSnapBar"):
|
||||
bt.show()
|
||||
|
||||
def cstr(point):
|
||||
"constrains if needed"
|
||||
if constrain:
|
||||
@@ -342,181 +352,195 @@ class Snapper:
|
||||
|
||||
def snapToPolar(self,point,last):
|
||||
"snaps to polar lines from the given point"
|
||||
polarAngles = [90,45]
|
||||
if last:
|
||||
vecs = []
|
||||
ax = [FreeCAD.DraftWorkingPlane.u,
|
||||
FreeCAD.DraftWorkingPlane.v,
|
||||
FreeCAD.DraftWorkingPlane.axis]
|
||||
for a in polarAngles:
|
||||
if a == 90:
|
||||
vecs.extend([ax[0],fcvec.neg(ax[0])])
|
||||
vecs.extend([ax[1],fcvec.neg(ax[1])])
|
||||
else:
|
||||
v = fcvec.rotate(ax[0],math.radians(a),ax[2])
|
||||
vecs.extend([v,fcvec.neg(v)])
|
||||
v = fcvec.rotate(ax[1],math.radians(a),ax[2])
|
||||
vecs.extend([v,fcvec.neg(v)])
|
||||
for v in vecs:
|
||||
de = Part.Line(last,last.add(v)).toShape()
|
||||
np = self.getPerpendicular(de,point)
|
||||
if (np.sub(point)).Length < self.radius:
|
||||
if self.tracker:
|
||||
self.tracker.setCoords(np)
|
||||
self.tracker.setMarker(self.mk['parallel'])
|
||||
self.tracker.on()
|
||||
self.setCursor('ortho')
|
||||
return np,de
|
||||
if self.isEnabled('ortho'):
|
||||
polarAngles = [90,45]
|
||||
if last:
|
||||
vecs = []
|
||||
ax = [FreeCAD.DraftWorkingPlane.u,
|
||||
FreeCAD.DraftWorkingPlane.v,
|
||||
FreeCAD.DraftWorkingPlane.axis]
|
||||
for a in polarAngles:
|
||||
if a == 90:
|
||||
vecs.extend([ax[0],fcvec.neg(ax[0])])
|
||||
vecs.extend([ax[1],fcvec.neg(ax[1])])
|
||||
else:
|
||||
v = fcvec.rotate(ax[0],math.radians(a),ax[2])
|
||||
vecs.extend([v,fcvec.neg(v)])
|
||||
v = fcvec.rotate(ax[1],math.radians(a),ax[2])
|
||||
vecs.extend([v,fcvec.neg(v)])
|
||||
for v in vecs:
|
||||
de = Part.Line(last,last.add(v)).toShape()
|
||||
np = self.getPerpendicular(de,point)
|
||||
if (np.sub(point)).Length < self.radius:
|
||||
if self.tracker:
|
||||
self.tracker.setCoords(np)
|
||||
self.tracker.setMarker(self.mk['parallel'])
|
||||
self.tracker.on()
|
||||
self.setCursor('ortho')
|
||||
return np,de
|
||||
return point,None
|
||||
|
||||
def snapToGrid(self,point):
|
||||
"returns a grid snap point if available"
|
||||
if self.grid:
|
||||
np = self.grid.getClosestNode(point)
|
||||
if np:
|
||||
if self.radius != 0:
|
||||
dv = point.sub(np)
|
||||
if dv.Length <= self.radius:
|
||||
if self.tracker:
|
||||
self.tracker.setCoords(np)
|
||||
self.tracker.setMarker(self.mk['grid'])
|
||||
self.tracker.on()
|
||||
self.setCursor('grid')
|
||||
return np
|
||||
if self.isEnabled("grid"):
|
||||
np = self.grid.getClosestNode(point)
|
||||
if np:
|
||||
if self.radius != 0:
|
||||
dv = point.sub(np)
|
||||
if dv.Length <= self.radius:
|
||||
if self.tracker:
|
||||
self.tracker.setCoords(np)
|
||||
self.tracker.setMarker(self.mk['grid'])
|
||||
self.tracker.on()
|
||||
self.setCursor('grid')
|
||||
return np
|
||||
return point
|
||||
|
||||
def snapToEndpoints(self,shape):
|
||||
"returns a list of enpoints snap locations"
|
||||
snaps = []
|
||||
if hasattr(shape,"Vertexes"):
|
||||
for v in shape.Vertexes:
|
||||
snaps.append([v.Point,'endpoint',v.Point])
|
||||
elif hasattr(shape,"Point"):
|
||||
snaps.append([shape.Point,'endpoint',shape.Point])
|
||||
elif hasattr(shape,"Points"):
|
||||
for v in shape.Points:
|
||||
snaps.append([v.Vector,'endpoint',v.Vector])
|
||||
if self.isEnabled("endpoint"):
|
||||
if hasattr(shape,"Vertexes"):
|
||||
for v in shape.Vertexes:
|
||||
snaps.append([v.Point,'endpoint',v.Point])
|
||||
elif hasattr(shape,"Point"):
|
||||
snaps.append([shape.Point,'endpoint',shape.Point])
|
||||
elif hasattr(shape,"Points"):
|
||||
for v in shape.Points:
|
||||
snaps.append([v.Vector,'endpoint',v.Vector])
|
||||
return snaps
|
||||
|
||||
def snapToMidpoint(self,shape):
|
||||
"returns a list of midpoints snap locations"
|
||||
snaps = []
|
||||
if isinstance(shape,Part.Edge):
|
||||
mp = fcgeo.findMidpoint(shape)
|
||||
if mp:
|
||||
snaps.append([mp,'midpoint',mp])
|
||||
if self.isEnabled("midpoint"):
|
||||
if isinstance(shape,Part.Edge):
|
||||
mp = fcgeo.findMidpoint(shape)
|
||||
if mp:
|
||||
snaps.append([mp,'midpoint',mp])
|
||||
return snaps
|
||||
|
||||
def snapToPerpendicular(self,shape,last):
|
||||
"returns a list of perpendicular snap locations"
|
||||
snaps = []
|
||||
if last:
|
||||
if isinstance(shape,Part.Edge):
|
||||
if isinstance(shape.Curve,Part.Line):
|
||||
np = self.getPerpendicular(shape,last)
|
||||
elif isinstance(shape.Curve,Part.Circle):
|
||||
dv = last.sub(shape.Curve.Center)
|
||||
dv = fcvec.scaleTo(dv,shape.Curve.Radius)
|
||||
np = (shape.Curve.Center).add(dv)
|
||||
elif isinstance(shape.Curve,Part.BSplineCurve):
|
||||
pr = shape.Curve.parameter(last)
|
||||
np = shape.Curve.value(pr)
|
||||
else:
|
||||
return snaps
|
||||
snaps.append([np,'perpendicular',np])
|
||||
if self.isEnabled("perpendicular"):
|
||||
if last:
|
||||
if isinstance(shape,Part.Edge):
|
||||
if isinstance(shape.Curve,Part.Line):
|
||||
np = self.getPerpendicular(shape,last)
|
||||
elif isinstance(shape.Curve,Part.Circle):
|
||||
dv = last.sub(shape.Curve.Center)
|
||||
dv = fcvec.scaleTo(dv,shape.Curve.Radius)
|
||||
np = (shape.Curve.Center).add(dv)
|
||||
elif isinstance(shape.Curve,Part.BSplineCurve):
|
||||
pr = shape.Curve.parameter(last)
|
||||
np = shape.Curve.value(pr)
|
||||
else:
|
||||
return snaps
|
||||
snaps.append([np,'perpendicular',np])
|
||||
return snaps
|
||||
|
||||
def snapToOrtho(self,shape,last,constrain):
|
||||
"returns a list of ortho snap locations"
|
||||
snaps = []
|
||||
if constrain:
|
||||
if isinstance(shape,Part.Edge):
|
||||
if last:
|
||||
if isinstance(shape.Curve,Part.Line):
|
||||
if self.constraintAxis:
|
||||
tmpEdge = Part.Line(last,last.add(self.constraintAxis)).toShape()
|
||||
# get the intersection points
|
||||
pt = fcgeo.findIntersection(tmpEdge,shape,True,True)
|
||||
if pt:
|
||||
for p in pt:
|
||||
snaps.append([p,'ortho',p])
|
||||
if self.isEnabled("ortho"):
|
||||
if constrain:
|
||||
if isinstance(shape,Part.Edge):
|
||||
if last:
|
||||
if isinstance(shape.Curve,Part.Line):
|
||||
if self.constraintAxis:
|
||||
tmpEdge = Part.Line(last,last.add(self.constraintAxis)).toShape()
|
||||
# get the intersection points
|
||||
pt = fcgeo.findIntersection(tmpEdge,shape,True,True)
|
||||
if pt:
|
||||
for p in pt:
|
||||
snaps.append([p,'ortho',p])
|
||||
return snaps
|
||||
|
||||
def snapToExtOrtho(self,last,constrain,eline):
|
||||
"returns an ortho X extension snap location"
|
||||
if constrain and last and self.constraintAxis and self.extLine:
|
||||
tmpEdge1 = Part.Line(last,last.add(self.constraintAxis)).toShape()
|
||||
tmpEdge2 = Part.Line(self.extLine.p1(),self.extLine.p2()).toShape()
|
||||
# get the intersection points
|
||||
pt = fcgeo.findIntersection(tmpEdge1,tmpEdge2,True,True)
|
||||
if pt:
|
||||
return [pt[0],'ortho',pt[0]]
|
||||
if eline:
|
||||
try:
|
||||
if self.isEnabled("extension") and self.isEnabled("ortho"):
|
||||
if constrain and last and self.constraintAxis and self.extLine:
|
||||
tmpEdge1 = Part.Line(last,last.add(self.constraintAxis)).toShape()
|
||||
tmpEdge2 = Part.Line(self.extLine.p1(),self.extLine.p2()).toShape()
|
||||
# get the intersection points
|
||||
pt = fcgeo.findIntersection(eline,tmpEdge2,True,True)
|
||||
pt = fcgeo.findIntersection(tmpEdge1,tmpEdge2,True,True)
|
||||
if pt:
|
||||
return [pt[0],'ortho',pt[0]]
|
||||
except:
|
||||
return None
|
||||
if eline:
|
||||
try:
|
||||
tmpEdge2 = Part.Line(self.extLine.p1(),self.extLine.p2()).toShape()
|
||||
# get the intersection points
|
||||
pt = fcgeo.findIntersection(eline,tmpEdge2,True,True)
|
||||
if pt:
|
||||
return [pt[0],'ortho',pt[0]]
|
||||
except:
|
||||
return None
|
||||
return None
|
||||
|
||||
def snapToElines(self,e1,e2):
|
||||
"returns a snap location at the infinite intersection of the given edges"
|
||||
snaps = []
|
||||
if e1 and e2:
|
||||
# get the intersection points
|
||||
pts = fcgeo.findIntersection(e1,e2,True,True)
|
||||
if pts:
|
||||
for p in pts:
|
||||
snaps.append([p,'intersection',p])
|
||||
if self.isEnabled("intersection") and self.isEnabled("extension"):
|
||||
if e1 and e2:
|
||||
# get the intersection points
|
||||
pts = fcgeo.findIntersection(e1,e2,True,True)
|
||||
if pts:
|
||||
for p in pts:
|
||||
snaps.append([p,'intersection',p])
|
||||
return snaps
|
||||
|
||||
|
||||
def snapToAngles(self,shape):
|
||||
"returns a list of angle snap locations"
|
||||
snaps = []
|
||||
rad = shape.Curve.Radius
|
||||
pos = shape.Curve.Center
|
||||
for i in [0,30,45,60,90,120,135,150,180,210,225,240,270,300,315,330]:
|
||||
ang = math.radians(i)
|
||||
cur = Vector(math.sin(ang)*rad+pos.x,math.cos(ang)*rad+pos.y,pos.z)
|
||||
snaps.append([cur,'angle',cur])
|
||||
if self.isEnabled("angle"):
|
||||
rad = shape.Curve.Radius
|
||||
pos = shape.Curve.Center
|
||||
for i in [0,30,45,60,90,120,135,150,180,210,225,240,270,300,315,330]:
|
||||
ang = math.radians(i)
|
||||
cur = Vector(math.sin(ang)*rad+pos.x,math.cos(ang)*rad+pos.y,pos.z)
|
||||
snaps.append([cur,'angle',cur])
|
||||
return snaps
|
||||
|
||||
def snapToCenter(self,shape):
|
||||
"returns a list of center snap locations"
|
||||
snaps = []
|
||||
rad = shape.Curve.Radius
|
||||
pos = shape.Curve.Center
|
||||
for i in [15,37.5,52.5,75,105,127.5,142.5,165,195,217.5,232.5,255,285,307.5,322.5,345]:
|
||||
ang = math.radians(i)
|
||||
cur = Vector(math.sin(ang)*rad+pos.x,math.cos(ang)*rad+pos.y,pos.z)
|
||||
snaps.append([cur,'center',pos])
|
||||
if self.isEnabled("center"):
|
||||
rad = shape.Curve.Radius
|
||||
pos = shape.Curve.Center
|
||||
for i in [15,37.5,52.5,75,105,127.5,142.5,165,195,217.5,232.5,255,285,307.5,322.5,345]:
|
||||
ang = math.radians(i)
|
||||
cur = Vector(math.sin(ang)*rad+pos.x,math.cos(ang)*rad+pos.y,pos.z)
|
||||
snaps.append([cur,'center',pos])
|
||||
return snaps
|
||||
|
||||
def snapToIntersection(self,shape):
|
||||
"returns a list of intersection snap locations"
|
||||
snaps = []
|
||||
# get the stored objects to calculate intersections
|
||||
if self.lastObj[0]:
|
||||
obj = FreeCAD.ActiveDocument.getObject(self.lastObj[0])
|
||||
if obj:
|
||||
if obj.isDerivedFrom("Part::Feature"):
|
||||
if (not self.maxEdges) or (len(obj.Shape.Edges) <= self.maxEdges):
|
||||
for e in obj.Shape.Edges:
|
||||
# get the intersection points
|
||||
pt = fcgeo.findIntersection(e,shape)
|
||||
if pt:
|
||||
for p in pt:
|
||||
snaps.append([p,'intersection',p])
|
||||
if self.isEnabled("intersection"):
|
||||
# get the stored objects to calculate intersections
|
||||
if self.lastObj[0]:
|
||||
obj = FreeCAD.ActiveDocument.getObject(self.lastObj[0])
|
||||
if obj:
|
||||
if obj.isDerivedFrom("Part::Feature"):
|
||||
if (not self.maxEdges) or (len(obj.Shape.Edges) <= self.maxEdges):
|
||||
for e in obj.Shape.Edges:
|
||||
# get the intersection points
|
||||
pt = fcgeo.findIntersection(e,shape)
|
||||
if pt:
|
||||
for p in pt:
|
||||
snaps.append([p,'intersection',p])
|
||||
return snaps
|
||||
|
||||
def snapToVertex(self,info,active=False):
|
||||
p = Vector(info['x'],info['y'],info['z'])
|
||||
if active:
|
||||
return [p,'endpoint',p]
|
||||
if self.isEnabled("endpoint"):
|
||||
return [p,'endpoint',p]
|
||||
else:
|
||||
return []
|
||||
else:
|
||||
return [p,'passive',p]
|
||||
|
||||
@@ -722,8 +746,69 @@ class Snapper:
|
||||
# adding callback functions
|
||||
self.ui.pointUi(cancel=cancel,getcoords=getcoords,extra=extradlg,rel=bool(last))
|
||||
self.callbackClick = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),click)
|
||||
self.callbackMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),move)
|
||||
self.callbackMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),move)
|
||||
|
||||
def makeSnapToolBar(self):
|
||||
"builds the Snap toolbar"
|
||||
self.toolbar = QtGui.QToolBar(None)
|
||||
self.toolbar.setObjectName("Draft Snap")
|
||||
self.toolbar.setWindowTitle("Draft Snap")
|
||||
self.toolbarButtons = []
|
||||
self.masterbutton = QtGui.QPushButton(None)
|
||||
self.masterbutton.setIcon(QtGui.QIcon(":/icons/Snap_Lock.svg"))
|
||||
self.masterbutton.setIconSize(QtCore.QSize(16, 16))
|
||||
self.masterbutton.setMaximumSize(QtCore.QSize(26,26))
|
||||
self.masterbutton.setToolTip("Snap On/Off")
|
||||
self.masterbutton.setObjectName("SnapButtonMain")
|
||||
self.masterbutton.setCheckable(True)
|
||||
self.masterbutton.setChecked(True)
|
||||
QtCore.QObject.connect(self.masterbutton,QtCore.SIGNAL("toggled(bool)"),self.toggle)
|
||||
self.toolbar.addWidget(self.masterbutton)
|
||||
for c,i in self.cursors.iteritems():
|
||||
if i:
|
||||
b = QtGui.QPushButton(None)
|
||||
b.setIcon(QtGui.QIcon(i))
|
||||
b.setIconSize(QtCore.QSize(16, 16))
|
||||
b.setMaximumSize(QtCore.QSize(26,26))
|
||||
b.setToolTip(c)
|
||||
b.setObjectName("SnapButton"+c)
|
||||
b.setCheckable(True)
|
||||
b.setChecked(True)
|
||||
self.toolbar.addWidget(b)
|
||||
self.toolbarButtons.append(b)
|
||||
if not Draft.getParam("showSnapBar"):
|
||||
self.toolbar.hide()
|
||||
|
||||
def toggle(self,checked=None):
|
||||
print "checked",checked
|
||||
if hasattr(self,"toolbarButtons"):
|
||||
if checked == None:
|
||||
self.masterbutton.toggle()
|
||||
elif checked:
|
||||
if hasattr(self,"savedButtonStates"):
|
||||
for i in range(len(self.toolbarButtons)):
|
||||
self.toolbarButtons[i].setEnabled(True)
|
||||
self.toolbarButtons[i].setChecked(self.savedButtonStates[i])
|
||||
else:
|
||||
self.savedButtonStates = []
|
||||
for i in range(len(self.toolbarButtons)):
|
||||
self.savedButtonStates.append(self.toolbarButtons[i].isChecked())
|
||||
self.toolbarButtons[i].setEnabled(False)
|
||||
|
||||
def isEnabled(self,but):
|
||||
"returns true if the given button is turned on"
|
||||
for b in self.toolbarButtons:
|
||||
if str(b.objectName()) == "SnapButton" + but:
|
||||
return (b.isEnabled() and b.isChecked())
|
||||
return False
|
||||
|
||||
def show(self):
|
||||
"shows the toolbar"
|
||||
if hasattr(self,"toolbar"):
|
||||
self.toolbar.show()
|
||||
else:
|
||||
self.makeSnapToolBar()
|
||||
self.toolbar.show()
|
||||
|
||||
if not hasattr(FreeCADGui,"Snapper"):
|
||||
FreeCADGui.Snapper = Snapper()
|
||||
|
||||
@@ -3642,13 +3642,25 @@ class ToggleSnap():
|
||||
"The ToggleSnap FreeCAD command definition"
|
||||
|
||||
def GetResources(self):
|
||||
return {'Pixmap' : 'Draft_Snap',
|
||||
return {'Pixmap' : 'Snap_Lock',
|
||||
'Accel' : "Shift+S",
|
||||
'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_ToggleSnap", "Toggle snap"),
|
||||
'ToolTip' : QtCore.QT_TRANSLATE_NOOP("Draft_ToggleSnap", "Toggles Draft snap on or off")}
|
||||
|
||||
def Activated(self):
|
||||
if hasattr(FreeCADGui,"Snapper"):
|
||||
FreeCADGui.Snapper.active = not FreeCADGui.Snapper.active
|
||||
FreeCADGui.Snapper.toggle()
|
||||
|
||||
class ShowSnapBar():
|
||||
"The ShowSnapBar FreeCAD command definition"
|
||||
|
||||
def GetResources(self):
|
||||
return {'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_ShowSnapBar", "Show Snap Bar"),
|
||||
'ToolTip' : QtCore.QT_TRANSLATE_NOOP("Draft_ShowSnapBar", "Shows Draft snap toolbar")}
|
||||
|
||||
def Activated(self):
|
||||
if hasattr(FreeCADGui,"Snapper"):
|
||||
FreeCADGui.Snapper.show()
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Adds the icons & commands to the FreeCAD command manager, and sets defaults
|
||||
@@ -3695,6 +3707,7 @@ FreeCADGui.addCommand('Draft_AddToGroup',AddToGroup())
|
||||
FreeCADGui.addCommand('Draft_SelectGroup',SelectGroup())
|
||||
FreeCADGui.addCommand('Draft_Shape2DView',Shape2DView())
|
||||
FreeCADGui.addCommand('Draft_ToggleSnap',ToggleSnap())
|
||||
FreeCADGui.addCommand('Draft_ShowSnapBar',ShowSnapBar())
|
||||
|
||||
# a global place to look for active draft Command
|
||||
FreeCAD.activeDraftCommand = None
|
||||
|
||||
@@ -192,7 +192,8 @@ class DraftWorkbench (Workbench):
|
||||
"Draft_Drawing","Draft_Edit","Draft_WireToBSpline","Draft_AddPoint",
|
||||
"Draft_DelPoint","Draft_Shape2DView","Draft_Draft2Sketch","Draft_Array"]
|
||||
self.treecmdList = ["Draft_ApplyStyle","Draft_ToggleDisplayMode","Draft_AddToGroup",
|
||||
"Draft_SelectGroup","Draft_SelectPlane","Draft_ToggleSnap"]
|
||||
"Draft_SelectGroup","Draft_SelectPlane","Draft_ToggleSnap",
|
||||
"Draft_ShowSnapBar"]
|
||||
self.lineList = ["Draft_UndoLine","Draft_FinishLine","Draft_CloseLine"]
|
||||
self.appendToolbar(str(DraftTools.translate("draft","Draft creation tools")),self.cmdList)
|
||||
self.appendToolbar(str(DraftTools.translate("draft","Draft modification tools")),self.modList)
|
||||
|
||||
@@ -40,6 +40,17 @@
|
||||
<file>icons/Draft_Dot.svg</file>
|
||||
<file>icons/Draft_Point.svg</file>
|
||||
<file>icons/Draft_Snap.svg</file>
|
||||
<file>icons/Snap_Lock.svg</file>
|
||||
<file>icons/Snap_Endpoint.svg</file>
|
||||
<file>icons/Snap_Midpoint.svg</file>
|
||||
<file>icons/Snap_Perpendicular.svg</file>
|
||||
<file>icons/Snap_Grid.svg</file>
|
||||
<file>icons/Snap_Intersection.svg</file>
|
||||
<file>icons/Snap_Parallel.svg</file>
|
||||
<file>icons/Snap_Angle.svg</file>
|
||||
<file>icons/Snap_Center.svg</file>
|
||||
<file>icons/Snap_Extension.svg</file>
|
||||
<file>icons/Snap_Ortho.svg</file>
|
||||
<file>patterns/concrete.svg</file>
|
||||
<file>patterns/cross.svg</file>
|
||||
<file>patterns/line.svg</file>
|
||||
|
||||
459
src/Mod/Draft/Resources/icons/Snap_Angle.svg
Normal file
|
After Width: | Height: | Size: 19 KiB |
164
src/Mod/Draft/Resources/icons/Snap_Center.svg
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
176
src/Mod/Draft/Resources/icons/Snap_Endpoint.svg
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
314
src/Mod/Draft/Resources/icons/Snap_Extension.svg
Normal file
@@ -0,0 +1,314 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2726"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Snap_Angle.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs2728">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2734" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144"
|
||||
id="radialGradient3850"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-7"
|
||||
id="radialGradient3850-2"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-7">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-4" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-4" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-5"
|
||||
id="radialGradient3850-7"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-5">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-6" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-5" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="34.345188"
|
||||
fy="672.79736"
|
||||
fx="225.26402"
|
||||
cy="672.79736"
|
||||
cx="225.26402"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient4501"
|
||||
xlink:href="#linearGradient3144-5"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-3"
|
||||
id="radialGradient3850-70"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-3">
|
||||
<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-3" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="34.345188"
|
||||
fy="672.79736"
|
||||
fx="225.26402"
|
||||
cy="672.79736"
|
||||
cx="225.26402"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient4501-8"
|
||||
xlink:href="#linearGradient3144-3"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-1"
|
||||
id="radialGradient3850-5"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-1">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-5" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="34.345188"
|
||||
fy="672.79736"
|
||||
fx="225.26402"
|
||||
cy="672.79736"
|
||||
cx="225.26402"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient4501-1"
|
||||
xlink:href="#linearGradient3144-1"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-9"
|
||||
id="radialGradient3850-3"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-9">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-9" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-12" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-2"
|
||||
id="radialGradient3850-6"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-2">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-0" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-2" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="34.345188"
|
||||
fy="672.79736"
|
||||
fx="225.26402"
|
||||
cy="672.79736"
|
||||
cx="225.26402"
|
||||
gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient4815"
|
||||
xlink:href="#linearGradient3144-2"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.8890873"
|
||||
inkscape:cx="28.117126"
|
||||
inkscape:cy="53.665776"
|
||||
inkscape:current-layer="g4289"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="755"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2731">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g4289"
|
||||
transform="matrix(0.1621282,0,0,0.1621282,6.3605986,-66.108806)">
|
||||
<path
|
||||
style="opacity:0.55833333;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.23936605;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 298.61617,594.85066 c -2.89233,-0.0179 -5.91874,0.36995 -8.86644,0.96375 -23.58164,4.75043 -38.79213,27.89036 -34.11652,51.8494 4.6756,23.95904 27.49677,39.63795 51.0784,34.88751 23.58164,-4.75043 38.98488,-28.08311 34.30927,-52.04215 -4.09115,-20.96415 -22.15838,-35.53285 -42.40471,-35.65851 z m -322.275827,25.25008 0,49.15092 182.533017,0 0,-49.15092 -182.533017,0 z"
|
||||
id="path3162-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
inkscape:export-ydpi="7.0721951"
|
||||
inkscape:export-xdpi="7.0721951"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/line.png"
|
||||
transform="matrix(-0.87908326,0.17708809,-0.17429861,-0.89315209,589.16511,1157.7854)"
|
||||
id="g3160">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#00b286;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path3162"
|
||||
sodipodi:cx="197.14285"
|
||||
sodipodi:cy="655.2193"
|
||||
sodipodi:rx="48.57143"
|
||||
sodipodi:ry="48.57143"
|
||||
d="m 245.71428,655.2193 c 0,26.82526 -21.74617,48.57143 -48.57143,48.57143 -26.82526,0 -48.57143,-21.74617 -48.57143,-48.57143 0,-26.82526 21.74617,-48.57143 48.57143,-48.57143 26.82526,0 48.57143,21.74617 48.57143,48.57143 z" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:url(#radialGradient3850);fill-opacity:1;stroke:none"
|
||||
id="path3164"
|
||||
sodipodi:cx="225.26402"
|
||||
sodipodi:cy="672.79736"
|
||||
sodipodi:rx="34.345188"
|
||||
sodipodi:ry="23.991123"
|
||||
d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z"
|
||||
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)" />
|
||||
</g>
|
||||
<rect
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.57242346;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect4771"
|
||||
width="182.38605"
|
||||
height="49.164917"
|
||||
x="-20.200315"
|
||||
y="588.40039" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 11 KiB |
153
src/Mod/Draft/Resources/icons/Snap_Grid.svg
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
175
src/Mod/Draft/Resources/icons/Snap_Intersection.svg
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
204
src/Mod/Draft/Resources/icons/Snap_Lock.svg
Normal file
|
After Width: | Height: | Size: 10 KiB |
178
src/Mod/Draft/Resources/icons/Snap_Midpoint.svg
Normal file
@@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2726"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Snap_Endpoint.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs2728">
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144"
|
||||
id="radialGradient4274"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144"
|
||||
id="radialGradient4272"
|
||||
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" />
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2734" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144"
|
||||
id="radialGradient3850"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-7"
|
||||
id="radialGradient3850-9"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-7">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-0" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-3" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.8890873"
|
||||
inkscape:cx="-25.216024"
|
||||
inkscape:cy="25.806874"
|
||||
inkscape:current-layer="g4289"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="755"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2731">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g4289"
|
||||
transform="matrix(0.1621282,0,0,0.1621282,6.3605986,-66.108806)">
|
||||
<path
|
||||
style="opacity:0.58333333;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 274.77511,527.16322 -82.3037,74.0155 c -6.49444,-3.46679 -13.72521,-5.60382 -21.58785,-5.78246 -26.81834,-0.6093 -49.11987,20.79059 -49.72917,47.60893 -0.15441,6.79643 1.27433,13.15184 3.66223,19.08212 l -95.410604,85.77317 20.045865,22.35885 94.639609,-85.00218 c 7.14035,4.45001 15.45812,7.11951 24.47908,7.32446 26.81834,0.60929 49.11987,-20.59785 49.72917,-47.41619 0.18193,-8.00761 -1.72979,-15.62221 -5.01147,-22.35884 l 81.5327,-73.24451 -20.04586,-22.35885 z"
|
||||
id="rect2269-7"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
transform="matrix(0.66859097,0.74363036,-0.74363036,0.66859097,0,0)"
|
||||
y="118.8106"
|
||||
x="532.9223"
|
||||
height="330.00012"
|
||||
width="30.000008"
|
||||
id="rect2269"
|
||||
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
|
||||
<g
|
||||
inkscape:export-ydpi="7.0721951"
|
||||
inkscape:export-xdpi="7.0721951"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/line.png"
|
||||
transform="matrix(-0.999742,-0.02271351,0.02271351,-0.999742,345.01763,1252.0797)"
|
||||
id="g3160">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#00b286;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path3162"
|
||||
sodipodi:cx="197.14285"
|
||||
sodipodi:cy="655.2193"
|
||||
sodipodi:rx="48.57143"
|
||||
sodipodi:ry="48.57143"
|
||||
d="m 245.71428,655.2193 c 0,26.82526 -21.74617,48.57143 -48.57143,48.57143 -26.82526,0 -48.57143,-21.74617 -48.57143,-48.57143 0,-26.82526 21.74617,-48.57143 48.57143,-48.57143 26.82526,0 48.57143,21.74617 48.57143,48.57143 z" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:url(#radialGradient3850);fill-opacity:1;stroke:none"
|
||||
id="path3164"
|
||||
sodipodi:cx="225.26402"
|
||||
sodipodi:cy="672.79736"
|
||||
sodipodi:rx="34.345188"
|
||||
sodipodi:ry="23.991123"
|
||||
d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z"
|
||||
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
292
src/Mod/Draft/Resources/icons/Snap_Ortho.svg
Normal file
@@ -0,0 +1,292 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2726"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Snap_Extension.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs2728">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2734" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144"
|
||||
id="radialGradient3850"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-7"
|
||||
id="radialGradient3850-2"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-7">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-4" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-4" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-5"
|
||||
id="radialGradient3850-7"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-5">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-6" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-5" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-3"
|
||||
id="radialGradient3850-70"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-3">
|
||||
<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-3" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-1"
|
||||
id="radialGradient3850-5"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-1">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-5" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-9"
|
||||
id="radialGradient3850-3"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-9">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-9" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-12" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-2"
|
||||
id="radialGradient3850-6"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-2">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146-0" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148-2" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-4"
|
||||
id="radialGradient3850-63"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-4">
|
||||
<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-13" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.75"
|
||||
inkscape:cx="49.775244"
|
||||
inkscape:cy="26.529316"
|
||||
inkscape:current-layer="g4289"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="755"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2731">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g4289"
|
||||
transform="matrix(0.1621282,0,0,0.1621282,6.3605986,-66.108806)">
|
||||
<path
|
||||
style="opacity:0.5375;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:7.40155029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m -15.944364,456.04868 0,310.71091 0.963743,0 48.379924,0 210.674327,0 c 9.59814,13.90011 26.69239,21.63302 44.13945,18.11837 23.58165,-4.75043 38.98489,-28.0831 34.30927,-52.04214 -4.67562,-23.95904 -27.68951,-39.4452 -51.27116,-34.69477 -12.11769,2.44106 -21.97717,9.66468 -28.14131,19.46762 l -209.710577,0 0,-261.55999 -49.343667,0 z"
|
||||
id="rect4771-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:7.40155029;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m -6.149222,429.65963 0,310.71091 0.9637435,0 48.3799235,0 262.330975,0 0,-49.15092 -262.330975,0 0,-261.55999 -49.343667,0 z"
|
||||
id="rect4771"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
inkscape:export-ydpi="7.0721951"
|
||||
inkscape:export-xdpi="7.0721951"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/line.png"
|
||||
transform="matrix(-0.87908326,0.17708809,-0.17429861,-0.89315209,577.13431,1265.4055)"
|
||||
id="g3160"
|
||||
style="stroke-width:8.19354725;stroke-miterlimit:4;stroke-dasharray:none">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#00b286;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:8.19354725;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path3162"
|
||||
sodipodi:cx="197.14285"
|
||||
sodipodi:cy="655.2193"
|
||||
sodipodi:rx="48.57143"
|
||||
sodipodi:ry="48.57143"
|
||||
d="m 245.71428,655.2193 c 0,26.82526 -21.74617,48.57143 -48.57143,48.57143 -26.82526,0 -48.57143,-21.74617 -48.57143,-48.57143 0,-26.82526 21.74617,-48.57143 48.57143,-48.57143 26.82526,0 48.57143,21.74617 48.57143,48.57143 z" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:url(#radialGradient3850);fill-opacity:1;stroke:none"
|
||||
id="path3164"
|
||||
sodipodi:cx="225.26402"
|
||||
sodipodi:cy="672.79736"
|
||||
sodipodi:rx="34.345188"
|
||||
sodipodi:ry="23.991123"
|
||||
d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z"
|
||||
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
164
src/Mod/Draft/Resources/icons/Snap_Parallel.svg
Normal file
@@ -0,0 +1,164 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2726"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Snap_Intersection.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs2728">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2734" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144"
|
||||
id="radialGradient3850"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144-4"
|
||||
id="radialGradient3850-9"
|
||||
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
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144-4">
|
||||
<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-0" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.8890873"
|
||||
inkscape:cx="28.117126"
|
||||
inkscape:cy="53.665776"
|
||||
inkscape:current-layer="g4289"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="755"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2731">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g4289"
|
||||
transform="matrix(0.1621282,0,0,0.1621282,6.3605986,-66.108806)">
|
||||
<path
|
||||
style="opacity:0.50833333;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 77.372762,463.91574 c -26.313031,5.21717 -43.488613,30.75343 -38.271446,57.06645 5.217168,26.31304 30.753423,43.48862 57.066457,38.27145 8.070747,-1.60021 15.304787,-5.18879 21.264147,-10.05139 L 319.31906,677.738 338.05777,648.3057 134.79098,518.89158 c 0.83723,-5.44139 0.78094,-10.99155 -0.35176,-16.70439 -5.21717,-26.31304 -30.75343,-43.48862 -57.066458,-38.27145 z M 4.7169879,584.88594 -14.021706,614.31824 253.58646,784.53509 272.32516,755.10278 4.7169879,584.88594 z"
|
||||
id="rect3942-4-9-2"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3942-4-9"
|
||||
width="317.19318"
|
||||
height="34.891254"
|
||||
x="-617.86139"
|
||||
y="-374.63855"
|
||||
transform="matrix(-0.84354394,-0.53706016,0.53706016,-0.84354394,0,0)" />
|
||||
<g
|
||||
inkscape:export-ydpi="7.0721951"
|
||||
inkscape:export-xdpi="7.0721951"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/line.png"
|
||||
transform="matrix(-0.98090505,0.19448714,-0.19448714,-0.98090505,408.34953,1086.0795)"
|
||||
id="g3160">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#00b286;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path3162"
|
||||
sodipodi:cx="197.14285"
|
||||
sodipodi:cy="655.2193"
|
||||
sodipodi:rx="48.57143"
|
||||
sodipodi:ry="48.57143"
|
||||
d="m 245.71428,655.2193 c 0,26.82526 -21.74617,48.57143 -48.57143,48.57143 -26.82526,0 -48.57143,-21.74617 -48.57143,-48.57143 0,-26.82526 21.74617,-48.57143 48.57143,-48.57143 26.82526,0 48.57143,21.74617 48.57143,48.57143 z" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:url(#radialGradient3850);fill-opacity:1;stroke:none"
|
||||
id="path3164"
|
||||
sodipodi:cx="225.26402"
|
||||
sodipodi:cy="672.79736"
|
||||
sodipodi:rx="34.345188"
|
||||
sodipodi:ry="23.991123"
|
||||
d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z"
|
||||
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)" />
|
||||
</g>
|
||||
<rect
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3942-4-9-5"
|
||||
width="317.19318"
|
||||
height="34.891254"
|
||||
x="-619.85559"
|
||||
y="-500.13361"
|
||||
transform="matrix(-0.84354394,-0.53706016,0.53706016,-0.84354394,0,0)" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.0 KiB |
140
src/Mod/Draft/Resources/icons/Snap_Perpendicular.svg
Normal file
@@ -0,0 +1,140 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64px"
|
||||
height="64px"
|
||||
id="svg2726"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.1 r9760"
|
||||
sodipodi:docname="Snap_Perpendicular.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
version="1.1">
|
||||
<defs
|
||||
id="defs2728">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient3144">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3146" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3148" />
|
||||
</linearGradient>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 32 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="64 : 32 : 1"
|
||||
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||
id="perspective2734" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3144"
|
||||
id="radialGradient3850"
|
||||
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" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.8890873"
|
||||
inkscape:cx="21.852178"
|
||||
inkscape:cy="16.273213"
|
||||
inkscape:current-layer="g4289"
|
||||
showgrid="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="755"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="22"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata2731">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g4289"
|
||||
transform="matrix(0.1621282,0,0,0.1621282,6.3605986,-66.108806)">
|
||||
<path
|
||||
style="opacity:0.53333297;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
d="m 161.66621,476.77814 0,205.08462 c -13.8336,5.08664 -24.81604,16.36991 -29.49055,30.45429 l -114.685478,0 0,34.88752 116.420218,0 c 7.38753,16.66398 23.74504,28.47085 43.1757,28.9123 20.17696,0.45841 37.75833,-11.5629 45.4887,-28.9123 l 110.445,0 0,-34.88752 -108.71026,0 c -4.45814,-13.46902 -14.68168,-24.31759 -27.75582,-29.6833 l 0,-205.85561 -34.88751,0 z"
|
||||
id="rect3942-47"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3942"
|
||||
width="315.60715"
|
||||
height="34.891251"
|
||||
x="-8.7467575"
|
||||
y="691.4881" />
|
||||
<rect
|
||||
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000162;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="rect3942-4"
|
||||
width="247.41063"
|
||||
height="34.891251"
|
||||
x="-703.38287"
|
||||
y="135.5761"
|
||||
transform="matrix(0,-1,1,0,0,0)" />
|
||||
<g
|
||||
inkscape:export-ydpi="7.0721951"
|
||||
inkscape:export-xdpi="7.0721951"
|
||||
inkscape:export-filename="/home/yorik/Documents/Lab/Draft/icons/line.png"
|
||||
transform="matrix(-0.999742,-0.02271351,0.02271351,-0.999742,334.26768,1366.2692)"
|
||||
id="g3160">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#00b286;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||
id="path3162"
|
||||
sodipodi:cx="197.14285"
|
||||
sodipodi:cy="655.2193"
|
||||
sodipodi:rx="48.57143"
|
||||
sodipodi:ry="48.57143"
|
||||
d="m 245.71428,655.2193 c 0,26.82526 -21.74617,48.57143 -48.57143,48.57143 -26.82526,0 -48.57143,-21.74617 -48.57143,-48.57143 0,-26.82526 21.74617,-48.57143 48.57143,-48.57143 26.82526,0 48.57143,21.74617 48.57143,48.57143 z" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:url(#radialGradient3850);fill-opacity:1;stroke:none"
|
||||
id="path3164"
|
||||
sodipodi:cx="225.26402"
|
||||
sodipodi:cy="672.79736"
|
||||
sodipodi:rx="34.345188"
|
||||
sodipodi:ry="23.991123"
|
||||
d="m 259.60921,672.79736 c 0,13.24993 -15.37686,23.99113 -34.34519,23.99113 -18.96832,0 -34.34519,-10.7412 -34.34519,-23.99113 0,-13.24993 15.37687,-23.99112 34.34519,-23.99112 18.96833,0 34.34519,10.74119 34.34519,23.99112 z"
|
||||
transform="matrix(0.8513023,-0.5246754,0.5246754,0.8513023,-338.69692,214.19328)" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.1 KiB |
@@ -520,6 +520,29 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_21">
|
||||
<item>
|
||||
<widget class="Gui::PrefCheckBox" name="gui::prefcheckbox_7">
|
||||
<property name="toolTip">
|
||||
<string>If checked, the Snap toolbar will be shown whenever you use snapping</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show Draft Snap toolbar</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="prefEntry" stdset="0">
|
||||
<cstring>showSnapBar</cstring>
|
||||
</property>
|
||||
<property name="prefPath" stdset="0">
|
||||
<cstring>Mod/Draft</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||
<item>
|
||||
|
||||