Skip to content

A 3D model slicer for Computational Fabrication course that generates G-code.

Notifications You must be signed in to change notification settings

ThenTech/CF-Slicer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Computational Fabrication 3D model Slicer

Group 3 - Lieven Libberecht, William Thenaers

Minimal requirements

  • Program with input STL/OBJ file and output gcode file
  • Basic GUI to go through slices step by step
  • (+ render all paths in colors)
  • Basic GUI for configuring essential parameters e.g. layer height, nozzle diameter, number of shells,…
  • Support for Shells + infill (basic e.g. rectangular)
  • (+ roofs/floors)
  • Models can have holes!
  • Support generation (basic rectangle structure)
  • Optimize for print quality (not speed)

Possible extras

  • Other types of infill (+ size)
  • Adaptive slicing (thinner slices for some parts)
  • Support for bridges (not requiring support) => nozzle cannot start in a void
  • ~? Optimizing paths for speed
  • Support structures to avoid toppling of objects (e.g. cube standing on 1 corner)
  • Automatic orientation of model (XY rotation; optimization)
  • Manual orientation of model (XYZ rotation and scale)
  • Automatic centring of model (XY position)
  • Indication of bounding box size and warning if it's larger than the Ender3 build plate (text turns red)
  • Optimized support structures (zigzag + others + size)
  • Adhesion with brim/skirt (+ size)
  • Print time estimation (take speed per accumulated extrusion and sum them)
  • Adjust slicing settings at runtime
    • Nozzle thickness (layer height)
    • Nozzle diameter (line thickness)
    • Filament diameter (optimized value for extrusion)
    • Number of shells (surfaces and borders)
  • Preview of 3D object and drawing of colour coded polygons (with adjustable thickness and direction arrows)
    •       Contour polygons
    •       Contour shell polygons
    •       Hole polygons
    •       Hole shell polygons
    •       Surface fill lines
    •       Infill lines
    •       Adhesion and support lines
    •       Polygons that appeared "open" but were "fixed" to include them anyway
  • Progress indication during slicing (also indicated by same colours for every phase)
  • Slicing is multithreaded where possible
  • Arc detection for polygons to see if it's a circle, so we could print an arc in GCode instead, but the firmware does not have this enabled, so it is commented out.

Progress

  • Algorithm + UI for basic slicing of 3D model (3D view for STL visualizer + 2D view for showing slices)
  • Erode perimeter with half the nozzle thickness (otherwise print will be too large)
  • [Deadline 14/11] Generate g-code for a perimeter of a single slice
  • And try 3D printing
  • Extend data structure to support holes in object/polygon
  • Generate second shell
  • Generate basic rectangular infill structure (line per line intersection between grid and polygon slices)
  • [Deadline 7/12] Extend g-code generation and 3D print simple object that does not require support structure
  • Calculate regions + generate paths (+ g-code) for floors and roofs
  • Try 3D printing a closed object (roofs + floors) that does not require support
  • Features + algorithms for support structure generation
  • [Deadline 6/01] Implement all other minimal requirements (e.g. basic UI controls for settings)

Problems

  • On rare occasions, some points or triangles disappear, resulting in layers or partial layers to be empty, probably in the algorithm to connect polygons
    • They go away resulting in other polies to be wrongly marked as contour or hole
  • Zigzag support sometimes disappears on some layers
  • Stringing issues, despite doing the same things as Cura. Some strings cause the connections to be solid.
  • Overlapping shells are not joined together, but are removed.
  • Sometimes "phantom surfaces" are found and filled in, although visually there shouldn't be one

TODO

  • Scale slider naar 1 dim ==> 1.0 == 1 mm
  • Sliders met textfield voor manual input (of sliders weg en enkel [real scale; percentage])
  • Clipper (polygon intersection etc)?
  • 2de viewport voor 1 slice te previewen => met slider voor slice te selecteren
  • Slice preview met kleuraanduiding in object of bovenkant object wegnemen om slice te zien
  • Nozzle thickness parameter
  • Indicatie van grootte
  • XY translate en rotate op object voor te slicen (=> transform individual polygons...)
  • Slice opstellen door uinion van vlak met dikte NozzleThickness en object (met Clipper?)
  • Slice opstellen door triangle en plane intersection ipv 3D intersection
  • Add ambient light ~~
  • Basic SliceModel class with slice plane and sliced model preview
  • Add brim/skirt (erode to outer on slice 0)
  • Make offsets for every contour/hole and then union them
  • Surface (floor/roof) herkenning
    • ✔ Refactor code to split generation
    • ✔ Subtract Layer+1 from Layer+0 for roofs
    • ✔ Subtract Layer+0 from Layer+1 for floors
    • ✔ Add to separate list
  • Surface invullen met patroon => denser infill, mss met offsets ipv rects or zigzag?
    • ✔ Shells en dense infill beter 1.5*nozzle thinkness => Cura
    • ✔ Dense infill korte segmentjes verwijderen na clipping
      • ✔ OF Line clipping in de plaats => Paths met lines clippen met inner shell
  • Overhang herkenning voor support (diff van subtraction > nozzle width => support needed)
  • Support toevoegen voor overgang
  • Check Cura output to identify stringing issue? Nothing found...
    • ==> The solution is probably to retract and reset extrusion if the travel distance to the next polygon is too big (>5 mm or something)
  • Report schrijven

About

A 3D model slicer for Computational Fabrication course that generates G-code.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages