<languages/>


DLL_EXPORTS


void drf_clear_errors()
Descr:Borra todos los mensajes de error del almacenamiento interno de la librería dinámica.

int drf_get_num_errors();
Descr:Obtiene el número de mensajes de error almacenados por la librería dinámica.
Return:número de mensajes almacenados.

const char* drf_get_error(int idx)
Descr:Obtiene el mensaje de error indicado por idx (referenciado a 0).
p:idx: Número de mensaje a obtener. Rango entre: 0 y (drf_get_num_errors()-1) ambos incluidos.
Return: Éxito: Puntero a una cadena de caracteres ASCII terminada por el byte NUL ('\0')
        Error: NULL en caso que el valor de idx esté fuera de rango.

int drf_to_json(char *path,FILE *json,int options)
Descr:Serializa a JSON un archivo DRF.
p:path: Ruta al fichero DRF a serializar en formato Windows ANSI.
p:json: puntero FILE ya abierto y con la escritura habilitada.
p:options: Selecciona que información se serializará. Valores possibles:
   DRF_GET_GENERIC_INFO
   DRF_GET_MACHINE_INFO
   DRF_GET_DRAFT_INFO
   DRF_GET_ALL_INFO
o una combinación de los valores anteriores via or bit a bit

Return: Éxito : retorna valor igual a 0
        Error : retorna valor diferente de 0


TAGS

JSON encoding:

The DRF, internally, stores the infromation as a tag list. Each tag may contain one or several elements

A DRF is encoded as a JSON object where each tag is codified as a key value pair where the tag name is the key and the tag contents the value. If the tag may contain more than one element then it is serialized as a vector

Since the DRF format supports more data types than JSON, this library also converts the data type to a one supported by the JSON. The following table shows to which JSON data types are converted each of the DRF's data types.

    DRF  | JSON   
  -------+--------
  byte   | 
  int16  | int
  int32  |
  -------+-------
  float  | float
  -------+-------
  string | string*

*) Todos los strings contienen solo caracteres ASCII (encoding:ASCII-7)


TAGS GENERIC INFO


*Software string
Nombre del programa que ha generado el fichero .DRF

*DrawName string
Referencia del dibujo (max. 256 carac).

*Company string
Compañía que ha creado el dibujo (max. 30 carac).


TAGS MACHINE INFO


*Machine string
Referencia de la máquina. (max. 30 carac) 

*MachineType string
Modelo de la máquina. Sólo es válido un modelo definido en el sistema de diseño. (p.e. LEAVERS)

*Description string
Descripción o información adicional de la máquina.

*Serial string
Num. serie de la máquina. (max. 30 carac) . Puede contener carácteres no numéricos.

*Version int32 [RASCHEL SU]
Versión de la máquina raschel SU (versión 1 .. 4).
   versión 1 . Sin ahorrador de memoria
   versión 2 . Con ahorrador de memoria (repeticiones)
   versión 3 . Sin ahorrador de memoria + información empresa.
   versión 4 . Con ahorrador de memoria (repeciciones) + información empresa.

*Jacquard int32
Número de barras de Jacquard independientes. Valores posibles: 
   0 : No jacquard
   1 : 1 jacquard o fina barra simple
   2 : 2 jacquard raschel o fina barra doble.

*Fronture int32 [RASCHEL DOUBLE NEEDLE BAR]
Número de fonturas de la máquina
   1 : 1 fontura
   2 : 2 fontures (delante / detrás)

*BarsRepeat int32
Altura del diseño.

*NumRepeats int32
Num de repeticiones en el diseño.

*NumBars int32
Numero de barras que tiene el telar.

*Plate int32
En máquinas raschel (textronic), indica la posición de la plancha.
En máquinas leavers indica donde empiezan los brodeurs.

*JacqNeedles int32
Numero de agujas de Jacquard del telar.

*MachNeedles int32
Numero total de agujas del telar.

*BarsOffset int32
Desplazamiento de barras (orillos=zona perdida)

*JacqOffset int32
Deplazamiento de las agujas de jacquard en el telar.

*MaxDisp int32 [RASCHEL SU]
Deplazamiento máximo general de las barras para máquinas raschel SU.

*Proximity int32
Para máquinas raschel, distáncia máxima a la que se pueden acercar dos barras del mismo grupo.

*ProximityCollindant int32
Para máquinas raschel, distáncia máxima a la que se pueden acercar dos barras del mismo grupo colindantes.

*JacqRt int32
Deplazamiento Rt del jacquard:

para máquinas raschel:
   no jacquard: rt = 0
   jacquard simple o doble: rt = 1
Indica cuántas agujas se desplaza la lectura del jacaquard en las pasadas alternadas.

para máquinas leavers
   no fina barra:      0
   fina barra simple: -1
   fina barra doble:   0
Indica cuántas agujas se desplaza la lectura del jacquard (desde la posición derecha de la máquina en las pasadas alternadas).

*JacqRtCourse int32
Indica que pasadas se aplica el valor JacqRt.
   0:pasadas pares
   1: pasadas impares

*FinalGauge float
Galga de producto tejido aplicando encongimiento (medida en agujas/pulgada)

*FinalQuality float
Calidad de producto tejido aplicando elasticidad (medida en pasadas/centímetro).

*RealGauge float
Galga de máquina (medida en agujas/pulgada)-

*RealQuality float
Calidad de máquina (medida en pasadas/centímetro).

*Shrinkage float
Porcentage de encongimiento en agujas (0-100%)

*Elasticity float
Porcentage de elasticidad en pasadas (0-100%)

*BarNumBar int32(NumBars)
Numero de cada una de las barras del telar (valor numérico consecutivo)

*BarName string(NumBars)
Nombre o identificador de cada una de las barras del telar

*BarGroup int32(NumBars)
En máquinas raschel el número de grupo de la barra.

*BarStop int32(NumBars)
Posición 0 de la barra.

*BarUtil int32(NumBars)
Visibilidad de la barra en el sistema de diseño.

*BarType int32(NumBars)
Tipo de hilo por defecto de la barra.

*BarMaxGimp int32
Guimpada máxima en agujas de la barra.

*BarDrive int32
En máquinas raschel SU, el número de getribe de la barra.

*BarFactor int32
En máquinas raschel SU, multiplicador de la barra.
1: factor de 1 agulla
2: factor de 2 agulles,
4: factor de 4 agulles.
...


*BarInvert int32
En máquinas raschel SU, les barres invertides. 
1: barra invertida.
0: barra no invertida.

*BarWork int32
Trabajo de la barra en el sistema de diseño.

   0: Chainette
   1: Jacquard     [1]
   2: Brodeur
   3: Gros
   4: Fin
   5: Brillant
   6: Picot
   7: Corde
   8: Lycra
   9: Fond
  10: Bloc
  11: Cord
  12: Guimp
  13: Nul
  14: Jacq 0/2,6/4 [1]
  15: Jacq 0/2,8/6 [1]
  16: Fine Bar.  [sup]
  17: Braquette"
  18: Jacquard     [2]
  19: Jacq 0/2,6/4 [2]
  20: Jacq 0/2,8/6 [2]
  21: Fine Bar.  [inf]
  22: Jacquard
  23: Fine Barre
  24: Fallplate
  25: Embrodery
  26: EFS
  27: Reservé 1
  28: Reservé 2
  29: Jacq 0/2,6/4
  30: Jacq 0/2,8/6
  31: Bord
  32: Lisieres
  33: Romaines
  34: Sonnette
  35: Guimp devant
  36: Petite Corde
  37: Fileur
  38: Separation
  39: Corde Termo
  40: Solv rom
  41: Vis
  42: Jacquard     [3]
  43: Jacquard     [4]
  44: Space Fabric


*BarKnit
En máquines raschel textronic tipous de lligada:
  0 : no planxa
  1 : lligada 1 (mecanica)
  2 : lligada 2 (binaria)
  3 : lligada 3 (mecánica (2))
  4 : lligada 4 (binària (2))

*BarTimes
En máquines raschel textonic temps de la lligada
  0 : no planxa
  2 : temps 2 (p.e) 0202 0202 0202
  4 : temps 4 (p.e) 0220 0220 0220

*BarMode
En máquines raschel textronic el mode la la barra:
  0 : mode A (p.e 0220)
  1 : mode B (p.e 2002)

*BarModif int32
En máquines raschel textronic indica que la barra no es pot deslligar
  0 : no es pot deslligar
  1 : si es pot deslligar

*BarTension int32
Tensió de la barra a les simulacions.

*BarNumFingers int32(NumBars)
Número de pasadors de la barra

*BarModeDrop int32(NumBars)
Ponderación de cada uno de los 7 bits que se usan para indicar el desplazamiento de la barra. Valores:

 Valor | B7 | B6 | B5 | B4 | B3 | B2 | B1
 ------+----+----+----+----+----+----+----
    0  |  8 |  8 |  8 |  4 |  2 |  1 |1/2
 ------+----+----+----+----+----+----+----
    1  | 16 |  8 |  8 |  4 |  2 |  1 |1/2
 ------+----+----+----+----+----+----+----
    2  | 16 | 16 |  8 |  4 |  2 |  1 |1/2
 ------+----+----+----+----+----+----+----
    3  | 32 | 16 |  8 |  4 |  2 |  1 |1/2
 ------+----+----+----+----+----+----+----
    4  |  8 |  8 |  8 |  8 |  4 |  2 | 1
 ------+----+----+----+----+----+----+----
    5  | 16 |  8 |  8 |  8 |  4 |  2 | 1
 ------+----+----+----+----+----+----+----
    6  |  4 |  4 |  4 |  4 |  2 |  1 | 1
 ------+----+----+----+----+----+----+----
    7  |  0 |  0 |  0 |  1 |  2 |  1 |1/2
 ------+----+----+----+----+----+----+----
    8  |  4 |  4 |  4 |  4 |  2 |  1 |1/2


*BarMaxDesp int32(NumBars)
Desplazamiento máximo de la barra en agujas

*BarActive byte(NumBars)
Sólo para maquinas EL. Indica si la barra esta en uso o no.

*BarHalvesUp byte(NumBars)
Si en la pasada se incrementa la posición de la barra en BarHalvesUp agujas o más, entonces , se añade media aguja a la posición final.

*BarHalvesDn byte(NumBars)
Si en la pasada se decrementa la posición de la barra en BarHalvesDwn agujas o más, entonces , se le resta media aguja a la posición final.

*BarString int32(NumBars)
Valors:
0:
1:ple
2:1f 1x
3:1x 1f
4:buit


*BarFronture int32(NumBars)
Solo se usa en las máquinas de doble frontura. Da la frontura en la que empieza a trabajar la barra.Valores:
0: primera forntura
1: segunda frontura

*BarDropsUtil int32(7*NumBars)
indica como se deben perforar los 7 posiciones correspondientes a la barra:

Valor:
0: Usado. Siempre a 1. Es decir: no perforar nunca
1: Usado, Se perforara o no en funcion del desplazamiento de la barra
2: Usado. Siemre a 0. Es decir, se perfora siempre
3: No usado. No se perfora

*FingerStop int32(num_fingers) num_fingers=BarNumFingers(0) + ... + BarNumFingers(NumBars-1)
Stop del pasador relativo al stop de la barra.

*FingerType int32(num_fingers) num_fingers=BarNumFingers(0) + ... + BarNumFingers(NumBars-1)
Tipo de pasador.

*CGF1Card int32
ha de estar a 0.

*CGF1Type int32
Número de columnas útiles en el cartón.

*CGF1Taille int32
Número de columnas totales que caben del cartón.

*CGF1Numlines int32
numero de entradas de las que consta la especificación del cartón.

*CGF1Script string(CGF1Numlines)
Lista de cadenas de caracteres que detallan como se ha de perforar  cada columna del cartón empezando por la columna de mas a la derecha.
Cada cadena de caracteres tiene el formato: <codigo de tipo> <espacio> <numero de repeticiones>. Ex: "LC 1".
Los codigos de tipo validos son:
   LC: Laçage
   TC: Trou de centrage
   TS: Trou de centrage simple
   EL: Element vide
   GF: Gros fil
   VB: Value

*CGF1Descrip string(CGF1Numlines)
Descripción de cada entada del cartón.

Ex:

  CGF1Script | CGF1Descrip
 ------------+--------------
   "LC 1"    |  "Laçage"
   "TC 1"    |  "Trou de centrage"
   "GF 6"    |  "braquettes"  
   "GF 4"    |  "stum"                                                                                                      
   "GF 30"   |  "guimpes"                                                                                                    
   "TC 1"    |  "Trou de centrage"                                                                                            
   "LC 1"    |  "Laçage"                                                                                                       
   "GF 26"   |  "guimpes"                                                                                                
   "GF 4"    |  "stum"                                                                                                   
   "GF 6"    |  "braquettes"                                                                                               
   "GF 3"    |  "brodeus"                                                                                                  
   "TC 1"    |  "Trou de centrage"                                                                                         
   "LC 1"    |  "Laçage"                                                                                                      
   "GF 39"   |  "brodeus"                                                                                                 
   "TC 1"    |  "Trou de centrage"                                                                                           
   "LC 1"    |  "Laçage"                                                                                                    
                                                                                                                           
                                                                                                                          
  L T                GF39                   L T G   GF6  GF4          GF26            L T               GF30           GF4  GF6  T L
  C C _____________________________________ C C F  ____  __  ________________________ C C ____________________________  __  ____ C C
  1 1/                                     \1 1/3\/    \/  \/                        \1 1/                            \/  \/    \1 1
/------------------------------------------------------------------------------------------------------------------------------------\
|    OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO    |
| O  .O.O.O.OOOOOOO.OOO.OOOOOO.O.O.OOOOOOOOOO  OOOOOOOOOOO..O..OO...O.OO.....O..O..OOOO  OO...O...OOO.OOOOO...O.....O..OO..OOOOOO  O |
|    OOOOO.OO.O...OOO..O..OO.OO.OOOO.O..OO.O.  OOOOOO...OOOO.O.OOOO..O.OO.OOO..O.O.O...  ..OOO.OO..O.OO....O.O..O.OOOOOOOOOOOO...    |
|  ().OO.OO...OOOOOOOO.OO...O.OOOO..OO....O..()O..OOOOOOOOOOO.O....OO..O..OOO..OO.O.O..()OO.....OOO...OO..OO.O.OOO.OO.OOOOOOOOOOO()  |
|    ........................................  ...............OO..OO..O.......O........  ...........O...O...O.O...O...O..........    |
| O  .O....OO.O.O....O.O.OOO..O.O.OO.O..OOO.O  ..O...........OOO.OOO.OOOOOOO.OOO.OOO.OO  OOOOOOOOOOOOOOOOOOOO.OOOOOOOOO..........  O |
|    O.OOOOOOO.O.OOOO.O.OOOOOO.O.OOOO.OO.OOO.  OOO..........OOOOOOOOOOOOOOOOOOOOOOOOOO.  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..........    |
\------------------------------------------------------------------------------------------------------------------------------------/    

*CGF2Card int32
ha de estar a 0.

*CGF2Type int32
Número de columnas útiles en el cartón.

*CGF2Taille int32
Número de columnas totales que caben del cartón.

*CGF2Numlines int32
numero de entradas de las que consta la especificación del cartón.

*CGF2Script string(CGF2Numlines)
Especificación del cartón. Formateado igual que CGF1Script.

*CGF2Descrip string(CGF2Numlines)
Descripción de cada entada del cartón.

*CFBCard int32
ha de estar a 1.

*CFBType int32
Número de columnas útiles en el cartón.

*CFBTaille int32
Número de columnas totales que caben del cartón multiplicadas por 8.Ex:
si el cartón tiene 75 columnas CFBTaille=75*8=600

*CFBNumlines int32
numero de entradas de las que consta la especificación del cartón.

*CFBScript string(CFBNumlines)
Especificación del cartón. Formateado igual que CGF1Script. Excepto que los tipos aceptados
son:
   LC: Laçage
   TC: Trou de centrage
   TS: Trou de centrage simple
   EL: Element vide
   FB: Fine barre
   VB: Value

Es decir el tipo "GF" no existe para este tag y en su lugar hay el tipo "FB"

*CFBDescrip string(CFBNumlines)
Descripción de cada entada del cartón.

*CFBNGaits int32
Número de entradas para mapear las repeticiones de agujas de Fine Barre a los cartones en función de la repetición.

*CFBGaitNRepeat int32(CFBNGaits)
Número de repetición a mapear

*CFBGaitNBar int32(CFBNGaits)
Número de aguja a mapear

*CFBGaitNGait int32(CFBNGaits)
Indice de agujero en el cartón





TAGS DRAFT DATA


*NumCourses int32
Numero de pasadas del dibujo sin tener en cuenta las repeticiones.

*BarNeedle int16(NumCourses*NumBars)
Despazamientos medidos en agujas de las barras en cada pasada. Ordenados de la siguiente manera:

   BarNeedle(0)              Desplazamiento barra 1 en la primera pasada.
   BarNeedle(1)              Desplazamiento barra 1 en la segunda pasada.
   .
   .
   BarNeedle(NumCourses-1)   Desplazamiento barra 1 en la última pasada.
   BarNeedle(NumCourses)     Desplazamiento barra 2 en la primera pasada.
   .
   .
   BarNeedel(NumCourses*2-1) Desplazamiento barra 2 en la última pasada.
   BarNeedle(NumCourses)     Desplazamiento barra 3 en la primera pasada.
   .

*BarNeedleB int16(NumCourses*NumBars)
Solo se utiliza en maquinas de doble frontura. Es equivalente a BarNeedle pero contiene la información
para la segunda frontura.

*BarHalves byte(NumCourses*NumBars)
Incremento de 1/2 aguja en el movimiento de la barra introducido manualmente por el diseñador desde el menú de Bareme


*BarKnitting byte(NumCourses*NumBars)
Indica en las maquinas que hacen 2 movimientos por pasada que movimiento se realiza
Valores:
 0 : Movimiento 0 0 . No liga
 1 : Movimeinto 0 1 . Liga
 2 : Movimeinto 1 0 . Liga
 3 : Movimeinto 1 1 . No liga


*BarKnittingB byte(NumCourses*NumBars)
Solo se utiliza en maquinas de doble frontura. Es equivalente a BarKnitting pero contiene la información
para la segunda frontura.

*Layout_JacqData byte(NumCourses*JacqNeedles*Jacquard)
Cada byte guarda un bit de Jacquard. Valores:
0: T
1: H

*Layout_FrontureData byte(NumCourses*JacqNeedles*Jacquard)
Solo se utiliza en maquinas de doble frontura. Es equivalente a Layout_JacqData pero contiene la información
para la segunda frontura.

*Layout_WBData byte(NumCourses*JacqNeedles*Jacquard)
Solo se utiliza en maquinas CLIPTRONIC . Contiene los datos para la barra de Embrodery(WB) en el mismo formato que
Layout_JacqData.

*LayoutCourNRepeats int32
Numero de repeticiones de pasadas. Las repeticiones de pasadas afectan por igual las barras de dibujo y el jacquard.

*LayoutCourNLayouts int32
Numero de bloques de pasadas a repetir

*LayoutCourRepeat int32(LayoutCourNLayouts)
Numero de pasadas que contiene cada bloque a repetir

*LayoutCourWhich int32(LayoutCourNRepeats)
indice del bloque que a repetir

*LayoutCourTimes int32(LayoutCourNRepeats)
numero de veces que se ha de repetir el bloque. Ejemplo:

Normalmente como los dibujos suelen ser bastante repetitivos, para ahorrar trabajo y memoria no se guardan todas las pasadas
del dibujo. En un dibujo como el siguiente :

    +------------------------------------------------------------------------------------------+
    |  ,~.~._,~.~._,~.~._,~.~._,~.~._,~.~._,~.~.    ,~.~._,~.~._,~.~._,~.~._,~.~._,~.~._,~.~.  | 
    | / O.O   O.O   O.O   O.O   O.O   O.O   O.O \  / O.O   O.O   O.O   O.O   O.O   O.O   O.O \ | 
    |( O:@:O O:@:O O:@:O O:@:O O:@:O O:@:O O:@:O )( O:@:O O:@:O O:@:O O:@:O O:@:O O:@:O O:@:O )| 
    | \ O'O   O'O   O'O   O'O   O'O   O'O   O'O /  \ O'O   O'O   O'O   O'O   O'O   O'O   O'O / | 
    |  )   . ,   . ,   . ,   . ,   . ,   . ,   (    )   . ,   . ,   . ,   . ,   . ,   . ,   (  | 
/\  | (  * -@- * -@- * -@- * -@- * -@- * -@- *  )  (  * -@- * -@- * -@- * -@- * -@- * -@- *  ) | 
 A  |  )   ' `   ' `   ' `   ' `   ' `   ' `   (    )   ' `   ' `   ' `   ' `   ' `   ' `   (  | 
 g  | / O.O   O.O   O.O   O.O   O.O   O.O   O.O \  / O.O   O.O   O.O   O.O   O.O   O.O   O.O \ | 
 u  |( O:@:O O:@:O O:@:O O:@:O O:@:O O:@:O O:@:O )( O:@:O O:@:O O:@:O O:@:O O:@:O O:@:O O:@:O )| 
 j  | \ O'O   O'O   O'O   O'O   O'O   O'O   O'O /  \ O'O   O'O   O'O   O'O   O'O   O'O   O'O / | 
 a  |  ·~·~·^·~·~·^·~·~·^·~·~·^·~·~·^·~·~·^·~·~·    ·~·~·^·~·~·^·~·~·^·~·~·^·~·~·^·~·~·^·~·~·  | 
 s  +------------------------------------------------------------------------------------------+
     Pasadas >

Si se mira lo que hay guardado en el archivo se encontraría algo similar a :
                     
    +---------------+
    |  ,~.~._,~.~.  |
    | / O.O   O.O \ |
    |( O:@:O O:@:O )|
    | \ O'O   O'O / |
    |  )   . ,   (  |
/\  | (  * -@- *  ) | 
 A  |  )   ' `   (  |
 g  | / O.O   O.O \ |
 u  |( O:@:O O:@:O )|
 j  | \ O'O   O'O / |
 a  |  ·~·~·^·~·~·  |
 s  +---------------+
     Pasadas >


Esto pasa por que se ha guardado solo una vez cada bloque que se repite. En este caso los bloques que se han usado:

     A      B        C
  +----+ +------+ +-----+
  |  ,~| |.~._,~| |.~.  | 
  | / O| |.O   O| |.O \ | 
  |( O:| |@:O O:| |@:O )| 
  | \ O| |'O   O| |'O / | 
  |  ) | |  . , | |  (  | 
  | (  | |* -@- | |*  ) |
  |  ) | |  ' ` | |  (  | 
  | / O| |.O   O| |.O \ | 
  |( O:| |@:O O:| |@:O )|
  | \ O| |'O   O| |'O / |  
  |  ·~| |·~·^·~| |·~·  | 
  +----+ +------+ +-----+

Se puede ver con facilidad que la sequencia de bloques para obtener el dibujo es: A B B B B B B C A B B B B B B C

LayoutCourNLayouts=3 pues hay tres bloques distintos ( A , B , C )

LayoutCourRepeat=Array(
   numero de pasadas de A,
   numero de pasadas de B,
   numero de pasadas de C
)

NOTA: El número total de pasadas ha de ser igual a la suma de pasadas de los bloques de repeticiones. Es decir:
NumCourses=LayoutCourRepeat(0)+...+LayoutCourRepeat(LayoutCourNLayouts-1)

Luego para codificar que se desea 1 repetición de A, 6 repeticiones de B y una repeticion de C se haria de la siguiente manera:

                         idx  |  LayoutCourWhich | LayoutCourTimes | Significado
                      --------+------------------+-----------------+------------------
                        _     |                  |                 |
                       /  0   |         1        |       1         | Bloque 1 (A) repetir una vez
                       |      |                  |                 |
                       |  1   |         2        |       6         | Bloque 2 (B) repetir 6 veces
                       |      |                  |                 |
                       |  2   |         3        |       1         | Bloque 3 (C) repetir una vez
LayoutCourNRepeats=6  <       |                  |                 |
                       |  3   |         1        |       1         | Bloque 1 (A) repetir una vez
                       |      |                  |                 |
                       |  4   |         2        |       6         | Bloque 2 (B) repetir 6 veces
                       |      |                  |                 |
                       \_ 5   |         3        |       1         | Bloque 3 (C) repetir una vez
                              |                  |                 |




*LayoutJacqNRepeats int32
Numero de repeticiones de agujas. Solo afecta el jacquard. Sigue el mismo sistema que las repeticiones de pasadas.

*LayoutJacqNLayouts int32
Numero de bloques de agujas a repetir

*LayoutJacqRepeat int32(LayoutJacqNLayouts)
Numero de agujas que contiene cada bloque a repetir

*LayoutJacqWhich int32(LayoutJacqNRepeats)
indice del bloque que a repetir

*LayoutJacqTimes int32(LayoutJacqNRepeats)
numero de veces que se ha de repetir el bloque.