gsch2pcb-gen_sub_pcb.sh

#!/bin/bash

# skrypt służy do generacji plików pcb dla podschematów
# generacja polega na zmienieniu oznaczen elementów na bazowym pcb podschematu
# tak aby byly one zgodne z autoamtycznie generowana nettlista
# (gdzie pozimoy w oznaczeniach elementow odzielane sa poprzez /)
#
# tak uzyskane schematy włącza sie do glownego pcb co przy powtarzalnych strukturach
# zaoszczędza sporo pracy z układaniem po kilka razy takich samych fragmentów



# generowanie plików konfiguracyjnych gEDA
echo -n "Generate gEDA rcfiles ... "

echo '; zapewniamy ze source jest poszukiwane w katralogu bierzacym' > gafrc
echo '(source-library  ".")' >> gafrc
echo '; zapewniamy ze symbole sa poszukiwane w katralogu bierzacym' >> gafrc
echo '(component-library ".")' >> gafrc

echo '; zapewniamy unikalnosc rdef jako zalosci poprzez poprzedzanie rdef z nizszego poziomu' > gnetlistrc
echo '; atrybutem rdef instancji tego poziomu odzielanej poprzez /' >> gnetlistrc
echo '; czyli dla R1 wlaczonego poprzez schemat podpiety do UKL1 bedzie to UKL1/R1' >> gnetlistrc
echo '(hierarchy-uref-separator "/")' >> gnetlistrc
echo '(hierarchy-uref-mangle "enabled")' >> gnetlistrc

echo "OK"



# sprawdzenie czy plik bazowy istnieje
basename="${1%.sch}"
if [ ! -e "$basename.sch" ]; then
  echo "$basename.sch nie istnieje"
  exit
fi



# generowanie PCB
echo "Generate pcb files:"

awk '
  BEGIN {
    FS="[ =]"
  }
  
  $1=="}" {
    if(is_ok)
      print source, name
    name=""
    source=""
    is_ok=0
  }
  
  $1=="refdes" {
    name=$2
  }
  
  $1=="source" && $2!="" {
    source=$2
    is_ok=1
  }
' "$basename.sch" | while read f n; do
  echo -n " * $basename.$n.pcb (based on \"${f%.sch}.pcb\") ... "
  if [ -e "${f%.sch}.pcb" ]; then
    sed -e 's#^Element[[]"\([^"]*\)" "\([^"]*\)" "\([^"]*\)"#Element["\1" "\2" "'"$n"'/\3"#g' \
    "${f%.sch}.pcb" > "$basename.$n.pcb" && echo "OK"
  else
    echo "ERROR (based file not exist)"
  fi
done



# wypisanie informacji końcowej
echo ""
echo "create new pcb file named $basename.pcb and use"
echo " \"File -> Load layout data to paste-buffer\" command"
echo "for insert all generating pcb files into $basename.pcb"
echo "next run \"gsch2pcb $basename.sch\" to prepare ${1%.sch}.new.pcb and $basename.net"
echo "load \"$basename.new.pcb\" and \"$basename.net\" into \"$basename.pcb\""

XHTML generated by highlight (http://www.andre-simon.de/) from gsch2pcb-gen_sub_pcb.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/gsch2pcb-gen_sub_pcb.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: '2014-01-07 19:27:43 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).