GithubHelp home page GithubHelp logo

ghostkeeper / convertto3mf Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 1.0 119 KB

Command-line application to convert 3D models to 3MF

License: GNU Affero General Public License v3.0

CMake 7.65% C++ 92.35%

convertto3mf's People

Contributors

ghostkeeper avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

thetier

convertto3mf's Issues

Error handling

I wish to implement some form of error handling. Some cases that need to be handled for certain are:

  • What happens when an input file is incorrectly formed? As far as possible, ConvertTo3mf should try to repair as far as it reasonably can, but if it's impossible to read out any data we should give an error message to let the user know.
  • Give an error message if the file can't be read for whatever reason (e.g. file doesn't exist, no read permissions, etc).
  • Give an error message if the file can't be written for whatever reason (e.g. no write permissions, not enough disk space, etc).
  • Give an error when running out of memory.
  • Give an error if the input file is not a known file type. Currently whichever file type returns the highest score would win, even if that score is extremely low. We need to implement a lower threshold for this and return an error if all file types report below that threshold.

Building a community

In order to improve usability and the feeling of openness around this application, we need to build a bit of a community around it. This includes:

  • Adding a Contributing page.
  • Adding templates for issues.
  • Writing down documentation better on how to build the application.

Support for textures

While this application serves my personal need in its current state, I'd like to expand its functionality to what other people might need. One of the pillars of this is to be feature-complete for 3MF. While there are many features in 3MF, one of the most prominent ones is the ability to store textures.

The OBJ format that ConvertTo3mf currently reads has support for textures as well. To implement this feature, we need to implement reading textures from OBJ, storing them in our intermediary data structure, and then writing them to the 3MF file.

Support for custom gecode per print z (Applications: M600 filament swap)

If there is an official way to include filament swap in the 3MF standard , then that should be the way to go.

However in the meantime at least for Prusa Slicer, the way they mark filament swap layer is via a file in ./Metadata/Prusa_Slicer_custom_gcode_per_print_z.xml, for example the content of that file may look like:

<?xml version="1.0" encoding="utf-8"?>
<custom_gcodes_per_print_z>
<code print_z="5.3000001907348633" type="0" extruder="1" color="#6CC52D" extra="" gcode="M600
G1 E0.5 F1500 ; prime after color change"/>
<mode value="SingleExtruder"/>
</custom_gcodes_per_print_z>

What was I am trying to do: I was trying to make a makefile that would generated 3mf files with filament swap at various z height

Support for colours

While this application serves my personal need in its current state, I'd like to expand its functionality to what other people might need. One of the pillars of this is to be feature-complete for 3MF. While there are many features in 3MF, one of the most prominent ones is the ability to store colours.

The OBJ file format that ConvertTo3mf is currently able to read also has the ability to store colours. We need to read those colours from that file format, store them in our intermediary data structure, and then write them out to the 3MF file.

Progress bar and progress messages

To reduce anxiety and increase users' willingness to wait on the result, we should implement a textual progress bar in the terminal for the entire conversion progress. Above or below this progress bar we should write down what the application is currently doing.

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.