From d32b92d00d36fafae58d6e9c30d3b6818a0d1c8e Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Sat, 10 Dec 2016 22:31:01 -0800 Subject: [PATCH 1/4] Fixed contour naming; only touch dependent TC objects if the tool number changed; changed formatting of intermediate path representation to be valid g-code and not use exponents. --- src/Mod/Path/App/Command.cpp | 5 ++++- src/Mod/Path/PathScripts/PathContour.py | 13 ++++++++----- src/Mod/Path/PathScripts/PathLoadTool.py | 15 ++++++--------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/Mod/Path/App/Command.cpp b/src/Mod/Path/App/Command.cpp index e523c349cf34..d2b185f1a397 100644 --- a/src/Mod/Path/App/Command.cpp +++ b/src/Mod/Path/App/Command.cpp @@ -131,9 +131,12 @@ std::string Command::toGCode (void) const std::stringstream str; str.precision(5); str << Name; + char v[60]; for(std::map::const_iterator i = Parameters.begin(); i != Parameters.end(); ++i) { std::string k = i->first; - std::string v = boost::lexical_cast(i->second); + //std::string v = std::to_string(i->second); // only 6 digits + snprintf(v, sizeof(v), "%.9f", i->second); + v[sizeof(v)-1] = '\0'; str << " " << k << v; } return str.str(); diff --git a/src/Mod/Path/PathScripts/PathContour.py b/src/Mod/Path/PathScripts/PathContour.py index 7cdc90cf6452..3e33b6a5e198 100644 --- a/src/Mod/Path/PathScripts/PathContour.py +++ b/src/Mod/Path/PathScripts/PathContour.py @@ -120,9 +120,15 @@ def __getstate__(self): def __setstate__(self, state): return None + def setLabel(self, obj): + if not obj.UserLabel: + obj.Label = obj.Name + " :" + obj.ToolDescription + else: + obj.Label = obj.UserLabel + " :" + obj.ToolDescription + def onChanged(self, obj, prop): if prop == "UserLabel": - obj.Label = obj.UserLabel + " :" + obj.ToolDescription + self.setLabel(obj) def setDepths(proxy, obj): parentJob = PathUtils.findParentJob(obj) @@ -231,10 +237,7 @@ def execute(self, obj): obj.ToolNumber = toolLoad.ToolNumber obj.ToolDescription = toolLoad.Name - if obj.UserLabel == "": - obj.Label = obj.Name + " :" + obj.ToolDescription - else: - obj.Label = obj.UserLabel + " :" + obj.ToolDescription + self.setLabel(obj) output += "(" + obj.Label + ")" if not obj.UseComp: diff --git a/src/Mod/Path/PathScripts/PathLoadTool.py b/src/Mod/Path/PathScripts/PathLoadTool.py index 046983da2ac4..d5fd34602d23 100644 --- a/src/Mod/Path/PathScripts/PathLoadTool.py +++ b/src/Mod/Path/PathScripts/PathLoadTool.py @@ -58,7 +58,6 @@ def __init__(self, obj): obj.setEditorMode('Placement', mode) def execute(self, obj): - tool = PathUtils.getTool(obj, obj.ToolNumber) if tool is not None: obj.Label = obj.Name + ": " + tool.Name @@ -86,14 +85,12 @@ def execute(self, obj): obj.ViewObject.Visibility = True def onChanged(self, obj, prop): - mode = 2 - obj.setEditorMode('Placement', mode) - # if prop == "ToolNumber": - job = PathUtils.findParentJob(obj) - if job is not None: - for g in job.Group: - if not(isinstance(g.Proxy, PathScripts.PathLoadTool.LoadTool)): - g.touch() + if prop == "ToolNumber" and not 'Restore' in obj.State: + job = PathUtils.findParentJob(obj) + if job is not None: + for g in job.Group: + if not(isinstance(g.Proxy, PathScripts.PathLoadTool.LoadTool)): + g.touch() class _ViewProviderLoadTool: From d43a6e6cef64afc3ced566d3389f4e1b68d4fe57 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Sun, 11 Dec 2016 07:14:45 -0800 Subject: [PATCH 2/4] Added missing include directive. --- src/Mod/Path/App/Command.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Mod/Path/App/Command.cpp b/src/Mod/Path/App/Command.cpp index d2b185f1a397..9e3762e66baf 100644 --- a/src/Mod/Path/App/Command.cpp +++ b/src/Mod/Path/App/Command.cpp @@ -34,6 +34,7 @@ #include #include #include "Command.h" +#include using namespace Base; using namespace Path; From 8f0549e965860ac262568198acfe73c9810f7208 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Sun, 11 Dec 2016 08:04:13 -0800 Subject: [PATCH 3/4] Switched to std::to_string, MSVC doesn't support snprintf. --- src/Mod/Path/App/Command.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Mod/Path/App/Command.cpp b/src/Mod/Path/App/Command.cpp index 9e3762e66baf..59efef53e903 100644 --- a/src/Mod/Path/App/Command.cpp +++ b/src/Mod/Path/App/Command.cpp @@ -34,7 +34,6 @@ #include #include #include "Command.h" -#include using namespace Base; using namespace Path; @@ -132,12 +131,9 @@ std::string Command::toGCode (void) const std::stringstream str; str.precision(5); str << Name; - char v[60]; for(std::map::const_iterator i = Parameters.begin(); i != Parameters.end(); ++i) { std::string k = i->first; - //std::string v = std::to_string(i->second); // only 6 digits - snprintf(v, sizeof(v), "%.9f", i->second); - v[sizeof(v)-1] = '\0'; + std::string v = std::to_string(i->second); str << " " << k << v; } return str.str(); From c7761d4a4f974f8c44146fbb58d644560874f17e Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Sun, 11 Dec 2016 16:43:54 -0800 Subject: [PATCH 4/4] New version of gneric_post.py from chrisb. --- src/Mod/Path/PathScripts/generic_post.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Mod/Path/PathScripts/generic_post.py b/src/Mod/Path/PathScripts/generic_post.py index b282ebcbdfa9..a98c40a03645 100644 --- a/src/Mod/Path/PathScripts/generic_post.py +++ b/src/Mod/Path/PathScripts/generic_post.py @@ -34,9 +34,10 @@ ''' # reload in python console: -# import maho_post -# reload(maho_post) +# import generic_post +# reload(generic_post) +''' example post for Maho M 600E mill''' import FreeCAD import time import Path, PathScripts @@ -195,7 +196,11 @@ def mkHeader(selection): now = time.strftime("%Y-%m-%d %H:%M") originfile = FreeCAD.ActiveDocument.FileName headerNoNumber = "%PM\n" # this line gets no linenumber - headerNoNumber += "N9XXX (" + selection[0].Description + ", " + now + ")\n" # this line gets no linenumber, it is already a specially numbered + if hasattr(selection[0],"Description"): + description = selection[0].Description + else: + description = "" + headerNoNumber += "N9XXX (" + description + ", " + now + ")\n" # this line gets no linenumber, it is already a specially numbered header = "" # header += "(Output Time:" + str(now) + ")\n" header += "(" + originfile + ")\n" @@ -304,11 +309,12 @@ def export(selection,filename,argstring): gobjects = [] for g in selection[0].Group: - gobjects.append(g) + if g.Name <>'Machine': #filtering out gcode home position from Machine object + gobjects.append(g) for obj in gobjects: - if hasattr(obj,'GComment'): - gcode += linenumberify('(' + obj.GComment + ')') + if hasattr(obj,'Comment'): + gcode += linenumberify('(' + obj.Comment + ')') for c in obj.Path.Commands: outstring = [] command = c.Name