{"id":580,"date":"2012-06-26T13:27:59","date_gmt":"2012-06-26T13:27:59","guid":{"rendered":"http:\/\/www.budus.it\/Blog\/?p=580"},"modified":"2017-06-18T07:41:40","modified_gmt":"2017-06-18T07:41:40","slug":"proengineer-individuare-le-dipendenze-di-un-file","status":"publish","type":"post","link":"https:\/\/www.budus.it\/Blog\/proengineer-individuare-le-dipendenze-di-un-file\/","title":{"rendered":"Pro\/Engineer: Individuare le dipendenze di un file DRW (messa in tavola)"},"content":{"rendered":"<p>Ho realizzato uno script bash (gli utenti Windows possono utilizzarlo tramite <a title=\"MSYS\" href=\"http:\/\/www.mingw.org\/wiki\/MSYS\" target=\"_blank\" rel=\"noopener\">MSYS <\/a>) che consente di verificare, per ogni file DRW (le messe in tavola) contenuto nella medesima cartella dove si esegue il comando, se sono presenti tutte le dipendenze che servono per aprirlo (cio\u00e8 i file PRT e ASM).<\/p>\n<p><!--more--><\/p>\n<p>Specificando una cartella sorgente, nel caso in cui non trova le dipendenze, va a cercarle ed eventualmente copiarle in automatico nella cartella di esecuzione comando.<\/p>\n<p>Il sorgente dello script \u00e8 il seguente:<\/p>\n<pre>#!\/bin\/bash\r\n\r\n# $Revision: 1.1 $\r\n# $Date: 2012\/03\/19 13:14:02 $\r\n\r\n# By UDA'Software 2012\r\n\r\n# Questo file script serve per verificare se, nella cartella corrente,\r\n# i DRW presenti possono accedere a tutti i files necessari per essere\r\n# aperti.\r\n\r\n################################################################################\r\n#_______________________________________________________________________________\r\nif [ \"${1}\" == \"--help\" ]; then\r\n    cat&lt;&lt;EOF\r\n$0 [source_path]\r\n\r\nIl programma verifica, per ogni DRW trovato nella cartella corrente,\r\nse in quest'ultima sono presenti tutti i files necessari per aprirlo\r\ncorrettamente.\r\n\r\nSpecificando il parametro \"source_path\" (percorso origine), se un file\r\nnecessario non viene trovato nella cartella corrente, lo cerca nel\r\n\"percorso origine\" e, se lo trova, lo copia automaticamente in quella\r\ncorrente.\r\n\r\nEOF\r\n    exit 0\r\nfi\r\n\r\nsource_path=\"${1}\"\r\nif [ \"${source_path}\" != \"\" ]; then\r\n    SOURCE_COMPONENTS_DB=$(ls \"${source_path}\" | grep -i -e \"\\.asm\" -e \"\\.prt\" -e \"\\.frm\" | sort -n -t. -k3 -r | sed 's@^@:@')\r\nfi\r\n\r\n################################################################################\r\n#_______________________________________________________________________________\r\n# Genera la lista dei DRW.\r\nDRAWINGS_DB=$(ls | grep -i \"\\.drw\" | sort -n -t. -k3 -r)\r\n\r\n# Genera la lista degli ASM e dei PRT.\r\nCOMPONENTS_DB=$(ls | grep -i -e \"\\.asm\" -e \"\\.prt\" -e \"\\.frm\" | tr [:lower:] [:upper:] | sort -n -t. -k3 -r | sed 's@^@:@')\r\n\r\n################################################################################\r\n#_______________________________________________________________________________\r\nrm -vf PROE_check_drw_dependency.txt\r\n\r\n################################################################################\r\n#_______________________________________________________________________________\r\nIFS=$'\\n'\r\nfor drawing in ${DRAWINGS_DB}; do\r\n    drawing_name=$(echo \"${drawing}\" | sed 's@\\.[0-9]*$@@')\r\n    if [ \"$(echo \"${drawings_name_elaborated}\" | grep \"\/${drawing_name}\/\")\" == \"\" ]; then\r\n\tdrawings_name_elaborated=\"${drawings_name_elaborated}\/${drawing_name}\/\"\r\n\r\n\tprintf '* ANALISI DI: %s\\n' \"${drawing}\"\r\n\tprintf '* ANALISI DI: %s\\n' \"${drawing}\" | sed 's@$@\\r@' &gt;&gt; PROE_check_drw_dependency.txt\r\n\tdrawing_dependency=$(strings \"${drawing}\" | grep '^3 3 ' | awk '{print $3}' | sed 's@.*!@@')\r\n\r\n\tfor dependency in ${drawing_dependency}; do\r\n\t    is_family_table=$(echo \"${dependency}\" | grep -o '&lt;.*&gt;' | sed 's@\\(&lt;\\|&gt;\\)@@g')\r\n\t    if [ \"${is_family_table}\" != \"\" ]; then\r\n\t\titem_family_table=$(echo \"${dependency}\" | cut -f1 -d'&lt;')\r\n\t\tdependency=\"${is_family_table}\"\r\n\t    fi\r\n\r\n\t    dependency_found=$(echo \"${COMPONENTS_DB}\" \\\r\n\t\t| grep -F -e \":${dependency}.ASM\" -e \":${dependency}.PRT\" -e \":${dependency}.FRM\" \\\r\n\t\t| sed 's@^:@@' \\\r\n\t\t| tr [:upper:] [:lower:])\r\n\r\n\t    components_name_elaborated=\"\"\r\n\t    for item_dependency_found in ${dependency_found}; do\r\n\t\tcomponent_name=$(echo \"${item_dependency_found}\" | sed 's@\\.[0-9]*$@@')\r\n\r\n\t\tif [ \"$(echo \"${components_name_elaborated}\" | grep \"\/${component_name}\/\")\" == \"\" ]; then\r\n\t\t    components_name_elaborated=\"${components_name_elaborated}\/${component_name}\/\"\r\n\r\n\t\t    if [ \"${is_family_table}\" != \"\" ]; then\r\n\t\t\titem_FT_dependency_found=$(strings \"${item_dependency_found}\" \\\r\n\t\t\t    | grep \"^3 18 ${item_family_table}\" \\\r\n\t\t\t    | awk '{print $3}' \\\r\n\t\t\t    | sed 's@.*!@@' \\\r\n\t\t\t    | sort \\\r\n\t\t\t    | uniq \\\r\n\t\t\t    | tail -n1)\r\n\r\n\t\t\tif [ \"${item_FT_dependency_found}\" != \"\" ]; then\r\n\t\t\t    printf ' \\_ FOUND   : %39s [%s]\\n' \"${item_dependency_found}\" \"${item_FT_dependency_found}\"\r\n\t\t\t    printf ' \\_ FOUND   : %39s [%s]\\n' \"${item_dependency_found}\" \"${item_FT_dependency_found}\" | sed 's@$@\\r@' &gt;&gt; PROE_check_drw_dependency.txt\r\n\t\t\telse\r\n\t\t\t    printf ' \\_ FOUND   : %39s &lt;== [MISSING FT: %s]\\n' \"${item_dependency_found}\" \"${item_family_table}\"\r\n\t\t\t    printf ' \\_ FOUND   : %39s &lt;== [MISSING FT: %s]\\n' \"${item_dependency_found}\" \"${item_family_table}\" | sed 's@$@\\r@' &gt;&gt; PROE_check_drw_dependency.txt\r\n\t\t\tfi\r\n\t\t    else\r\n\t\t\tprintf ' \\_ FOUND   : %39s\\n' \"${item_dependency_found}\"\r\n\t\t\tprintf ' \\_ FOUND   : %39s\\n' \"${item_dependency_found}\" | sed 's@$@\\r@' &gt;&gt; PROE_check_drw_dependency.txt\r\n\t\t    fi\r\n\t\tfi\r\n\t    done\r\n\r\n\t    if [ \"${dependency_found}\" == \"\" ]; then\r\n\t\tprintf ' \\_ MISSING : %39s &lt;== [*]\\n' \"${dependency}\"\r\n\t\tprintf ' \\_ MISSING : %39s &lt;== [*]\\n' \"${dependency}\" | sed 's@$@\\r@' &gt;&gt; PROE_check_drw_dependency.txt\r\n\r\n\t\tif [ \"${source_path}\" != \"\" ]; then\r\n\t\t    source_dependency_found=$(echo \"${SOURCE_COMPONENTS_DB}\" \\\r\n\t\t\t| grep -iF -e \":${dependency}.ASM\" -e \":${dependency}.PRT\" -e \":${dependency}.FRM\" \\\r\n\t\t\t| sed 's@^:@@' \\\r\n\t\t\t| head -n1)\r\n\t\t    if [ \"${source_dependency_found}\" != \"\" ]; then\r\n\t\t\tprintf '   \\_ FOUND : %39s [%s]\\n' \"${dependency}\" \"${source_path}${source_dependency_found}\"\r\n\t\t\tprintf '   \\_ FOUND : %39s [%s]\\n' \"${dependency}\" \"${source_path}${source_dependency_found}\" &gt;&gt; PROE_check_drw_dependency.txt\r\n\r\n\t\t\tcp -v \"${source_path}${source_dependency_found}\" .\r\n\t\t\tCOMPONENTS_DB=$(ls | grep -i -e \"\\.asm\" -e \"\\.prt\" -e \"\\.frm\" | tr [:lower:] [:upper:] | sort -n -t. -k3 -r | sed 's@^@:@')\r\n\t\t    fi\r\n\t\tfi\r\n\t    fi\r\n\tdone\r\n    fi\r\ndone\r\n\r\n################################################################################\r\n#_______________________________________________________________________________<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ho realizzato uno script bash (gli utenti Windows possono utilizzarlo tramite MSYS ) che consente di verificare, per ogni file DRW (le messe in tavola) contenuto nella medesima cartella dove si esegue il comando, se sono presenti tutte le dipendenze che servono per aprirlo (cio\u00e8 i file PRT e ASM).<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[176,7,114,99],"class_list":["post-580","post","type-post","status-publish","format-standard","hentry","category-cad","tag-bash","tag-proengineer","tag-ptc","tag-script"],"_links":{"self":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/comments?post=580"}],"version-history":[{"count":4,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/580\/revisions"}],"predecessor-version":[{"id":891,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/580\/revisions\/891"}],"wp:attachment":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/media?parent=580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/categories?post=580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/tags?post=580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}