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_Offset","Draft_Upgrade",
"Draft_Downgrade","Draft_Trimex"] "Draft_Downgrade","Draft_Trimex"]
self.draftcontexttools = ["Draft_ApplyStyle","Draft_ToggleDisplayMode", self.draftcontexttools = ["Draft_ApplyStyle","Draft_ToggleDisplayMode",
"Draft_AddToGroup","Draft_SelectGroup", "Draft_AddToGroup","Draft_SelectGroup",
"Draft_SelectPlane","Draft_ToggleSnap"] "Draft_SelectPlane","Draft_ToggleSnap",
"Draft_ShowSnapBar","Draft_ToggleGrid"]
self.meshtools = ["Arch_SplitMesh","Arch_MeshToShape", self.meshtools = ["Arch_SplitMesh","Arch_MeshToShape",
"Arch_SelectNonSolidMeshes","Arch_RemoveShape"] "Arch_SelectNonSolidMeshes","Arch_RemoveShape"]
self.appendToolbar(str(DraftTools.translate("arch","Arch tools")),self.archtools) self.appendToolbar(str(DraftTools.translate("arch","Arch tools")),self.archtools)

View File

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

View File

@ -3828,7 +3828,27 @@ class Draft_Clone():
return True return True
else: else:
return False 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 # 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_Shape2DView',Shape2DView())
FreeCADGui.addCommand('Draft_ToggleSnap',ToggleSnap()) FreeCADGui.addCommand('Draft_ToggleSnap',ToggleSnap())
FreeCADGui.addCommand('Draft_ShowSnapBar',ShowSnapBar()) FreeCADGui.addCommand('Draft_ShowSnapBar',ShowSnapBar())
FreeCADGui.addCommand('Draft_ToggleGrid',ToggleGrid())
# a global place to look for active draft Command # a global place to look for active draft Command
FreeCAD.activeDraftCommand = None FreeCAD.activeDraftCommand = None

View File

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