← Back to context

Comment by gmueckl

1 day ago

How? The printer only ever retrieves G code for individual parts without any knowledge of what they are going to be assembled into. There is no viable way to solve this classification problem on this kind of incomplete data, is there?

That's broadly how it works today, yes: The printer itself has no concept of what it is printing. It's just running some heaters and spinning some motors in response to gcode.

Since such a printer is incapable of determining whether or not this gcode represents a legislatively-restricted item and then blocking its production, then that machine becomes illegal to sell in New York. Easy-peasy. It just takes a quick vote or two and the stroke of a pen, and it is done.

You're probably thinking something like "But that doesn't work at all," and I agree. But sometimes legislators just don't care that they've thrown out the baby along with the bathwater.

It depends how you define the problem. Certainly a human can look at a part and say "that's a lower reciever" but you probably can make something that functions as a firearm exclusively from inconspicuous parts. For the more limited case, an AI can definitely be trained, the broader case is likely unsolvable.

Btw, AFAIK they also want to lock down the slicer.

  • How the hell can you do that.

    GCODE is mostly about pure maths and geometry (well, there's other stuff but in principle). They would forbid math? "Euclid is illegal."

    • If I remember correctly, they want the gcode to be watermarked. Or signed?

      Maybe gcode watermarked and slicer signed? I can't remember. Something silly, that is for sure.

It’s not nearly that hard of a problem. There are n gun files on internet, so validate the hash of those n files (g code whatever). These people aren’t cadding their own designs.

  • One big part of this is that gcode isnt really a 3d model its a set of instructions on how to move the printhead around. You don't download the gcode directly, because that varies by printer. You download a model, and then a slicing program turns that into a set of printer-specific gcode. Any subtle settings changes would change the hash of this gcode.

    And the printer doesn't really know what the model is. It would have to reverse the gcode instructions back into a model somehow. The printer isn't really the place to detect and prevent this sort of thing imo. Especially with how cheap some 3d printers are getting, they often don't really have much compute power in them. They just move things around as instructed by the g-code. If the g-code is malformed it can even break the printer in some instances, or at least really screw up your print.

    There are even scripts that modify the gcode to do weird things the printer really isn't designed for, like print something and then have the printer move in such a way to crash into and push the printed object off the plate, and then start over and print another print. The printer will just follow these instructions blindly.

    • Given that quite simple G-code, say a pair of nested circles with code for tool changes/accessory activation, can make two wildly different parts depending on which machine it is run on:

      - a washer if run on a small machine in metric w/ flood coolant

      - a lamp base if run on a larger router in Imperial w/ a tool changer

      and that deriving what will be made by a given G-code file in 3D is a problem which the industry hasn't solved in decades, the solution of which would be worthy of a Turing Award _and_ a Fields Medal, I don't see this happening.

      A further question, just attempting it will require collecting a set of 3D models for making firearms --- who will persuade every firearms manufacturer to submit said parts, where/how will they be stored, and how will they be secured so that they are not used/available as a resource for making firearms?

      A more reasonable bit of legislation would be that persons legally barred from owning firearms are barred from owning 3D printers and CNC equipment unless there is a mechanism to submit parts to their parole officer for approval before manufacturing, since that's the only class of folks which the 2nd Amendment doesn't apply to, and a reasonable argument is:

      1st Amendment + 2nd Amendment == The Right to 3D Print and Bear Arms

  • Guns can be made out of simple geometric shapes like tubes, blocks, and simple machines like levers and springs. There is mathematically no way to distinguish a gun part from a part used in home plumbing - in fact you can go to the plumbing section of your local hardware store and buy everything you need to build a fully functional shotgun.

  • The g-code is not being distributed, because it's specific to each printer, filament, etc. G-code is not the same thing as a STP or STL file.

  • Seems trivial to create an infinite number of inconsequentially (but hash defeating) different variants.

  • In 3D modeling, there are parametric files where the end user is expected to modify the input parameters to fit their needs. So for example, if you have multiple parts that need to fit together, you may need to adjust the tolerances for that fit, because the physical shape will vary depending on your printer settings and material.

    Making tiny modifications isn't just a method of circumvention, it's like part of the main workflow of using a 3d model.