Draft: Added Draft_ToggleGrid() command to toggle the Draft grid

This commit is contained in:
Yorik van Havre 2012-06-01 15:19:21 -03:00
parent 4c566a6113
commit fbd3556aaf
4 changed files with 57 additions and 31 deletions

View File

@ -69,8 +69,9 @@ class ArchWorkbench(Workbench):
"Draft_Offset","Draft_Upgrade",
"Draft_Downgrade","Draft_Trimex"]
self.draftcontexttools = ["Draft_ApplyStyle","Draft_ToggleDisplayMode",
"Draft_AddToGroup","Draft_SelectGroup",
"Draft_SelectPlane","Draft_ToggleSnap"]
"Draft_AddToGroup","Draft_SelectGroup",
"Draft_SelectPlane","Draft_ToggleSnap",
"Draft_ShowSnapBar","Draft_ToggleGrid"]
self.meshtools = ["Arch_SplitMesh","Arch_MeshToShape",
"Arch_SelectNonSolidMeshes","Arch_RemoveShape"]
self.appendToolbar(str(DraftTools.translate("arch","Arch tools")),self.archtools)

View File

@ -73,6 +73,7 @@ class Snapper:
self.snapInfo = None
self.lastSnappedObject = None
self.active = True
self.forceGridOff = False
self.trackers = [[],[],[],[]] # view, grid, snap, extline
self.polarAngles = [90,45]
@ -166,7 +167,7 @@ class Snapper:
self.radius = self.getScreenDist(Draft.getParam("snapRange"),screenpos)
# set the grid
if self.grid and Draft.getParam("grid"):
if self.grid and Draft.getParam("grid") and (not self.forceGridOff):
self.grid.set()
# activate snap
@ -243,18 +244,20 @@ class Snapper:
if (not self.maxEdges) or (len(obj.Edges) <= self.maxEdges):
if "Edge" in comp:
# we are snapping to an edge
edge = obj.Shape.Edges[int(comp[4:])-1]
snaps.extend(self.snapToEndpoints(edge))
snaps.extend(self.snapToMidpoint(edge))
snaps.extend(self.snapToPerpendicular(edge,lastpoint))
#snaps.extend(self.snapToOrtho(edge,lastpoint,constrain)) # now part of snapToPolar
snaps.extend(self.snapToIntersection(edge))
snaps.extend(self.snapToElines(edge,eline))
en = int(comp[4:])-1
if len(obj.Shape.Edges) > en:
edge = obj.Shape.Edges[en]
snaps.extend(self.snapToEndpoints(edge))
snaps.extend(self.snapToMidpoint(edge))
snaps.extend(self.snapToPerpendicular(edge,lastpoint))
#snaps.extend(self.snapToOrtho(edge,lastpoint,constrain)) # now part of snapToPolar
snaps.extend(self.snapToIntersection(edge))
snaps.extend(self.snapToElines(edge,eline))
if isinstance (edge.Curve,Part.Circle):
# the edge is an arc, we have extra options
snaps.extend(self.snapToAngles(edge))
snaps.extend(self.snapToCenter(edge))
if isinstance (edge.Curve,Part.Circle):
# the edge is an arc, we have extra options
snaps.extend(self.snapToAngles(edge))
snaps.extend(self.snapToCenter(edge))
elif "Vertex" in comp:
# directly snapped to a vertex
@ -418,18 +421,19 @@ class Snapper:
def snapToGrid(self,point):
"returns a grid snap point if available"
if self.grid:
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
if self.grid.Visible:
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):
@ -889,7 +893,7 @@ class Snapper:
if self.grid:
if self.grid.Visible:
self.grid.set()
if not hasattr(FreeCADGui,"Snapper"):
FreeCADGui.Snapper = Snapper()
if not hasattr(FreeCAD,"DraftWorkingPlane"):

View File

@ -3828,7 +3828,27 @@ class Draft_Clone():
return True
else:
return False
class ToggleGrid():
"The Draft ToggleGrid command definition"
def GetResources(self):
return {'Pixmap' : 'Snap_Grid',
'Accel' : "G,R",
'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_ToggleGrid", "Toggle Grid"),
'ToolTip' : QtCore.QT_TRANSLATE_NOOP("Draft_ToggleGrid", "Toggles the Draft gid on/off")}
def Activated(self):
if hasattr(FreeCADGui,"Snapper"):
if FreeCADGui.Snapper.grid:
if FreeCADGui.Snapper.grid.Visible:
FreeCADGui.Snapper.grid.off()
FreeCADGui.Snapper.forceGridOff=True
else:
FreeCADGui.Snapper.grid.on()
FreeCADGui.Snapper.forceGridOff=False
#---------------------------------------------------------------------------
# Adds the icons & commands to the FreeCAD command manager, and sets defaults
#---------------------------------------------------------------------------
@ -3876,6 +3896,7 @@ FreeCADGui.addCommand('Draft_SelectGroup',SelectGroup())
FreeCADGui.addCommand('Draft_Shape2DView',Shape2DView())
FreeCADGui.addCommand('Draft_ToggleSnap',ToggleSnap())
FreeCADGui.addCommand('Draft_ShowSnapBar',ShowSnapBar())
FreeCADGui.addCommand('Draft_ToggleGrid',ToggleGrid())
# a global place to look for active draft Command
FreeCAD.activeDraftCommand = None

View File

@ -192,12 +192,12 @@ class DraftWorkbench (Workbench):
"Draft_Clone"]
self.treecmdList = ["Draft_ApplyStyle","Draft_ToggleDisplayMode","Draft_AddToGroup",
"Draft_SelectGroup","Draft_SelectPlane","Draft_ToggleSnap",
"Draft_ShowSnapBar"]
"Draft_ShowSnapBar","Draft_ToggleGrid"]
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)
self.appendMenu(str(DraftTools.translate("draft","&Draft")),self.cmdList+self.modList)
self.appendMenu([str(DraftTools.translate("draft","&Draft")),str(DraftTools.translate("draft","Display options"))],self.treecmdList)
self.appendMenu([str(DraftTools.translate("draft","&Draft")),str(DraftTools.translate("draft","Context tools"))],self.treecmdList)
self.appendMenu([str(DraftTools.translate("draft","&Draft")),str(DraftTools.translate("draft","Wire tools"))],self.lineList)
def Activated(self):
@ -211,7 +211,7 @@ class DraftWorkbench (Workbench):
if (FreeCAD.activeDraftCommand == None):
if (FreeCADGui.Selection.getSelection()):
self.appendContextMenu("Draft",self.cmdList+self.modList)
self.appendContextMenu("Display options",self.treecmdList)
self.appendContextMenu("Draft context tools",self.treecmdList)
else:
self.appendContextMenu("Draft",self.cmdList)
else: