Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Embed GCODE Thumbnail #218

Open
Dealman opened this issue Apr 29, 2022 · 10 comments
Open

Embed GCODE Thumbnail #218

Dealman opened this issue Apr 29, 2022 · 10 comments

Comments

@Dealman
Copy link

Dealman commented Apr 29, 2022

Is your feature request related to a problem? Please describe.
No.

Describe the solution you'd like
It's possible to have slicers include a small thumbnail of the model, stored in the GCODE file. It would be real neat if we could have the option to embed this thumbnail when a print is started - instead of showing a still of the printer.

Describe alternatives you've considered
None.

Additional context
This is enabled like this in Cura:
image

@Dealman
Copy link
Author

Dealman commented Apr 29, 2022

The data for the thumbnail is commented out in the GCODE file and looks like this;

;Generated with Cura_SteamEngine 4.13.1
;
; thumbnail begin 128 128 6344
; iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAA7EAAAOxAGVKw4bAAASR0
; lEQVR4nO2deXBc1ZWHf+e+14t2WbItjG1sZEOwsSSbEAaCA2EmBAhgmyQsScw2A0VSU2QmIQ6ZGmoM
; WYqaxOUswzbMVM1MqiCxmcAYMIaQsEi2WWyDdyTLixZLrdZmWVur33LP/PG6pe5Wt3pRt2ST+7muen
; vLueece+695933DCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVC
; oVAoFAqFQqFQKBQKheIMhaZbgDOJ/1q/0JtXWPwQgJuJMR8EMHMLEb3e4vdvWLfBPxTedv16iAvyF5
; +79uGjJ6dR5EmjHCDEXbfMLf/cRSVbzinXr5Qc/RsB6Om3dwnC/5QUUhVLWg6gCsR5LOm3AzT0Dw/8
; 6Pjp6ZB7sigHCPH4Py6574oq739UnqvDAjAkCcwMLwFuAlo6LNQ3GyjKF3H2pmaGvP+bDx98c6rlni
; x/sQ6wef1St+UWFwmXWA7mmoYW80tLFrqqVy7Pw8wKHXqxCwAgBy2c6rLwwcER7GsMYtE8d4IjsgTw
; n0Ns/ODvHm4YmLKKTJK/CAfYvHFpGSytygYuEYQaBlUTeCmYPOFtGk8aKC/RULPYjYoyDQV5TksfGm
; F09lo4eMyAv9fG4vmJHCAEoVnKsyca6NMtQDZZvx6iylu10NZoBZhrSKMaSF4OG/OZiMLBm8J/I9zf
; MBkEIKb7d9p16EtbApS8ySzQBL2+6edVTweJHr5r3f6hpHtMI2etA2zeOC9PoPRiMK1gRg2DagCulk
; zFBDiWYoxaLJndIn/nUKGYz6kcJ7SVAOHvvcTXbf551X23/fDAu6nVauqZUgfYvHFpmYv1FZbkQqGz
; ZZqov+OHB48l2+/5ny2r0F1iBQmuZkYNgBUk6QKOkD9eq04HTRAIES2cASbnjWRASkAT8SNAbNQYgx
; aD+K0XNlQ96Rno/tGqx3zDmUmXO6ZkDPC9W+flfeGKGc8CdAcAPXxWAtiW/Oa77wfW/tsLR7vWr4de
; U7rsAsuiFUJDFZhWMLCcwLOZUwi+k+BIi4FZpRqqFrsxa4aOAq9zusGAhL/Xxv7GIAaGGZVzXRkdn8
; HHNKK1X3to//vZlHuy5NwBvnfrvLy5C4r+dNEC9+dNK+bkBBR4CfXNRtvsMq1d1+hiZuTnWqZ4NDQ7
; DrBssRsVM3TkJ3CARfMyc4AQNhgbBwb6/+Xex5pGsiL4JMl5FyDyPUsvPt/9+aWVbhQXaQgQYGsavC
; RRKIDeUzYMi+f6uq25pUXa6H6T8swMdo4K/YgI6zz2nWROeujE3QEAQANhXVFx0c2bf1H1t7etO/Be
; +pJml6w6wOb1S91aqb6MGFXMvJwJyzt77KpDxw0smONCeRmhsFQHPDpkwMRwrwV/r429jUEU5wvMKM
; 6mNOmRqIORHDMATOIBKQ4SL9I01P3vhmUb5YB85LbHDhupypltMnaA5zdcODOPvDUQqALjEgZXM2MJ
; GG4GACIIAF4Pob3bxol2E6bFKOmx4NYJls04PSjRdcqGIMcAaTXcLHdeC+e4YJiM0bkgI/wHDMDrFi
; gr1rJ5Wo2EWCdK6PrNG6ruve0HB/Zk79Cpk4oD0ItP1FzAJlcTsByMGiZUC8L80YgYahrxWpEgcsKn
; BJjHh0giZxvLRspTtlzgdRO8bqD7lMRwwITX7UgxYjCGRhhlxVqSIzgk6QLibE1VukbvvbSx5l/N0+
; ZPpjoaRDnAb39RXVCk0cUsZI0AXcKSqpm4GiYKCTQaAkOzo5QM5XETDJMhmcER/akz53K2ESKUZElV
; 6hx6iM3AQIAxEIhzRSiSBJZOT7TRrV0gPOIq1VdPdTTQ//tny/6pJF+rAbgaRBeCoRGLUSPRJDs9IQ
; jMjoEZISeI2NGJAICupZRlO3PIkqzRfkRVLg07X/plzU9L+/Y9fs1jsBLsljXEnsPB71s23w6iJQA0
; CvfHqRZMXNw6YNtjrX+01jxmcCJgJJgkeKYr1xSUdJyAmSGEk0zStNCrALRYHRK5ifDjvhnVH/zfxq
; qq1M+QGcJ/yvbt2BeAlMmnOKOkoSQhnDGAbY+NrWLTqkJQSo52puEYLHk5PWhjKCCjBrtj+gFMS2Jg
; WEbrjegS0mjXll9VPfL2+txN1wXZfKevx+r78NAIGJxyq0/vJE4LkOy8jjkBjSpFiARR5Axo6ZONhJ
; bN+MwCNxbPd2FWuYaCAgFvnkBhgUBFuYZ5s3UEghLM44bIHpD4SX9Zzc4Xf7lsSaZGntA2m944sU8y
; r2nymYGP64MRppmgpKkcEJxRfkQIoLBjhF5NK8HJJmBCGXNQMhWmucNCQb5A5VwXLvtsPr54fRn+5s
; ZyXP2FQtRc6MHcWTpMy+kmE+jwc7qm7XnlN9XreD3irUjJGA0ADh/ta152Ycknvaf5q0TQKsr1lDSR
; quKYgXyvwIxiDXkegq45BzEtxuCwRCDImDNTh66NXZBJuQ+ewpJpNGhoMUAMkHC+sW0gOCwx2GfB32
; nh4/oR7Kk3cMF890SndzHo2iP5Fdd94yuzd/xuW2f3pCwfYtSbNm1tfpEhHzxwzODGFiOlCJCq4irn
; ulBUQBgclugbkOjtt9Fz2kZPvw3DZMwsFfC6KaECz7oS4xCW5bwGRiROn7LQ1z6CvrYAevwmuk7ZGA
; 6Gxl8pOSBdThAfbflNzUMpZKaTEhVONr3W9O8M+eie+iCaO8zEXp+BUgQRAkGGv9dGq99CW5eFvgEZ
; WmQRU48cWWbKIkgMzrIEGvebkyBzQn/CMVD8kqcRNmx9ovqdLRuXLh5/xtQZ159s2tr0Yyn5yfcOjM
; DXHWcamqJyczWgyqJdcnaeqNZvM1waxR08M5zuUSbu+5NUhq7SXPrerU9UfzfFvNw44g4ofv/aie9K
; yZvr9gbQfdpOyTiJmVhdUf/oU1ZAYKbRHMBoNjVkeDBgj0aA+FpM7mRUANCvX3ui+p1Xn6qqTN30Do
; lGlLKo48Ray8Zb7+4J4PSgjDZWWoqYuLWn6EVxFSMIEMTQhPNKlIVOMZuE6ig0Gp3xABi75MzhEp5+
; p+5YNM4lxFWCtY+3PlnzANLQZsIpxbN7YA6J/jUjBu95a3cAwyMyLUNlK4TGFmbG6UEbmub0m+Ekkh
; AETRA0AXT3WUCqOY1clIi6BIIylOYeu1jGhFFvCDuBiNNFJFPuuMYEFBPomdeeXP7G1ieWLEjlUBPO
; KV9+uXvAYnnTUEAe+fOuAIKmTFkJ2eis4/3U0WOjME/A7YrvOAX5hMI8ge4+O3d9/MRij/8yIu0dme
; oJXyCzbUAL5YQzcbI45VpBnv2haDAhSVOML7zW1HH7DfO/0j+Iurd2B+Z8+bJ86DqN1jOnxDmBrgEL
; z9VxXoUOchGGhA5bd8NtB1FEEiNDEoV5Fj5uCE6BgDHixrmc4dIJLp1GWzgBUV2ADBVdJBc36vDJ61
; YsQM9se7JmjRXEfTd/f19bvI1Syipt2tZ6zCa+oee0HHjno8Bon5VJM8k0lIbLgWMGmtpNGBZQUKLh
; nPPyMPeCIsw81wvNLdA/JHHgqIH6piS5jFyUOHUoyhdYPM+FeGO80TEA4Kw1TEV3actE17u8OLDtqe
; q749k2rTZyx00Lvyigvb5wju65aoUX4+bvuSDmFG/vHsaCc3QsmufGrBkaios16C4BI2Cjf1Cio8fC
; 8TYTbV0W/vrSzNeXprewI5UdGB63QGEeweMmsHTuOhoYlrAlQ2RBl8lF4K0m4YGbvzMWDdLKK//+1a
; Z3mPhbTR2W9cGh0HWDybTwDKKAK9T9MDt37VhBCTNgw7adeZUQjiJc2uQUmo3WH12chTG9/RK+bhsd
; vTYGhiWA0D0JMdsnHmBMQmaiG13AgdefWv7N8D5pX1j43SvH/0DMDzY0G7z3yPgwO1mSVcKyObS4BG
; OLS+K5fi6cMY0wnHU9ZChrrFAEmkGE5/74TM0ftvxqWUVGV5aee/X4M0R4dP9RA580GVlVblLNhlYX
; ARFz6UjhotZ054gU5My102UkaljHAJjpqx6PfjDjS4vPvXL8x8T89K7DQRxvM9MXJtMSIzGPexNxrh
; y17myVtJiEg42qKGLQGcpElkxqpUkw7/iD7mDlrO37Rr7ucRPmzc79rYb5HscDWEZ/H9UlYMyYaROp
; sEz2z+xU8UlTgNjGEKuTiJXuGApIBA2um5TFXngB9g03iLVlLi5/e3fgmusvz8fsstSWT4+Rnpns0O
; 3a0QtMxwj3AEJk1M4mIVky0ncnTkWARMaOes/oG5BoPGmiodnktk7r3aY24/ETrb4/TrrJbtt2NLhq
; 1czVRbK49s1dw8tvvLIAkbd4pUMq9ZWSYYce4sPMoYst0dtooW6CsmvBtIlZ8Zv2jvH24AiLc+RrxK
; 7MjM5eGw3NJhpbTTS2msGuXusDJuwgS2456fd/EN4+KzH75Ze7B+78csl1JrDzjfeHF910ZQEK4z5L
; Z/J43ITYhzhFElaanpkPZpWM/S+q3w47e+jz6A9j76VktPgtNLaYONJiorHVGOgflDuYsF1K1Go+3+
; 6TQCCrMsbj7jXzF0l21RXlizk3rSyA1x1uitk74dCIxEm/hfkVOmaVChTma9A1gm0zhkYkuvps+Lpt
; VJRpyPfmxgmzwbiZS8SHeFPcyE0Mk3Gi3URDs2Pw422GPzDCO5lRK4E6n8+3F4CdihxZD5Jrb1pwCW
; nan8tLtNIbriiA25WLOOysMPa6CF4PQdcJtgWMGBIjRihNnf2qZZ+IVsyheB7PMYZGJBpbQ627xcSJ
; drPJtLmOmGotKXd2dHQczlSEnGjprlWLrgFh25xyzXPt5fnQ4yXCzwL7ZJvYQdrYqDwU5kO/9Q2E+u
; 8WE/XNhmzvtuttyXXMVMvM230+X0u2ZMqZGb61+vyva6BNC+a4xDWfzUu44iVTpst/0hrLTzQdC71h
; dtZJNrYaqHeMbvh7rP3hcA5gu8/ny8oK4HjkVI93r6r8jiQ8+ZkFblpZ48Vk7zM80xkdqCWYjgHOEr
; CTnRbqm0wcaTHQ2GoO9w3YH4Kp1mbeYVnWzq6ursGpkjnnKr9rVeWjELS+ZrEbly7xpDQ3Oxv8IG44
; j/O7YTFOtJloaDFxpNlAY6vZNxyUO4mpVsKqa2/v3A1g2h4QMSW6vnN15dNE9O2/WupB1WJP8h0mYh
; pjf/SALfq7MMOhAVtDs4mGZgNNPrMjaKCWgB2wrHdOdnYeQooj9KlgqtQp7lxTuVmAvnbVCi8uPC/J
; 0zbPAKLm3XEMHc5G9g1IHHEGazjSYnKr3zxh21TLQJ0wzdqTXV1Hp1by9Jiq5wTKEb9xZ95sT1nd3p
; FrvG7CeedM6mlbOSN6dB6TZWNG1ykb9U0mGloMNDSbtq/HPkSMOiZZGwxa27u7u9unQeyMmdKAeuut
; lSX5Br2t61hx/RUFmDMzt9cNEsI8LpzHm3+HM2zhFt7QbBqn+uVuAnawlO/S8PB7J/v7e7Mj1PQw5T
; 3qN1adX+EW9L7HTQtvvLIQ5SXZy9kmqkxs/jx2ZB7+aFpOhq2+yem/G1vM4cEA72TI7SRRazF/6Pf7
; z+hn/6bLtAyp1q5atFjTsKPAS7NvWlmAksIsJ+6ZJ5x7hwkEw/23Y/BjJ80ew8QOkKwlG3UnOzo+An
; L/mJbpZNpmXHeuqrxU0+hPxQWi5OaVBcjPS563T9jCwxdMML51h78HA32DNo40OwavbzLQ4rdapY3t
; TFxrWXK73+8/hDjjvU8z0zrlvueW868F6OXyEs1748oCeF2pXbyJzZ+PvY/YhhmdpxyDH24y0NBssq
; /bbgRzLRPXmabc3tnZeTxrlTlLmfacy72rF93Ogp8/d6ZL3HDF2E0nYRInXKINLyWjrcvGJ03OPQFH
; Wkyru08eBPE7sHmHKWVdZ2enP+cVOsuYdgcAgHvWLHoQhF8vnOOiL12WN/pwSQDx5+DgqAFbfZOBhh
; YzMDgs94BQSzbvGDaM7b29vf1TWpGzkDPCAQDg3lsW/RTAP6++uhCzZmjj5uGBoAxfHcMnTQaOt5n9
; wSDvDC16qPP5fLuQYNGDIjFnjAMAwD23LHp29dWF988u1dA/JFHfZOBwk4EjzSZOtJvdkrmWJbZLoN
; bn8+3Dp3yEPhWcUf9lzIKXjn17b8VFPW98MHR/q98aAKEOEtuZ6N329vaG6ZZPMXWcASv6FAqFQqFQ
; KBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoViuvl/rn
; YD2CbM2w4AAAAASUVORK5CYII=
; thumbnail end
;

@cameroncros
Copy link
Owner

If you want to add this feature, that would be great. I am happy to merge new features, but I wont development them myself.

@Dealman
Copy link
Author

Dealman commented Apr 30, 2022

Uh I might have a look at it, I've never worked on a plugin for OctoPrint before so it would be quite the journey to learn how to go about testing to make sure it works before I make a PR.

That said, it should be a rather easy implementation so long as all the slicers follow the same concept.

@cameroncros
Copy link
Owner

It isn't terribly difficult if you have python ability, I just don't have a lot of time to do it myself. I'll leave this ticket open in case you or someone else wants to work on it

@Dealman
Copy link
Author

Dealman commented Apr 30, 2022

I'm not a huge fan of Python but I know my way around it, if you could help me out with a few pointers I could probably have a go at implementing this later as I think it's a pretty neat feature. It may also be possible to do this via scripts, I guess? I set allow_scripts to true - but am unable to find documentation on how to work with this;

Here you can specify a file to be executed before and after each message is sent to Discord. The file should be executable by the user under which OctoPrint is running

Would this be the place where one would implement a method, for example get_thumbnail? If yes, how would I go about fetching the GCODE to parse it when a print is started?

def get_snapshot_camera(self) -> Optional[Tuple[str, io.IOBase]]:

@cameroncros
Copy link
Owner

cameroncros commented Oct 11, 2022 via email

@Dealman
Copy link
Author

Dealman commented Nov 27, 2022

image

Made some progress! Some clean up to do, and need to investigate other formats as it only currently works with Cura. I was gonna make it inside a separate python script, but I can't seem to import it whenever I try - do they have to be classes?

@cameroncros
Copy link
Owner

cameroncros commented Nov 27, 2022 via email

@a1co
Copy link

a1co commented May 21, 2023

image

Made some progress! Some clean up to do, and need to investigate other formats as it only currently works with Cura. I was gonna make it inside a separate python script, but I can't seem to import it whenever I try - do they have to be classes?

Would love to see that feature merged. Is it going to come?

@Dealman
Copy link
Author

Dealman commented May 21, 2023

I think I have the code laying around somewhere for it, but you'd be compiling your own version of the plugin for OctoPrint. I only ever so slightly dug into making a proper PR for it but was quickly reminded of how much I despise Python so I started working on other projects instead. 😅

If I recall correctly it, if it found a thumbnail in the GCODE it used that instead of a snapshot - so it wasn't a fully implemented feature but more of a workaround.

I can't make any promises, especially not since my printer is currently out of commission and as such finding motivation to work on this feature is quite low. 😞

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants