Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Menüs überprüfen ob geladen

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üs überprüfen ob geladen (2155 mal gelesen)
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: 02. Mrz. 2004 09:53    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 Programmierer

Ich habe ein schwerwiegendes Problem, bei dem ich einfach nicht weiter komme. Ich habe hier mal den Ausschnitt des Lisp-Programms angefügt um das es geht. Das Programm soll beim starten einer neuen Zeichnung überprüfen ob alle Menü-Dateien geladen sind. Wenn nicht wird eine Fehlermeldung angezeigt. Wenn alle Menüs da sind wird das Unterprogramm (startup) aufgerufen welches weitere Einstellungen vornimmt. Das klappt auch alles wenn man ACAD das erste Mal startet.
Und der Anwender muß die Menüs neu laden (Kann natürlich auch programmiert werden, das ACAD das selber macht. Hab ich aber wegen der Fehler nicht gemacht wegen der besseren Übersich). Der Benutzer gibt nun Install ein und alle Menüs sind geladen. Bis hierhin alles wunderbar. Wenn man allerdings wieder ein Menü entläd und eine neue Zeichnung öffnet, oder noch eine, müßte eigentlich die Warnmeldung wieder kommen aber es kommt nur die Fehlermeldung:

; Fehler:  Ausnahmebedingung aufgetreten: 0xC0000005 (Zugriffsverletzung)
; Warnung: Unwind übersprungen bei Ausnahmebedingung
; Fehler:  Ausnahmebedingung aufgetreten: 0xC0000005 (Zugriffsverletzung)
; Fehler:  Ausnahmebedingung aufgetreten: 0xC0000005 (Zugriffsverletzung)

Hier meine Befehle:

Befehle befinden sich in der acad.lsp und werden bei jeder zeichnung neu geladen

(defun S::startup (/ lina lim fehler)
 
  (vl-load-com)
  (command "cmdecho" "0")
  (command "regenmode" "0")
   (command "visretain" "1")
  (setq menüsgel (mapcar (function (lambda (X) (car X))) (menu-list)) )
  (setq menüsmus "GEWERKE")
  (startup-prüf)
  (setq menüsmus "HELUESAR")
  (startup-prüf)
  (setq menüsmus "ACAD")
  (startup-prüf)
  (setq menüsmus "SYMBOLE")
  (startup-prüf)
  (setq menüsmus "LAYERART")
  (startup-prüf)
  (setq menüsmus "LAYERAZ")
  (startup-prüf)
;(if (not startup)
    ;(load "startup.lsp" "Datei Startup.lsp nicht gefunden"))
(if ( = fehler 1) (alert "Die Menüdateien sind nicht geladen
Laden Sie die Menüs mit dem Befehl install neu
oder überprüfen Sie Ihre Netzwerkverknüpfung")
   ;(startup); weiterer Verlauf uninteressant da Programm nicht soweit kommt. Habe ich aukommentiert da ich den Befehl nicht beigefügt habe.
)
    (princ)
  )

(defun startup-prüf ( / )
  (setq nr -1 schl 1 inst 0)
  (while schl
    (setq nr (+ 1 nr ))
    (setq a-1 (nth nr menüsgel))
  (if (= a-1 nil)(setq schl nil)())
    (if (= a-1 menüsmus)(setq inst 1))
  )
  (if (= inst 0)(setq fehler 1)())
  (princ)
  )

(defun MENU-LIST (/ RETVAL) ;Menüliste erstellen
  (vlax-for FOR-ITEM (vla-get-menugroups (vlax-get-acad-object))
    (setq RETVAL (cons (cons (strcase (vla-get-name FOR-ITEM)) FOR-ITEM)
                       RETVAL
                 ) ;_ end of cons
    ) ;_ end of setq
  ) ;_ end of vlax-for
) ;_ end of defun

(defun c:install (/ )
  (command "menüentf" "ACAD")
  (command "menüentf" "HELUESAR")
  (command "menüentf" "GEWERKE")
  (command "menüentf" "SYMBOLE")
  (command "menüentf" "LAYERART")
  (command "menüentf" "LAYERAZ")
  (command "menülad" "ACAD.MNS")
  (command "menülad" "HELUESAR.MNS")
  (command "menülad" "GEWERKE.MNS")
  (command "menülad" "SYMBOLE.MNS")
  (command "menülad" "LAYERART.MNS")
  (command "menülad" "LAYERAZ.MNS")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P1=-")
  (menucmd "P0=ACAD.SNAP")
  (menucmd "P1=+ACAD.FILE")
  (menucmd "P2=+ACAD.EDIT")
  (menucmd "P3=+ACAD.VIEW")
  (menucmd "P4=+ACAD.INSERT")
  (menucmd "P5=+ACAD.FORMAT")
  (menucmd "P6=+ACAD.TOOLS")
  (menucmd "P7=+ACAD.DRAW")
  (menucmd "P8=+ACAD.DIMENSION")
  (menucmd "P9=+ACAD.MODIFY")
  (menucmd "P10=+HELUESAR.GEWERKE")
  (menucmd "P11=+HELUESAR.STEMPEL")
  (menucmd "P12=+HELUESAR.LAYER")
  (menucmd "P13=+LAYERAZ.GEWERKE-LAYER")
  (menucmd "P14=+HELUESAR.TEXT")
  (menucmd "P15=+GEWERKE.ALLE")
  (menucmd "P16=+SYMBOLE.ALLE")
  (menucmd "P17=+ACAD.WINDOW")
  (menucmd "P18=+ACAD.HELP")
  )

Zum Nachvollziehen könnt Ihr die Sache natürlich abkürzen indem Ihr Menüs aus den Lisp-Programmen entfernt
Bin für jeden Vorschlag dankbar. Vieleicht geht ja auch nicht was ich vorhabe. Ich hoffe nur bei Euch kommen die gleichen Fehlermeldungen. Ich weiß wohl das ich noch eine Überprüfung machen muß ob ACAD die Menüs überhaupt finden kann. Aber daran liegts nicht. Das mach ich auch noch. Man kann auch bestimmt einiges besser schreiben als wie ich es gemacht hab, allerdings verliere ich bei sehr komprimierter Schreibweise leicht die Orientierung;-). Hoffe ich habe mich verständlich ausgedrückt.
Danke schon mal an alle.

[Diese Nachricht wurde von mkl-cad am 02. Mrz. 2004 editiert.]

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 02. Mrz. 2004 17:09    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 mkl-cad 10 Unities + Antwort hilfreich

Mal ohne Rücksicht auf dein Proggi :

(vl-load-com)

(defun MENU-IS-LOADED ( MENU /  MENULISTE )
  (if(=(type MENU)'STR)
    (if(member (strcase MENU)
         (mapcar (function (lambda (X) (car X)))
                   (vlax-for FOR-ITEM (vla-get-menugroups (vlax-get-acad-object))
                     (setq MENULISTE (cons (cons(strcase (vla-get-name FOR-ITEM))             
                                                FOR-ITEM
                                          )
                                          MENULISTE
                                      )
                     )
                   )
         )
       )
      (assoc (strcase MENU) MENULISTE)
    )
  )

(defun Menus-are-loaded (Menuliste / FEHLER)
  (if (and (=(type Menuliste) 'LIST)
           (not(vl-member-if-not '(lambda(X) (= (type X) 'STR)) MENULISTE))
      )   
     (mapcar '(lambda(X) (setq FEHLER (or FEHLER(not(Menu-is-loaded X))))) MENULISTE)
  )
  (not FEHLER)
)

(defun Menus-Start (Menuliste )
  (if (and (=(type Menuliste) 'LIST)
           (not(vl-member-if-not '(lambda(X) (= (type X) 'STR)) LISTE))
      )
    (progn
      (foreach MENU MENULISTE ; probieren alle nachzuladen
        (if (not(Menu-is-loaded MENU))
  (if (or(findfile (strcat MENU ".mnc"))
         (findfile (strcat MENU ".mns"))
         (findfile (strcat MENU ".mnu"))
      )
    (progn
      (setvar "filedia" 0)
      (command "_menuload" MENU)
      (setvar "filedia" 1)
    )
  ) 
        )
      )
      (if (Menus-are-loaded Menuliste)
        (progn
  (princ"\nStartup aufgerufen") ; hier die einstellungen wenn alles ok.
        )
        (progn
    (princ"\n Nicht alles geladen")
        )
      )
    ) 
  ) 


Testet, ob Menü geladen, wenn nicht , wirds geladen (mnu/mns/mnc).
Menüname und Dateiname müssen dabei gleich sein!!! Sonst muß man die Menüliste als Pair-Liste aufbauen.
Sind alle geladen erfolgt hier jetzt bloß ein Ausdruck - mußte anpassen...

z.B. (Menus-Start '("KRANBAU" "AMPP" "AMFLY" "AMACAD"))

Vielleicht hilfts weiter

------------------
    - Thomas -

[Diese Nachricht wurde von CADmium am 02. Mrz. 2004 editiert.]

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

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: 03. Mrz. 2004 08:18    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

Vielen Dank für die Hilfe.

Leider gibts immer noch das gleiche Problem. Wenn ein Menü nicht geladen ist und man eine neue Zeichnung erstellt gibt´s die selben Probleme. Bei Ihnen nicht?
Anscheinend funktioniert das nicht wenn die Befehlsfolge als S:: Befehl ausgeführt wird. Nur mit normaler Befehlseingabe wie bei Ihnen beschrieben funktioniert es.Aber das ist ja nicht der Sinn der Dinge.

[Diese Nachricht wurde von mkl-cad am 03. Mrz. 2004 editiert.]

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 03. Mrz. 2004 08:26    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 mkl-cad 10 Unities + Antwort hilfreich

Ruf mal das Programm statt in der acad.lsp in der acaddoc.lsp auf! ACAD.lsp wird bloß bei Start vom ACAd ausgeführt, acaddoc.lsp bei jedem Zeichnungsöffnen (hatte ich zuerst überlesen - sorry)

------------------
- Thomas -

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

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: 03. Mrz. 2004 08:39    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


bild1.jpg

 
Hallo?

Das kann nicht stimmen. Dann würden meine Programme nicht funktionieren. Acad.lsp wird bei jeder neuen Zeichnung mit geöffnet wenn unter Optionen angegeben. Sonst würden die Fehler nicht auftreten da der Befehl dann nicht gestartet würde.
Zitat aus den Beitrag S::STARTUP:
AutoCAD ist zum Zeitpunkt des Ladens der Menüdateien noch nicht vollständig initialisiert, so dass noch kein vollständiger Zugriff auf die Datei möglich ist.

Ist daher ein Zugriff auf die Menüs so früh nicht möglich?


[Diese Nachricht wurde von mkl-cad am 03. Mrz. 2004 editiert.]

[Diese Nachricht wurde von mkl-cad am 03. Mrz. 2004 editiert.]

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 03. Mrz. 2004 08:49    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 mkl-cad 10 Unities + Antwort hilfreich

..Ja, kann man machen, aber nicht umsonst gibt es 2 Dateien..
Welchen Wert hat eigentlich die Sysvar LISPINIT ? ( in ´Hinblick auf irgentwelche globalen Variablen usw.)

------------------
- Thomas -

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

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: 03. Mrz. 2004 09:27    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 Thomas.

Ob acad.lsp oder acaddoc.lsp ist ganz egal. Fehler ist der gleiche.
LISPINIT ist übrigens 1.

Da der Fehler nur auftritt wenn der Anwender absichtlich ein Menü entläd und dann eine neue Zeichnung auf macht finde ich es nicht so schlimm, da beim starten von ACAD alle Menüs geladen werden. Wenn die Menüdateien nicht gefunden werden lasse ich ACAD mit einer Fehlermeldung schließen.

Daher nochmal Danke und 9 Punkte


Martin

[Diese Nachricht wurde von mkl-cad am 03. Mrz. 2004 editiert.]

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

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: 03. Mrz. 2004 10:23    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

Doch noch ein kleiner Fehler

Wenn das Menü ACAD nicht geladen ist und dies nachgeladen wird verschwinden alle anderen Menüs und müßten auch nachgeladen werden.

(nachladen hört sich lustig an. Ich will aber auf niemanden schießen:-)

Martin

[Diese Nachricht wurde von mkl-cad am 03. Mrz. 2004 editiert.]

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 04. Mrz. 2004 21:30    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 mkl-cad 10 Unities + Antwort hilfreich

ja, denn dabei handelt es sich um das HauptmenÜ -> Siehe Sysvar "MENUNAME"
Siehe auch ..http://ww3.cad.de/foren/ubb/Forum145/HTML/000455.shtml

------------------
- Thomas -

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