Photonsters / Slicer

Photon Open Slicer - Command Line Slicer usable as MeshMixer plugin or as standalone
GNU General Public License v3.0
52 stars 11 forks source link

Feature Request: Auto Slice from drop Folder #10

Open rsilvers129 opened 5 years ago

rsilvers129 commented 5 years ago

Currently Meshmixer has a way to to work directly with OpenSlicer, but there is a problem - Meshmixer crashes endlessly, and the support seems to be a random-number generator. I cannot do the same operation two times in a row and get the same result. It is sad because it is otherwise so cool.

Netfabb, however, is great, and Autodesk has put all their cards into that and seemingly abandoned Meshmixer, or at least put an intern or two on it. Also, people like B9. So my proposed feature is a way for OpenSlicer to work with ANY layout program automatically. It would work like this:

http://forum.makergear.com/viewtopic.php?t=1324

Set up a folder that is monitored by OpenSlicer, and, when an STL is written to it by B9 Creator, Meshmixer, Netfabb, or other program, it gets sliced automatically. It would parse the file name for layer size and erosion. So, if a file were saved as yoda-lh-50-hsc-1.stl, it would print at a layer height of 50 microns and do a horizontal size compensation of minus 1 pixel (could also allow + values).

X3msnake commented 5 years ago

wouldn't it be better if it just opened a slicer window with a gui for selecting the options? that way we could have a XML that had the list of resin brand Type and respective settings for each layer slice height

Robert Silvers notifications@github.com escreveu no dia sexta, 4/01/2019 à(s) 15:18:

Currently Meshmixer has a way to to work directly with OpenSlicer, but there is a problem - Meshmixer crashes endlessly, and the support seems to be a random-number generator. I cannot do the same operation two times in a row and get the same result. It is sad because it is otherwise so cool.

Netfabb, however, is great, and Autodesk has put all their cards into that and seemingly abandoned Meshmixer, or at least put an intern or two on it. Also, people like B9. So my proposed feature is a way for OpenSlicer to work with ANY layout program automatically. It would work like this:

http://forum.makergear.com/viewtopic.php?t=1324

Set up a folder that is monitored by OpenSlicer, and, when an STL is written to it by B9 Creator, Meshmixer, Netfabb, or other program, it gets sliced automatically. It would parse the file name for layer size and erosion. So, if a file were saved as yoda-lh-50-hsc-1.stl, it would print at a layer height of 50 microns and do a horizontal size compensation of minus 1 pixel (could also allow + values).

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/Photonsters/Slicer/issues/10, or mute the thread https://github.com/notifications/unsubscribe-auth/AKke-kvzsP5XXi9rBmiJWe0S6xzdTuOvks5u_3C8gaJpZM4Zp0g9 .

-- Com os melhores cumprimentos, Vinicius Silva

rsilvers129 commented 5 years ago

Yes, that would be better.

NardJ commented 5 years ago

@X3msnake @rsilvers129 Not quite sure if I understand: Open a gui to select settings when it detects a new file... or let the use manually open a gui to select a file and its slice settings?

X3msnake commented 5 years ago

i think its like having a ini with the folder default and slice the file that gets dropped there. i may be wrong tho.

No dia sábado, 26 de janeiro de 2019, Nard Janssens < notifications@github.com> escreveu:

@X3msnake https://github.com/X3msnake @rsilvers129 https://github.com/rsilvers129 Not quite sure if I understand: Open a gui to select settings when it detects a new file... or let the use manually open a gui to select a file and its slice settings?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Photonsters/Slicer/issues/10#issuecomment-457849251, or mute the thread https://github.com/notifications/unsubscribe-auth/AKke-oyQ6yO0ujIO9Sn6mmrcXx8aPYMVks5vHJBcgaJpZM4Zp0g9 .

-- Com os melhores cumprimentos, Vinicius Silva

rsilvers129 commented 5 years ago

You have the slicer start with Windows 10 or and it watches a folder. You can use Netfabb, Asura, Meshmixer, B9, or some other program to lay out and add supports. You then save the STL into that folder that the slicer is monitoring. When it sees the file added, it pops up a GUI and you can pick layer height, exposure, and erode parameters. It then slices and makes a photon file, and then asks where to save that photon file with the GUI.

This will do two things. One is that it will allow people to use any layout program and make Photon files. The other is that it will do the important erode function that only Formware has.

Some nice features would be that the GUI should remember your previous settings at the very least, and even better if it has presets that you can configure and name and then just select one or add new presets.

NardJ commented 5 years ago

@rsilvers129, @X3msnake Done in development branch. Needs testing.

Usage:

  1. python PhotonSlicer.py -s ./STLs/monitor -g True -f False
  2. python PhotonSlicer.py -u True
  3. python PhotonSlicer.py -s ./STLs/monitor -g True -f False -u True

1) This will monitor the subdir ./STLs and autoslice in openGL 2) This will popup a window to input settings and slice 3) This will monitor and popup window for new stl

Autoslice can be in CPU mode with progress in console (-g False -f True), CPU mode with progressdialog (-g True -f True) or in GPU mode with OpenGL window (-g True -f False).

image

PNG's as input/output will not work correctly in user interface. Must be fixed.

rsilvers129 commented 5 years ago

I will test it today. This is great.

rsilvers129 commented 5 years ago

$ python PhotonSlicer.py -s ../STLs -g True -f False Traceback (most recent call last): File "PhotonSlicer.py", line 31, in from Stl2Slices import * File "D:\3D\Slicer\Stl2Slices.py", line 14, in import pyximport; pyximport.install() ModuleNotFoundError: No module named 'pyximport'

NardJ commented 5 years ago

Can you try to install pyximport with ‘pip install pyximport —user’ ?

rsilvers129 commented 5 years ago

First I got this:

$ ./pip.exe install pyximport --user Collecting pyximport Could not find a version that satisfies the requirement pyximport (from versions: ) No matching distribution found for pyximport

Then I tried again but installed cython.

Then I got:

$ python PhotonSlicer.py -s ../STLs -g True -f False Traceback (most recent call last): File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyximport\pyximport.py", line 215, in load_module inplace=build_inplace, language_level=language_level) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyximport\pyximport.py", line 191, in build_module reload_support=pyxargs.reload_support) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyximport\pyxbuild.py", line 102, in pyx_to_dll dist.run_commands() File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils\dist.py", line 966, in run_commands self.run_command(cmd) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils\dist.py", line 985, in run_command cmd_obj.run() File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\Cython\Distutils\old_build_ext.py", line 186, in run _build_ext.build_ext.run(self) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils\command\build_ext.py", line 339, in run self.build_extensions() File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\Cython\Distutils\old_build_ext.py", line 194, in build_extensions self.build_extension(ext) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils\command\build_ext.py", line 533, in build_extension depends=ext.depends) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils_msvccompiler.py", line 345, in compile self.initialize() File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils_msvccompiler.py", line 238, in initialize vc_env = _get_vc_env(plat_spec) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils_msvccompiler.py", line 134, in _get_vc_env raise DistutilsPlatformError("Unable to find vcvarsall.bat") distutils.errors.DistutilsPlatformError: Unable to find vcvarsall.bat

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "PhotonSlicer.py", line 31, in from Stl2Slices import * File "D:\3D\Slicer\Stl2Slices.py", line 15, in import rleEncode File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyximport\pyximport.py", line 462, in load_module language_level=self.language_level) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyximport\pyximport.py", line 231, in load_module raise exc.with_traceback(tb) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyximport\pyximport.py", line 215, in load_module inplace=build_inplace, language_level=language_level) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyximport\pyximport.py", line 191, in build_module reload_support=pyxargs.reload_support) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pyximport\pyxbuild.py", line 102, in pyx_to_dll dist.run_commands() File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils\dist.py", line 966, in run_commands self.run_command(cmd) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils\dist.py", line 985, in run_command cmd_obj.run() File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\Cython\Distutils\old_build_ext.py", line 186, in run _build_ext.build_ext.run(self) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils\command\build_ext.py", line 339, in run self.build_extensions() File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\site-packages\Cython\Distutils\old_build_ext.py", line 194, in build_extensions self.build_extension(ext) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils\command\build_ext.py", line 533, in build_extension depends=ext.depends) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils_msvccompiler.py", line 345, in compile self.initialize() File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils_msvccompiler.py", line 238, in initialize vc_env = _get_vc_env(plat_spec) File "C:\Users\Robert Silvers\AppData\Local\Programs\Python\Python37-32\lib\distutils_msvccompiler.py", line 134, in _get_vc_env raise DistutilsPlatformError("Unable to find vcvarsall.bat") ImportErro

X3msnake commented 5 years ago

Hey @NardJ we need a requirements.txt file that way it is easier for people to install :)

Like this one I made for PFE https://github.com/Photonsters/PhotonFileEditor/blob/master/requirements.txt

USAGE: pip install -r requirements.txt

This does not invalidate the binary release, but it makes life easier for those that want to go the CLI way :)

NardJ commented 5 years ago

Done, requirements.txt is present.

(Add ‘—user’ if install returns permissions error.)