Comment créer des routines LISP pour la configuration du dessin.
BricsCAD Lisp
Migrer de AutoCAD®
Lorsque vous êtes prêt à migrer, vous constaterez qu'il n'y a pratiquement aucune différence entre BricsCAD LISP et AutreLISP. Votre code se charge et s'exécute, et la fonctionnalité est identique. Les principales différences lors du « portage » de vos applications seront quelques étapes de configuration mineures, la structure de la ligne de commande et éventuellement les emplacements des fichiers. Pour commencer, passons en revue la configuration et le lancement de vos programmes existants dans BricsCAD.
Si vous lancez automatiquement vos programmes en utilisant Acad.lsp ou Acaddoc.lsp, vous devrez les renommer en on_start.lsp ou on_doc_load.lsp respectivement. La meilleure solution est d'utiliser on_doc_load.lsp, plutôt que on_start.lsp.
Panneau des paramètres BricsCAD
Pour activer le lancement automatique de votre programme, réglez la variable système ACADLSPASDOC sur 1 ou activez simplement l'option dans Paramètres / Options du programme / Système :
Il est également recommandé de passer un peu de temps à vous familiariser avec le menu Options/Paramètres dans BricsCAD, car il y a des paramètres et des options spécifiques à l'environnement de BricsCAD.
La prochaine étape dans la boîte de dialogue des paramètres consistera à ajouter vos dossiers de support au chemin de recherche de fichiers, qui se trouve dans Paramètres / Options du programme / Fichiers :
Il est recommandé d'utiliser les chemins de support ajoutés de la manière ci-dessus et/ou situés à un niveau sous le dossier de projet en cours. Il est conseillé d'utiliser la fonction findfile pour vérifier l'existence du fichier avant de poursuivre vos commandes, comme dans la méthode ci-dessous :
C'est l'une des méthodes que vous pouvez utiliser pour demander le chargement de vos fonctions dans le fichier on_doc_load.lsp :
C'est l'une des méthodes que vous pouvez utiliser pour demander le chargement de vos fonctions dans le fichier on_start.lsp :
La commande DEFUN (DEfine FUNction) porte le même nom que la fonction contenue dans votre fichier on_doc_load.lsp et cette fonction redéfinit la fonction appelante lorsqu'elle est lancée.
Routines Lisp de configuration de dessin pour BricsCAD
Exemple de code
La routine de configuration de dessin simple ci-dessous peut être adaptée à vos besoins avec un minimum de modifications.
(defun C:MYSETUP ( / ) ;define the command line function "mysetup"
(setvar "cmdecho" 0)
(command "_audit" "_y") ;audit current drawing
(command "_-purge" "_all" "*" "_n") ;purge all unused styles, etc
(command "_-layer" "_m" "1" "_c" "1" "" "") ; create layer "1" color "1"
(command "_-layer" "_m" "2" "_c" "2" "" "")
(command "_-layer" "_m" "3" "_c" "3" "" "")
(command "_-layer" "_m" "4" "_c" "4" "" "")
(command "_viewres" "_y" "20000") ;set view resolution to maximum
(setvar "filedia" 1) ;turn file dialogs on
(setvar "attdia" 1) ;turn attribute dialogs on
(setvar "attreq" 1) ;enable attribute editing on placement
(setvar "cecolor" "bylayer") ;set current color bylayer
(setvar "clayer" "0") ;set current layer to "0"
(setvar "maxsort" 5000) ;set maximum layer sort to 5,000
(command "_zoom" "_e" "_zoom" "0.95x") ;zoom extents, then out a little
(setvar "cmdecho" 1)
(princ)
)
Chaque ligne de cette routine de configuration du dessin aurait pu être entrée sur la ligne de commande à l'adresse BricsCAD. En les intégrant dans une routine Lisp, la fonction de définition defun(define function) permet d'appeler la routine de configuration du dessin à partir d'un menu ou en entrant son nom sur la ligne de commande BricsCAD.
Si vous n'incluez pas defun, le programme sera exécuté une seule fois, lorsque vous le chargerez par son nom de fichier. En utilisant defun et en chargeant cette routine dans votre lsp, la fonction sera disponible à tout moment en entrant son nom : mysetup.
Les commandes avec les tirets précédents (par exemple, -calque et -purger) sont utilisées pour empêcher le lancement des boîtes de dialogue de la commande.
Remarque : Utilisez toujours des noms de commande et d'options en anglais pour éviter les échecs sur les versions BricsCAD traduites (non anglaises).
Une bonne pratique lors de l'ouverture de fichiers provenant d'autres personnes est d'exécuter un audit suivi d'une purge pour supprimer tous les éléments inutilisés.
La commande Purger peut être exécutée plusieurs fois pour supprimer les éléments imbriqués. Voir l'exemple ci-dessous :
(repeat 3 (command "-purge" "all" "*" "n"))
Remarque : La purge est effectuée avant d'ajouter les nouveaux calques vides, car ils seraient supprimés si nous le faisions après.
Les appels de commande pour le réglage des calques pourraient être combinés en une seule commande, mais il est plus facile à lire lorsque chaque ligne est indépendante.
La fonction setvar permet de fixer une variable système à une valeur donnée, par exemple des paramètres de style pour les cotes et le texte, les paramètres d'unité, etc.
Le paramètre maxsort a été introduit pour deux raisons.
Maxsort contrôle le nombre maximum d'entrées de la boîte de dialogue qui seront triées.
La valeur par défaut de maxsort est 1 000. Avec les ordinateurs d'aujourd'hui et les fichiers de projet les plus volumineux, ce nombre peut être trop faible.
Si vous ouvrez des dessins dont les noms de calques ne sont pas triés par ordre alphabétique, la valeur par défaut de maxsort peut en être la cause.
Un outil de création de calques (Layer Maker) plus polyvalent pour votre routine de configuration de dessin
L'exemple suivant peut être ajouté à votre version de mysetup.lsp. En créant un simple fichier texte « Layers.txt » avec un éditeur comme Notepad, vous pouvez ajouter une liste de noms de calques à créer lors de l'exécution de la routine. Il s'agit d'une alternative au processus codé en dur illustré ci-dessus. En utilisant la fonction findfile, BricsCAD effectuera d'abord une recherche dans le répertoire actuel, puis en utilisant séquentiellement vos dossiers d'assistance définis pour trouver le fichier Layers.txt. Vous pouvez placer votre fichier texte de configuration de calque par défaut dans le chemin d'assistance et y placer d'autres versions dans des dossiers de projet individuels.
(if (not (findfile "Layers.txt")) ;"not" = looking for no result from findfile
(alert "Can't find Layers.txt!") ;No file? Yell at the user and exit!
(progn ;Otherwise, do the stuff in the progn group
(setq layerfile (open (findfile "Layers.txt") "r")) ;open layers.txt to "read"
(while (setq layername (read-line layerfile)) ;while reading each line, store the text to layername
(command "-layer" "m" layername "") ;make layer with the layername
) ;end the while loop
(close layerfile) ;close the Layers.txt file
) ;end the progn
) ;end the if
Lisp - BricsCAD Lite & Pro | Centre d'aide Bricsys