Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sn4k3/UVtools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/wiki
diff options
context:
space:
mode:
authorTiago Conceição <Tiago_caza@hotmail.com>2021-07-16 20:06:00 +0300
committerTiago Conceição <Tiago_caza@hotmail.com>2021-07-16 20:06:00 +0300
commit9acb9060ac605ed42b95c09da9843c595e713c99 (patch)
treedc99550350159026489d7c0556fe69884fd2975d /wiki
parentc289954753cb790836709fcdb5979606d1bc0c7e (diff)
Create ODLP.md
Diffstat (limited to 'wiki')
-rw-r--r--wiki/ODLP.md104
1 files changed, 104 insertions, 0 deletions
diff --git a/wiki/ODLP.md b/wiki/ODLP.md
new file mode 100644
index 0000000..e194132
--- /dev/null
+++ b/wiki/ODLP.md
@@ -0,0 +1,104 @@
+# Open source and universal file format for mSLA/DLP (.odlp)
+
+## Implementation requesites
+
+- Open-source file format
+- Document the changes and revisions, as well the reserved table if any
+- Universal: the file and revisions should always be compatible with any firmware that take this file
+- No encrypted files: The data should be plain and easy to access
+- No property or changed variant of the file format shoud exists!
+
+## Printer firmware checks (can print this file?)
+1. Compare resolution
+2. Can use ImageDataType? For example, if processor is unable to process PNG images, trigger an error and dont allow to continue
+
+## Printer firmware layer data adquisiton
+
+1. On gcode, when machine firmware detects M6054, it goes to the layer table at layer x index given by the command and gets the layer data to buffer the image
+
+
+# Draft 1
+
+```
+#[HEADER]
+Version=1 (ushort)
+MachineZ=130 (float)
+DisplayWidth=68.04 (float)
+DisplayHeight=120.96 (float)
+ResolutionX=1080 (uint)
+ResolutionY=1080 (uint)
+MirrorX=1 (byte) 0 = false | 1 = true
+MirrorY=0 (byte) 0 = false | 1 = true
+ImageDataType=PNG\0\0\0\0\0 (char[8]) compressed image data type, eg: RLE or PNG or JPG or BITMAP
+ReservedBytes=4 (uint) Number reserved of bytes, this can be used for custom use of each brand, but not important for general file format
+NumberOfPreviews=2 (byte) Number of previews/thumbnails on this file
+LayerCount=1000 (uint) Total number of layers
+LayerDefinitionsAddress=00000 (uint) Address for layer definition
+GCodeAddress=000000 (uint) gcode text address
+GCodeSize=sizeof(gcode) (uint) gcode text length
+FileUpdateTime=1626451007 (uint) UNIX Timestamp
+ModifiedBySize=sizeof(ModifiedBy) (uint)
+ModifiedBy=UVtools v2.15.0 (text) program/slicer who last modified the file
+MachineNameSize=sizeof(MachineName) (ushort)
+MachineName=Phrozen Sonic Mini (string)
+
+#[ReservedBytes]
+# This can be used to store slicer specific settings or additional information
+# Still both printer and software must not depend on this
+ExampleOfCustomField=4 (uint)
+
+#[Preview 1]
+ResolutionX=400 (ushort)
+ResolutionY=400 (ushort)
+PreviewDataSize=sizeof(DATA) (uint)
+RLE/PNG/JPG/BITMAP
+
+#[Preview 2]
+ResolutionX=400 (ushort)
+ResolutionY=400 (ushort)
+PreviewDataSize=sizeof(DATA) (uint)
+RLE/PNG/JPG/BITMAP
+
+#[LayerDefinitions]
+#[Layer 1]
+DataSize=sizeof(LAYER_DATA) (uint)
+RLE/PNG/JPG/BITMAP
+
+#[Layer 2]
+DataSize=sizeof(LAYER_DATA) (uint)
+RLE/PNG/JPG/BITMAP
+
+[GCode] (text - dynamic size)
+;START_GCODE_BEGIN
+G21;Set units to be mm
+G90;Absolute positioning
+M106 S0;Turn LED OFF
+M17;Enable motors
+;<Slice> Blank
+G28 Z0;Home Z
+;END_GCODE_BEGIN
+
+;LAYER_START:0
+;PositionZ:0.05mm
+M6054 0;Show image by layer index, to lookup on layer definition
+G0 Z5.05 F60;Z Lift
+G0 Z0.05 F150;Retract to layer height
+G4 P10000;Stabilization delay
+M106 S255;Turn LED ON
+G4 P80000;Cure time/delay
+M106 S0;Turn LED OFF
+;<Slice> Blank
+;LAYER_END
+
+;START_GCODE_END
+M106 S0;Turn LED OFF
+G0 Z180 F150;Move Z
+M18;Disable motors
+;END_GCODE_END
+;<Completed>
+```
+
+
+Notes:
+1) Previews start address = header size + reserved bytes size
+2) File header dont need much information, everything can be parsed from gcode!