Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Menü tauschen mit einem LISP-Skript??

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Menü tauschen mit einem LISP-Skript?? (1092 mal gelesen)
Marando
Mitglied
Informatiker


Sehen Sie sich das Profil von Marando an!   Senden Sie eine Private Message an Marando  Schreiben Sie einen Gästebucheintrag für Marando

Beiträge: 31
Registriert: 14.03.2006

erstellt am: 14. Mrz. 2006 16:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,
ich habe gehört, man kann ja mit LISP-Skripte das Problem lösen, aber ich nin ein Anfänger in dem Gebiet.
Ich weiß beispielweise nicht, wo und wie man ein LISP-Skript definiert.
Aber nun zu meiner Frage:

meine Anwendung unter AutoCAD-VB verfügt über ein Menü (dienst.cui). Das wurde von mir erstellt.
Man kann über AutoCAD eine Menüzeile durch einen anderen erstezen. Das kann ich manuel mit dem Befehl _menu durchführen. Nach der Eingabe des Befehles _menu erscheint ein Dialogfenster, in dem ich die neue Menüzeile auswählen und übernehmen kann. So habe ich die alte Menüzeile aus meiner Anwendung entfernt und die neue hinzugefügt. Wie kann ich aber das Ganze in VB programmieren? Über LISP? Falls ja, wie rufe ich mein Lisp-Skrip auf? Ich habe die Hilfe mir angeschaut, aber blicke ich nicht durch, wie ich es machen sollte. Hat Jemnad eine Idee?
Gruß
Beispiel:
Es gibt 2 Anwendern: Anw1 und Anw2
Anwender1 darf Speichern und Anwender2 darf nicht Speichern
Ich habe zwei Menüs erstellt. men1 un men2
Wenn der Anw1 sich einliggt, soll die Menüzeile men1 geladen werden und wenn An2 sich anmelder, soll die Menüzeile men2 geladen werden. Das Ganze aber irgendwie in VB einbauen und von dort aus das Tauschen der Menüzielen steuern.


Marando

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 18.1, LibreOffice 5+

erstellt am: 14. Mrz. 2006 17:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Marando 10 Unities + Antwort hilfreich

Hallo und Willkommen!

Vorab eine Bitte: Fülle Deine Systemangaben aus, das macht es anderen Mitgliedern leichter :-) Zu Deinen Fragen: Steuern lässt sich das schon. Zunächst solltest Du herausfinden, wer denn der aktuelle Benutzer ist. Dies erfährst Du über die Systemvariable "Loginname". Der Befehlsaufruf in der ACAD-Zeile:

Befehl: (getvar "loginname")

Dann würde ich - solange es bei zwei Benutzern bleibt - mit "if" arbeiten (Ansonsten: evtl. "cons"?!). Also:

Code:
...
(if (= (getvar "loginname") User1)  ; wenn-Bedingung
  (_.menuload1 ...)                  ; dann mach...
  (_.menuload2 ...)                  ; sonst mach...
)...

Du kannst natürlich auch mit "_.menu" arbeiten. Um das zu automatisieren, muss vorher die Sysvar "filedia" auf "0" gesetzt werden - diese steuert die Anzeige der Dialogfenster. Tip: Schau Dir mal die Pfadangaben für ACAD/Lisp an. Ein Slash "/" ist was anderes als ein Backslash "\". Lisp akzeptiert nur "\\" oder "/". Dann kannst Du den Pfad für Deine Menüdateien eingeben.

Für Grundlagen, die Du Dir wohl selbst aneignen solltest, besuche mal diese empfehlenswerte Seite eines (leider ehemaligen) Mitglieds:

http://autolisp.mapcar.net/

Zum Schluss noch eine Anmerkung: LISP ist nicht gleich SCRIPT :-(  Frohes Schaffen!

Freddy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Marando
Mitglied
Informatiker


Sehen Sie sich das Profil von Marando an!   Senden Sie eine Private Message an Marando  Schreiben Sie einen Gästebucheintrag für Marando

Beiträge: 31
Registriert: 14.03.2006

erstellt am: 14. Mrz. 2006 17:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Freddy,
danke für Deine ausführliche Antwort. Wie ich auch in meiner Frage geschrieben habe, bin erst seit 2 Monate in dem Bereich tätig. Ich habe eine Anwendung in AutoCAD_VB Version 2006 geschrieben. Sie funktioniert ja. Nun kam der Wunsch, daß man zwei verschiedene Menüzeile haben sollte, je nach Anwender.
Ich muß eigentlich nicht mehr abfragen, wer der Anwender ist, denn es gibt eine Maske, auf der der Anwender enstcheiden muß, ob er die weitere Anwenidungen zum "Berabeiten" oder "Ansehen" öffnen möchte. Wer was machen darf, ist ja über die datenbank (Berechtigungen) schon geregelt.
Es ist nur so, daß ein Anwender sich anmeldet zum "Ansehen". Die Menüzeile muß dann so angepasst sein, daß er zum Beispiel nicht speichern kann. Ich habe es herausgefunden, daß man mit "~" Vor dem Menüpunktnamen den Menüpunkt deaktivieren kann (gerau darstellung).
Da ich zu wenig Ahnung habe, dachte ich mir, ich erstelle ein Menü mit allen Untermenüs und noch mach eine Kopie davon für die die Anwendung nur ansehen können bzw, dürfen.
Ich muß nur bei der Auswahl zwischen "Bearbeiten" oder "Ansehen" die richtige Menüzeile laden. Normaleweise mache ich mit _menu und dann die richtige Menüzeile (name.cui) aufrufen und damit erstze ich die alte durch die neue Menüzeile. Das genau möchte ich automatisieren und habe leider keine Ahnung davon, wo ich anfangen sollte???
Kannst Du bitte mir schreiben, wie so ein Lisp-Programm KOMPLETT aussieht und wie ich es in mein Visual-Basic Programm (bei der Auswahl von Bearbeiten oder Ansehen) anbinden könnte???
Muß ich ein Makro schreiben, das das Lisp-Programm aufruft? wie komme ich an das Lisp-Programm vom VB-Programm??


Grüße

Marando

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 18.1, LibreOffice 5+

erstellt am: 14. Mrz. 2006 17:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Marando 10 Unities + Antwort hilfreich

Hallo Marando,

hier ein klitzekleines Beispiel, einfach mal in die ACAD-Befehlszeile kopieren...

Code:
(defun test ()
(_> (princ "\nHello World")
(_> (princ)
)

... und mit "(test)" aufrufen - ohne Anführungszeichen natürlich.

Wie eingangs erwähnt - Grundlagen musst Du Dir selbst aneignen! Leider habe ich von VB keine Ahnung :-( Es ist sicherlich machbar, irgendwelche Parameter zwischen Lisp und VB hin- und her zu schaufeln... Vorschlag: Gib mal in der ACAD-Hilfe "scr" oder "Skript" ein und schau, was passiert. Das könnte Dir die Sache erleichtern. Das Skript lässt sich bestimmt auch über VB ausführen - nehme ich zumindest an. Auch die Suchfunktion hier im Forum kann Dir zu Scripts was Hilfreiches liefern! Hier mal ein paar Denkanstösse für Dein "Test.scr":

Code:
filedia
0
_.menuunload
Menü1
_.menuload
Menü2

Also zunächst das unerwünschte Menü entfernen, dann das gewünschte laden. Obige Version ist natürlich ein Rohbau. Es sollte vorher noch geprüft werden, welches Menü gerade geladen ist etc. Du kommst nicht drum herum, Dir ein paar Dinge selbst beizubringen :-))

Freddy

[Diese Nachricht wurde von Paulchen am 14. Mrz. 2006 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 15. Mrz. 2006 00:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Marando 10 Unities + Antwort hilfreich

Hallo Marando,

für diese Geschichten solltest du dir mal das Thema CUI und Arbeitsbereiche ansehen. Für Deine Sache bietet sich gerade das Thema Unternehmens-cui an.

Programmieren geht natürlich auch. Dann kann man sicher auch Lösungen bieten die entsprechend des Loginnamens ausfiltern, welche Unternehmens-CUI geladen wird.

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Zerspanungsmechaniker/in (m/w/d)

Sie interessieren sich für spannende Projekte? Sie möchten selbstständig und eigenverant­wortlich in einem innova­tiven Unternehmen arbeiten? Sie bewäl­tigen auch administrative Aufgaben und wollen sich mit Ihrer Erfahrung und guten Ideen einbringen? Dann sind Sie bei HTS richtig.

Wir entwickeln und produzieren Transport- und Hebe­technik in Fellbach und beliefern Kunden weltweit in allen Industrie- und Wirtschafts­zweigen....

Anzeige ansehenMechaniker
mkl-cad
Mitglied
Technischer Zeichner


Sehen Sie sich das Profil von mkl-cad an!   Senden Sie eine Private Message an mkl-cad  Schreiben Sie einen Gästebucheintrag für mkl-cad

Beiträge: 378
Registriert: 23.07.2003

ACAD 2002
Express Tools 1-9
Architektural Desktop
Windows XP
Server Windows 2003
3 GHz Rechner
1 GB RAM
80 GB Festplatte
ATI FireGL V3100
2 17" Flachbildschirme

erstellt am: 21. Mrz. 2006 13:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Marando 10 Unities + Antwort hilfreich

Hallo Marando

Man könnte das auch ohne Lisp hinbekommen. Du hast ja zwei Menüs. Richte ACAD einmal für den einen User und mal für den anderen User ein. Für jeden User speichest du ein Profil und exportierst die in z.B user1.arg und user2.arg. Da sich jeder User mit seinem Namen am Rechner anmeldet hat er auch unterschiedliche Menüs im Betriebssystem. Wenn eine gemeinsame Verknüfung benutz wird müsste man das ändern, bzw. für jeden User eine Verknüpfung anlegen. In der Verknüpfung zu ACAD fügst du nun hinter dem Ziel : c:\dein Pfad\acad.exe            /p "c:\-deine Pfadagabe\user1.arg"        ein
Das machst du in jedem Menü aller User.
Nun wird beim starten von ACAD automatisch das dementsprechende Profil geladen, also somit das Menü welches mit dem Profil gespeichert wurde.

Das ganz hat noch einen Haken: Ohne weitere Lisp-Programm ist zwar dann dein Menü abgeändert, so das gewisse Befehle nicht da sind. In der Befehlszeile kann der user die Befehle dennoch eintippen. Dazu müsste man die per Lisp deaktivieren.

------------------
  Martin 

Viele Grüße aus dem schönen Münsterland!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz