| |
| IEC 61850: Substations zukunftsgerecht planen |
Autor(16237)
|
Thema: Symbole ASCII-Export plus Manipulation (2531 mal gelesen)
|
HRompel Ehrenmitglied V.I.P. h.c. Technischer Systemplaner - Elektrotechnik
Beiträge: 3416 Registriert: 02.11.2001 ELCAD 7.11.0 SP1(KEINE "CL"-Lizenz, KEIN "Studio") ELCAD-Autodidakt seit Version 5.8.x Elcad : 02.2000 bis 11.2018 ================================== EPLAN P8 2.6 HF4 (Professional) Menüumfang: Expert (Autodidakt) EPlan: : 31.7.2010 bis 11.2018 =================================== DDS-CAD: 3.12.2018 - 30.11.2020 =================================== Trimble nova: Seit 04.01.2021 (Version 16.2P6) =================================== AutoCAD-Erstkontakt: April 2012 in der VHS =================================== Moderator im ELCAD-Forum: 08.11.11 - 19.03.17 Moderator im "Trimble Nova"-Forum: Seit dem 18.01.2021
|
erstellt am: 02. Jun. 2009 09:43 <-- editieren / zitieren --> Unities abgeben:
Moin, im Tread 'Menge' im Symbol, wurde auch darüber berichtet, das man beim ASCII-Export der Symbolik diese auch manipulieren kann. Würde folgendes auf diesem Wege möglich sein? - Wenn Menge = 0 oder leer dann Menge = 1 - Wenn Code 151,150,105 nicht vorhanden am Symbolende ergänzen Wenn ja, wie? MfG Heiko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
s.koni Mitglied Elektrotechnischer Zeichner
Beiträge: 317 Registriert: 17.06.2002 ELCAD 7.8.0 EPLAN P8 2.4.4
|
erstellt am: 02. Jun. 2009 11:03 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
Hallo Heiko, habe ASCII schon öfters manipuliert. Am Simpelsten machst du die ASCII Datei in einem Editor auf und suchst von Hand die Codenummer für Menge. Entsptechend deinen Wünschen modifizierst du den Eintrag. ASCII wieder einlesen (natürlich in eine neues Projekt!) - Fertig. Ist aber recht aufwendig. Einfacher ist es mit Hilfe eines Scriptprogramms. Ich verwende gerne AutoIt dazu. AutoIt ist eine Programmiersprache die recht einfach und vor allem KOSTENLOS ist. Damit lese ich die ASCII Datei Zeilenweise ein und suche ob der entsprechende Wert enthalten ist. Wenn Ja, schreibe ich eine geänderte Zeile in eine neue ASCII Datei. Ist der gesuchte Wert nicht enthalten, schreibe ich die Zeile unverändert in die neue Datei. Dann die geänderte Datei in ELCAD einlesen. Prinzipiell funktioniert dass auch mit jedem anderen Scriptprogramm (EXCEL-VBA, ACCESS-VBA, usw.) AutoIt finde ich für diesen Zweck am einfachsten. Gruß Steffen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HRompel Ehrenmitglied V.I.P. h.c. Technischer Systemplaner - Elektrotechnik
Beiträge: 3416 Registriert: 02.11.2001
|
erstellt am: 02. Jun. 2009 11:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Steffen, Zitat: Original erstellt von s.koni: Hallo Heiko,habe ASCII schon öfters manipuliert. Am Simpelsten machst du die ASCII Datei in einem Editor auf und suchst von Hand die Codenummer für Menge. Entsptechend deinen Wünschen modifizierst du den Eintrag. ASCII wieder einlesen (natürlich in eine neues Projekt!) - Fertig. Ist aber recht aufwendig.
Genau, deshalb will ich das vermeiden. Zitat:
Einfacher ist es mit Hilfe eines Scriptprogramms. Ich verwende gerne AutoIt dazu.
Dann könnte ich mir auch was in Delphi programmieren. Aber, mich interessiert die Mächtigkeit des ASCII-Export wie er in dem Anderen Tread beschrieben wurde. MfG Heiko
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
s.koni Mitglied Elektrotechnischer Zeichner
Beiträge: 317 Registriert: 17.06.2002 ELCAD 7.8.0 EPLAN P8 2.4.4
|
erstellt am: 02. Jun. 2009 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
|
HRompel Ehrenmitglied V.I.P. h.c. Technischer Systemplaner - Elektrotechnik
Beiträge: 3416 Registriert: 02.11.2001
|
erstellt am: 02. Jun. 2009 13:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Steffen, Zitat: Original erstellt von s.koni: Was meinst du mit Mächtigkeit des ASCII-Export???
Lese Dir doch mal die im OP genannten Thread durch. Man kann dem ASCII-Export eine KommandoDatei übergeben. MfG Heiko
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
s.koni Mitglied Elektrotechnischer Zeichner
Beiträge: 317 Registriert: 17.06.2002 ELCAD 7.8.0 EPLAN P8 2.4.4
|
erstellt am: 02. Jun. 2009 14:43 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
Alles klar! Nur zur Info - habe den im OP genannten Thread schon vorher gelesen!!!!! Bin nur von etwas anderem ausgegangen. Du möchtest die SYMBOLE ändern. Ich dachte an die manipulation eines vorhandenen PROJEKTES. Wenn du die Vorbelegung eines Symbols änders, heißt dass nicht, dass in einem vorhandenen Projekt die Vorbelegungen ebenfalls ergänzt werden. Denke aber du weißt dass sicher schon!!!! Gruß Steffen
[Diese Nachricht wurde von s.koni am 02. Jun. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HRompel Ehrenmitglied V.I.P. h.c. Technischer Systemplaner - Elektrotechnik
Beiträge: 3416 Registriert: 02.11.2001
|
erstellt am: 02. Jun. 2009 15:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Steffen, Zitat: Original erstellt von s.koni: Alles klar! Du möchtest die SYMBOLE ändern. Wenn du die Vorbelegung eines Symbols änders, heißt dass nicht, dass in einem vorhandenen Projekt die Vorbelegungen ebenfalls ergänzt werden. Denke aber du weißt dass sicher schon!!!!
JA, das weiß ich. Es geht darum, das unsere Symbolik bescheiden ist. Die 149 ist leer oder auf 0, 151,150 und 105 fehlen fast überall und bei variablen Symbolen fehlt die 4003. Grade die 149er-Sache ist nervig, da man dadurch immer wieder Artikel "übersieht", da sie nicht in der Stückliste auftauchen. MfG Heiko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
unterStrom Mitglied Elektro-Konstruktionsingenieur
Beiträge: 378 Registriert: 06.04.2005 Win 7, Ruplan 4.72 EVU
|
erstellt am: 02. Jun. 2009 22:26 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
Hallo Heiko, Manipulation per ascii-Schnittsetlle? Da fühle ich mich angesprochen!! Den 149 wenn er "0" oder leer ist auf 1 setzen geht mit einer Regular Expression (RE) in einem "guten" Editor (vi ) Suchen nach: (DIALOG,[0-9]+,149,".*",")[0]*(") Ersetzen durch: \11\2 Die Schwierigkeit ist dass die laufende Nummer des Dialoges unbekannt ist und auch die Beschreibung variieren kann. Mit der RE kannst Du ein Muster angeben ( [0-9]+ ) und den Inhalt dieses Musters merken (mit den beiden () ). Beim Ersetzen den ersten Inhalt des Musters mit \1 ausgeben, dann die gewünschte Nummer (1) und dann den Rest mit \2. Sollte in dem Dialog weder 0 stehen, noch nichts wird mit dem * nach den [0] festgelegt. Damit bleiben alle anderen Mengen unangetastet. Dein zweites Problem, anfügen von zusätzlichen Zeilen wenn diese noch nicht vorhanden sind, würde ich mit dem awk lösen (ist Teil jeder Unix-Distribution, also auch alle Linuxe). Zu erkennen, ob der Dialog 150, 151 oder 105 fehlt und sie bei Bedarf zuzufügen ist noch kein großes Problem. Schwierig wirds, die richtigen Dialognummern einzufügen. Dafür ist die Anzahl der aktuell vorhandenen Dialoge mitzuzählen und die neuen dann mit den darauf folgenden Nummern anzufügen. Ist möglich, wird aber einige Stunden Aufwand bedeuten. Jürgen ------------------ Der Tag, an dem Du nicht lächelst, ist ein verlorener Tag (C. Chaplin) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pelle Bootsmann Ehrenmitglied V.I.P. h.c.
Beiträge: 2156 Registriert: 24.03.2004
|
erstellt am: 03. Jun. 2009 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
Hallo Heiko, das geht auch mit ELCAD-Bordmitteln. Es gibt eine Scriptsprache zur Manipulation der ASCII-Datei bei der Ausgabe. Die vollstandige Syntax hängt als Anhang an diesem Beitrag dran. Das Vorgehen : Du schreibt mit irgendeinem Texteditor ein passendes Script, z.B: if (not exist (151)) add 151,"Bedeutung","Vorbelegung"; endif
set default 149,"1";
und speicherst dieses z.B. unter dem Namen script.txt Dann gehst Du in den Symbolbau in die Kommandozeile und ruft die ASCII-Ausgabe auf : ascii_write(script.txt) Nach Überprüfung des Ergebnisses kann man nun diese Datei wieder einlesen. Bitte die Symboldatei vorher sichern !
------------------ Viele Grüsse von Saltkråkan Pelle Bootsmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HRompel Ehrenmitglied V.I.P. h.c. Technischer Systemplaner - Elektrotechnik
Beiträge: 3416 Registriert: 02.11.2001 ELCAD 7.11.0 SP1(KEINE "CL"-Lizenz, KEIN "Studio") ELCAD-Autodidakt seit Version 5.8.x Elcad : 02.2000 bis 11.2018 ================================== EPLAN P8 2.6 HF4 (Professional) Menüumfang: Expert (Autodidakt) EPlan: : 31.7.2010 bis 11.2018 =================================== DDS-CAD: 3.12.2018 - 30.11.2020 =================================== Trimble nova: Seit 04.01.2021 (Version 16.2P6) =================================== AutoCAD-Erstkontakt: April 2012 in der VHS =================================== Moderator im ELCAD-Forum: 08.11.11 - 19.03.17 Moderator im "Trimble Nova"-Forum: Seit dem 18.01.2021
|
erstellt am: 03. Jun. 2009 09:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Pelle, Zitat: Original erstellt von Pelle Bootsmann: Hallo Heiko,das geht auch mit ELCAD-Bordmitteln. Es gibt eine Scriptsprache zur Manipulation der ASCII-Datei bei der Ausgabe. Die vollstandige Syntax hängt als Anhang an diesem Beitrag dran.
Super, genau das habe ich gesucht. Noch eine Frage: Die Anweisungen beziehen sich auf jeweils ein Symbol oder? Das Heißt, wenn ich frage ob Code 150 vorhanden ist, dann bezieht sich das nur auf das aktelle als ASCII zu exportierenden Symbol und nicht auf die ganze Symbolik - oder? MfG Heiko
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bodo_M Moderator
Beiträge: 5299 Registriert: 15.11.2001
|
erstellt am: 03. Jun. 2009 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
|
Bodo_M Moderator
Beiträge: 5299 Registriert: 15.11.2001
|
erstellt am: 03. Jun. 2009 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
hallo, die anweisungen beziehen sich auf alle symbole die in der bibliothek sind, die du über das script ausgibst. wie du in meinem beispiel siehst, kannst du nach symboltypen filtern. ------------------ tschüss aus hannover bodo m Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rolf K. Moderator CAD-Konstrukteur
Beiträge: 1730 Registriert: 10.12.2002 ELCAD 2020 SP2 e3.2018 Windows 10 zuhause: Paintshop Pro 2020 Cray XT4 Privileg SR 12 PR Chivers Lemon Jelly
|
erstellt am: 03. Jun. 2009 10:24 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
Hallo Bodo, schon damals habe ich mir die ganze Synthax gewünscht. Endlich bin ich erhört worden. ------------------ Es grüsst Rolf K. [Diese Nachricht wurde von Rolf K. am 03. Jun. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HRompel Ehrenmitglied V.I.P. h.c. Technischer Systemplaner - Elektrotechnik
Beiträge: 3416 Registriert: 02.11.2001
|
erstellt am: 03. Jun. 2009 11:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Bodo, Zitat: Original erstellt von Bodo_M: hallo,die anweisungen beziehen sich auf alle symbole die in der bibliothek sind, die du über das script ausgibst.
Mistverständnis. Wenn ich z.B. Frage ob Code 149 vorhanden ist, wird dann nur geguckt ob in der GANZEN Symbolik 1x die 149 vorhanden ist (wäre Mist) oder ob im jeden Symbol die 149 vorhanden ist? Du verstehst den Unterschied und mein "Problem"? MfG Heiko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pelle Bootsmann Ehrenmitglied V.I.P. h.c.
Beiträge: 2156 Registriert: 24.03.2004
|
erstellt am: 03. Jun. 2009 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
Hallo Heiko, Bodos Beschreibung ist wohl etwas missverständlich. Das Script wird natürlich für jedes Symbol einzeln ausgeführt. Man kann also in allen Symbolen in denen Code 149 fehlt dieses dort zufügen. ------------------ Viele Grüsse von Saltkråkan Pelle Bootsmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
unterStrom Mitglied Elektro-Konstruktionsingenieur
Beiträge: 378 Registriert: 06.04.2005 Win 7, Ruplan 4.72 EVU
|
erstellt am: 04. Jun. 2009 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
Hallo Heiko, meine Lösung für dein Problem mit awk: (ohne Tab´s ist nicht sehr schön zum lesen, aber es funktioniert) # awk Script zum anfügen von Dialogen an Elcad Symbol-ascii-Datei BEGIN { FS = "," # Field Separator; Komma n=0 # Dialogzähler d105=0 # Anzahl 105 d149=0 # Anzahl 149 d150=0 # Anzahl 150 d151=0 # Anzahl 151 } $1 ~ /^ *DIALOG/ && $3 == "149" { d105++ } # "wichtigen" Dialog gefunden $1 ~ /^ *DIALOG/ && $3 == "149" { d149++ } $1 ~ /^ *DIALOG/ && $3 == "150" { d150++ } $1 ~ /^ *DIALOG/ && $3 == "151" { d151++ } $1 ~ /^ *DIALOG/ { n++; # Dialog gefunden print $0 # ausgeben } $1 !~ /^ *DIALOG/ { if (n>0 && d105==0) # vorher waren Dialogzeilen, in denen aber kein Dialog 105 war { print " DIALOG," ++n ",105,\"Bezeichnung 2\",\"1\""; } # 149 zuf¸gen if (n>0 && d149==0) # vorher waren Dialogzeilen, in denen aber kein Dialog 149 war { print " DIALOG," ++n ",149,\"Menge\",\"1\""; } # 149 zuf¸gen if (n>0 && d150==0) # vorher waren Dialogzeilen, in denen aber kein Dialog 150 war { print " DIALOG," ++n ",150,\"Bezeichnung\",\"\""; } # 150 zuf¸gen if (n>0 && d151==0) # vorher waren Dialogzeilen, in denen aber kein Dialog 151 war { print " DIALOG," ++n ",151,\"Hersteller\",\"\""; } # 151 zuf¸gen print $0 # aktuelle Zeile (NAME, SYMBOLTYP, REC, ENDE, ... ausgeben n=0 # Dialogzähler zurücksetzen d105=0 # Anzahl 105 zurücksetzen d149=0 # Anzahl 149 zurücksetzen d150=0 # Anzahl 150 zurücksetzen d151=0 # Anzahl 151 zurücksetzen } END { } Jürgen ------------------ Der Tag, an dem Du nicht lächelst, ist ein verlorener Tag (C. Chaplin) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 09. Jun. 2009 23:21 <-- editieren / zitieren -->
Zitat: Original erstellt von Pelle Bootsmann: if (not exist (149)) add 149,"Bedeutung","Vorbelegung"; endifset default 149,"1";
Hallo Pelle, das habe ich gerade mal probiert, scheint aber nicht zu gehen... Wenn man den Dialog mit Code 149 zufügt, kann man ihn danach nicht gleich beschreiben. Elcad scheint den Code 149 da noch nicht zu erkennen. Wenn ich die Bibliothek ausgebe mit "Code 149 zufügen", dann wieder einlese, und noch mal ausgebe mit "Code 149 editieren", dann geht es. ------------------ Viele Grüße Uli |
Pelle Bootsmann Ehrenmitglied V.I.P. h.c.
Beiträge: 2156 Registriert: 24.03.2004
|
erstellt am: 10. Jun. 2009 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für HRompel
Hallo Uli, das war wohl ein unglückliches Beispiel von mir. Wenn der Code 149 noch nicht da ist, erzeugt und belegt man ihn mit dem Kommando add. Wenn Code 149 schon da ist, ändert man die Vorbelegung mit set default. ------------------ Viele Grüsse von Saltkråkan Pelle Bootsmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |