Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
gxyrs(1)			      gxyrs				gxyrs(1)

NAME
     gxyrs - is a program to batch process XYRS files.

SYNOPSIS
     gxyrs file [OPTIONS]

DESCRIPTION
     XYRS  files  are  usually generated by PCB design programs, and are used by
     board assemblers.

     Format of XYRS files is discussed in FILES section.

     Processing of these files is often needed by board assemblers or  designers
     to suit their process and tools flows.

     gxyrs helps batch-processing these files. Rules and commands can be defined
     to make batch-processing easy.

     gxyrs  consists  on a perl library providing the core functions, and a perl
     script providing some basic functionality.

     It takes some arguments from the command line: input and output files, some
     modifiers, and an action-file or an action-string.

     The action-file or action-script contains some commands. For every line  of
     the  input  file,	gxyrs executes those commands, which can modify the con-
     tents of the line, and then writes the resulting line to the output file.

     Since gxyrs is written in perl, actions are also written in this language.

OPTIONS
     --help Display  a	usage  message	on standard  output  and  exit	success-
	    fully.   --verbose Display more information messages when processing
	    files.

     --process-comments
	    By default, gxyrs doesn't process lines starting with  '*'	and  '#'
	    characters.

	    It	just  copies these lines to the output, without further process-
	    ing.

	    With this option, it processes these lines as well.

     --tabulate
	    Give each field in the output file a fixed length, enough to contain
	    the longest string. 	   Using this  option  make  the  output
	    file easier to read by humans.

     --caseinsensitive
	    Ignore case distinctions when comparing patterns.

     --adjust FILE
	    File with the commands to process the input file.

     --eval PATTERN
	    Interpret PATTERN as the commands to process the input file.

     --output FILE
	    Save the output to the specified FILE.

	    If	FILE string is "-" (without double quotes), then output is redi-
	    rected to standard output STDOUT.

     --output-delimiter CHAR
	    Use the given CHAR as an output field delimiter.

PREDEFINED VARIABLES
     gxyrs defines automatically the following variables:

     REF_COL
	    column number (starting at 0) where the component reference is.

     FOOTPRINT_COL
	    column number (starting at 0) where the component footprint is.

     X_COL  column number (starting at 0) where the component's X location coor-
	    dinate is.

     Y_COL  column number (starting at 0) where the component's Y location coor-
	    dinate is.

     ANGLE_COL
	    column number (starting at 0) where the component rotation angle is.

     LAYER_COL
	    column number (starting at 0) where the component's layer side loca-
	    tion is.

     VALUE_COL
	    column number (starting at 0) where the component's value  is.  Usu-
	    ally this is the component's part number.

     LINE_NUMBER
	    this  is  the  line number of the input file that is being currently
	    processed.

     LINE   array where each array element is a field or  column  of  the  input
	    file's line being processed.

BUILTIN COMMANDS
     All  the following commands accept a checklist parameter.	A checklist is a
     list of one or more check_items.  A checkitem is a list of two single  ele-
     ments:

     column_number
	    is	the  data  index  number  'n'  of the global variable LINE to be
	    checked.  The first element of the data has the number 1.

     pattern
	    is the regular expression to be matched.

     The commands will only be executed on those lines that match all the check-
     items in the checklist.

     del_line checklist;
	    Delete the line (global variable LINE) if checklist is matched.

	    Returns -1 if error, 0 if not match, 1 if match and changed.

     rotate_comp angle_col, angle, checklist;
	    rotate the component the degrees given in angle parameter, if check-
	    list is matched.

	    The angle column number is angle_col.

	    Returns 1 if match and changed, 0 if not match, -1 if error.

     subst_col_val col, value, checklist;
	    Replace a column value by the  new	value  value,  if  checklist  is
	    matched.

	    Returns 1 if match and changed, 0 if not match, -1 if error.

     change_col_units units, column_numbers;
	    Change  units  of a given column number. More than one column number
	    can be specified.

	    Units is a string with the desired units.  Only  "mm"  (milimeters),
	    "in" (inches) and "mil" (thousands of an inch) are supported.

	    It is required that numbers to be converted are followed their units
	    (see supported units above). Otherwise, the number is not changed.

     add_number_to_col col_number, value, checklist;
	    Adds  a  number to the value in a given column number.  Note: offset
	    and the value to be changed can be in different units.

	    Returns -1 if error, -2 if warning, and 1 if success.

     translate_col_val col_number, string, substitution, checklist;
	    Translate a string in the column col_number if checklist is matched.

	    Substitution is an expression with the new string. Old column  value
	    can be used here.

	    Returns -1 if error, 0 if not match, 1 if match and changed.

	    Example:
	      translate 2, '^([0-9]+)n$','sprintf("%dnF",$1)', 3, 'C[0-9]+';
		if the value in column 3 is C followed by a number, then
		if  the value in column 2 is a number followed by 'n', translate
	    it to the same value followed by 'nF'.
		If there is 'C10' in column 3 and '10n' in column 2,
		change '10n' to '10nF'.

     mul_col_val col_number, factor, checklist;
	    Multiply the number in the specified column number col_number by the
	    given factor, if checklist is matched.

	    The number in the specified column number may have units at the end.

	    Returns -1 if error, 0 if not match, 1 if match and changed.

     swap_columns col_number1, col_number2, checklist;
	    Swap columns col_number1 and col_number2 if checklist is matched.

	    Returns -1 if error, 0 if not match, 1 if match and changed.

     insert_column col_number, new_column_value;
	    Insert a new column in the given col_number position (0 if it's  go-
	    ing to be the first column), with the value new_column_value.

	    Returns -1 if error, 1 if the new column was inserted.

RETURN VALUE
     The return value of gxyrs is an integer with the following possible values:

	  1 if the command found a match and the execution was successful

	  0 if there was no match

	  -1 if there was an error

	  -2 if there was a warning

FILES
     XYRS files
	    The format of these files is not standard, and depends on the appli-
	    cation used to generate it.

	    The data stored in these files is usually a header, and one line per
	    component of the board.

	    For  each component, at least the following information is needed by
	    assemblers:

		 - Reference

		 - Coordinates (X and Y)

		 - Rotation angle

		 - Side where the component is located (top or bottom)

	    There can be more information, such as description,  footprint,  but
	    this depends on the design program an its configuration.

	    This  information is organized in lines, one line per component, and
	    each line is divided in as much fields or columns as needed.   Field
	    delimiters	are  used  between columns, but field delimiters are not
	    standardized and they depend on the program  used  to  generate  the
	    XYRS file.

	    The  program  that	generates  the	XYRS file usually write a header
	    (usually the first two or thre lines in the file) with a column  ti-
	    tle.

	    gxyrs  tries  to guess the file format, and column numbers, based on
	    this header. Thus, the known column titles are the following:

		 - for reference designator: Designator, RefDesignator, RefDes.

		 - for footprint: Footprint, TopCell, Description (only if there
	    is no other "TopCell" column title).

		 - for X coordinate: Mid X, X.

		 - for Y coordinate: Mid Y, Y.

		 - for rotation angle: Rotation, rotation, Rot.

		 - for location side: TB, Side, top/bottom.

		 - for value: Comment, PartNumber, Value.

     Action files
	    An action file contains a list of  commands,  using  perl  language,
	    that can include any call to a built-in function or use any variable
	    defined by gxyrs.

	    Each  action file should end with the following line (with a carrier
	    return at the end of the line):

		 1;

EXAMPLES
     Run an action file:
	    Run  the  action  file   your_comands.txt	with   the   XYRS   file
	    your_xyrs_file.txt	and  write  the  output  result to the file out-
	    put_file.txt:

		 gxyrs	your_xyrs_file.txt --adjust  your_commands.txt	--output
	    output_file.txt

     Run a command specified in the command line:
	    Run    the	  commands    your_commands    wiith   the   XYRS   file
	    your_xyrs_file.txt and write the output  result  to  the  file  out-
	    put_file.txt:

		 gxyrs	 your_xyrs_file.txt --eval "your_commands" --output out-
	    put_file.txt

     Delete some lines matching a pattern.
	    Parse the XYRS file your_xyrs_file.txt, delete all lines having a  R
	    followed by a number in column number 2, and write the output result
	    to the file output_file.txt:

		 gxyrs	your_xyrs_file.txt  --eval  "del 2, 'R[0-9]+';" --output
	    output_file.txt

     Delete some lines matching a pattern, using the column number guessed by
     gxyrs.
	    Parse the XYRS file your_xyrs_file.txt, delete all lines having a  R
	    followed  by  a number in reference designator column, and write the
	    output result to the file output_file.txt:

		 gxyrs your_xyrs_file.txt  --eval  "del  \$REF_COL,  'R[0-9]+';"
	    --output output_file.txt

     Rotate some lines matching a pattern.
	    Parse  the	XYRS  file  your_xyrs_file.txt, rotate by 90Ao all lines
	    having a R followed by a number in reference designator column,  and
	    write  the	output result to the file output_file.txt. Use the rota-
	    tion  and reference column number guessed by gxyrs:

		 gxyrs	your_xyrs_file.txt  --eval  "rotate   \$ANGLE_COL,   90,
	    \$REF_COL, 'R[0-9]+';" --output output_file.txt

     Change all numbers to 'mm' units.
	    Parse  the XYRS file your_xyrs_file.txt, convert all numbers in col-
	    umn 3 and 5 to its equivalent in mm, and write the output result  to
	    the file output_file.txt:

		 gxyrs	your_xyrs_file.txt  --eval  "change_units  'mm',  3, 5;"
	    --output output_file.txt

     Replace a value matching a pattern with another value.
	    Parse the XYRS file your_xyrs_file.txt, if the value in column 3  is
	    "0.1u", then replace it with "100nF", and write the output result to
	    the file output_file.txt:

		 gxyrs	your_xyrs_file.txt --eval "subst 3 , '100nF', 3, '0.1u'"
	    --output output_file.txt

     Change the reference of a component with a value matching a pattern.
	    Parse the XYRS file your_xyrs_file.txt, if the value in value column
	    is "1n4148", then replace reference column with "D1", and write  the
	    output result to the file output_file.txt:

		 gxyrs	 your_xyrs_file.txt  --eval  "subst  \$REF_COL	,  'D1',
	    \$VALUE_COL, '1n4148';" --output output_file.txt

     Adds an offset to the X coordinate of a component with a reference having a
     R followed by a number.
	    Parse the XYRS file your_xyrs_file.txt, if	the  text  in  reference
	    column  is R followed by a number, then adds 102.5mm to the value in
	    X coordinate column, and write the output result to  the  file  out-
	    put_file.txt.

	    Value in column 3 can be in other units (for example: '640mil'):

		 gxyrs	your_xyrs_file.txt  --eval  "offset  \$X_COL, '102.5mm',
	    \$REF_COL, 'R[0-9]+' ;" --output output_file.txt

     Multiply the value of the X coordinate of a component by a number, if the
     component reference is having a R followed by a number.
	    Parse the XYRS file your_xyrs_file.txt, if	the  text  in  reference
	    column is R followed by a number, then multiply the value in X coor-
	    dinate  column  by 2.5, and write the output result to the file out-
	    put_file.txt.

	    Value in column 3 can be in other units (for example: '640mil'):

		 gxyrs	your_xyrs_file.txt  --eval  "mul_col_val  \$X_COL,  2.5,
	    \$REF_COL, 'R[0-9]+' ;" --output output_file.txt

     Swap two columns.
	    Parse  the XYRS file your_xyrs_file.txt, swap columns 3 and 4 if the
	    text in column number 4 is R followed by a	number,  and  write  the
	    output result to the file output_file.txt:

		 gxyrs	 your_xyrs_file.txt   --eval   "swap_columns  3,  4,  4,
	    'R[0-9]+' ;" --output output_file.txt

     Insert a column.
	    Insert a column in	the  first  position,  displacing  all	existing
	    columns to the right. Column value is 'new_column_value':

		 gxyrs	your_xyrs_file.txt  --eval  "insert_column  0, 'new_col-
	    umn_value';" --output output_file.txt

SEE ALSO
     regex(7), GNU regular expression manual

				 Agosto 22, 2010			gxyrs(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=gxyrs&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help