pcb2pdf.sh

#!/bin/bash

tmpdir="/tmp"
tmpfile=`mktemp "$tmpdir/pcb2pdf.XXXXXX"`

init_page_list() {
  # pobranie spisu treści dla funkcji get_page_no
  CONTENT=`pstops -q '1000:0' $1 | ps2ascii | sed -e 's#[.] *#.#g' -e 's#[^a-zA-Z0-9.-]#\n#g'`
}

get_page_no_old() {
  page=`echo "$CONTENT" | egrep '^[0-9]+[.]'"$1"'$' | cut -f1 -d'.'`
  echo $(( $page - 1 ))
}

get_page_no() {
  page=`grep "%%Page: $1\b" ${tmpfile}-1.ps | cut -f3 -d' '`
  if [ "$page" != '' ]; then
    echo $(( $page - 1 ))
    return 0
  else
    echo 0
    return 1
  fi
}

convert_pcb2pdf() { (
  set -e
  cd $tmpdir
  
  base_name=`basename $1`
  base_name="${base_name%.pcb}"
  
  # drukowanie PCB jako mirror dla potrzeb termotransferu (str. "solder"):
  pcb -x ps --media A4 --mirror --psfile ${tmpfile}-1.ps "$2/$base_name.pcb" >/dev/null
  
  # pobranie numeru strony
  info="bottom"
  if ! pages=`get_page_no "$info 2"`; then
    info="top"
    if ! pages=`get_page_no $info`; then
      info="bottom"
      pages=`get_page_no $info`
    fi
  fi
  info="$info ($pages)"
  pstops -q "1000:$pages" ${tmpfile}-1.ps ${tmpfile}-2a.ps
  
  # drukowanie PCB dla potrzeb iformacji o rozmieszczeniu elementów
  pcb -x ps --media A4 --psfile ${tmpfile}-1.ps "$2/$base_name.pcb" >/dev/null
  init_page_list ${tmpfile}-1.ps
  pages=`get_page_no "topsilk"`
  pages="$pages,`get_page_no "bottomsilk"`"
  pages="$pages,`get_page_no "fab"`"
  pages="$pages,`get_page_no "topassembly"`"
  pages="$pages,`get_page_no "bottomassembly"`"
  pstops -q "1000:$pages" ${tmpfile}-1.ps ${tmpfile}-2b.ps
  
  gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$2/$base_name.pcb.pdf" \
  -f ${tmpfile}-2a.ps ${tmpfile}-2b.ps
  
  echo "$base_name: $info + addionals ($pages)"
) }

base_pwd=$PWD
for f in "$@"; do
  convert_pcb2pdf "$f" "$base_pwd" "true" || echo "dia2pdf fail for $f" > /dev/stderr
  rm ${tmpfile}*
done

XHTML generated by highlight (http://www.andre-simon.de/) from pcb2pdf.sh



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/usage_and_config/toolbox4electronic/soft4electronic/pcb2pdf.sh) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2015-09-06 23:17:28 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).