//------------------------------------------------ //--- 010 Editor v8.0.1 Binary Template // // File: goo // Authors: Tiago Conceição //------------------------------------------------ BigEndian(); enum BOOL { False, True }; struct HEADER { char Version[4] ; // format version: V3.0 char Magic[8] ; // Fix contant:0x07 0x00 0x00 0x00 0x44 0x4C 0x50 0x00 char SoftwareName[32] ; char SoftwareVersion[24] ; char FileCreateTime[24] ; // yyyy-mm-dd hh:mm:ss char MachineName[32] ; char MachineType[32] ; char ProfileName[32] ; ushort AntiAliasingLevel ; ushort GreyLevel ; ushort BlurLevel ; ubyte SmallPreview[116*116*2] ; // RGB_565 16Bit ubyte SmallPreviewDelimiter[2] ; // \n 0x0D 0x0A ubyte BigPreview[290*290*2] ; // RGB_565 16Bit ubyte BigPreviewDelimiter[2] ; // \n 0x0D 0x0A uint LayerCount ; ushort ResolutionX ; ushort ResolutionY ; BOOL MirrorX ; BOOL MirrorY ; float DisplayWidth ; float DisplayHeight ; float MachineZ ; float LayerHeight ; float ExposureTime ; enum { LightOffDelay, WaitTime } DelayMode ; // 0: light off delay mode | 1: wait time mode float LightOffDelay ; float BottomWaitTimeAfterCure ; float BottomWaitTimeAfterLift ; float BottomWaitTimeBeforeCure ; float WaitTimeAfterCure ; float WaitTimeAfterLift ; float WaitTimeBeforeCure ; float BottomExposureTime ; uint BottomLayerCount ; float BottomLiftHeight ; float BottomLiftSpeed ; // mm/min float LiftHeight ; float LiftSpeed ; // mm/min float BottomRetractHeight ; float BottomRetractSpeed ; // mm/min float RetractHeight ; float RetractSpeed ; // mm/min float BottomLiftHeight2 ; float BottomLiftSpeed2 ; // mm/min float LiftHeight2 ; float LiftSpeed2 ; // mm/min float BottomRetractHeight2 ; float BottomRetractSpeed2 ; // mm/min float RetractHeight2 ; float RetractSpeed2 ; // mm/min ushort BottomLightPWM ; ushort LightPWM ; BOOL PerLayerSettings ; // 0: normal mode; 1:advance mode, printing use the value of "Layer Definition Content" uint PrintTime ; // seconds float Volume ; // The volume of all parts. unit:mm3 float MaterialGrams ; // The weight of all parts. unit:g float MaterialCost ; char PriceCurrency[8] ; // $, € uint LayerDefAddress ; ubyte GrayScaleLevel ; // 0: The range of pixel's gray value is from 0x0 ~ 0xf; 1:The range of pixel's gray value is from 0x0 ~ 0xff; ushort TransitionLayerCount ; } header; struct LAYER_DEF { // 0: reserve; 1: current layer pause printing ushort Pause ; // The lift distance of Z axis when "Pause flag" equal 1. unit:mm float PausePositionZ ; float PositionZ ; float ExposureTime ; float LightOffDelay ; float WaitTimeAfterCure ; float WaitTimeAfterLift ; float WaitTimeBeforeCure ; float LiftHeight ; float LiftSpeed ; // mm/min float LiftHeight2 ; float LiftSpeed2 ; // mm/min float RetractHeight ; float RetractSpeed ; // mm/min float RetractHeight2 ; float RetractSpeed2 ; // mm/min ushort LightPWM ; ubyte DelimiterData[2] ; // \n 0x0D 0x0A uint DataSize ; // First RLE byte is Magic (0x55) ubyte RLE[DataSize] ; // Last RLE byte is Checksum XOR ubyte DelimiterRLE[2] ; // \n 0x0D 0x0A }; struct LAYERS{ local uint i; for(i = 0; i < header.LayerCount; i++){ LAYER_DEF layerDef; } } layers; struct FOOTER { ubyte Padding[3] ; // format version char Magic[8] ; // Fix contant:0x07 0x00 0x00 0x00 0x44 0x4C 0x50 0x00 } footer;