Base X3GExport on GCodeExport

- Issue MatterHackers/MatterControl#4021
X3G for Makerbot profile exports as 0kb
This commit is contained in:
John Lewin 2018-12-05 13:21:09 -08:00
parent c5eb20f110
commit 42f2f89262
2 changed files with 26 additions and 30 deletions

View file

@ -38,28 +38,22 @@ using MatterHackers.Agg.Image;
using MatterHackers.Agg.Platform;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.Library;
using MatterHackers.MatterControl.Library.Export;
using MatterHackers.MatterControl.SlicerConfiguration;
namespace MatterHackers.MatterControl.Plugins.X3GDriver
{
public class X3GExport : IExportPlugin
public class X3GExport : GCodeExport
{
private PrinterConfig printer;
public override string ButtonText { get; } = "Machine File (X3G)";
public string ButtonText { get; } = "Machine File (X3G)";
public override string ExtensionFilter { get; } = "Export X3G|*.x3g";
public string ExtensionFilter { get; } = "Export X3G|*.x3g";
public override string FileExtension { get; } = ".x3g";
public string FileExtension { get; } = ".x3g";
public override ImageBuffer Icon { get; } = AggContext.StaticData.LoadIcon(Path.Combine("filetypes", "x3g.png"));
public ImageBuffer Icon { get; } = AggContext.StaticData.LoadIcon(Path.Combine("filetypes", "x3g.png"));
public void Initialize(PrinterConfig printer)
{
this.printer = printer;
}
public bool Enabled
public override bool Enabled
{
get => printer.Settings.PrinterSelected
&& printer.Settings.GetValue<bool>("enable_sailfish_communication");
@ -78,25 +72,27 @@ namespace MatterHackers.MatterControl.Plugins.X3GDriver
}
}
public bool ExportPossible(ILibraryAsset libraryItem) => true;
public override bool ExportPossible(ILibraryAsset libraryItem) => true;
public async Task<bool> Generate(IEnumerable<ILibraryItem> libraryItems, string outputPath, IProgress<ProgressStatus> progress, CancellationToken cancellationToken)
public override async Task<bool> Generate(IEnumerable<ILibraryItem> libraryItems, string outputPath, IProgress<ProgressStatus> progress, CancellationToken cancellationToken)
{
ILibraryAssetStream libraryContent = libraryItems.OfType<ILibraryAssetStream>().FirstOrDefault();
string gcodePath = Path.ChangeExtension(outputPath, "_gcode");
if (libraryContent == null)
// Generate the gcode
await base.Generate(libraryItems, gcodePath, progress, cancellationToken);
if (!File.Exists(gcodePath))
{
return false;
}
var result = await libraryContent.GetStream(null);
StreamReader inputFile = new StreamReader(result.Stream);
FileStream binaryFileStream = new FileStream(outputPath, FileMode.OpenOrCreate);
BinaryWriter outputFile = new BinaryWriter(binaryFileStream);
var inputFile = new StreamReader(gcodePath);
var binaryFileStream = new FileStream(outputPath, FileMode.OpenOrCreate);
var outputFile = new BinaryWriter(binaryFileStream);
var x3gConverter = new X3GWriter(new X3GPrinterDetails(), printer.Settings);
List<byte[]> x3gLines = new List<byte[]>();
var x3gLines = new List<byte[]>();
byte[] emptyByteArray = { 0 };
string line;