I think I've isolated one cause of "We're sorry, an error occurred while preparing this print"

I agree, and I think (hope) they will get there. The software is still in beta, so things are still changing. I’m just glad they added that check. I was freaking out that my Glowforge was broken when the issue happened to me. One thing that would be really nice is if they at least say if it failed because of a file issue or server issue.

That would be nice, but it won’t help much when making designs. At least, not until they add the ability to save changes to a design in the GFUI.

I’m not sure about illustrator, but in Inkscape you can “Make a bitmap copy” under the edit menu. I haven’t tried this yet, but I think it should work.

2 Likes

There used to be a specific error message (we don’t support transforms) or something in the PRU days, so this seems a regression…

2 Likes

That’s the part I’m not getting with this issue… Isn’t it already transformed by the time it gets to the GFUI? Or is the language to transform it built into the SVG instead? (The latter would be weird to me.)

I was replying to “how hard is it to apply a transform to a bitmap”, and what I meant was simply that the difficulty of implementing support for SVG transforms on bitmaps is a bit of an unknown since we don’t know the how the code is structured. If they’re using some open-source library, it might even be possible for one of us to contribute a fix.

This has been requested many many times. It usually gets derailed by an argument about the nature of the Glowforge software.

EDIT: This is the official recommendation from Glowforge. I think I’m allowed to state an opinion if it’s clearly labeled as such, so in my non-factual opinion, method number 1 in the official advice is batsh*t crazy. #2 only addresses Inkscape, so I’ll mention that there’s an equivalent in Illustrator.

1 Like

There are more things in heaven and Earth and SVG, Horatio…

1 Like

No.

My understanding is the SVG says here an image that has this transform. It is up to the reader of the SVG to apply the specified transform to the image.

3 Likes

That’s super-weird. But thanks for the info!

It is a bit odd for a flip but if it allows arbitrary rotations then it is really the only way. For example if you want your image rotated 45 degrees it becomes a diamond shape. Bitmaps are always rectangular so there is no way to store the rotated image as a bitmap unless you expand it 40% in each axis and add transparency. You have to read a rectangular bitmap and rotate it. GF don’t seem to be able to do that for some reason.

2 Likes

@chris1

Based purely on emotion and no practical knowledge, I have to say I agree with your subjective opinion.

(Good lord. I read that whole page a dozen times this week, and thought I’d tried everything on it. Missed the whole section on flipped images somehow.)

I’ll try re-rasterizing next time. Didn’t know that was an option.

(Illustrator has a bunch of “that won’t do anything, but I’m not gonna stop you” operations, and this looked to be one of those. Like, it’s not greyed out, 'cause it’ll work with some objects. Just not the one I have selected. But, similar ones.)

So, adobe speaks a different dialect of metadata?

Transform is part of the SVG standard that GF havn’t implemented. https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform. It isn’t metadata or anything Adobe specific. Same as the fillrule attribute that they ignore. They only have a partial SVG reader implementation.

3 Likes

So does rastering the image in Illustrator fix the issue, in that the transform would be executed in Illustrator, so the exported bitmap would be untransformed?

It sure would be nice if the error message communicated what the error was, so that you’d have a clue about how to fix it. I spent a day trying to get an image to print that has been mysteriously failing, and I think this error was the cause. Not being able to print a mirrored image (i.e. to engrave onto the back of translucent acrylic) is pretty odd.

Yes rasterising the image should apply the transform and create a new image that doesn’t need transforming.

1 Like

The plot is quite thick, as it turns out. I’ve been experimenting to try to find what is and isn’t supported, and some things are quite baffling. I started with a simple SVG:

<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1in" height="1.208in" viewBox="0 0 72 87">
  <title>logo</title>
  <image width="72" height="87" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABXCAYAAACnbQMJAAAACXBIWXMAAAsSAAALEgHS3X78AAAHS0lEQVR4XuWbz3XbOBCHv+jtfbVH3pQKolQQuQHFWwHtChJXkLgCJxVIrGBtNhCmgmgrCG88rraC7AFDm6JmAJAi9eft7z092wNYFD7ODAYg9OrXr18cS0mWz4E58EZ+zuTlUymvDfA3UFTpsvT0H1SvxgaUZPk18B5YEIYRqxIogKcqXT76ux6mUQAlWT4DPgHXwNTf+2BtgTXwdQzPGhRQkuULHJiFv+doKoD7Kl0WgX7RGgSQeMyK04Fp6xG4G8KjDgaUZPlnnNd0USmv77gQ2Rj95rgQfUdcQm/rvkqXn0OdfOoNSGakFW4QMXoEnjhgFhJPXeCS/rW384s2wG2VLq2b4FUvQEmW3wAPhBNwCXwF1lW63Ab6dlKS5VPgBvhA2LO2uJBbB/rtqTOgJMsfgI+BbiXOvdeBfoNIbtgnwqC+VOnyLtBnR50AJVm+wt01S73v1BBKsvwjDpTPs9dVurz1tO8oGlAEnEdcrA8aSl0lobfCn6OiIUUBioBzV6XLL572o0u86cHTJQpSEFAg52yBq74zxNiSmfYbdsgFywAvIEl+K6O5BP48Vzi1IiDd+nKmCSjwxhuc55w038RK6qcf6GPxRsFvmlG0wn7Dg5KxJNIFrkKeo1fJJS/V9uaQVXuVLssky6/Qb3id1N/u/SOGBwWWD2/7hpUsZj8QXwW3tQayvotRiYofRrOaj/YAiTv+bHcU9ZqtBMwD8cuSkAp6rto9s9sWd/PLpnGidLSS8mNXOEmWT5Ms/wvn2kPBARee35Isf5BwjZaMQQvXKUrU7ACSO71od0LyjmI3Je78k/7hFKOPwA+5Vhfd4sbU1o0weFbbg6y8c98lKUt5YM0abRXAPXAHXMnrTmyF+V8vmuG8KRqSjOXeaP7Q/OM5B3lyT1mly9eKXVWgdqpV4JLtOtCvnvGugRT/htyWjkVrkuU/0Re4r+tc1PQg03sM+56Slz0iSxvcIK5i4IC721W6XFfpsvau0ug6paMnEeFFTQ/6h/2QiPYeudM/scOq81aDJrnOA/basL4JUSnB8KJtlS7/APGgxD2a0Qb2VbFZsgpLcIXlwXDg2aNusSeNOd22gLUxToXJc4i9VzqBK8yCkjezZivvWqev5D0t6B87hNrasL+HF0Da4B5j3RR7W+HLGHBqSU2zNpp9Wx3PkjE+Kk0LgImQ1kLjSbHtSbxnpjRthgqrgO7QE/eigxd9V2yzJMtnE+wKtzDsbaWG/Rhwag+wrrVT03hUGPbFBHeQoK1te02iqVGjtFX0WSf1VeVW+hulycqLO5LaSUsnbywP0i6myfoAXWa/oWTNRgvFrkkb83yCnj+0mNT0TjNWB+zdHCDrmgvD3paahyxAsbPXTLEVik1VkuWrrqtxS5KLCqVJSyGxmmnbHRAfYgvFFuV9sma7wS0PBoGE/rlj37vQjBagQxTrffXsN2c4SP8qtoVii9YYgGK9rzk5DAWpDHXoqjEA9dVQkAbVGICswrMtdVrlMEizUIeuGgNQ7OAyw34IJC3/FYotWhagWC8oFJtaG7Uli1grX/WCFFi8hrTQjBP0xBb7wbQBLhSbpSuGh3TLLqSosgP4XbFtLEBRXoA72L0nqXGCkuJubEiF3XNHWtRsJ9jJMkaPht1a4e9pZEhfOiyatTF/n6B7wTRxTzm88m02dVgkjgkpasvFsydWTrBd8Nqwt2XNRlE7erXGghSphWEvJrLvUyqNUXlIVu6l0jRP3OGraJ0QkjbWskqXZT3NF0qH6w4fxLd5fmO0qTo2JEklWrQU8FIHWfvPN4Z9R+JFVsJenTkkK5U8gQCSAW6VTrF7umAfCIDzhqSNcVtv+jUrac0DZrEDawzI0tlBks8zU5rW9S9NQPf7/YAOTyll89t64gnnB8nabXze334GJLNZoXSeJe5UVpRkjXURkKROWrfM66rxRKe9WDW9qMvFLwxSe+22w2AHkJTlWi6aEj7zs6MLhbTjPXCEQ5xJ+EBV58MNAsB37nFDhyMwPu3tBwlBK9Qekvjn3cBleZIm30n7HxhbAHQ86gaX60m+LVer8JvS4+5cqieZgMRDrDXW/waSd9NeBmQl5V4XvjRIwe+LgXuGzkCHJmtdSk6KeuyjFFNN9bo7I3qSbxdxjgMYrShAcDmQCD+RscJQVVSINXXO4ZaEv124riK+p9pUtAfVOldPGgMO9AAE5wdpLDjQExCcD6Qx4cABgOD0kMaGAz2StKYTJe4N/ifAB8OBgQDBySBZGgQOHBhiTZ0o3DQNBgcGBARnAWlQODBgiDU1UrhpX/hranA4MLAH1RrakxL79EWtUeDASIBgOEiNqdzSaHBgREBwOKRj1DkhjQoI+kM6BzhwBEDQHdK5wIGRZjFLEbPbvfy+4gzgwJEBQRBSSEeFA0cKsaYC4ebT0eHACQBBL0gngQMnAgSdIJ0MDpwQEERBOikcODEg8EI6ORw4A0CgQjoLOHCCad4nKQE4FzgA/wHNQE6xrigmxAAAAABJRU5ErkJggg=="/>
</svg>

Then I tried adding various transform attributes to it.

  • transform="scale(0.5)" works
  • transform="translate(50 50)" works
  • transform="rotate(-45)" works (!)
  • transform="rotate(-180)" fails (?!)
  • transform="skewX(45)" works (seriously!)
  • transform="translate(50 50) rotate(-45) skewX(45) scale(0.5)" also works
  • transform="matrix(-1, 0, 0, 1, 72, 0)" fails
  • transform="matrix(0.5 0 0 0.5 0 0)" (equivalent of scale(0.5)) works (!!)

When I say works or fails, by the way, I mean at the printing stage. All of these load successfully into the GFUI, and after you click print it does the scanning thing for a while, goes to “Preparing your design”, and only then does it spit out an error, if it’s going to.

Just for fun, I applied the “fails” transforms to a simple vector rectangle, and they all worked, including the matrix flip.

So what is unsupported seems to be specific to images, and specific to some deeper aspect of the transform, not simply "we don’t reject matrix()".

My brain hurts.

11 Likes

Very impressive research. Makes me wonder what SVG library they’re using. If it’s open source, and we can figure out some bugs and contribute the fixes to the project, our Glowforge’s get better! :slight_smile:

3 Likes

I’m thinking it’s custom. Based on it failing at the preparing stage, the is presumably the cloud motion planning SVG-to-waveforms code, unfortunately, which would be secret sauce.

1 Like

Yeah, could be.

The long version of my post, which I actually did write a mountain of text on, also confirmed that the transformation issues weren’t triggered by vector shapes.

(The file that was failing had an engrave pass and a cut pass. Both had been grouped together in Illustrator, and transformed together, so those instructions were present. Disabling the engrave pass made it acceptable. Disabling the cut pass did nothing.)


Anyway, this research does help a lot.

I should be able to throw a quick “flip SVG in x” app together in Processing, which applies one of the transformations we know will get the job done.

That’d be less overhead than loading up Illustrator, and less obtrusive than going all the way back to Photoshop and having to re-assemble layers in Illustrator.

This idea holds promise.

2 Likes

Thanks for the discussion, all! I’m sorry for any inconvenience. As @chris1 pointed out, there’s an issue with our software in handling images that include flipped bitmaps and it looks like that what’s happening here. We will be making improvements in this area.

1 Like