| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
Autor
|
Thema: Umlaute in CSV-Dateien - Stückliste (2392 mal gelesen)
|
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 09. Mrz. 2018 09:42 <-- editieren / zitieren --> Unities abgeben:
Hallo, weil ich einen neuen Befehl 'Loop' FÜR MICH entdecket habe, suchte ich nach einer Einsatzmöglichkeit. Da viel mir ein, dass ich schon immer eine Knopf vermisse, der mir mal eben die Stückliste einer Baugruppe anzeigt. Dabei ist die angehängte Lisp entstanden! Die funktioniert nach Testen - Testen und Testen für mich! Was mich allerdings stört, ist das die Umlaute mittels 'with-open-file' zu irgendwelchen Zeichen geändert werden. So dachte ich, das 'sd-string-replace' helfen könnte, also ä -> ae, beim Unterstich funktioniert das "_" " " ja auch! Aber Pustekuchen, nix tut sich bei den Umlauten! Das Tool speichert die Liste nach C:\temp\ der sollte zum Testen vorhanden sein! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2019) SolidWorks (2014 - 2019) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 09. Mrz. 2018 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Ich schätze mal das liegt an der Kodierung. Ohne mir den Code und alles im Detail angeschaut und verstanden zu haben, solltest Du mal die Datei über ":external-format" mit der korrekten Kodierung öffnen. CU Kricher Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kricher Mitglied Entwickler
Beiträge: 270 Registriert: 10.09.2004 Solid Edge (ST6 - SE2019) SolidWorks (2014 - 2019) DraftSight 2016 und 2018 Creo Elements Direct Modeling (SolidDesigner V17, V18, V19, V20) Inventor 2018 ACAD/Mechanical 2018
|
erstellt am: 09. Mrz. 2018 10:04 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
|
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 09. Mrz. 2018 13:20 <-- editieren / zitieren --> Unities abgeben:
Danke Kricher, das war genau der Hinweis der mir fehlte, allerdings schreibe ich den Code :Output und so habe Stunden versucht die Umlaute umzubenennen. Anbei der neu File, falls es noch jemand gebrauchen kann! DANKE Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 10. Mrz. 2018 06:19 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
|
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 12. Mrz. 2018 06:51 <-- editieren / zitieren --> Unities abgeben:
|
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 16. Mrz. 2018 09:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, nachdem ich das Tool verteilt habe, kamen schnell Erweiterungs- und Änderungswünsche. So habe ich jetzt diverse Teileeigenschaften (Dichte /Gewicht...) hinzugefügt. In der ersten Version gabe es zudem das Problem, das Teile ohne Modellnummer zusammen- gefasst worden sind. (Waren ja alle NIL) Und da das Tool unter anderm dafür gedacht war, während der Entwicklung schnell mal einen Überblick über die Teile zu bekommen, habe ich es so geändert, dass er die Objekte miteinander vergleicht. @der_Wolfgang - Danke für den Code-Schnipsel mit dem Befehl dolist! Komme zwar nicht dahinter wie dieser funktioniert, aber damit konnte ich das Problem mit der Modellnummer lösen. DANKE!!! Jetzt sieht es meiner Meinung nach richtig schick aus. Falls es noch jemand gebrauchen kann, dann Bitte! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 16. Mrz. 2018 14:01 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Zitat: Original erstellt von MiBr: nachdem ich das Tool verteilt habe, kamen schnell Erweiterungs- und Änderungswünsche.
kleiner Finger -> ganzer Arm... kenn' ich Code: ;;; In Datei schreiben ;;; (with-open-file (out "c:/tmp/Stueckliste.csv" :Direction :Output :external-format :uft-8) (princ (format nil "Modellnummer~aBezeichnung~aMenge [Stk]"#\TAB #\TAB) out) )
das ist ein wenig ungeschickt. der Princ ist unnoetig. "out" ist der stream in den du schreiben willst (also hier die geoeffnete Datei. (format .. formatiert ausgaben fuer einen Stream. Jener ist das erste argument vom format befehl. Also: Code: ;;; In Datei schreiben ;;; (with-open-file (out "c:\\Temp\\Stueckliste.csv" :Direction :Output :external-format :uft-8) (format out "Modellnummer~aBezeichnung~aMenge [Stk]"#\TAB #\TAB) )
da kannst du deinen "schreib-code" deutlich entschlacken. ----------------- [erklaerbaer] Innerhalb OSD benutzen wir haeufig (display ..) oder (pprint ...) um etwas anzuzeigen/auszugeben. Als input davon verwenden wir dann (format nil "....) weil wir format nicht in einen Stream schreiben lassen wollen (deswegen nil) sondern den return wert, also den erzeugten String anderweitig weiterverwenden moechten. Beim Schreiben in eine Datei sollte man sich aber die "Stream" Faehigkeit vom format befehl zu nutze mache. [/erklaerbaer] Beim with-open-file fehlt mir (evtl.) noch
Code: :if-exists :supersede :if-does-not-exist :create
------------------ ● 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 |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 16. Mrz. 2018 14:13 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
|
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 19. Mrz. 2018 08:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, mal wieder Danke für die Tipps!!! Hoffe, ich habe diese entsprechend umgesetzt! Was dolist macht war mir schon klar. Allerdings fehlte mir das Verständnis, wie Du damit die Exemplarliste erstellst. Nachdem ich als Lisp-Anfänger am Wochende darüber nachgedacht habe und dies endlich erkannt habe, wurde ich schon ein wenig rot. Konnte mir dann aber auch die zusätzliche Schliefe (Loop) sparen, indem ich mir direkt mit der Dolist die gewünschte Liste erstelle. Danke Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 19. Mrz. 2018 15:23 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Zitat: Original erstellt von MiBr: mal wieder Danke für die Tipps!!! Hoffe, ich habe diese entsprechend umgesetzt!
bitte gerne! :) - Hast alles prima gemacht. Zitat: indem ich mir direkt mit der Dolist die gewünschte Liste erstelle.
Das Aufsammeln liest sich etwas sperrig mit dem CONSCode: (setq liste_exemplar (cons (list (sd-inq-obj-contents-name a-item) a-item) liste_exemplar) )
Wenn die Reihenfolge in der Liste egal ist (in diesem Fall ist dies der Fall, da Du ja noch sortierst (ein schoener SORT Aufruf uebrigens))ist ein PUSH effektiver und Resourcen schonender. Code: (push (list (sd-inq-obj-contents-name a-item) a-item) liste_exemplar)
PUSH schiebt das Element einfach vorn an die liste ran. Stichwort: performance und garbage-collection. Ich denke das der push im source code auch (fuer viele) leichter zu lesen ist. ______________________________________________________________________ Wenn man die Original Reihenfolge wieder haben will, ist zum Ende ein NREVERSE (siehe reverse) zu empfehlen: Code: (setq my-num-list '(1 2 4 5 7 8)) (setq quad-list '()) (dolist (a-num my-num-list) (push (* a-num a-num) quad-list) ) (pprint quad-list) (setq quad-list (nreverse quad-list)) (pprint quad-list)
------------------ ● 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 |
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 20. Mrz. 2018 08:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, ich habe die Lisp entsprechend deiner Anregungen geändert. Stimmt schon der PUSH liest sich einfacher. Zudem habe ich die LOOP durch DOLIST ersetzt, dachte wenn DER_WOLFGANG dies bei seinen Code bevorzugt wird´s nicht schaden! Zudem habe ich noch die Möglichkeit hinzugefügt, Baugruppen am Ende und Modellnummern mit "." am Anfang der Liste aufzuführen. (Punkt Firmenspezifisch) Und da konnte ich den NREVERSE schon sehr gut einsetzen! Edit: Ich habe das zählen der Exemplare auch noch mal optimiert. Anstelle der zusetlichen DOLIST:
Code: ;;; Anzahl zählen der Exemplare zählen ;;; (setq Teile_anz 0) (dolist (tester_einzelteil nummern_liste) (when (equal (sd-inq-obj-contents-sysid (second tester_exemplar)) (sd-inq-obj-contents-sysid tester_einzelteil)) (setq Teile_anz (+ Teile_anz 1)) )) ;end dolist
habe ich eine Liste 'id_nummern_liste' in vorherriger DOLIST erstellen lassen und später wie folgt ausgewertet. Code: (setq Teile_anz (count (sd-inq-obj-contents-sysid (second tester_exemplar)) id_nummern_liste :test #'equal))
Ich hoffe die Änderungen gehen in die richtige Richtung!!! Gruß Michael [Diese Nachricht wurde von MiBr am 20. Mrz. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 21. Mrz. 2018 14:56 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Zitat: Original erstellt von MiBr: Zudem habe ich die LOOP durch DOLIST ersetzt
Wenn man mit LISTen arbeiten TUT dann TUT LIST(aka DOLIST) die LISTe durcharbeiten. ;-) Hat sich irgendwie schon vor 20 Jahren als die einfachere Schreibweise bei mir etabliert. Zitat: Ich hoffe die Änderungen gehen in die richtige Richtung!!!
Dreh dich mal um! Und guck in die Ferne... weiter in die Firma. Siehst du da den LISP Anfaenger 'MiBr' stehen? Heute stehst du mit deinen LISP Kenntnissen deutlich woanders. --------------------------------------------- Aber ich verstehe den code mit den Punkten / Baugruppen nicht ganz. Du zerschiesst Dir da doch die exemplar-liste (zum Teil). In Zeile 148 haben wir eine sortierte Liste der Exemplare auf der Ebenen der Quellbaugruppe. Fein. Wenn wir jetzt :Punkt_anf anhaken, wird in den 2 Dolisten separiert. Wenn wir jetzt aber :baugr_ende auch anhaken... ist die Punkte Sortierung dann nicht wieder hinueber? Oder ist "BauGruppenAnsEnde" die hoehere SortierRegel? Vielleicht passt das aber auch so zu Deiner/Eurer Anfoerderung <schulterzuck> / -(a) .ass42 -(p) teil12 -(p) BlechWeg -(p) ruhige.Kugel -(a) Osternest -(c) ContainerXmas -(p) .part1 -(p) .part33 -(a) .ass2 -(p) Hase -(p) Hase.2 -(v) Ansichtssache -(p) Hase.12 alles eigenstaendige Exemplare [ X ] "Modell-Nr. m. Punkt n.v. sortieren" [ X ] "Baugr. am Listenende einfügen"
-------- ich haette statt der doppelten dolist eher hierzu tendiert:
Code: (when punkt_anf (let (point-with point-without) ;; local vars as local as possible (dolist (a-item liste_exemplar) (if (find "." (first a-item) :test #'sd-string=) (push a-item point-with) (push a-item point-without) ) ) (setq liste_exemplar (nreverse (nconc point-without point-with))) ; oderso ))
.. nur als Anregung. Damit sucht man nur einmal. Das der "." irgendwo im name vorhanden sein kann ist Absicht? Das ViewSets und aehnliches manchmal rausfliegt ist Absicht? OderAberUnd nur ein Nebeneffekt von [X]baugr_ende ? (sorry jetzt werde ich schon wieder zu kritisch.. )
------------------ ● 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 |
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 21. Mrz. 2018 15:34 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, Zitat: Oder ist "BauGruppenAnsEnde" die hoehere SortierRegel?
ja! Zitat: Das der "." irgendwo im name vorhanden sein kann ist Absicht?
Modellname (sd-inq-obj-contents-name) ist bei uns eine Nummer, die nach einem Zahlenschlüssel erstellt wird! Beispiel: Fertigungsteile sehen immer so ähnl. aus -> 454.4654.3123 und DIN-Teile etc. so z.B. -> 123 4567891 So kann ich die Fertigungsteile sehr schön vorne auflisten! Zitat:
Das ViewSets und aehnliches manchmal rausfliegt ist Absicht? OderAberUnd nur ein Nebeneffekt von [X]baugr_ende ? (sorry jetzt werde ich schon wieder zu kritisch.. )
Absicht Jein aber mir bewußt! Diese werden später im Code eh ignoriert! Und bei mir gerne kritisch sein!!! Ach ja der Code mit der DOLIST von Dir sieht viel besser aus! Wird bei Zeiten eingearbeitet!!! Danke nochmal ohne Dich und das Forum hätte ich das nie hinbekommen! Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 23. Mrz. 2018 22:04 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Zitat: Original erstellt von MiBr: Danke nochmal ohne Dich und das Forum hätte ich das nie hinbekommen! Michael
Prima! Alles gut. Das war / ist ein sehr effektiver thread mit LISP Kenntnissen geworden. Ich hoffe das es noch 2..3 mehr Mitleser gibt. die von unserem hin-und-her profitieren konnten . Und damit dieser Thread auch noch mal zu seinem Titel zurueckfindet: Umlaute in CSV-Dateien Code: lowercase,ö,ä,ü uppercase,Ö,Ä,Ü
dies moege der Inhalt einer CSV Datei sein..
------------------ ● 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 |
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 26. Mrz. 2018 08:09 <-- editieren / zitieren --> Unities abgeben:
Hallo, so ich habe die Lisp noch mal entsprechend angepasst. Zitat: Ich hoffe das es noch 2..3 mehr Mitleser gibt. die von unserem hin-und-her profitieren konnten .
Das hoffe ich auch, falls nicht habe ich auf jeden Fall nee Menge gelernt! Und falls doch noch jemand mitliest, würde ich mich über Ideen/Verbesserungsvorschläge freuen. Ansonsten läuft die Lisp für mich! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Seele Mitglied Konstrukteur
Beiträge: 364 Registriert: 11.06.2003
|
erstellt am: 26. Mrz. 2018 11:07 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Hallo Michael, ... ich habe mir gerade dein Makro mal angesehen, dabei ist mir folgender Punkt aufgefallen, welcher noch fehlen würden: Wähle ich eine Baugruppe, so werden die Unterbaugruppen und deren Inhalte nicht mit berücksichtigt. Ich finde diese sollten mit angezeigt werden. 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: 508 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 19R3 Mechanical Pro
|
erstellt am: 26. Mrz. 2018 12:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, da hatte ich auch schon drüber nachgedacht, allerding ist das beim näheren betrachten nicht ganz so einfach. Welche Unterbaugruppen sollen berücksichtigt werden? Bei uns sind Teile wie z.B. Rillenkugellager im 3d-Modell auch Baugruppen! Und wenn ich alle (quasi nur Teile) auswerten lasse, dann hätte ich ja einen Innenring, einen Aussenring und nee Menge Kugeln in der Liste, beim dem Beispiel Rillenkugellager. Und sowas wie: Such dir die Baugruppen aus! Wie soll das gehen? Da bei uns die Struktur relativ flach ist, geht´s auch noch einigermaßen. Zusammenführen kann man die Listen dann noch in Excel. Danke für deine Rückmeldung, aber das bekomme ich leider nicht hin! (Vielleicht DU?) Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 26. Mrz. 2018 13:38 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Zitat: Original erstellt von MiBr: da hatte ich auch schon drüber nachgedacht, allerding ist das beim näheren betrachten nicht ganz so einfach.
Stichwort : Rekursion! ( ich hatte das auch im Hinterkopf als wie uns um deine Funktion gekuemmert haben) Wir hatten das Thema auch vor gar nich so langer Zeit: * Ordnerinhalt über LISP auslesen * Wie bekomme ich alle am Bildschirm angezeigten Teile in eine Liste Aber statt den vorhandenen Code (deswegen) in Funktionen zu unterteilen, von denenen sich eine rekursiv selbst wieder aufruft geht es in diesem Fall denke ich einfacher: Wie sammelst du in V2.1 auf ? Code: (setq nummern_liste (sd-inq-obj-children quelle_bg))
Hier koennte jetzt die rekursion hin, die alles in den Unterbaugruppen ebenfalls aufruft. Aber wir sind mal faul und bemuehen das IKIT unter Verwendung von get_selection: Code: (setq nummern_liste (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :allow_wire_part :allow_face_part :select :recursive :in_assembly quelle_bg)))
Baugruppen tauchen mit dem Ansatz nicht mehr auf, aber eben alle Teile bis in die hintersten Ecken (aehmm Strukturen). Also noch ein (recursive :value-type :boolean) und ein (if recursive .. ) spendieren.. und dann koennte es schon tun. Der Fragesteller moege testen. [edit]Zeilenumbruch im 2. Codeschnipsel lesbarer gemacht[/edit] ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● [Diese Nachricht wurde von der_Wolfgang am 27. Mrz. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 26. Mrz. 2018 14:09 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Michael, in einer selbst geschriebenen Rekursion koenntest Du auf "." in Baugruppennamen reagieren und diese dann NICHT auf loesen: Code: (get-the-children (quelle) (let ((some-children (sd-inq-obj-children quelle))) (dolist (a-child some-children) (if (sd-inq-ass-p a-child) (if (find "." (sd-inq-obj-contents-name a-child) :test #'string=) (push a-child result) ;; Kauf-Baugruppe ;; else ;; it is a selfmade assembly, no stock 'part' (get-the-children a-child) ;; <<-- the recursive CALL! ) ;; end if "." ; else.. (push a-child result) ) )))(setq nummern_liste (get-the-children quelle_bg))
nein, der obige Code Schnipsel funktioniert so mit der Ergebnissbehandlung nicht. Ist nur ein Gedankenanstoss. ------------------ ● 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 |
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 26. Mrz. 2018 19:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, eigentlich kein schlechter Ansatz , aber leider sind die Modellnamen bei uns in der Datenbank nicht so gepflegt und gehegt wie es Ihnen gebühren würde. So würde das wahrscheinlich zu 90% klappen, aber die 10% könnten ärgern! Somit glaube ich, ist das Fehlerpotenzial mit der derzeitigen Version geringer. Gibt es eigentlich eine Möglichkeit anstelle der Modellnamen (sd-inq-obj-contents-name) die Stammdatennummer zu verwenden? Die ist zu 100% auf Stand, dass würde mir Helfen das Tool noch abzurunden! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 27. Mrz. 2018 15:25 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Zitat: Original erstellt von MiBr: eigentlich kein schlechter Ansatz ,....Gibt es eigentlich eine Möglichkeit .. die Stammdatennummer
IKIT: - (sd-inq-db-attributes owner)
- (sd-inq-db-attribute-values name owner)
Musst halt gucken wo das "vergraben" ist. Ich wuerde jetzt aber dringend eine kleine lokale Funktion vorschlagen: Code: (component-selfmade-p (a-item) ;; may be use sd-string-match-pattern-p ? (find "." (get-that-name a-item) :test #'string=))
Damit sieht man besser das das eine Funktionalitaet ist, die Firmenspezifisch ist ( "Kapselung" ) Oder aber es gibt eine hierzu passende defun in "mibr_utils.lsp" ------------------ ● 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 |
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 28. Mrz. 2018 07:51 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich glaube mit folgendem komme ich an den Namen der Stammdate: (sd-inq-item-attribute a-item "DB-PREF" :NAME :attachment :contents) Leider komme ich zur Zeit nicht dazu dies enzubinden, bin hier halt nicht als Programmierer eingestellt und die Projekte vordern mich jetzt ein bischen (Schade). Mal schauen ob ich das mit dem Kapseln auch noch hin bekomme, allerdings empfinde ich das nicht als so dringend! Gruß und nochmals Danke Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 28. Mrz. 2018 08:36 <-- editieren / zitieren --> Unities abgeben:
Hallo eine Frage hätte ich da noch zu meinen Punkt! um die Firmenspezifische Sache noch schicker zu machen, wollte ich abfragen ob der Punkt an der 2 oder 3 Stelle steht. Hatte an folgendes gedacht (ungetestet): (find "." (subseq (first a-item) 1 2) :test #'sd-string=) Könnte gehen, kommt mir aber ein wenig gemurkst vor, ODER? Gruß Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 28. Mrz. 2018 11:03 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Erster Anlauf: Code:
(string= (subseq s 1 2) ".")
Zweiter Anlauf:
Code:
(= 2 (search "." s))
Dritter Anlauf:
Code:
(char= #\. (char s 2))
Und wahrscheinlich findet gleich jemand noch was Besseres :-)
[Diese Nachricht wurde von clausb am 28. Mrz. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 28. Mrz. 2018 13:04 <-- editieren / zitieren --> Unities abgeben:
|
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 28. Mrz. 2018 15:16 <-- editieren / zitieren --> Unities abgeben: Nur für MiBr
Ich hatte bereits vor Tagen mit boeser Absicht auf SD-STRING-MATCH-PATTERN-P hingewiesen, weil mir das mit "irgendwo nen Punkt" haklig erschien. Code: (or (sd-string-match-pattern-p ".\\..*" the-name) (sd-string-match-pattern-p "..\\..*" the-name) )
Da es der Punkt ist sieht es komisch aus. Hier ein einfacheres Beispiel mit der Suche nach "A" an 2 oder 3. stelle Code: (or (sd-string-match-pattern-p ".A.*" the-name) (sd-string-match-pattern-p "..A.*" the-name) )
Aber wenn es schon um eine ==>> POSITION geht.. folgendes ist vielleich einfacher zu lesen:
Code: (member (position #\. "A.GT") '(1 2))
oder noch einfacher: Code: (position #\G "ACGT" :start 1 :end 3)
------------------ ● 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 |
MiBr Mitglied Konstrukteur
Beiträge: 508 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 19R3 Mechanical Pro
|
erstellt am: 28. Mrz. 2018 16:10 <-- editieren / zitieren --> Unities abgeben:
Hallo, da sieht man mal wieder wie viele Wege zum Ziel führen! Übrigens auch meiner! (STOLZ) Aber am schönsten finde ich den letzten Vorschlag "oder noch einfacher:" von Wolfgang, der ist für mich am offensichtlichsten! Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |