| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
 | MAIT erhält den Abas Partner Performance Award 2025, eine Pressemitteilung
|
Autor
|
Thema: Was mache ich bei sd-create-menu falsch? (1338 mal gelesen)
|
MC Mitglied Dipl.Ing. Maschinenbau, Konstrukteur
  
 Beiträge: 644 Registriert: 20.10.2000
|
erstellt am: 10. Feb. 2010 08:00 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Lispler, ich baue gerade unsere Lisps soweit um, dass sie nach dem Umstieg von V13.01 auf V16.5 wieder funktionieren. Ich hatte seinerzeit ein neues Menü erzeugt, in dem die einzelnen Makros aufgerufen werden können. Das funktioniert jetzt auch noch weitestgehend, aber die Icons, die ich statt der Zahnräder angezeigt haben möchte erscheinen nicht. Im Ikit steht, dass ich den relativen Pfad angeben muss, aber nicht, ob mit ohne Datei-Endung, bzw. welches Bildformat in welcher Größe etc. benötigt wird. Wenn ich im ersten Schritt alle Makros und auch die Bilder im selben Verzeichnis (vorab mal lokal) liegen habe, dann sollte doch eigentlich auch das Bild erscheinen, oder was mache ich hier falsch? Zum Beispiel ist das Bild "Schleiffreistich-1-1" ein bmp mit 70x20 Pixeln. Anbei mal der Code, bzw. ein Teil davon: Code: (in-package :custom) (use-package :Oli)(sd-create-menu "Tools-Modeling" :title "OSDM Makros" :contents `( (:buttonBox "TeileInfozeigen" :title "Teile Info/zeigen" :buttons ( (NEUE_DICHTE_Farbe :label "Dichte&Farb" #|:image "muster-1.bmp" |# ) (dichte-suchen-dialog :label "Dichte suchen") (dc4-normteil-dichte-dialog :label "Gewichtzuw") (os_teileinfo :label "Teile-Daten" :image "Teileinfo" ) (Ansichtsliste-speichern :label "Ans.speichern" :image "liste_merken" ) (Ansichtsliste_laden :label "Ans. laden" :image "liste_laden" ) ;(schnittebene :label "Schnitt zeig.") (zeige_nachbarteile :label "Nachbarteile") ) ;end buttons ) ;end buttonbox (:buttonBox "Teile_bearbeiten" :title "Teile bearbeiten" :buttons ( (os-gew-a-freistich :label "Gew.-Freistich" :image "Gewindefreistich" ) (dc4-freist-schleif-dialog :label "Schleif-Freistich" :image "Schleiffreistich-1-1" ) (zylindersenkung :label "Zyl.-Senk" :image "Zylindersenkung.bmp" ) (kegelsenkung :label "Keg.-Senk" :image "Kegelsenkung.bmp" ) ; (os-aussengewinde :label "Aussengewinde") ; (dc4-positionieren-dialog :label "Kegelpos") ; (dc4-teile-bilanz-dialog :label "Teilezaehl") ) ;end buttons ) ;end buttonbox . . . .
Vorab schonmal vielen Dank für eure Hilfe! Grüße, Michael ------------------ Das maximale Volumen subterraner Agrarprodukte steht in reziproker Relation zur mentalen Kapazität des Produzenten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 10. Feb. 2010 20:11 <-- editieren / zitieren --> Unities abgeben:          Nur für MC
Also, es geht auch ohne '.bmp' der relative Pfad bezieht sich nicht auf 'relative' zu deinem LISP sondern relative zu einer user/site/corp directory. C:\DuE\W\Anwendungsdaten\CoCreate\CoCreateModeling\16.50 dahinter befindet sich eine \bitmaps\bmp struktur. Da sollten die bunten Bildchen dann hinein. Sd-create-menu verwendet hier die selbe Methode zum finden der Dateien / zum vervollständigen des Dateinamens wie z.b. sd-create-image. GGF. mal dort nachlesen. --- Aber bitte mit etwas Vorsicht geniessen, hab's nur aus dem Kopf beantwortet! --- Wenn Du bilder und lisp im selben Verzeichnis haben willst, kannst Du dir mit *load-truename* (standard LISP) das Verzeichnis DEINES lisps ermittlen und mit diesem dann dem sd-create-menu absolute pfadnamen geben. Das macht es aus meiner Sicht ab und an einfacher als sich mit automagischen Suchstragegien zu beschäftigen. ------------------ ● Seamonkey Firefox Thunderbird ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MC Mitglied Dipl.Ing. Maschinenbau, Konstrukteur
  
 Beiträge: 644 Registriert: 20.10.2000
|
erstellt am: 15. Feb. 2010 12:23 <-- editieren / zitieren --> Unities abgeben:         
Hallo Wolfgang, danke für Deine Antwort. Meine rudimentären Lisp-Kenntnisse reichen aber wahrscheinlich nicht aus, um es nach Deiner Anleitung umzusetzen. Ich habe nun alle Makros mit *load-truename* statt load geladen. Sieht jetzt also so aus:
Code: (*load-truename* "Schleif-Freistich.lsp" )
Soweit funktioniert das Laden auch. Den Pfad für das Icon habe ich dann so:
Code: :buttons ( (os-gew-a-freistich :label "Gew.-Freistich" :image "Gewindefreistich" ) (dc4-freist-schleif-dialog :label "Schleif-Freistich" :image "D:\Lisp\autoload\Modeling\Schleiffreistich-1-1.bmp" )
gesetzt. Sowohl die Lisp-Makros, als auch das Icon liegen im Verzeichnis D:\Lisp\autoload\Modeling Leider erscheint immer noch kein Bildchen. Ich bin nicht sicher, ob ich Deine Beschreibung richtig verstanden habe, oder wo nun noch das Problem ist. Kannst Du mir nochmal auf die Sprünge helfen? Nochmals danke im Voraus, Michael ------------------ Das maximale Volumen subterraner Agrarprodukte steht in reziproker Relation zur mentalen Kapazität des Produzenten. 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: 15. Feb. 2010 12:50 <-- editieren / zitieren --> Unities abgeben:          Nur für MC
|
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 15. Feb. 2010 18:22 <-- editieren / zitieren --> Unities abgeben:          Nur für MC
Zitat: Original erstellt von MC: Ich habe nun alle Makros mit *load-truename* statt load geladen.Code: (*load-truename* "Schleif-Freistich.lsp" )
Soweit funktioniert das Laden auch.
nie im Leben. Das ist eine nicht funktionierende Syntax! Zitat: Den Pfad für das Icon habe ich dann so:
Code: :buttons ( (os-gew-a-freistich :label "Gew.-Freistich" :image "Gewindefreistich" ) (dc4-freist-schleif-dialog :label "Schleif-Freistich" :image "D:\Lisp\autoload\Modeling\Schleiffreistich-1-1.bmp" )
Naja. genau das, will man doch vermeiden! Absolute HARD-codierte Dateinamen. Zusätzlich begehst du nun hier einen weitere Fehler: "\" kannst du nich einfach so in einem LISP string reinschreiben. "\" hat eine SonderBedeutung! Mach Dich bitte schlau warum! Empfehlung : schreibe "/" das ist einfacher zu merken, zu tippen. Und noch ein Tipp: * Dein LISP heisst "Schleif-Freistich" Also 2 Woerter mit Bindestrich * Dein Image heisst aber "Schleiffreistich" : ein Wort, Sowas erhöht nicht gerade die Übersicht im Dateissystem! :-( SchleifFreistich.lsp + SchleifFreistich-1.bmp + SchleifFreistich-2.bmp ..... __________________________________________________ Lad' Dir mal die angehänget LSP Datei. Guck was in der Console steht! Verschiebe die Datei mal nach c:\irgendow und lad die Datei in den Modeling, mal nach d:\.. und lad die Datei in den Modeling, bennene die Datei auch mal um(!!), schubs sie mal irgendow ins Netzwerk und lad die Datei in den Modeling, auf'n USB stick und lad die Datei in den Modeling oder wohin auch immer. Beobachte immer die Ausgabe. Das ist nix weiter als eine praktische Anwendung von dem was im 1. Link vom Claus steht. Zitat: Kannst Du mir nochmal auf die Sprünge helfen?
Ala HOPP! ------------------ ● Seamonkey Firefox Thunderbird ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MC Mitglied Dipl.Ing. Maschinenbau, Konstrukteur
  
 Beiträge: 644 Registriert: 20.10.2000
|
erstellt am: 22. Feb. 2010 06:35 <-- editieren / zitieren --> Unities abgeben:         
Hallo Wolfgang, danke für die Hilfe! Zitat: nie im Leben. Das ist eine nicht funktionierende Syntax!
Ich hatte natürlich ein älteres Lisp mit den normalen load-Befehlen geladen, daher funktionierte es bei mir noch (Asche auf mein Haupt)... Als Ausgabe bei den 4 Zeilen:
Code: (pprint "Der aktuelle Dateiname ist:") (file-namestring *load-truename*)(pprint "Das Verzeichnis aus dem diese Datei geladen wurde:") (directory-namestring *load-truename*)
erscheint allerdings nichts. Ich konnte es nun nach Rücksprache mit unserem CAD-Dienstleister etwas eleganter mit einer neuen Umgebungsvariable lösen. Trotzdem nochmal vielen Dank für den Exkurs, ich kann das bestimmt mal für etwas anderes gebrauchen. Meine letzte Lisp-Schulung ist 7 Jahre her. Wenn man nur ab und an mal mit Lisp zu tun hat, gerät vieles in Vergessenheit. Grüße, Michael ------------------ Das maximale Volumen subterraner Agrarprodukte steht in reziproker Relation zur mentalen Kapazität des Produzenten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
  
 Beiträge: 720 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.5 Creo Elements/Direct Drafting 20.5 Creo Elements/Direct ModelManager 20.5
|
erstellt am: 22. Feb. 2010 10:27 <-- editieren / zitieren --> Unities abgeben:          Nur für MC
Zitat: Original erstellt von MC: erscheint allerdings nichts.
Konsole einschalten! (Menü Ansicht - Konsole) Dort stehen die Ausgaben von pprint und sonstige Meldungen etwa beim Laden von Lisps. ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 23. Feb. 2010 19:37 <-- editieren / zitieren --> Unities abgeben:          Nur für MC
Zitat: Original erstellt von MC: Als Ausgabe bei den 4 Zeilen:
Code: (pprint "Der aktuelle Dateiname ist:") (file-namestring *load-truename*).....
erscheint allerdings nichts.
Also in dem LISP, was ich als demo beispiel zusammen gehämmert habe, steht explizit drin: Code: (sd-show-console-window)
Die Konsole wird also ZWANGS aufgemacht! Wenn Du dieses Fenster natuerich irgendwo hinschiebst, wo es verdeckt ist, ausserhalb des Bildschirm steht (oder was auch immer) dann läuft was falsch. Zitat: Ich konnte es nun ... etwas eleganter mit einer neuen Umgebungsvariable lösen.
Ob eine *neue* Umgebungsvariable, die man auf jedem System in der Regel erst setzen muss, "eleganter" ist... wage ich mal anzuzweifeln (MEINE meinung!)Mit dem *load-truename* Ansatz kannst Du lsp und Zusatzdateien in ein beliebiges Laufwerk (zum Beispiel auf dem Firmen Netz) ablegen und einen andere CAD'ler sagen : lade LSP file //x/y/z.lsp Und die Zusatzdateien werden automatisch mit geladen. Kein gefummel am lokalen environment. -- Aber gut Dein Problem scheint gelöst. ------------------ ● Seamonkey Firefox Thunderbird ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MC Mitglied Dipl.Ing. Maschinenbau, Konstrukteur
  
 Beiträge: 644 Registriert: 20.10.2000
|
erstellt am: 24. Feb. 2010 06:33 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Wolfgang, ich hatte mich wohl etwas zu knapp ausgedrückt. Das Konsolenfenster erscheint natürlich, aber ich denke, es müßte außer "Diese Datei wurde geladen wie folgt: auch noch "Der aktuelle Dateiname ist: xxxx.lsp" und "Das Verzeichnis aus dem diese Datei geladen wurde: x:/dfgrt/xxx" erscheinen. So sieht es aus: Die Umgebungsvariable hatte ich schon in unserer 13.01, daher konnte ich wenigstens sonst fast alles so belassen wie es war. Sie wird auch nicht auf jedem Rechner einzeln gesetzt, sondern in einer auf dem Server liegenden *.bat-Datei, in der unser CAD-Dienstleister (Inneo) schon diverse andere Umgebungsvariablen deklariert hat. Wie schon gesagt, load-truename ist für mich mangels Erfahrung in Sachen Lisp absolutes Neuland. Ich bin zu 98% Konstrukteur, mache den Rest der Zeit etwas Lisp, wenn mal einer der Kollegen etwas braucht. Da reicht es leider nur zum Kratzen an der Oberfläche. Grüße, Michael ------------------ Das maximale Volumen subterraner Agrarprodukte steht in reziproker Relation zur mentalen Kapazität des Produzenten. [Diese Nachricht wurde von MC am 24. Feb. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 24. Feb. 2010 21:15 <-- editieren / zitieren --> Unities abgeben:          Nur für MC
Zitat: Original erstellt von MC: ich hatte mich wohl etwas zu knapp ausgedrückt. Das Konsolenfenster erscheint natürlich, aber ich denke, es müßte ... erscheinen.
Hallo Michael, wie recht Du hast. Und kaum sehe ich ne gescheite Fehlermeldung / den aktuellen Output, sehe ich auch was ich falsch gemacht habe. Sorry. Da fehlen einfach 2 pprints. Zitat: Die Umgebungsvariable ....Server... *.bat-Datei
Ok, dann siehts anders aus. Ich habe die Version von load_truename_example.lsp auf cad.de korrigiert. ------------------ ● Seamonkey Firefox Thunderbird ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |