Files
Tiago Conceição 6d176e563a Update OSLA
2022-08-03 17:46:22 +01:00

140 lines
4.5 KiB
Plaintext

//------------------------------------------------
//--- 010 Editor v8.0.1 Binary Template
//
// File: osla, omsla, odlp
// Authors: Tiago Conceição
//------------------------------------------------
LittleEndian();
struct FILE {
char Marker[8] <fgcolor=cBlack, bgcolor=cWhite>;
ushort Version <fgcolor=cBlack, bgcolor=cWhite>;
char CreatedDateTime[20] <fgcolor=cBlack, bgcolor=cWhite>;
char CreatedBy[50] <fgcolor=cBlack, bgcolor=cWhite>;
char ModifiedDateTime[20] <fgcolor=cBlack, bgcolor=cWhite>;
char ModifiedBy[50] <fgcolor=cBlack, bgcolor=cWhite>;
} file;
struct HEADER {
uint TableSize <fgcolor=cBlack, bgcolor=cRed>;
uint ResolutionX <fgcolor=cBlack, bgcolor=cRed>;
uint ResolutionY <fgcolor=cBlack, bgcolor=cRed>;
float MachineZ <fgcolor=cBlack, bgcolor=cRed>;
float DisplayWidth <fgcolor=cBlack, bgcolor=cRed>;
float DisplayHeight <fgcolor=cBlack, bgcolor=cRed>;
enum <ubyte> { None, Horizontally, Vertically, Both } DisplayMirror <fgcolor=cBlack, bgcolor=cRed>;
char PreviewDataType[16] <fgcolor=cBlack, bgcolor=cRed>;
char LayerDataType[16] <fgcolor=cBlack, bgcolor=cRed>;
uint PreviewTableSize <fgcolor=cBlack, bgcolor=cRed>;
uint PreviewCount <fgcolor=cBlack, bgcolor=cRed>;
float LayerHeight <fgcolor=cBlack, bgcolor=cRed>;
ushort BottomLayersCount <fgcolor=cBlack, bgcolor=cRed>;
uint LayerCount <fgcolor=cBlack, bgcolor=cRed>;
uint LayerTableSize <fgcolor=cBlack, bgcolor=cRed>;
uint LayerDefinitionsAddress <fgcolor=cBlack, bgcolor=cRed>;
uint GCodeAddress <fgcolor=cBlack, bgcolor=cRed>;
uint PrintTime <fgcolor=cBlack, bgcolor=cRed>;
float MaterialMilliliters <fgcolor=cBlack, bgcolor=cRed>;
float MaterialCost <fgcolor=cBlack, bgcolor=cRed>;
char MaterialName[50] <fgcolor=cBlack, bgcolor=cRed>;
char MachineName[50] <fgcolor=cBlack, bgcolor=cRed>;
} header;
local int headerSize = sizeof(header);
if(header.TableSize > headerSize)
{
FSkip(header.TableSize - headerSize);
}
struct CUSTOM {
uint TableSize <fgcolor=cBlack, bgcolor=cWhite>;
if(TableSize > 0){
ubyte Data[TableSize] <fgcolor=cBlack, bgcolor=cWhite>;
}
} custom;
struct PREVIEW {
ushort ResolutionX <fgcolor=cBlack, bgcolor=cPurple>;
ushort ResolutionY <fgcolor=cBlack, bgcolor=cPurple>;
uint ImageLength <fgcolor=cBlack, bgcolor=cPurple>;
ubyte ImageData[ImageLength] <fgcolor=cWhite, bgcolor=cBlack>;
};
struct LAYER_DEF {
uint DataAddress <fgcolor=cBlack, bgcolor=cPurple>;
float PositionZ <fgcolor=cBlack, bgcolor=cPurple>;
float LiftHeight <fgcolor=cBlack, bgcolor=cPurple>;
float LiftSpeed <fgcolor=cBlack, bgcolor=cPurple>;
float LiftHeight2 <fgcolor=cBlack, bgcolor=cPurple>;
float LiftSpeed2 <fgcolor=cBlack, bgcolor=cPurple>;
float WaitTimeAfterLift <fgcolor=cBlack, bgcolor=cPurple>;
float RetractSpeed <fgcolor=cBlack, bgcolor=cPurple>;
float RetractHeight2 <fgcolor=cBlack, bgcolor=cPurple>;
float RetractSpeed2 <fgcolor=cBlack, bgcolor=cPurple>;
float WaitTimeBeforeCure <fgcolor=cBlack, bgcolor=cPurple>;
float ExposureTime <fgcolor=cBlack, bgcolor=cPurple>;
float WaitTimeAfterCure <fgcolor=cBlack, bgcolor=cPurple>;
ubyte LightPWM <fgcolor=cBlack, bgcolor=cPurple>;
uint BoundingRectangleX <fgcolor=cBlack, bgcolor=cPurple>;
uint BoundingRectangleY <fgcolor=cBlack, bgcolor=cPurple>;
uint BoundingRectangleWidth <fgcolor=cBlack, bgcolor=cPurple>;
uint BoundingRectangleHeight <fgcolor=cBlack, bgcolor=cPurple>;
};
struct LAYER_DATA{
uint ImageLength <fgcolor=cWhite, bgcolor=cBlack>;
ubyte ImageData[ImageLength] <fgcolor=cWhite, bgcolor=cBlack>;
};
struct GCODE{
uint GCodeSize <fgcolor=cWhite, bgcolor=cPurple>;
char GCodeText[GCodeSize] <fgcolor=cBlack, bgcolor=cWhite>;
};
local int i;
if(header.PreviewCount > 0)
{
struct PREVIEWS {
for( i = 0; i < header.PreviewCount; i++)
{
PREVIEW preview;
}
} previews;
}
if(header.LayerDefinitionsAddress > 0)
{
FSeek(header.LayerDefinitionsAddress);
struct LAYERS_DEF {
for( i = 0; i < header.LayerCount; i++)
{
LAYER_DEF layerDef <fgcolor=cPurple, bgcolor=cWhite>;
}
} layers_def;
struct LAYERS_DATA {
for( i = 0; i < header.LayerCount; i++)
{
FSeek(layers_def[0].layerDef[i].DataAddress);
LAYER_DATA layerData <fgcolor=cPurple, bgcolor=cWhite>;
}
} layers_data;
}
if(header.GCodeAddress > 0)
{
FSeek(header.GCodeAddress);
GCODE gcode;
}