class PhotonPreview(LittleEndianStruct): resolution_x: int = StructType.uint32() resolution_y: int = StructType.uint32() image_offset: int = StructType.uint32() image_length: int = StructType.uint32() unknown_01: int = StructType.uint32() unknown_02: int = StructType.uint32() unknown_03: int = StructType.uint32() unknown_04: int = StructType.uint32()
class PhotonParam(LittleEndianStruct): bottom_lift_height: float = StructType.float32() # 00: bottom_lift_speed: float = StructType.float32() # 04: lift_height: float = StructType.float32() # 08: lift_speed: float = StructType.float32() # 0c: retract_speed: float = StructType.float32() # 10: volume_ml: float = StructType.float32() # 14: Volume of resin in ml weight_gr: float = StructType.float32() # 18: resin weight in grams cost_dollars: float = StructType.float32( ) # 1c: slicers estimated resin cost USD bottom_lift_off_time: float = StructType.float32() # 20 light_off_time: float = StructType.float32() # 24: bottom_layer_count: int = StructType.uint32() # 28: unknown_01: int = StructType.uint32() # 2c: unknown_02: int = StructType.uint32() # 30: unknown_03: int = StructType.uint32() # 34: unknown_04: int = StructType.uint32() # 38:
class BaseTestStruct: char: bytes = StructType.char() signed_char: int = StructType.signed_char() unsigned_char: int = StructType.unsigned_char() boolean: bool = StructType.boolean() int16: int = StructType.int16() uint16: int = StructType.uint16() int32: int = StructType.int32() uint32: int = StructType.uint32() int64: int = StructType.int64() uint64: int = StructType.uint64() float32: float = StructType.float32() double64: float = StructType.double64() chars: bytes = StructType.chars()
class CTBLayerDef(LittleEndianStruct): layer_height_mm: float = StructType.float32() layer_exposure: float = StructType.float32() layer_off_time: float = StructType.float32() image_offset: int = StructType.uint32() image_length: int = StructType.uint32() unknown_01: int = StructType.uint32() image_info_size: int = StructType.uint32() unknown_02: int = StructType.uint32() unknown_03: int = StructType.uint32()
class PhotonLayerDef(LittleEndianStruct): layer_height_mm: float = StructType.float32() # 00: layer_exposure: float = StructType.float32() # 04: layer_off_time: float = StructType.float32() # 08: image_offset: int = StructType.uint32() # 0c: image_length: int = StructType.uint32() # 10: unknown_01: int = StructType.uint32() # 14: unknown_02: int = StructType.uint32() # 18: unknown_03: int = StructType.uint32() # 1c: unknown_04: int = StructType.uint32() # 20:
class CTBPreview(LittleEndianStruct): resolution_x: int = StructType.uint32() resolution_y: int = StructType.uint32() image_offset: int = StructType.uint32() image_length: int = StructType.uint32()
class CTBSlicer(LittleEndianStruct): skip_0: int = StructType.uint32() skip_1: int = StructType.uint32() skip_2: int = StructType.uint32() skip_3: int = StructType.uint32() skip_4: int = StructType.uint32() skip_5: int = StructType.uint32() skip_6: int = StructType.uint32() machine_offset: int = StructType.uint32() machine_size: int = StructType.uint32() encryption_mode: int = StructType.uint32() time_seconds: int = StructType.uint32() unknown_01: int = StructType.uint32() version_patch: int = StructType.unsigned_char() version_minor: int = StructType.unsigned_char() version_major: int = StructType.unsigned_char() version_release: int = StructType.unsigned_char() unknown_02: int = StructType.uint32() unknown_03: int = StructType.uint32() unknown_04: float = StructType.float32() unknown_05: int = StructType.uint32() unknown_06: int = StructType.uint32() unknown_07: float = StructType.float32()
class CTBHeader(LittleEndianStruct): magic: int = StructType.uint32() version: int = StructType.uint32() bed_size_x_mm: float = StructType.float32() bed_size_y_mm: float = StructType.float32() bed_size_z_mm: float = StructType.float32() unknown_01: int = StructType.uint32() unknown_02: int = StructType.uint32() height_mm: float = StructType.float32() layer_height_mm: float = StructType.float32() layer_exposure: float = StructType.float32() bottom_exposure: float = StructType.float32() layer_off_time: float = StructType.float32() bottom_count: int = StructType.uint32() resolution_x: int = StructType.uint32() resolution_y: int = StructType.uint32() high_res_preview_offset: int = StructType.uint32() layer_defs_offset: int = StructType.uint32() layer_count: int = StructType.uint32() low_res_preview_offset: int = StructType.uint32() print_time: int = StructType.uint32() projector: int = StructType.uint32() param_offset: int = StructType.uint32() param_size: int = StructType.uint32() anti_alias_level: int = StructType.uint32() light_pwm: int = StructType.uint16() bottom_light_pwm: int = StructType.uint16() encryption_seed: int = StructType.uint32() slicer_offset: int = StructType.uint32() slicer_size: int = StructType.uint32()
class PhotonHeader(LittleEndianStruct): magic: int = StructType.uint32() # 00: Always 0x12FD0019 version: int = StructType.uint32() # 04: Always 0x01 bed_size_x_mm: float = StructType.float32() # 08: bed_size_y_mm: float = StructType.float32() bed_size_z_mm: float = StructType.float32() unknown_01: int = StructType.uint32() # 14 unknown_02: int = StructType.uint32() height_mm: float = StructType.float32() layer_height_mm: float = StructType.float32() # 20: layer_exposure: float = StructType.float32( ) # 24: Layer exposure(in seconds) bottom_exposure: float = StructType.float32() # 28: Bottom layers exposure layer_off_time: float = StructType.float32( ) # 2c: Layer off time(in seconds) bottom_count: int = StructType.uint32() # 30: Number of bottom layers resolution_x: int = StructType.uint32() # 34: resolution_y: int = StructType.uint32() # 38: high_res_preview_offset: int = StructType.uint32() # 3c: Offset of the high-res preview layer_defs_offset: int = StructType.uint32( ) # 40: Offset of the layer definitions layer_count: int = StructType.uint32() # 44: low_res_preview_offset: int = StructType.uint32( ) # 48: Offset of the low-rew prev print_time: int = StructType.uint32() # 4c: In seconds projector: int = StructType.uint32() # 50: 0 = CAST, 1 = LCD_X_MIRROR param_offset: int = StructType.uint32() # 54: param_size: int = StructType.uint32() # 58: anti_alias_level: int = StructType.uint32() # 5c: light_pwm: int = StructType.uint16() # 60: bottom_light_pwm: int = StructType.uint16() # 62: encryption_seed: int = StructType.uint32() # 64: slicer_offset: int = StructType.uint32() slicer_size: int = StructType.uint32()
class FDGHeader(LittleEndianStruct): magic: int = StructType.uint32() version: int = StructType.uint32() layer_count: int = StructType.uint32() bottom_count: int = StructType.uint32() projector: int = StructType.uint32() bottom_layer_count: int = StructType.uint32() resolution_x: int = StructType.uint32() resolution_y: int = StructType.uint32() layer_height_mm: float = StructType.float32() layer_exposure: float = StructType.float32() bottom_exposure: float = StructType.float32() high_res_preview_offset: int = StructType.uint32() low_res_preview_offset: int = StructType.uint32() layer_defs_offset: int = StructType.uint32() print_time: int = StructType.uint32() anti_alias_level: int = StructType.uint32() light_pwm: int = StructType.uint16() bottom_light_pwm: int = StructType.uint16() unknown_00: int = StructType.uint32() unknown_01: int = StructType.uint32() height_mm: float = StructType.float32() bed_size_x_mm: float = StructType.float32() bed_size_y_mm: float = StructType.float32() bed_size_z_mm: float = StructType.float32() encryption_seed: int = StructType.uint32() anti_alias_depth: int = StructType.uint32() unknown_02: int = StructType.uint32() volume_milliliters: float = StructType.float32() weight_grams: float = StructType.float32() cost_dollars: float = StructType.float32() machine_offset: int = StructType.uint32() machine_size: int = StructType.uint32() bottom_light_off_time: float = StructType.float32() light_off_time: float = StructType.float32() unknown_03: int = StructType.uint32() bottom_lift_height: float = StructType.float32() bottom_lift_speed: float = StructType.float32() lift_height: float = StructType.float32() lift_speed: float = StructType.float32() retract_speed: float = StructType.float32() unknown_04: int = StructType.uint32() unknown_05: int = StructType.uint32() unknown_06: int = StructType.uint32() unknown_07: int = StructType.uint32() unknown_08: int = StructType.uint32() unknown_09: int = StructType.uint32() unknown_10: int = StructType.uint32() timestamp: int = StructType.uint32() slicer_version_patch: int = StructType.unsigned_char() slicer_version_minor: int = StructType.unsigned_char() slicer_version_major: int = StructType.unsigned_char() slicer_version_release: int = StructType.unsigned_char() unknown_11: int = StructType.uint32() unknown_12: int = StructType.uint32() unknown_13: int = StructType.uint32() unknown_14: int = StructType.uint32() unknown_15: int = StructType.uint32() unknown_16: int = StructType.uint32()