Coder Social home page Coder Social logo

uv3dp's Introduction

uv3dp

Tools for UV Resin based 3D Printers (in Go)

Supported File Formats

This tool is for devices that use sliced image files for UV resin 3D printers.

Printers known to work with this tool:

Printer File Formats Issues
- uvj Zip file with JSON and image slices
EPAX X1/X10 cbddlp None
EPAX X1-N ctb None
Anycubic Photon photon None
Anycubic Zero pw0 None
Anycubic Photons pws None
Prusa SL1 sl1 None
NOVA3D Elfin cws None
Phrozen Sonic phz None
Zortrax Inkspire zcodex Read-only (for format conversion)

Installation

Command Line Tool (uv3dp)

The command line tool is designed to be used in a 'pipeline' style, for example:

uv3dp foo.sl1 info                    # Shows information about the SL1 file
uv3dp foo.sl1 decimate bar.cbddlp     # Convert and decimates a SL1 file to a CBDDLP file
uv3dp foo.sl1 qux.cbddlp --version 1  # Convert a SL1 file to a Version 1CBDDLP file

Command summary:

Usage:

  uv3dp [options] INFILE [command [options] | OUTFILE]...
  uv3dp [options] @cmdfile.cmd

Options:

  -p, --progress        Show progress during operations
  -v, --verbose count   Verbosity
  -V, --version         Show version

Commands:

  (none)               Translates input file to output file
  bed                  Adjust image for a different bed size/resolution
  bottom               Alters bottom layer exposure
  decimate             Remove outmost pixels of all islands in each layer (reduces over-curing on edges)
  exposure             Alters exposure times
  info                 Dumps information about the printable
  lift                 Alters layer lift properties
  resin                Changes all properties to match a selected resin
  retract              Alters layer retract properties
  select               Select to print only a range of layers

Options for 'bed':

  -M, --machine string             Size preset by machine type (default "EPAX-X1")
  -m, --millimeters float32Slice   Bed size, in millimeters (default [68.040001,120.959999])
  -p, --pixels ints                Bed size, in pixels (default [1440,2560])
  -r, --reflect                    Mirror image along the X axis

Options for 'bottom':

  -c, --count int             Bottom layer count
  -h, --lift-height float32   Bottom layer lift height in mm
  -s, --lift-speed float32    Bottom layer lift speed in mm/min
  -f, --light-off float32     Bottom layer light-off time in seconds
  -o, --light-on float32      Bottom layer light-on time in seconds
  -p, --pwm uint8             Light PWM rate (0..255) (default 255)
  -y, --style string          Bottom layer style - 'fade' or 'slow' (default "slow")

Options for 'decimate':

  -b, --bottom int   Number of bottom layer passes
  -n, --normal int   Number of normal layer passes (default 1)

Options for 'exposure':

  -f, --light-off float32   Normal layer light-off time in seconds
  -o, --light-on float32    Normal layer light-on time in seconds
  -p, --pwm uint8           Light PWM rate (0..255) (default 255)

Options for 'info':

  -e, --exposure   Show summary of the exposure settings (default true)
  -l, --layer      Show layer detail
  -s, --size       Show size summary (default true)

Options for 'lift':

  -h, --height float32   Lift height in mm
  -s, --speed float32    Lift speed in mm/min

Options for 'resin':

  -t, --type string   Resin type [see 'Known resins' in help]

Options for 'retract':

  -h, --height float32   Retract height in mm
  -s, --speed float32    Retract speed in mm/min

Options for 'select':

  -c, --count int   Count of layers to select (-1 for all layers after first) (default -1)
  -f, --first int   First layer to select

Options for '.cbddlp':

  -a, --anti-alias int   Override antialias level (1..16) (default 1)
  -v, --version int      Override header Version (default 2)

Options for '.ctb':

  -e, --encryption-seed uint32   Specify a specific encryption seed
  -v, --version int              Specify the CTB version (2 or 3) (default 3)

Options for '.cws':


Options for '.fdg':

  -e, --encryption-seed uint32   Specify a specific encryption seed
  -v, --version int              Specify the CTB version (2 or 3) (default 2)

Options for '.lgs':


Options for '.lgs30':


Options for '.photon':

  -a, --anti-alias int   Override antialias level (1..16) (default 1)
  -v, --version int      Override header Version (default 1)

Options for '.phz':

  -e, --encryption-seed uint32   Specify a specific encryption seed

Options for '.pw0':

  -a, --anti-alias int   Override antialias level (1,2,4,8) (default 1)

Options for '.pws':

  -a, --anti-alias int   Override antialias level (1,2,4,8) (default 1)

Options for '.sl1':

  -m, --material-name string   config.init entry 'materialName' (default "3DM-ABS @")

Options for '.uvj':


Options for '.zcodex':


Options for '.zip':


Options for 'empty':

  -g, --gray uint8                 Grayscale color (0 for black, 255 for white)
  -l, --layers int                 Number of 0.05mm layers (default 1)
  -M, --machine string             Size preset by machine type (default "photon")
  -m, --millimeters float32Slice   Empty size, in millimeters (default [68.040001,120.959999])
  -p, --pixels ints                Empty size, in pixels (default [1440,2560])

Known machines:

    e10-4k                 EPAX E10 mono 4K      Size: 2400x3840, 120x192 mm,	Format: .ctb --version=3
    e10-5k                 EPAX E10 mono 5K      Size: 2880x4920, 135x216 mm,	Format: .ctb --version=3
    e6                     EPAX E6 mono          Size: 1620x2560, 81x128 mm,	Format: .ctb --version=3
    elfin                Nova3D Elfin            Size: 1410x2550, 73x132 mm,	Format: .cws 
    inkspire            Zortrax Inkspire         Size: 1440x2560, 72x128 mm,	Format: .zcodex 
    ld-002r            Creality LD-002R          Size: 1440x2560, 68x121 mm,	Format: .ctb --version=2
    mars                 Elegoo Mars             Size: 1440x2560, 68x121 mm,	Format: .cbddlp 
    mars2-pro            Elegoo Mars 2 Pro       Size: 1620x2560, 82.6x131 mm,	Format: .ctb --version=3
    orange10             Longer Orange 10        Size: 480x854, 55.4x98.6 mm,	Format: .lgs 
    orange30             Longer Orange 30        Size: 1440x2560, 68x121 mm,	Format: .lgs30 
    photon             Anycubic Photon           Size: 1440x2560, 68x121 mm,	Format: .photon 
    photon0            Anycubic Photon Zero      Size: 480x854, 55.4x98.6 mm,	Format: .pw0 
    photons            Anycubic Photon S         Size: 1440x2560, 68x121 mm,	Format: .pws 
    polaris             Voxelab Polaris          Size: 1440x2560, 68x121 mm,	Format: .fdg 
    s400                 Kelant S400             Size: 2560x1600, 192x120 mm,	Format: .zip 
    shuffle             Phrozen Shuffle          Size: 1440x2560, 67.7x120 mm,	Format: .zip 
    sl1                   Prusa SL1              Size: 1440x2560, 68x121 mm,	Format: .sl1 
    sonic-mini          Phrozen Sonic Mini       Size: 1080x1920, 68x121 mm,	Format: .phz 
    sonic-mini-4k       Phrozen Sonic Mini 4K    Size: 3840x2160, 134x75.6 mm,	Format: .ctb --version=3
    x1                     EPAX X1               Size: 1440x2560, 68x121 mm,	Format: .cbddlp 
    x10                    EPAX X10              Size: 1600x2560, 135x216 mm,	Format: .cbddlp 
    x10n                   EPAX X10              Size: 1600x2560, 135x216 mm,	Format: .ctb --version=2
    x133                   EPAX X133             Size: 2160x3840, 165x293 mm,	Format: .cbddlp 
    x156                   EPAX X156             Size: 2160x3840, 194x345 mm,	Format: .cbddlp 
    x1k                    EPAX X1K              Size: 1440x2560, 68x121 mm,	Format: .ctb --version=2
    x1n                    EPAX X1N              Size: 1440x2560, 68x121 mm,	Format: .ctb --version=2
    x9                     EPAX X9               Size: 1600x2560, 120x192 mm,	Format: .cbddlp 

Known resins: (from local user ChiTuBox config)

uv3dp's People

Contributors

expipiplus1 avatar ezrec avatar uwwint avatar x3msnake avatar zeox06 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

uv3dp's Issues

Machine Kelant S400S - images not rotated

When converting to machine Kelant-S400 the images are not rotated to landscape.
Result: images are portret after converting.
Expected result: images are landscape.

The resolution for this machine is:
;(X Resolution = 2560 )
;(Y Resolution = 1600 )
afbeelding

Add intermediate uv3dp file format for easy file modification

Create a internal file format for UV3DP that serves as a human readable intermediate format that people can edit modify or use as a template to generate base files for conversion

As sugested by @ezrec it can be a for of extended SL1 (zip) file:


1- A config.json with:

  • [print] section for global parameters and variable headers
  • [layer NNNNN] sections with optional exposure / lift overrides to the [print] parameters

2 - All image sequence in the format NNNNN.png


JSON instead of INI allows IoT web servers an easier time with the unpacked zip directory

Estimated print time

It would be nice if the "info" command would display the estimated print time.

Feature Request - Support svx voxel format

The SVX format(Simple Voxels) is a voxel transmital format. It was developed to enable the upload of voxel based models to Shapeways. The design priorities are simple definition, ease of implementation, and extensibility.

Format

The basic format is a Zip file, named with a .svx extension. It contains a manifest file and a series of slices as images.

manifest.xml
channel_name/slice0.png
channel_name/slice1.png

https://abfab3d.com/svx-format/

examplefile-sphere.svx


About Go and Libraries:
https://golang.org/pkg/encoding/xml/
https://tour.golang.org/welcome/1

Suggested fixes for Elfin/.cws

My Elfin doesn't parse the gcode file that uv3dp currently writes for .cws. After some hours of troubleshooting, I managed to come up with the attached, working version.

First and most straightforward, this message in the header needs to be preceded with a semicolon:

_, err = fmt.Fprintf(gcode, "(****Machine Configuration ******)\n")

Also, the Elfin seems to not be able to parse items in the header if they are inside of parentheses. Removing all the parenthesis (after adding the semicolon above) finally enabled the Elfin to print the archive.

Furthermore, the only thing that must not be in parenthesis in order to print, is "Number of Slices". If you only take the parenthesis away on that one line, my Elfin will print the archive. This does not mean that there are not other things that the Elfin would otherwise read and use if it could parse those things as well. But I have not tested for that, and imagine it would be difficult to do so.

working-elfin-cws.zip

file photon/cbddlp converted to cbt not printed

cbddlp file (printed by old chituboard EPAX-X1), converted to cbt by uv3dp-v0.5.3, not printed on new chituboard (firmware 4.3.4, printer EPAX-X1-N). printer speak "unknown file". No preview image on screen
converted cbt file opened by chitubox 1.6.4.3
command line:
uv3dp.exe w1.cbddlp wk.ctb
Convert sliced (printed ok) ctb file to ctb - new ctb not printable.
uv3dp.exe _TEST_2018_01.ctb _TEST_2018_01XX.ctb
file - difefrent
187 119 bytes _TEST_2018_01.ctb
164 257 bytes _TEST_2018_01XX.ctb
ctb_to_ctb.zip
Why? What to do? What way to convert old (printed) cbddlp to new (printable) .ctb file?

cmd/uv3dp: Synthesize a staircase test printable

  • Synthesize a staircase test printable, ie:
uv3dp empty --height 20.0  --machine EPAX-X1 \
           staircase --foot 6.5,4.5,1.0 --step 0.2 --rise 0.2 \
           exposure --resin Anycubic-Gray \
           staircase.cbddlp
`

Would generate a 20mm tall staircase pattern, centered on the EPAX-X1 - with no exposure presets

#Feature Request - add file processing progress information

Currently there is no way of knowing if a file is processing or is stuck

Would be great to have some sort of feedback on the command line about the conversion progress

Even a simple text saying processing and a spinner bar would be better than nothing :)
demo

Ideally a percent bar

1_CE0Qcee9egW2kQO-qfedXA

https://stackoverflow.com/questions/12498304/using-bash-to-display-a-progress-indicator/12498305#12498305

This stemms from a couple of user reports that the tool was not working when in reality they where closing the cli window before any real time had passed and saying that the file with 1k did not work :P

Please help me debug this config.json

I am writing a Python utility that creates UVJ archives. It drives ImageMagick to create the png slices. It seems I'm in need of help with the config.json. Can you see what's wrong with it? I may have added a field that isn't in your schema (Properties.
defaultFormat). Could that be my issue, or will your prog just ignore it (hoping for the latter)?

image

config.zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.