blog

Bonnes techniques de programmation AutoLISP

Lors de la création de routines AutoLISP, le programmeur doit garder à l’esprit non seulement une syntaxe correcte, mais également un programme bien structuré qui est facile à comprendre, pardonnant les erreurs, facile à déboguer et facile à éditer.

Mise en page

Vous pouvez formater manuellement pendant que vous tapez. Mais Visual LISP inclut des outils de formatage utiles. Ils insèrent automatiquement des tabulations et des espaces là où cela est nécessaire pour vous donner plus de clarté et vous aider à suivre les parenthèses. Tu peux soit Fenêtre d’édition de format ou Sélection de format.

AutoLISP ignore les espaces et les retours chariot, utilisez-les donc pour rendre la routine plus compréhensible pour le programmeur.

Routine non formatée :

(defun C:TRIANGLE ()
(setq PT1 (getpoint « Choisissez un point : »)
PT2 (getpoint « Choisissez un autre point : »)
PT3 (liste (voiture PT1) (cadr PT2)))
(commande « ligne » PT1 PT2 PT3 « c »))

Routine formatée :

Vous pouvez définir les options de formatage sous Outils > Options d’environnement > Options de format Visual LISP.

Commenter

Les commentaires vous aident, ainsi que toute autre personne lisant le fichier, à comprendre le code. Utilisez un point-virgule devant n’importe quelle ligne pour ajouter des commentaires à un fichier. Tout ce qui se trouve sur une ligne à droite d’un point-virgule est ignoré.

  • Au début de la routine, assurez-vous d’inclure un commentaire indiquant le nom du fichier, ce que fait la fonction, l’auteur, la date et la version.
  • Vous pouvez également diviser les fonctions plus longues en étapes et expliquer ce que fait chaque étape.
  • Alors qu’un seul point-virgule fera l’affaire, certaines personnes préfèrent deux ou trois pour la visibilité. Visual LISP ajoute automatiquement trois points-virgules devant tout commentaire à partir d’une ligne vide qui n’est pas en retrait, deux points-virgules lorsque la nouvelle ligne est en retrait et un lors de la tabulation jusqu’à un emplacement de colonne ou après une parenthèse fermante.
  • Pour ajouter automatiquement des commentaires après une parenthèse fermante sur une ligne distincte, cochez la case « Insérer un commentaire de clôture de formulaire » dans la boîte de dialogue sous Outils>Options d’environnement> Options de format Visual LISP.
A lire :  Examen du stylo d'impression 3D Dikale

Bloquer les commentaires/Bloquer les dé-commentaires

Pour utiliser ces outils, sélectionnez simplement les lignes que vous souhaitez commenter ou décommenter et appuyez sur le bouton . Bloc de commentaires ajoute des points-virgules au début des lignes sélectionnées ; Décommenter le bloc supprime les points-virgules.

Par exemple, vous souhaiterez peut-être tester uniquement une partie de votre routine dans AutoCAD. Vous pouvez mettre en surbrillance la partie indésirable et la commenter en cliquant sur un bouton. Lorsque vous êtes prêt à tester également cette section, mettez-la en surbrillance à nouveau et appuyez sur le bouton Décommenter l’outil Bloc.

Exemple de commentaire

;;;Ce programme dessine un triangle basé sur les deux
;;;terminaux de l’hypoténuse.
;;;14 juin 2012

(defun C:TRIANGLE ()
(setq PT1 (getpoint « Choisissez un point : »)
PT2 (getpoint « Choisissez un autre point : »)
PT3 (liste
(voiture PT1)
(cadr PT2) )
; liste de fin
) ;end setq
(commande « ligne » PT1 PT2 PT3 « c »)
) ; fin de defun

Appellation

  • Utilisez des noms de symboles qui ont du sens. Utilisez un nom qui se rapporte à la valeur tel que PT1, ReferencePoint, SCALE_FACTOR, etc.
  • Visual LISP complètera le nom d’une fonction ou d’un symbole si vous tapez les premières lettres et appuyez sur Ctrl + Espace. Répétez si vous ne trouvez pas le bon nom au début.
  • Les symboles ne sont pas sensibles à la casse, mais les majuscules peuvent vous aider à différencier les symboles des fonctions lorsque vous n’êtes pas dans Visual LISP.
  • Rappelez-vous, n’utilisez pas PI, T ou tout autre nom de fonction tel que ANGLE comme nom de symbole.
  • Donnez des noms de fichiers compréhensibles pour vos routines LISP. Par exemple, pas DS.LSP mais DATESTAMP.LSP.
A lire :  Le ruban Revit est foiré après l'installation de Revit 2014

incitant

Utilisez un contrôle d’erreur tel que le (inuit) et (getkword) les fonctions. Attendez-vous à l’entrée inattendue. Rendez la routine aussi facile à utiliser que possible.

Écrivez des invites qui ressemblent à celles d’AutoCAD. Cela rend l’interface plus fluide entre votre routine LISP et le package principal. Par exemple : « Choisissez une couleur : Rouge ou [Blue/Yellow/Green]: ” N’oubliez pas qu’AutoCAD 2000 a un nouveau style d’invite.

Définition des variables locales

Une autre bonne pratique de clarté consiste à garder la trace des variables que vous utilisez comme symboles et à vous assurer de ne pas les laisser actives dans AutoCAD si elles ont un impact sur une autre routine. C’est ce qu’on appelle la localisation des variables.

Toutes les variables utilisées dans une session d’AutoCAD sont stockées dans la liste des atomes. Cela inclut également tous les noms de fonction AutoLISP.

Explication : les options de la fonction (defun)

Une variable peut être déclarée exclusive à une fonction donnée. Ces variables « locales » sont déclarées dans les mêmes parenthèses que la liste d’arguments du (défun):

(defun function_name ([arguments / local_variables])

Les arguments facultatifs sont les variables que vous souhaitez affecter de manière permanente dans une session de dessin. Il peut s’agir d’informations de symboles que vous utiliserez dans une autre routine AutoLISP. Ou ce sont eux que vous devez fournir pour que la fonction fonctionne.

Les variables locales facultatives mettent de côté le nom et la valeur des variables locales. Ils ne seront pas ajoutés à la liste des atomes et ne seront conservés en mémoire que pendant l’exécution de la fonction.

  • Les arguments et les variables locales sont séparés par une barre oblique « / ».
  • Les variables locales ne restent en mémoire que pendant l’exécution de la routine. Cela permet l’utilisation de noms de variables plus longs et plus clairs.
  • Vous devrez peut-être quitter et redémarrer AutoCAD pour supprimer toutes les variables existantes.
A lire :  Comment créer un motif de hachures personnalisé dans AutoCAD

Explication : la fonction (atomes-famille)

Les (famille d’atomes) renvoie une liste de tous les symboles actuellement définis, appelée liste d’atomes. De cette façon, vous pouvez savoir quels symboles ont été définis dans la session de dessin.

(format atome-famille [symbol])

L’argument format spécifie si les symboles seront renvoyés sous forme de symboles ou de chaînes : 0 renvoie une liste de symboles et 1 renvoie une liste de symboles convertis en chaînes.

L’argument de symbole facultatif est utilisé pour vérifier si chaque symbole de la liste de symboles existe dans la session d’édition en cours. Si le symbole existe, l’argument renvoie un nom de symbole ; sinon il renvoie zéro.

Commande : (atomes-famille 1′ (« CAR »))
(« AUTO »)

Exemple : Variables localisées

;;;MATRICE.LSP
;;;C:MATRIX – Une fonction pour créer un tableau rectangulaire
;;; par la distance totale des lignes et des colonnes.
(defun c:MATRIX ( / ROW-NUMBER COL-NUMBER STARTPT TOTAL-ROW
TOTAL-COL ROW-DIST COL-DIST SS1)
(commande « graphscr »)
(initget (+ 1 2 4)
(setq ROW-NUMBER (getint « Nombre de lignes (—): « ))
(initget (+ 1 2 4)
(setq COL-NUMBER (getint « Nombre de colonnes (|||): « ))
(setq STARTPT (getpoint « Point de départ : »))
(initget (+ 1 2)
(setq TOTAL-ROW (getdist STARTPT « nDistance de ligne totale : « ))
(initget (+ 1 2)
(setq TOTAL-COL (getdist STARTPT « nDistance totale de la colonne : »))
(setq ROW-DIST (/ TOTAL-ROW (1- ROW-NUMBER)))
(setq COL-DIST (/ TOTAL-COL (1- COL-NUMBER)))
(setq SS1 (ssget))
(commande « array » SS1 «  » « r » ROW-NUMBER COL-NUMBER ROW-DIST COL-DIST) (princ)
); fermer defun

Bouton retour en haut de la page