| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: OSDM Menue-Punkte enablen (1167 mal gelesen)
|
gesch Mitglied Konstrukteur
Beiträge: 18 Registriert: 24.04.2003
|
erstellt am: 03. Mrz. 2005 12:17 <-- editieren / zitieren --> Unities abgeben:
Hallo CC-Fans, habe ein kleines Problem, vielleicht kann mir jemand weiterhelfen: Mann kann in der Datei sd_avail_cmds.cmd eigene Funktionen integrieren. Ob eine Funktion enabled ist oder nicht kann mit :enable gesteuert werden. Frage: Wenn ich hier den Wert einer von mir in meinen Makros gesetzten Lisp-Variable abfrage (z.B.: :enable *XYZ_MENUE_ACTIVE* ) ist diese den Menue-Funktionen unbekannt (Menue ist immer grau egal wie ich *XYZ_MENUE_ACTIVE* setze (T/NIL) !). Wie muss ich hier vorgehen. Hat jemand vielleicht ein kleines Beispiel? Vielen Dank im Voraus! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 03. Mrz. 2005 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für gesch
Hallo, Bist du dir sicher, dass die Variable auch im richtigen package ist? Rufts du sie auch aus diesem package aus? Sicherheitshalber schreibe mal immer dsa packge vor deine Variable, z.B.:
Code: my-package::*XYZ_MENUE_ACTIVE*
Gruss Dorothea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gesch Mitglied Konstrukteur
Beiträge: 18 Registriert: 24.04.2003
|
erstellt am: 03. Mrz. 2005 13:57 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank fuer die schnelle Antwort, aber wenn ich das Lisp-Package vor die Variable schreibe startet das OSDM nicht mehr richtig und es kommt schon gleich am anfang ein Fehler: "LISP-Fehler: There is no Package with the name my-package. Anscheinend werden meine Makros ueber die sd_customize erst spaeter geladen als die Menues aktiviert werden und die Variablen von mir sind zu dem Zeitpunkt noch unbekannt! Wer kann helfen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 03. Mrz. 2005 15:14 <-- editieren / zitieren --> Unities abgeben: Nur für gesch
Hallo, Ich weiss nicht, ob das jetzt eine elegante Loesung ist. Aber beim mir tut das so: Ich definiere mir eine Funktion im mei-package. Das File, das die Funktionsdefinition enhaelt, macht nichts weiter ausser meine Tools fuer die available commands zu definieren. Im sd_avail_cmds File schreibe ich dann mei::_xxx_. Dieses package ist naemlich bekannt zu der Zeit, wenn das File geladen wird. Vielleicht gibt dir ja jemand noch eine Anleitung fuer eine korrekte Loesung. Aber probieren kannst du es zunaechst mal so. Gruss Dorothea
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. ● PE6+8@home ● W10 Pro Build19044.2364 ● Drafting V20.1+4 ● Modeling V20.1+4
|
erstellt am: 03. Mrz. 2005 20:07 <-- editieren / zitieren --> Unities abgeben: Nur für gesch
Hi, Code:
(in-package :my-package) (use-package : oli)(defvar mei::*XYZ_MENUE_ACTIVE*) (defun ratata-pipapo (laberbla) (progn.... (if wenns-denn-sein-muss (setq mei::*XYZ_MENUE_ACTIVE* T) ;; else (setq mei::*XYZ_MENUE_ACTIVE* NIL) ) )
So kannst Du alle Deine Sachen in deinem Package machen hast aber zum avail-cmds hin nicht das package problem. Du koenntest natuerlich auch folgendes machen (was ich fuer besser halte) Code:
(in-package :my-package) (use-package : oli)(defvar *XYZ_MENUE_ACTIVE*) (defun ratata-pipapo (laberbla) .. )
(sd-define-available-command ... :enable *XYZ_MENUE_ACTIVE* .... )
Wenn Du dann dieses deine Lisp file mal einem netten Kollegen gibst, hat er automagisch auch das passende avail-command in seinem OSD und braucht selbiges nur in eine Toolbox seiner Wahl zu schubsen. -- Kein haendisches editieren von sd_avail_cmds.cmd, was man eh nicht machen sollte. PS: die IKIT docu liefert mal wieder ein hervorragendes vollstaendiges Beispiel. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |