Autor
|
Thema: Datenimport per UNIX-Programm (1642 mal gelesen)
|
Helmut Zoellner Mitglied
Beiträge: 176 Registriert: 04.12.2000 Catia V4/V5 HP-UX, AIX, IRIX, Win2000;
|
erstellt am: 01. Okt. 2001 08:32 Unities abgeben:
Hallo,gibt es eine Möglichkeit, CATIA-Exportfiles über ein UNIX-Shellscript einzulesen? Ich habe an die 200 Datensätze, die ich in CATIA V4.2.2 einspielen muß, und jedes von Hand mit den Catutilities würde wohl ziemlich lange dauern. Bin für jede Hilfe dankbar. Gruss Helmut Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ijne Mitglied
Beiträge: 542 Registriert: 02.05.2001 Catia-Admin V4 und V5 auf Solaris, Irix, Aix,WinXP
|
erstellt am: 01. Okt. 2001 10:10 Unities abgeben:
Hallo ! Das Problem kenne ich und habe eine Lösung geschrieben. Kurze Erläuterung: Zuerst wir eine Importmaske erzeugt, im allgemeinen ist das die CATIMP.in , aufgrund dieser Einträge funktioniert der CATIMP.Was du zu tun hast, ist die Liste der zu importierenden Files zu erzeugen, ls -1 > /tmp/liste die Dateiname sollte auf ein gesundes Maß reduziert werden, also die Exportfiles umbenennen, damit die Namen nicht zu lang sind. Dann geht´s los. Das folgende Script muß evtl. auf eure Bedürfnisse d.h. Verzeichnis u.s.w. geändert werden.Bei uns ist noch ein wenig drumherum, um eine Tcl-Oberfläche benutzen zu können mit Projektunterscheidung. Hier die abgespeckte Version: #!/bin/ksh IMPORTFILES=/tmp/liste zeile='/ *DEFDSN M1 "/audi/odett-imp","ODETT-IMP" MODEL' date '+%m%d' | read DATE clk=1 cfk=1 for infile in `cat $IMPORTFILES` do cmdfile=$infile.in touch $infile.in echo $cmdfile corrt=n$DATE$clk corrf=m$DATE$cfk echo "/" >> $cmdfile echo "*PROJECT DEFAULT" >> $cmdfile echo "*GROUP catia" >> $cmdfile echo "*USER $USER" >> $cmdfile echo "*PASSWORD" >> $cmdfile echo "/" >> $cmdfile echo "/ -----------------------------------------" >> $cmdfile echo "/" >> $cmdfile echo "*READ FT08F001" >> $cmdfile echo "/ *DEFDSN FT08F001 /odett/eingang/$infile STORAGE_DEVICE" >> $cmdfile echo "*ALL" >> $cmdfile echo "$zeile" >> $cmdfile echo "*WRITE M1" >> $cmdfile echo "*CORPRJ $corrt" >> $cmdfile echo "*CORFIC $corrf" >> $cmdfile echo "*NOCATT" >> $cmdfile echo "*NOCPAT" >> $cmdfile echo "*NOCMAT" >> $cmdfile echo "*NOCANN" >> $cmdfile echo "*FORCE" >> $cmdfile echo "*REPLACE" >> $cmdfile echo "*IMPORT" >> $cmdfile clk=`expr $clk + 1` cfk=`expr $cfk + 1` done for infile in `cat $IMPORTFILES` do echo $infile catutil -l CATIMP -i $infile.in -o $infile.out done sleep 10 Gruß Jens. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
scarefaZ Mitglied
Beiträge: 29 Registriert: 22.08.2001
|
erstellt am: 04. Okt. 2001 06:41 Unities abgeben:
allerdings ist es wichtig, das die shell in der dieses script ausgeführt wird, das CATIA-Environment kennt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Helmut Zoellner Mitglied
Beiträge: 176 Registriert: 04.12.2000 Catia V4/V5 HP-UX, AIX, IRIX, Win2000;
|
erstellt am: 04. Okt. 2001 08:27 Unities abgeben:
Vielen Dank fuer die Hilfe, es hat geklappt.Gruss Helmut Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G.Graff Mitglied
Beiträge: 3 Registriert: 10.12.2001
|
erstellt am: 10. Dez. 2001 11:16 Unities abgeben:
Hallo ijne,kannst Du eventuell das ganze mit dem Makro etwas genauer beschreiben und wie es ausgeführt wird. Gruß
Günter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wpko Mitglied
Beiträge: 29 Registriert: 09.02.2001
|
erstellt am: 18. Dez. 2001 22:02 Unities abgeben:
Hallo Guenter,das was Jens dort gelistet hat ist kein MAKRO im Catia Sinn sondern ein UNIX-Shell Script. Um das ganze auszufuehren gehst du am besten wie folgt vor: 1. Suche dir ein Directory, in dem Du eine Datei anlegen darfst. Wenn du Admin-Rechte hast, so kannst du z.B. in das Verzeichniss /usr/bin schreiben. Das hat den Vorteil, dass dort ein Suchpfad existiert. Dadurch brauchst du nur den Dateinamen und nicht den ganzen Pfad beim Starten anzugeben. Die Such-Pfade stehen in der Variabeln $PATH. Diese wird in einer UNIX-Shell mit echo $PATH angezeigt. 2. Oeffne eine Datei mit beliebigem Namen (der sollte aber vorher noch nicht existieren) z.B. mit dem vi-Editor. Also: vi name <CR> nun Tippe den Buchstaben i fuer Insert. Leider wirst du erst mal keine Reaktion im vi-Editor sehen. Nun kannst du aber hier im Browser das Script von Jens bei gedrueckter linker Maustaste markieren. Evtl. noch die Copy-Taste bzw. mit der rechten Maustaste Copy auswaehlen. Dann mit der Maus in die Unix-Shell mit dem vi-Editor. Mit der mittleren Maustaste einfuegen bzw. mit der Paste-Taste. 3. Jetzt die <ESC> Taste druecken. Dadurch verlaesst du den Einfuege-Mode des vi-Editors und befindest dich auf Befehlsebene (im vi). Leider siehst du mal wieder keine Reaktion. Jetzt mit ZZ oder :w die Datei abschpeichern. 4. Damit du das Script auch ausfuehren kannst, braucht es noch Ausfuehrrechte. Das geht mit chmod +x name wobei name fuer den Namen der Datei steht, die du eben angelegt hast. 5. Nun kannst du das Script ausfuehren. Einfach name eingeben und es sollte starten. ich hoffe, ich habe nichts vergessen. Ansonsten melde dich doch einfach mal per e-mail bei mir. mfg. peter
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
savayar Mitglied
Beiträge: 129 Registriert: 23.08.2001
|
erstellt am: 19. Dez. 2001 13:58 Unities abgeben:
hm genauere infos wie man so ein script erstellt, also welche "comandostruktur" CATIA dabei verwendet? wäre interessant um sowas auch mit IGES oder VDA zu machenEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wpko Mitglied
Beiträge: 29 Registriert: 09.02.2001
|
erstellt am: 19. Dez. 2001 16:56 Unities abgeben:
Hallo,also, wichtig sind die Zeilen, die mit dem Befehl echo beginnen. Die schreiben die Eigendlichen Anweisungen in eine *.inp Datei. Was z.B. fuer den IGES Konverter benoetigt wird, kann man aus der *.inp Datei lesen, die Catia selber (CATUTIL) erzeugt. Der Name dieser Datei steht zur Laufzeit des Prgm. in der Shell. Es handelt sich hierbei nicht um die CATIMP.in sondern um eine Datei im /tmp Bereich. Diese Datei ist allerdings nur zur Laufzeit des Konverters dort zu finden (wird danach sofort geloescht). Daher am besten schnell kopieren. Die Angaben in den jeweiligen Steuerdateien sollten reichen, um sich selbst etwas aufzubauen. Weitere Dokumentation ist z.B. in der IBM Catia-Doku sowie auf den Online-CD's enthalten. WICHTIG !!! Der ganze Mist mit den Steuerdateien stammt noch von den Grossrechnern. und die waren auf 80 Zeichen pro Zeile begrenzt. Daher moeglichst kurze Dateinamen verwenden. mfg peter
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ijne Mitglied
Beiträge: 542 Registriert: 02.05.2001 Catia-Admin V4 und V5 auf Solaris, Irix, Aix,WinXP
|
erstellt am: 20. Dez. 2001 12:19 Unities abgeben:
Hi Leute ! Der Catimp per Script ist kein Problem, aber bei Iges sieht die Sache schwieriger aus , da der Zwischenschritt des iif dazukommt. Aber vielleicht sind hier auch noch andere außer wpko und mir, die solche Scripte haben. Es gibt vielleicht noch bessere Lösungen, wobei ich mittlerweile ein komfortables Tcl-Script habe. Da braucht man nur noch Maus-schubsen und Knöppe drücken.Jens Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meurth Mitglied
Beiträge: 97 Registriert: 16.11.2001
|
erstellt am: 02. Jan. 2002 12:03 Unities abgeben:
Hallo, also ich mache das auch per Skripte, die aus einer TCL-Startmaske gefüttert werden. Wie bereits beschrieben, muß zuerst diese catige.in erzeugt werden (ich mache dabei auch gleich die Dateinamen kuerzer). Anschliessend mache ich sofort dir IIF Umsetzung : # cd $TMP ls *.model > $LISTE sed "s/.model//" $LISTE > $LISTE_ohne sed "s/+-/ /g" $LISTE_ohne > $LISTE# Erzeugen "catige.in" Datei zum Input der Routine cd $TMP exec 3<$LISTE while true do read -u3 zeile if [[ $? -ne 0 ]] then break fi # model=$(print $zeile | awk '{print $1}') MODEL=$(print $zeile | sed "s/ /_/g") IGES=$(print $zeile | sed "s/ /_/g").igs echo "****** "$zeile # Erstellen catige.in echo "*PROJECT DEFAULT" > catige.in ... ... # Ausfuehren CATIGE-Utility catutil -l catige -i catige.in -o catige.out.$MODEL rc=$? echo "RC="$rc $zeile >> $TMP/catige.prot if [ $rc -eq 0 ] && [ -f $TMP/$IGES ] then if [ -f /usr/catia/cfg/code/steplib/TI0IGESP ] then TI0IGESP -c -f /home/$ADMIN/igesinp.data $TMP/$IGES else igesp -c -f /home/$ADMIN/igesinp.data $TMP/$IGES fi rc=$? if [ $rc -eq 0 ] && [ -f $TMP/$IGES".iges" ] then mv $TMP/$IGES".iges" $TMP/$IGES else echo IIF to IGES process failed fi grep UNSUCCESSFULY $TMP/catige.out.$MODEL >> $TMP/catige.prot fi done Anbei noch der Inhalt der igesinp.data : * SAMPLE OPTION FILE FOR IGES BASE PRODUCT * START SEE IGES PROCESSOR PROGRAMMERS' REFERENCE AND OPERATIONS START MANUAL FOR THE DESCRIPTION OF USER OPTIONS START START SIGFIG CORD 6 SIGFIG COEF 8 PRINT ALL MAXERR 0 IIFPOR NO IBMIDE YES BPSUPPRESS NO Ich hoffe das hilft etwas weiter. Gruß meurth
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |