コード例 #1
0
ファイル: gcodeplater.py プロジェクト: ptitleud/Printrun
 def export_combined(self, name):
     models = self.models.values()
     last_real_position = None
     # Sort models by Z max to print smaller objects first
     models.sort(key=lambda x: x.dims[-1])
     alllayers = []
     for (model_i, model) in enumerate(models):
         alllayers += [(layer.z, model_i, layer_i)
                       for (layer_i,
                            layer) in enumerate(model.gcode.all_layers)
                       if layer]
     alllayers.sort()
     laste = [0] * len(models)
     lasttool = [0] * len(models)
     lastrelative = [False] * len(models)
     with open(name, "w") as f:
         analyzer = gcoder.GCode(None, get_home_pos(self.build_dimensions))
         analyzer.write = types.MethodType(
             lambda self, line: gcoder_write(self, f, line), analyzer)
         for (layer_z, model_i, layer_i) in alllayers:
             model = models[model_i]
             layer = model.gcode.all_layers[layer_i]
             r = model.rot  # no rotation support for now
             if r != 0 and layer_i == 0:
                 print _("Warning: no rotation support for now, "
                         "object won't be correctly rotated")
             o = model.offsets
             co = model.centeroffset
             offset_pos = last_real_position if last_real_position is not None else (
                 0, 0, 0)
             analyzer.write("; %f %f %f\n" % offset_pos)
             trans = (-(o[0] + co[0]), -(o[1] + co[1]), -(o[2] + co[2]))
             trans_wpos = (offset_pos[0] + trans[0],
                           offset_pos[1] + trans[1],
                           offset_pos[2] + trans[2])
             analyzer.write("; GCodePlater: Model %d Layer %d at Z = %s\n" %
                            (model_i, layer_i, layer_z))
             if lastrelative[model_i]:
                 analyzer.write("G91\n")
             else:
                 analyzer.write("G90\n")
             if analyzer.current_tool != lasttool[model_i]:
                 analyzer.write("T%d\n" % lasttool[model_i])
             analyzer.write("G92 X%.5f Y%.5f Z%.5f\n" % trans_wpos)
             analyzer.write("G92 E%.5f\n" % laste[model_i])
             for l in layer:
                 if l.command != "G28" and (l.command != "G92"
                                            or extrusion_only(l)):
                     analyzer.write(l.raw + "\n")
             # Find the current real position & E
             last_real_position = analyzer.current_pos
             laste[model_i] = analyzer.current_e
             lastrelative[model_i] = analyzer.relative
             lasttool[model_i] = analyzer.current_tool
     print _("Exported merged G-Codes to %s") % name
コード例 #2
0
ファイル: gcodeplater.py プロジェクト: Belxjander/Printrun
 def export_combined(self, name):
     models = self.models.values()
     last_real_position = None
     # Sort models by Z max to print smaller objects first
     models.sort(key = lambda x: x.dims[-1])
     alllayers = []
     for (model_i, model) in enumerate(models):
         alllayers += [(layer.z, model_i, layer_i)
                       for (layer_i, layer) in enumerate(model.gcode.all_layers) if layer]
     alllayers.sort()
     laste = [0] * len(models)
     lasttool = [0] * len(models)
     lastrelative = [False] * len(models)
     with open(name, "w") as f:
         analyzer = gcoder.GCode(None, get_home_pos(self.build_dimensions))
         analyzer.write = types.MethodType(lambda self, line: gcoder_write(self, f, line), analyzer)
         for (layer_z, model_i, layer_i) in alllayers:
             model = models[model_i]
             layer = model.gcode.all_layers[layer_i]
             r = model.rot  # no rotation support for now
             if r != 0 and layer_i == 0:
                 print _("Warning: no rotation support for now, "
                         "object won't be correctly rotated")
             o = model.offsets
             co = model.centeroffset
             offset_pos = last_real_position if last_real_position is not None else (0, 0, 0)
             analyzer.write("; %f %f %f\n" % offset_pos)
             trans = (- (o[0] + co[0]),
                      - (o[1] + co[1]),
                      - (o[2] + co[2]))
             trans_wpos = (offset_pos[0] + trans[0],
                           offset_pos[1] + trans[1],
                           offset_pos[2] + trans[2])
             analyzer.write("; GCodePlater: Model %d Layer %d at Z = %s\n" % (model_i, layer_i, layer_z))
             if lastrelative[model_i]:
                 analyzer.write("G91\n")
             else:
                 analyzer.write("G90\n")
             if analyzer.current_tool != lasttool[model_i]:
                 analyzer.write("T%d\n" % lasttool[model_i])
             analyzer.write("G92 X%.5f Y%.5f Z%.5f\n" % trans_wpos)
             analyzer.write("G92 E%.5f\n" % laste[model_i])
             for l in layer:
                 if l.command != "G28" and (l.command != "G92" or extrusion_only(l)):
                     analyzer.write(l.raw + "\n")
             # Find the current real position & E
             last_real_position = analyzer.current_pos
             laste[model_i] = analyzer.current_e
             lastrelative[model_i] = analyzer.relative
             lasttool[model_i] = analyzer.current_tool
     print _("Exported merged G-Codes to %s") % name
コード例 #3
0
ファイル: gcodeplater.py プロジェクト: Belxjander/Printrun
 def load_file(self, filename):
     gcode = gcoder.GCode(open(filename, "rU"),
                          get_home_pos(self.build_dimensions))
     model = actors.GcodeModel()
     model.load_data(gcode)
     obj = gcview.GCObject(model)
     obj.gcode = gcode
     obj.dims = [gcode.xmin, gcode.xmax,
                 gcode.ymin, gcode.ymax,
                 gcode.zmin, gcode.zmax]
     obj.centeroffset = [-(obj.dims[1] + obj.dims[0]) / 2,
                         -(obj.dims[3] + obj.dims[2]) / 2,
                         0]
     self.add_model(filename, obj)
     wx.CallAfter(self.Refresh)
コード例 #4
0
ファイル: gcodeplater.py プロジェクト: ptitleud/Printrun
 def load_file(self, filename):
     gcode = gcoder.GCode(open(filename, "rU"),
                          get_home_pos(self.build_dimensions))
     model = actors.GcodeModel()
     model.load_data(gcode)
     obj = gcview.GCObject(model)
     obj.gcode = gcode
     obj.dims = [
         gcode.xmin, gcode.xmax, gcode.ymin, gcode.ymax, gcode.zmin,
         gcode.zmax
     ]
     obj.centeroffset = [
         -(obj.dims[1] + obj.dims[0]) / 2, -(obj.dims[3] + obj.dims[2]) / 2,
         0
     ]
     self.add_model(filename, obj)
     wx.CallAfter(self.Refresh)