| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
| SF DRAWING (CREO), eine App
|
Autor
|
Thema: Aus Protokoll Werte lesen (2375 / mal gelesen)
|
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 27. Jun. 2017 07:11 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, als Getriebebauer benötigen wir des öfteren mal Zahnräder! Hierzu haben wir ein Verzahnungsfeld auf den Zeichungen. Diese werden händisch aus dem Berechnungsprotokoll übernommen, siehe Anhang. Leider sehr mühsam und zudem Fehler anfällig. Jetzt habe ich mich gefragt, ob man mit einer Lisp die Werte nicht aus dem Protokoll lesen kann. Falls es gehen sollte, wäre folgendes mit den vier Werten ein gutes Beispiel: Diametrales Rollenmass nach DIN 3960 (mm) [MdR.e/i] 50.793 / 50.751 195.654 / 195.572 Wenn mir jemand sagt, dass dies nicht geht bzw. sehr schwer umzusetzen ist, wäre das auch eine Hilfe! In dem Fall muss ich mir etwas anderes überlegen! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seele Mitglied Konstrukteur
Beiträge: 389 Registriert: 11.06.2003
|
erstellt am: 27. Jun. 2017 07:47 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Hallo Michael, ... ungeprüft, könnte aber gehen : (setq datei Dateipfad) (setq suchbegriff "Diametrales Rollenmass nach DIN 3960 (mm)") (with-open-file (instream datei) (loop for line = (read-line instream nil) while line do (if (search suchbegriff line) (progn (setq GANZEZEILE line) (DISPALY GANZEZEILE)); progn ); endif ); endloop ); with-open-file Danach musst Du die Text-Zeile nur noch so zerlegen, wie du sie brauchst. Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 27. Jun. 2017 08:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, das klappt auf anhieb, DANKE!!! Leider kann ich mit meinen mageren Lisp-Kenntnissen keine Textzeilen zerlegen Könnstert Du das evtl. anhand des Beispiels zeigen? Diametrales Rollenmass nach DIN 3960 (mm) [MdR.e/i] 50.793 / 50.751 195.654 / 195.572 Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 27. Jun. 2017 09:31 <-- editieren / zitieren --> Unities abgeben:
Ich hab es mal so Versucht, Code: (in-package :costum) (use-package :OLI)(setq datei "c:\\Temp\\kisssoft\\Protokoll.txt") (setq suchbegriff "Diametrales Rollenmass nach DIN 3960 (mm)") (with-open-file (instream datei) (loop for line = (read-line instream nil) while line do (if (search suchbegriff line) (progn (setq GANZEZEILE line) (DISPLAY GANZEZEILE)); progn ); endif ); endloop ); with-open-file (let (TEXT TEXT1 TEXT2) (SETF TEXT GANZEZEILE) (SETF TEXT (sd-string-split TEXT " ")) (SETF TEXT1 (ninth TEXT)) (SETF TEXT2 (tenth TEXT)) (display (format nil "Text1 = ~a" TEXT1)) (display (format nil "Text2 = ~a" TEXT2)) )
Dann bekomme ich folgendes raus: Text1 = 50.751 195.654 Text2 = / 195.572 Denke das hat mit dem Protokoll zu tun, hier sind Tab eingefügt, kann man diese auch zerlegen? Gruß Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 291 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.4 Creo Elements / Direct Model Manager 20.4 <P>Notepad++ Win 11
|
erstellt am: 27. Jun. 2017 10:01 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
|
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 27. Jun. 2017 10:26 <-- editieren / zitieren --> Unities abgeben:
Danke erstmal und dann noch zwei Fragen! Wie bekomme ich es den hin bei Leerzeichnen " " und #\TAB mittels sd-string-split den Text zu zerlegen? Oder könnte man die #\TAB im Vorfeld durch " " ersetzen lassen? Gruß Michael [Diese Nachricht wurde von MiBr am 27. Jun. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seele Mitglied Konstrukteur
Beiträge: 389 Registriert: 11.06.2003
|
erstellt am: 27. Jun. 2017 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Hallo Michael, ... probiers mal so aus, ... (in-package :costum) (use-package :OLI) (setq datei "c:\\Temp\\kisssoft\\Protokoll.txt") (setq suchbegriff "Diametrales Rollenmass nach DIN 3960 (mm)") (with-open-file (instream datei) (loop for line = (read-line instream nil) while line do (if (search suchbegriff line) (progn (setq GANZEZEILE line) (DISPLAY GANZEZEILE)); progn ); endif ); endloop ); with-open-file (DISPLAY "") ; Suche Zahl 4 von hinten (setq STRICH (+ (search "/" GANZEZEILE :from-end t) 1)) (setq Zahl4 (subseq GANZEZEILE (+ STRICH 1) (length GANZEZEILE))) (setq NeueZEILE (subseq GANZEZEILE 0 (- STRICH 2))) ;; Lösche Zahl4 von hinten weg ; Suche mittlere Kombizahl3 von hinten (setq STRICH (+ (search " " NeueZEILE :from-end t) 1)) (setq Zahl3 (subseq NeueZEILE STRICH (length NeueZEILE))) (setq NeueZEILE (subseq NeueZEILE 0 (- STRICH 4))) ;; Lösche Kombizahl3 von hinten weg ; Suche Zahl1 von hinten (setq STRICH (+ (search "]" NeueZEILE :from-end t) 2)) (setq Zahl1 (subseq NeueZEILE (+ STRICH 1) (length NeueZEILE))) ; Zerlege die Kombizahl3 beim #\TAB (setf Zahl5 (sd-string-split Zahl3 #\TAB)) (setq Zahl2 (first Zahl5)) ; setze Zahl2 (setq Zahl3 (second Zahl5)) ; setze Zahl3 (DISPLAY Zahl1) (DISPLAY Zahl2) (DISPLAY Zahl3) (DISPLAY Zahl4) Gruß Wolfgang :wink:
------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 27. Jun. 2017 16:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, funktioniert super DANKE für deine Mühe!!! JUST IN TIME habe ich auch eine Lösung gefunden: Code: (in-package :costum) (use-package :OLI)(setq datei "c:\\Temp\\Kisssoft\\Protokoll.txt") (setq suchbegriff "Diametrales Rollenmass nach DIN 3960 (mm)") (with-open-file (instream datei) (loop for line = (read-line instream nil) while line do (if (search suchbegriff line) (progn (setf GANZEZEILE line) (DISPLAY GANZEZEILE)); progn ); endif ); endloop ); with-open-file (SETF GANZEZEILE (sd-string-replace GANZEZEILE (Format nil "~a" #\TAB) " ")) ;tab umwandeln in Leerzeichen (DISPLAY GANZEZEILE) (let (TEXT TEXT1 TEXT2 TEXT3 TEXT4) (SETF TEXT GANZEZEILE) (SETF TEXT (sd-string-split TEXT " ")) (SETF TEXT1 (car (cddddr (cddddr text)))) (SETF TEXT2 (car (cdddr (cddddr (cddddr text))))) (SETF TEXT3 (car (cddddr (cddddr (cddddr text))))) (SETF TEXT4 (car (cddr (cddddr (cddddr (cddddr text)))))) (display (format nil "Text1 = ~a" TEXT1)) (display (format nil "Text2 = ~a" TEXT2)) (display (format nil "Text3 = ~a" TEXT3)) (display (format nil "Text4 = ~a" TEXT4)) )
Mal die Frage an den Profi: Siehst Du irgend einen Hacken? Und nochmal Danke, habe heute viel dazu gelernt. Gruß Michael [Diese Nachricht wurde von MiBr am 27. Jun. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2158 Registriert: 12.12.2000
|
erstellt am: 27. Jun. 2017 17:07 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
|
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 27. Jun. 2017 18:28 <-- editieren / zitieren --> Unities abgeben:
|
Seele Mitglied Konstrukteur
Beiträge: 389 Registriert: 11.06.2003
|
erstellt am: 27. Jun. 2017 20:57 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Von wegen unser Michael kann nicht programmieren, ... Deine Lösung schaut noch sauberer aus als meine. Und das Beste kam am Schluß von Walter, .... er sollte LISP-Schulungen geben, .... Was aber offensichtlich ist, es führen doch viele Wege nach Rom zur Lösung. Man darf nur nicht aufgeben und muss halt mal in diesem spitzen Forum nachfragen. Auch ich bin LISP-Anfänger, aber ich bilde mich mit Google und diesem Forum weiter. Und dann noch ein Lob an die Entwickler dieser genialen Software, auch wenn sie hier und da noch Verbesserungen bräuchte, so ist Sie doch so offen, das man es sich anpassen kann, wie man es persönlich braucht und ich denke, dass dies der entscheidende Vorteil vom SolidDesigner ist. Nur so kann Industrie 4.0 Wirklichkeit werden, .... selbst anpassbar auf die Probleme der verschiedenen Situationen, ... Gruß Wolfgang ------------------ alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. Werden wir es schaffen? Ja wir schaffen das !!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 28. Jun. 2017 06:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, erstmal Danke fürs Lob, so und jetzt mal wieder eine Frage. Jetzt habe ich die Texte sauber ausgelesen. Ich brauche diesen allerdings als Zahlenwert! Wie kann ich den Text umwandeln in eine Zahl? Gruß Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2158 Registriert: 12.12.2000
|
erstellt am: 28. Jun. 2017 08:32 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
|
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 28. Jun. 2017 08:56 <-- editieren / zitieren --> Unities abgeben:
Danke, mal wieder genau das wonach ich gesucht habe! Ich hatte den Befehl sogar im I-Kit gefunden, habe es trotdem nicht hinbekommen! Erst als ich dein Antwort gesehen hatte, ging mir ein Licht auf. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 30. Jun. 2017 07:48 <-- editieren / zitieren --> Unities abgeben:
Hallo, bei der Auswertung habe ich noch ein Problem bekommen. Es gibt bei der Verzahnungen meist eine Vorbearbeitung. Diese führt dazu, das es im Protokoll, bis auf die Werte, zwei identische Zeilen gibt. Wenn ich im Protokoll z.B. nach "Diametrales Zweikugelmass (mm)" suche findet er die Zeilen korrekt. Ich denke aber, dass die Lisp die erste Zeile einfach überschreibt und ich diese nicht mehr auswerten kann. Habe schon kläglich Versucht eine Liste erstellen zu lassen und wollte anschließend die entsprechende Zeile auswerten. Ich bekomme es aber wieder mal nicht hin kann mir jemand auf Pferd helfen? Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 30. Jun. 2017 09:52 <-- editieren / zitieren --> Unities abgeben:
So ich habe nee Lösung gefummelt! Code:
(setq datei "c:\\Temp\\Kisssoft\\Protokoll.txt") (setf GANZEZEILELISTE (list "Gefundene_Zeile")) (setq suchbegriff "Diametrales Zweikugelmass (mm)") (with-open-file (instream datei) (loop for line = (read-line instream nil) while line do (if (search suchbegriff line) (progn (setf GANZEZEILELISTE (append GANZEZEILELISTE (list line)))); progn ); endif ); endloop ); with-open-file
Ich hoffe Ihr schlagt nicht die Hände übern Kopf zusammen, ansonsten sind bessere Vorschläge natürlich erwünscht! Gruß Michael [Diese Nachricht wurde von MiBr am 30. Jun. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 06. Dez. 2017 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Hallo zusammen, ich habe ein ähnliches Anliegen, komme aber mit meinen spärlichen Kenntnissen kaum voran und hoffe, dass ihr mir weiterhelfen könnt. Folgende Sachlage: eine Txt-Datei soll eingelesen werden, auf jeder Zeile steht je ein Wert (Ganzzahl, String und ähnliches). Jeder Wert soll einer eigenen Variablen zugeordnet werden. Michaels Code ist da schon nah dran, ich habe aber keinen Suchbegriff. Und ich schaffe es einfach nicht, den Code dahingehend umzuschreiben. Nachdem die Variablen eingelesen sind, will ich sie als Textfelder in einer Skizze verarbeiten. Das Anlegen der Skizze und von Textfeldern funktioniert soweit:
Code: (oli::sd-am-create-sketch :name "VZ-Tabelle" osition -400,50 wner_type :current-sheet) (oli::sd-am-create-text :text "Schnecke/" osition -390,40 wner_type :sketch wner "1/VZ-Tabelle")
Ich möchte aber gern auch zusammengesetzte Strings einbinden z.B. "Teilkreis: " & Variable1 & [mm]. Habe hier schon mit subseq, merge und cons probiert, komme aber auch da nicht weiter. Könnt ihr mir helfen? Hintergrund ist der, dass wir uns in Excel eine Verzahnungstabelle berechnen. Die Werte sollen danach als Skizze auf die Zeichnung bringen (OLE wäre zwar auch ein Weg, den wir aber nicht gehen wollen, weil er nicht so gut aussieht). Vielen Dank und beste Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 291 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.4 Creo Elements / Direct Model Manager 20.4 <P>Notepad++ Win 11
|
erstellt am: 06. Dez. 2017 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
|
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 06. Dez. 2017 16:16 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
|
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 06. Dez. 2017 16:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, hier mein Vorschlag zu deinem Problem: Code: (in-package :custom) (use-package :OLI) (let (GANZEZEILE line ZEILEHINZU GANZEZEILELISTE Zeile_eins Zeile_zwei Zeile_drei Zeile_vier Zeile_fuenf)
(with-open-file (stream "c:\\Temp\\Protokoll.txt") ;Dein Pfad (loop for line = (read-line stream nil 'foo) until (eq line 'foo) do (setf GANZEZEILE line) (setf ZEILEHINZU (list GANZEZEILE)) (setf GANZEZEILELISTE (append GANZEZEILELISTE ZEILEHINZU)) ) ) (SETF Zeile_eins (nth 0 GANZEZEILELISTE)) (display (format nil "~a" Zeile_eins)) (SETF Zeile_zwei (nth 1 GANZEZEILELISTE)) (display (format nil "~a" Zeile_zwei)) (SETF Zeile_drei (nth 2 GANZEZEILELISTE)) (display (format nil "~a" Zeile_drei)) (SETF Zeile_vier (nth 3 GANZEZEILELISTE)) (display (format nil "~a" Zeile_vier)) (SETF Zeile_fuenf (nth 4 GANZEZEILELISTE)) (display (format nil "~a" Zeile_fuenf)) )
Gruß Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 07. Dez. 2017 10:37 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Hallo Michael, vielen Dank dafür! Das Einlesen der Daten funktioniert soweit. Ein Problem mit dem Zusammensetzen von Strings habe ich aber immer noch. Sobald ich die Variablen ins Spiel bringe, hakt es irgendwo. Folgendes funktioniert:
Code: (sd-am-create-text :text (concatenate 'string "Äpfel" Zeile_eins) :position -350,40 :owner_type :sketch :owner "1/VZ-Tabelle")
Ausgabe: "Äpfel 2" Bei folgenden Codezeilen erhalte ich aber die gleiche Ausgabe:
Code: (sd-am-create-text :text (concatenate 'string "Äpfel" Zeile_eins "Birnen") :position -350,40 :owner_type :sketch :owner "1/VZ-Tabelle") (sd-am-create-text :text (concatenate 'string "Äpfel" Zeile_eins Zeile_zwei) :position -350,40 :owner_type :sketch :owner "1/VZ-Tabelle")
Habe auch einmal versucht, zwei Variablen in einer Zwischenvariablen zu verknüpfen. Mit
Code: (setf temptxt (concatenate 'string Zeile_eins Zeile_fuenf)) (display (format nil "~a" temptxt))
werden mir die Werte untereinander ausgegeben. Liegt hier vielleicht der Schlüssel? Vielen Dank für eure Antworten!! Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 291 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.4 Creo Elements / Direct Model Manager 20.4 <P>Notepad++ Win 11
|
erstellt am: 07. Dez. 2017 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Zitat: Original erstellt von Michael318:Bei folgenden Codezeilen erhalte ich aber die gleiche Ausgabe:
Code: (sd-am-create-text :text (concatenate 'string "Äpfel" Zeile_eins "Birnen") :position -350,40 :owner_type :sketch :owner "1/VZ-Tabelle") (sd-am-create-text :text (concatenate 'string "Äpfel" Zeile_eins Zeile_zwei) :position -350,40 :owner_type :sketch :owner "1/VZ-Tabelle")
Steckt hinter der Variable Zeile_eins ein String? Alternativ kannst du mit (format) einen String unabhängig vom Typ der Variable erstellen Code: (sd-am-create-text :text (format nil "~A~A~A" "Äpfel" Zeile_eins "Birnen") :position -350,40 :owner_type :sketch :owner "1/VZ-Tabelle")
------------------ Viele Grüße Felix
[Diese Nachricht wurde von lix b am 07. Dez. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 07. Dez. 2017 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Hallo Felix, hinter meinen Variablen, die mit Michaels Code eingelesen werden, können Zahlen aber auch Strings hängen. Dein Code bringt mir leider auch nur "Äpfel 2" und eben nicht "Äpfel 2 Birnen". Da bin ich echt ratlos.. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 291 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.4 Creo Elements / Direct Model Manager 20.4 <P>Notepad++ Win 11
|
erstellt am: 07. Dez. 2017 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Hallo Michael, hast du eventuell irgendwo einen Tippfehler? Bei mir funktioniert es auch mit einer Mischung aus Variablen und Strings ohne Probleme. Code: (progn (setf Zeile_eins 2) (setf Zeile_zwei "reife") (setf test-string (format nil "~A~A~A~A" "Äpfel" Zeile_eins Zeile_zwei "Birnen")) (display test-string) )
==> Äpfel2reifeBirnen
------------------ Viele Grüße Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 07. Dez. 2017 11:38 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Hallo Felix, ich glaube wir kommen der Sache näher, auch wenn ich die Lösung noch nicht kenne. Dein Code funktioniert auch bei mir. Ausgabe: Äpfel2reifeBirnen Jetzt habe ich beiden Wertzuweisungen wieder raus genommen, sodass "meine" Variablen genutzt werden. Ausgabe: Äpfel2 49 Birnen Hier ist also immer ein Zeilenumbruch mit vorhanden. Wahrscheinlich kommt der aus dem Einlesen. Aber wie kann ich diesen verhindern/ignorieren..? Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
Beiträge: 291 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.4 Creo Elements / Direct Model Manager 20.4 <P>Notepad++ Win 11
|
erstellt am: 07. Dez. 2017 11:52 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Mahlzeit! Mit folgendem Beispiel kann ich dein Problem nachstellen und lösen Code: (progn (setf test-string (format nil "1234~%5678")) (display test-string) (setf test-string (remove #\Newline test-string)) (display test-string) )
------------------ Viele Grüße Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 07. Dez. 2017 11:53 <-- editieren / zitieren --> Unities abgeben:
Hallo, schreib das mal so: Code: (SETF Zeile_eins (sd-string-trim (nth 1 GANZEZEILELISTE)))
und im oberen Teil sollte das reichen: Code:
(with-open-file (instream datei) (loop for line = (read-line instream nil) while line do (setf GANZEZEILELISTE (append GANZEZEILELISTE (list line))) ); endloop ); with-open-file
Gruß Michael [Diese Nachricht wurde von MiBr am 07. Dez. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 07. Dez. 2017 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Mit eurer Hilfe klappt es nun!! Habe es direkt beim Einlesen mit Michaels Ansatz umgesetzt. Vielen Dank!!! Mahlzeit Gruß Michael Sogar das mit den U's hat geklappt [Diese Nachricht wurde von Michael318 am 07. Dez. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 575 Registriert: 30.06.2015 HP Z440 Workstation 64GB Modeling 20.1.2.0 (x64) Drafting 20.1.2.0 (64x) klas. UI Modell Manager 20.1.2.0 Ansys Workbeanch 22R2 Mechanicail Pro + FKM Inside
|
erstellt am: 07. Dez. 2017 12:25 <-- editieren / zitieren --> Unities abgeben:
Hallo, evtl. nimmst Du doch lieber die Lösung von Felix, ich weiß nähmlich nicht, auf was der sd-string-trim alles schießt! #\Newline funzt bei mir nicht, dafür aber #\Return, Also so: Code: (SETF Zeile_eins (remove #\Return (nth 1 GANZEZEILELISTE)))
Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael318 Mitglied Konstrukteur
Beiträge: 20 Registriert: 06.12.2017 Modeling 18.1 M020 ModelManager 18.1 M020
|
erstellt am: 07. Dez. 2017 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
|
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 07. Dez. 2017 15:03 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Zitat: Original erstellt von MiBr: ich weiß nähmlich nicht, auf was der sd-string-trim alles schießt
DAS genau waere mein Einwand gewesen. Schoen das Du selbst drauf gekommen bist. sd-string-trim trimmed nicht "white spaces" sondern nur Zitat: IntegrationKit Help said: Trims leading and trailing spaces from the passed string. Spaces within the string remain.
Ich wuerde empfehlen nach dem rohen einlesen einer Zeile diese erstmal zu bereingen: ● return loeschen ● linefeed loeschen ● tabs durch blanks ersetzen ● backspaces (ja auch so was haessliches gibt es) durch nix ersetzen Die passendend code Schnipsel sind schon alle vorhanden.
------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |