diff --git a/src/Mod/CAM/Path/Main/Gui/Simulator.py b/src/Mod/CAM/Path/Main/Gui/Simulator.py index 443bf9a859..fdce056118 100644 --- a/src/Mod/CAM/Path/Main/Gui/Simulator.py +++ b/src/Mod/CAM/Path/Main/Gui/Simulator.py @@ -252,19 +252,19 @@ class PathSimulation: cmd = self.opCommands[self.icmd] pathSolid = None - if cmd.Name in ["G0"]: + if cmd.Name in ("G0", "G00"): self.firstDrill = True self.curpos = self.RapidMove(cmd, self.curpos) - if cmd.Name in ["G1", "G2", "G3"]: + if cmd.Name in ("G1", "G01", "G2", "G02", "G3", "G03"): self.firstDrill = True if self.skipStep: self.curpos = self.RapidMove(cmd, self.curpos) else: (pathSolid, self.curpos) = self.GetPathSolid(self.tool, cmd, self.curpos) - if cmd.Name in ["G80"]: + if cmd.Name == "G80": self.firstDrill = True - if cmd.Name in ["G73", "G81", "G82", "G83"]: + if cmd.Name in ("G73", "G81", "G82", "G83"): if self.firstDrill: extendcommand = Path.Command("G0", {"Z": cmd.r}) self.curpos = self.RapidMove(extendcommand, self.curpos) @@ -313,15 +313,24 @@ class PathSimulation: cmd = self.opCommands[self.icmd] # for cmd in job.Path.Commands: - if cmd.Name in ["G0", "G1", "G2", "G3"]: + if cmd.Name in ("G0", "G00", "G1", "G01", "G2", "G02", "G3", "G03"): + index = self.icmd + if cmd.Name in ("G2", "G02", "G3", "G03"): + while cmd.z is None: + index -= 1 + if index < 0: + cmd.z = 0 + break + cmd.z = self.opCommands[index].z + self.firstDrill = True - if cmd.Name in ["G2", "G3"] and (cmd.k or 0) == 0: + if cmd.Name in ("G2", "G02", "G3", "G03") and (cmd.k or 0) == 0: cx = self.curpos.Base.x + (cmd.i or 0) cy = self.curpos.Base.y + (cmd.j or 0) a0 = math.atan2(self.curpos.Base.y - cy, self.curpos.Base.x - cx) a1 = math.atan2(cmd.y - cy, cmd.x - cx) da = a1 - a0 - if cmd.Name == "G3": + if cmd.Name in ("G3", "G03"): da = da % (2 * math.pi) else: da = -((-da) % (2 * math.pi)) @@ -344,9 +353,9 @@ class PathSimulation: self.cutMaterial.Mesh, self.cutMaterialIn.Mesh, ) = self.voxSim.GetResultMesh() - if cmd.Name in ["G80"]: + if cmd.Name == "G80": self.firstDrill = True - if cmd.Name in ["G73", "G81", "G82", "G83"]: + if cmd.Name in ("G73", "G81", "G82", "G83"): extendcommands = [] if self.firstDrill: extendcommands.append(Path.Command("G0", {"Z": cmd.r}))