Sprawa jest trywialnie prosta.
Trzeba mieć bitmapę w szarości i materiał podzielić na piksele, no na przykład 10x10mm.
Potem bierzesz z bitmapy kolejny piksel, przesuwasz się do kolejnego piksela na materiale i uruchamiasz podprogram wiercący tyle otworów na pikselu materiału jaka jest szarość piksela z bitmapy.
Skrypt do tworzenia takiego g-kodu napisze Ci średnio inteligentny student informatyki.