Pro/Engineer: Creare file postscript automaticamente delle messe in tavola (DRW)

Dovendo creare il file postscript (che in genere converto poi in PDF, tramite apposito script) delle messe in tavola presenti in una determinata cartella, ho realizzato uno Script Bash (da utilizzare con MSYS ) che automatizza la cosa, andando a creare un file TRAIL per Pro/Engineer.

Ecco il sorgente:

#!/bin/bash

# $Revision: 1.2 $
# $Date: 2011/10/07 10:03:41 $
# By UDA'Software 2011

## Questo script serve per creare un fail trail di PRO/Engineer; lo
## scopo del file trail sara' quello di creare il file postscript di
## ogni drawing contenuto nella cartella corrente.

################################################################################
#_______________________________________________________________________________
printf '\nPROE_make_ps_trail %s - By UDA'\''Software 2011\n\n' '$Revision: 1.2 $'
printf 'Sintassi:\n %s [drawing_list_file]\n'

################################################################################
#_______________________________________________________________________________
# Verifica la presenza di DRW nella cartella corrente.
if [ "${1}" == "" ]; then
    drw_list=$(ls *drw* | grep '\.drw\(\.[0-9]*\)\?$')
else
    if [ -f "${1}" ]; then
	drw_list=$(cat "${1}" | grep '\.drw\(\.[0-9]*\)\?$')
    else
	printf 'ERRORE: Il file (%s) non e'\'' stato trovato.\n' "${1}"

	exit 1
    fi
fi

if [ "${drw_list}" == "" ]; then
    if [ "${1}" == "" ]; then
	printf 'ERRORE: Nella cartella corrente (%s) non sono stati individuati Drawings PRO/Engineer.\n' "$(pwd)"
    else
	printf 'ERRORE: Nel file specificato (%s) non sono stati individuati Drawings PRO/Engineer.\n' "${1}"
    fi

    exit 1
fi

################################################################################
#_______________________________________________________________________________
# Crea il database dei files da elaborare
drw_list_purged=$(echo "${drw_list}" | sed 's@\.drw\.[0-9]*@.drw@g' | sort | uniq)

################################################################################
#_______________________________________________________________________________
# Verifica la presenza del trail
if [ -f PROE_PS_TRAIL.txt ]; then
    printf 'ATTENZIONE: Individuata presenza del file trail; vuoi sovrascriverlo ? (Y/n) '
    read ANSWER

    if [ "${ANSWER:-y}" == "n" ] || [ "${ANSWER:-y}" == "N" ]; then
	printf 'ERRORE: Non posso procedere oltre, devo abortire.\n'

	exit 1
    fi
fi

################################################################################
#_______________________________________________________________________________
# Crea l'header del file trail
printf '\n* SCRITTURA HEADER DEL FILE TRAIL PRO/Engineer.\n'
cat<<EOF | tr ':' '\r' > PROE_PS_TRAIL.txt
!trail file version No. 1301:
!Pro/ENGINEER  TM  Wildfire 2.0  (c) 1988-2002 by Wisdom Systems  All Rights Reserved.:
EOF

################################################################################
#_______________________________________________________________________________
# Elabora tutti i drawing
printf '\n* ELABORAZIONE DRAWING:\n'
IFS=$'\n'
for drawing in ${drw_list_purged}; do
    printf '> %s\n' "${drawing}"

    cat<<EOF | tr ':' '\r' >> PROE_PS_TRAIL.txt
~ Activate \`main_dlg_cur\` \`ProCmdModelOpen.file\`:
< 2 0.261926:
~ Select \`file_open\` \`Ph_list.Filelist\` \\:
1  \`${drawing}\`:
~ Activate \`file_open\` \`Open\`:
< 0 1.001481:
~ Activate \`main_dlg_cur\` \`ProCmdViewRefit.view\`:
~ Select \`main_dlg_cur\` \`MenuBar1\` \\:
1  \`File\`:
~ Close \`main_dlg_cur\` \`MenuBar1\`:
~ Activate \`main_dlg_cur\` \`File.psh_print\`:
~ Select \`print\` \`CascadeButton1\`:
~ Close \`print\` \`CascadeButton1\`:
~ Activate \`print\` \`Generic Postscript\`:
~ Activate \`print\` \`ToFile\` \\:
1 :
~ Activate \`print\` \`ToPrinter\` \\:
0 :
~ Activate \`print\` \`OK\`:
~ Activate \`Print_file\` \`OK\`:
~ Select \`main_dlg_cur\` \`MenuBar1\` \\:
1  \`Windows\`:
~ Close \`main_dlg_cur\` \`MenuBar1\`:
~ Activate \`main_dlg_cur\` \`Windows.psh_win_close\`:
< 0 1.041778:
EOF
done

################################################################################
#_______________________________________________________________________________
printf '\n* FINE ELABORAZIONE.\n'

################################################################################
#______________________________________________________________________________