Outils d'utilisateurs

Outils du Site


machines:decoupe_laser:tsf

Ceci est une ancienne révision du document !


Le format de fichier TSF

Travail en cours sur l'analyse du format Trotec Spool FIle (TSF) pour voir s'il ne serait pas possible de le générer à la mano, voir avec un plugin inkscape.

Format du fichier :

<!-- Version: 9.4.2.1034>
<!-- PrintingApplication: inkscape.exe>
<BegGroup: Header>
<ProcessMode: Standard>
<Size: 10.00;10.00>
<MaterialGroup: Standard>
<MaterialName: Standard>
<JobName: bbb_sq10>
<JobNumber: 2>
<Resolution: 500>
<Cutline: none>
<EndGroup: Header>

:OK: Le format est assez lisible à première vue :

  • ProcessMode : Standard - j'imagine que c'est le type de gravure, :TODO: a voir avec d'autres types et comment ils sont configurés
  • Size : taille en millimètres du dessin
  • MaterialGroup: Nom du groupe de matériau utilisé (doit est défini dans JobControl sinon il utilisera 'Standard')
  • MaterialName: Nom du matériau utilisé (doit est défini dans JobControl sinon il utilisera 'Standard')
  • JobName: Nom du job tel qu'il apparaîtra dans la file d'attente
  • JobNumber: Position du job dans la fil d'attente
  • Resolution : résolution den DPI de l'image (utilisé pour le bmp destiné à la gravure mais aussi pour les système de coordonnées des polygones de découpe il semble)
  • Cultine : none ⇒ ne découpe pas le contour extérieur de la page du job (c'est une option dans les réglages d'impression)

:TODO: Jouer avec les differents réglages du driver trotec lorsque l'on imprime à partir d'inkscape pour voir ce que cela donne dans le tsf

Image BMP

<BegGroup: Bitmap>
<STBmp: 0;0>BMÊ^U^@^@^@^@^@^@>^@^@^@(^@^@^@Å^@^@^@Å^@^@^@^A^@^A^@.......<EOBmp>
<EndGroup: Bitmap>
  • Gros bloc binaire qui semble contenir … un BMP (au format windows puisqu commencant par BM ⇒https://fr.wikipedia.org/wiki/Windows_bitmap) en bichromie à la résolution indiquée dans le header
  • Après test de copie dans un fichier il s'ouvre tres bien avec n'importe quel editeur d'image… reste plus qu'a arriver a en generer un du meme type
  • premier test de génération à moitié concluant avec gimp, on retrouve bien l'image mais dans le mauvais sens et avec de mauvaises couleurs : regarder plus en detail la map des couleurs etc dans le BMP
  • il semble qu'en fait les image sont en miroir vertical dans les tsf
  • passer par l’intermédiaire d'un pbm pour générer le bmp permet d'avoir les bonnes couleurs, (et faire in -flip permet de l'avoir dans le bon sens)
  • :TODO: Tester les autres mode de gravure que Standard pour voir ce qu'il sort

:OK: Conversion d'une image png en bitmap N&B de façon assez brute (avec un flip sinon à l'envers dans JobControl):

convert image_source.png -flip pbm:- | ppm2bmp > image_nb.bmp

reste plus qu'a trouver comment generer un tramage sympa des images avec image magick

Polygones

<BegGroup: DrawCommands>
<DrawPolygon: 5;255;0;0;0;0;196;0;196;196;0;196;0;0>
<DrawPolygon: 2;255;0;0;0;0;196;196>
<DrawPolygon: 2;0;0;255;196;0;0;196>
<EndGroup: DrawCommands>
  • :OK: Partie découpe on a bien des polygones à couper devraient pourvoir se générer la la main \o/
  • Structure :
    • nombre de points ;
    • couleur : R;G;B;
    • points du polygone séparés par des ; x1;y1;y2;y2;x3;y3…
  • Les coordonnées semblent être en points et donc dépendent de la résolution : ici 196points = 10mm@500dpi

:TODO: Faire des truc un peu plus compliqué dans inkscape et voir ce qui sort.

:TODO: Générer des trucs un peu plus compliqué “à la main” et voir ce qui se passe ;)

Fichier généré

  • Premier fichier tsf généré “a la main” dans vi avec la conversion png⇒bmp décrite plus haut: 1 carré découpé de 10mm avec un logo fablab+texte gravé reversed.tsf.tar

Trucs utiles lors de l'analyse des BMP :

http://www.daubnet.com/en/file-format-bmp Description format BMP http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=15846

Petit script d'analyse des entêtes bmp pour comparer l'image qui vient de trotec et ce que je génère:

bmp_header_extractor.py
import os,struct,sys
 
if len(sys.argv) != 2:
  print 'Usage:python viewer.py bmpfile'
  exit(1)
 
filename = sys.argv[1]
 
header_keys = ('signature','file size','reserved','reserved','data offset','size','width','height','planes','bitCount','compression','image size','XpixelsPerM','YpixelsPerM','ColorUsed','ColorImportant')
header_fmt = '=2sihhiiiihhiiiiii'
palette_fmt = 'BBBB'*256
 
f = open(filename,'rb')
 
#read header
print '----Header----'
s_header = f.read(54)
for k,it in zip(header_keys,struct.unpack(header_fmt,s_header)):
  print "%s : %s" %(k,it)
 
#read palette
print '----palette----'
s_palette = f.read(1024)
palette = struct.unpack(palette_fmt,s_palette)
i = 0
while i < len(palette):
  print palette[i:i+4]
  i += 4
machines/decoupe_laser/tsf.1415665009.txt.gz · Dernière modification: 2014/11/11 01:16 par bumblebee