Barmenu pour MicroStation V8i

Barmenu

développement original par
Bill Steinbock
(Modifié par Philippe Halet: voir les modifications en fin d’article)

BARMENU est une application MDL qui permet aux programmeurs non MDL de créer des barres de menus spécifiques à votre utilisation. La définition du fichier de menu est contenue dans un fichier texte ASCII. Le fichier de définition de menu par défaut est indiqué par la variable BARMENU mais peut-être donné en paramètre.

Barmenu pour MicroStation V8i

Télécharger GRATUITEMENT

Envoyer le lien à :

Un extrait d’un exemple de fichier de menu est présenté ci-dessous.

; Sample Menu                               | comments ignored
; menu title option 1
#Menu Title 1                               | Menu Title
; menu title option 2
Title=Menu Title 2                          | Menu Title
; mdl command to load as menu is activated
mdl l scale
mdl l pan
; now begin menu entries
Settings                                    | Label on menu bar
    {                                       | brace defines nest level
    AA by 2Pt, "act ang pt2"                | label, "keyin"
    AA by 3Pt, "act ang pt3"                | label, "keyin"
    AS by Dist, "act scale dis"             | label, "keyin"
    Locks On                                | pulldown sub menu
        {                                   | nest level incremented
        Graphic Group, "Lock GG On"         | label, "keyin"
        Axis, "Lock Axis On"                | label, "keyin"
        -,                                  | dividing line (must have comma)
        Keypoint, "lock snap key"           | label, "keyin"
        Project, "lock snap proj"           | label, "keyin"
        Intersection, "lock snap inter"     | label, "keyin"
        }                                   | nest level decremented
    Locks Off                               | pulldown sub menu
        {                                   | nest level incremented
        Graphic Group, "Lock GG Off"        |
        Axis, "Lock Axis Off"               |
        Intersection, "lock snap inter off" |
        }                                   |
    }                                       | terminate Setting menu
                                            | blank lines ignored
Setup                                       |
    {                                       |
    Keyin Scale, "uc=scale"                 |
    Arch Scale                              |
        {                                   |
        1/16,   "uc=scale;16"               | call ucm SCALE then keyin 16
        1/8,    "uc=scale;8"                | call ucm SCALE then keyin 8
        1/4,    "uc=scale;4"                | call ucm SCALE then keyin 4
        }                                   |
    }                                       | terminate Setup menu
Utilities                                   | Label on Menu Bar
    {                                       |
    Plot Date                               | pulldown submenu
        {                                   |
        Place, "mdl l datstmp;place stamp"  | load and execute MDL command
        Update,"mdl l datstmp;update stamp" | load and execute MDL command
        }                                   |
    AA=keyin, "m,erEnterAngle;t,aa="        | display prompt in error field
    }                                       | terminate Utilities menu

L’analyseur qui traite les lignes du fichier de définition est très primitif et fait très peu de vérification d’erreur. Il est de la responsabilité de l’auteur du fichier de définition de menu de vérifier la syntaxe appropriée. Les règles suivantes doivent être suivies pour assurer le succès.

  1. Les étiquettes de menu déroulant doivent être sur une ligne sans aucune autre information.
  2. Les accolades qui désignent le niveau d’imbrication des menus doivent être sur une ligne sans autre information.
  3. L’utilisation d’un “-” comme étiquette entraînera une ligne de division sur toute la largeur du menu déroulant. Le “-” doit être suivi d’une virgule.
  4. Plusieurs saisies doivent être séparées à l’aide d’un point-virgule (c’est-à-dire “wt = 0; co = 0”).
  5. Lorsque les commandes sont sélectionnées, les clés individuelles des chaînes sont vérifiées pour voir si elles contiennent le “mdl l”, qui est supposé être une commande MDL LOAD. Si cette chaîne est trouvée, le nom du programme est extrait. Si le programme n’est pas actuellement chargé, il est chargé via une fonction intégrée MDL.

Limites du programme

  • Pulldown menus 60
  • Chars per command string 130
  • Command entrys NONE

Pour exécuter le programme, introduire dans la barre d’entrée au clavier la commande :

Nouveautés dans cette version

Dans cette version, vous pouvez avoir:

  • la possibilité d’ancrer le BARMENU (merci à Steve Young pour la première modification);
  • un menu déroulant supplémentaire contenant une liste de fichiers MDF. Lors de la sélection d’un fichier dans le menu déroulant [*.mdf], le BARMENU est automatiquement mis à jour et sa fenêtre est automatiquement redimensionnée, même si la fenêtre est ancrée.

Comment puis-je avoir plusieurs fichiers MDF dans mon barmenu?

  • Copiez tout les fichiers MDF souhaités dans le répertoire de l’application;
  • Ajoutez ce répertoire dans la variable MS_MDLAPPS;
  • Entrez la saisie au clavier:

Ce qui permettra de passer d’une définition de menu à une autre :