Menü automatisch laden

Hallo,

ich bin Applikationsentwickler. Bislang konnten bei der Installation meiner Applikationen die erforderlichen Menüs automatisch geladen werden. Erforderlich war nur die Modifikation bzw. Erstellung der Datei ON_START.LSP. In dieser Datei war z.B. der Eintrag (command "_cuiload" "c:\\GDESIGNAssistent\\GDESIGNAssistent.cui") erforderlich. Alle Menüs (Pull.Down, Icon) wurden geladen.

Das ist bei der neusten BricsCAD Version (ab Januar 2015) allerdings nicht mehr so!

Das Menü wird geladen (Anpassen...) und Icons können wie bei BricsCAD aktiviert bzw. deaktiviert werden. Aber das Pull-Down Menü, obwohl unter ANPASSEN angezeigt, wird nicht mehr geladen!!!

- Peter G.



Comments

  • Hallo, Peter,

    ja, das ist Absicht ... seit mind, AutoCAD 2008 reicht (command "_menuload" ) nicht mehr aus,um Menü-Spalten anzuzeigen ...ein explizietes (menucmd ....) ist notwendig.Es gibt Entwickler, welche genau dieses AutoCAD-kompatible Verhalten brauchen (Menü hat 3 Spalten, aber nur 1 soll gezeigt werden, etc.),daher haben wir uns kompatibel gemacht ....Am einfachsten, in der *.mnl oder on_doc_load.lsp den Aufruf von (menucmd ....) mit reinnehmen.Viele Grüsse !
  • Hallo Torsten,

    das habe ich nicht ganz verstanden. Wenn ich ein Menü (Zusatzmenü zum anhängen an das BricsCAD Standardmenü) automatisch durch die ON_START-LSP laden möchte, wie muss der Eintrag aussehen? Ich gehe davon aus, das auch jetzt cui-Dateien geladen weden können.

    Nehmen wir mal an, ich möchte das Menü Assistent.cui laden und die Datei ist abgelegt unter c:\Assistent (\Assistent.cui)

    Zeile in on_start.lsp:  (menucmd ?????)

    Gruß Peter

  • Hallo, Peter,

    laden der Datei wie üblich mit (command "_menuload" ...) oder (command "_cuiload" ...);
    der extra Aufruf zum Anzeigen der Menüspalte :

    (menucmd "P16=+.")

    ist der Name der Menügruppe, wie in mnu/mns/cui definiert
    ist der Name der Menü-Spalte

    Am besten ist es, den Aufruf in der gleichnamigen MNL-Datei zu plazieren ... statt in on_doc_load.lsp ..
    die MNL wird ja immer automatisch mit der mnu/mns/cui geladen, unabhängig von Support-Pfaden.

    Viele Grüsse !
  • Hallo Torsten,

    funktioniert irgendwie nicht!!!!!

    Es ist mir auch nach den letzten Hinweisen nicht gelungen, das erforderliche Pulldown Menü automatisch zu installieren. Ich benötige DOCH NUR EINE VOLLSTÄNDIGE Zeile die funktioniert! Das Menü habe ich vorab mit cuiload geladen.

    Meine Menügruppe: GDESIGNASSISTENT
    Dateiendung: CUI
    Anzahl Pulldown Spalten: 4

    (menucmd "P16=+GDESIGNASSISTENT.cui") funktioniert nicht

    (menucmd "P16=GDESIGNASSISTENT.cui") funktioniert nicht

    (menucmd "P16=+GDESIGNASSISTENT.4") funktioniert nicht

    ???????????????????????????????????

    Gruß Peter
  • Three lines in Torsten's last message are not displayed properly (The forum has a problem with pointy brackets):

    (menucmd "P16=+<menugroup>.<alias>")

    <menugroup> ist der Name der Menügruppe, wie in mnu/mns/cui definiert

    <alias> ist der Name der Menü-Spalte
  • Hallo Roy,

    hat leider auch nicht funktioniert.

    Ich habe eingegeben (menucmd "P16=+GDESIGNASSISTENT.Assistent")

    Allerdings hat mein Pulldown Menü mehrere Spalten

    Assistent - Mechanical - Classic - Hilfe


    Gruß Peter
  • Try the Lisp code below.
    2 notes:
    1. Tested on V14 only.
    2. The name of the drop-down menus must include the mnemonic. So use "&File" instead of "File" etc.
    [code](defun KGA_Sys_Apply (expr varLst / ret)
      (if (not (vl-catch-all-error-p (setq ret (vl-catch-all-apply expr varLst))))
        ret
      )
    )

    ;;; Similar to (KGA_Sys_Apply) but the return value of the expression is put in a list.
    ;;; If this function returns nil there was an error.
    (defun KGA_Sys_ApplyAlt (expr varLst / ret)
      (if (not (vl-catch-all-error-p (setq ret (vl-catch-all-apply expr varLst))))
        (list ret)
      )
    )

    ; (DropDownMenusInsert "Bricscad" '("&File" "&View") '(0 1))
    ; (DropDownMenusInsert "Bricscad" '("&File" "&View") '(nil nil))
    (defun DropDownMenusInsert (menuGroupName popMenuNameList indexList / cadObj menuBarObj menuGroupObj popMenusObj)
      (setq cadObj (vlax-get-acad-object))
      (setq menuBarObj (vla-get-menubar cadObj))
      (if (setq menuGroupObj (KGA_Sys_Apply 'vla-item (list (vla-get-menugroups cadObj) menuGroupName)))
        (progn
          (setq popMenusObj (vla-get-menus menuGroupObj))
          (mapcar
            '(lambda (popMenuName index / popMenuObj)
              (if (setq popMenuObj (KGA_Sys_Apply 'vla-item (list popMenusObj popMenuName)))
                (and ; Return T or nil.
                  (KGA_Sys_ApplyAlt
                    'vla-insertinmenubar
                    (list
                      popMenuObj
                      (if index
                        (min index (1+ (vla-get-count menuBarObj)))
                        (1+ (vla-get-count menuBarObj))
                      )
                    )
                  )
                )
              )
            )
            popMenuNameList
            indexList
          )
        )
      )
    )[/code]
  • Danke, Roy

    inzwischen ist das Problem mit dem Pulldown Menü laden beseitigt. Ich habe den Spaltentilel mit dem Spalten Alias verwechselt.

    Gruß Peter
This discussion has been closed.