Aller au contenu

Comment s'y retrouver dans un grand LISP ?


Aleck_Ultimate

Messages recommandés

Bonjour à tous.

 

Tout est dans le titre, je voudrais savoir comment vous faites pour vous y retrouver quant vos LISP commencent à êtres conséquents. Certains LISP sont tellement longs qu'ils dépassent le nombre de ligne (ou de caractère) maximum autorisé par le forum, et moi avec une estimation entre 200 et 300 lignes (plus de trois fois la hauteur de ma fenêtre dans l'éditeur Visual LISP) j'ais déja du mal à m'y retrouver alors que c'est mon code et que abstraitement je connais sa structure sur le bout des doigts.

 

J'ais essayé de mettre des signets mais ils disparaissent dés lors que je formate la fenêtre, ce qui m'aide beaucoup à lire le code. Le formatage, pas les signets qui disparaissent.

 

J'ais cherché s'il était possible d'afficher les numéro de lignes comme ceux qui apparaissent sur Da-code mais j'ais l'impression que c'est particulier au formatage du site de Didier parce que je n'ais rien trouvé dans la console.

 

Le seul truc qui m'aide un peut à m'y retrouver c'est que j'annonce chaque sous-routine et chaque "chapitre" de mon code principale sous la forme suivante :

 

Code précédent


;;;
;;; Nom
;;; Description
;;;

Suite du code

 

C'est bien mais ça fait pas tout.

 

C'est juste un coup à prendre ou y'a des astuces ?

 

Merci.

Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux.
Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage !
Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;])

Utilisateur d'AutoCAD 2021 sous Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Il n'y a pas 50 solutions.

 

1) Quand des fonctions sont répétitives d'un lisp à l'autre, elles ont toujours le même nom.

2) Avoir le nom d'une fonction la plus clair pour soi. Par exemple, une fonction qui supprime les espaces --> (defun supprimer_espace())

3) Ne pas hésiter à faire des commentaires.

4) Un exemple de commentaires.

;;;=================================================================
;;;
;;; Description de la fonction
;;; Avec les paramètres si besoin
;;;
;;;=================================================================


 ;;;---------------------------------------------------------------
 ;;;
 ;;; Description de la sous-routine
 ;;; Avec les paramètres si besoin
 ;;;
 ;;;---------------------------------------------------------------

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

J'avais pas pensé à encadrer le texte avec d'autres caractères que des ";" .

 

Ca rend plutôt bien comme tu fait ^^ Et surtout ça accroche mieux l'œil que des lignes de ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux.
Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage !
Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;])

Utilisateur d'AutoCAD 2021 sous Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous,

sur ce sujet moi j'ai ce type de commentaire :

;; *********************************************************************************************
;;§/inventaire/recherche des fichiers similaires dans une liste de fichier  /lfich sim-mini
;; sans prendre en compte ni le chemin ni l'extension
;; retourne le résultat sous forme de liste.
;;lfich = liste des fichiers, sim-mini = taux de similarité minimum
;;(rechercheSimilarite '("un" "un1" "uns" "deux" "deux2" "pas" "ni" ) 0.75)-> (("deux" "deux2"))
;;(rechercheSimilarite '("un.dwg" "un1.pdf" "uns.dxf" "deux" "deux2" "pas" "ni" ) 0.6)-> (("deux" "deux2") ("un.dwg" "un1.pdf" "uns.dxf"))
;;(rechercheSimilarite '("un.dwg" "un.dwg" "un1.pdf" "uns.dxf" "deux" "deux2" "pas" "ni" ) 0.6)-> (("deux" "deux2") ("un.dwg" "un.dwg" "un1.pdf" "uns.dxf"))
(defun rechercheSimilarite (lfich sim-mini / 1st lsim lgrp-sim)
...

J'ajoute systématiquement des exemples d'utilisation, c'est plus parlant, et en cas de bug, en général à cause de la mise à jour d'une routine appelée, on à la certitude de ce qui marchait avant.

 

la 1ere ligne est une codification qui me permet d'utiliser "man", un outil de documentation dont je ne saurai plus me passer.

vieille version de man

Avec man, je génère automatiquement:

- une doc au format HTML : exemple de doc html

- une doc au format excel xml :

Fonction|Arguments|Famille |Chemin	                       |Description
C:AFFCOT|none	  |COVADIS |E:\aclsp\lisp\covadis_extension.lsp|affiche cotation pentes et altitudes des plateformes  

- Et surtout, un menu popup partiel qui recense toute les commandes "c:" classées par famille

 

Volontairement Man n'affiche jamais l'aide stockée dans des fichier html ou xml:

Au 1er démarrage, il scanne les projets lisp, comme ça la doc est toujours "fraiche"

 

Sur que ça vaut le coup quand on commence a avoir beaucoup de projets, et beaucoup de routines ...

Je tiens la dernière version à dispo si ça intéresse quelqu'un.

A+

Gégé

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Voici par exemple, le début d'un programme que j'utilise pour des formations LISP, il s'agit de construire un rectangle... Je me force toujours à ajouter des commentaires ;;; et surtout indenter (avec TAB) les lignes en fonction du niveau de la fonction !

 

http://www.rebcao.fr/cadxp/images/prog_LISP.png

etc.

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

Salut.

Perso, j'attend qu'AutoDesk fasse pareil que DraftSight, une série de petits "+" à gauche du code qui développe un(des) sous-ensemble(s)... Comme ça se fait sur NotePad++ ou autre...

Mais pour l'instant, voici un petit exemple que j'utilise :

;;; *********************************************
;;;      Créé des géocarte en mode "Folio"       
;;;   Spéciale dédicace à La Lozère (CadXP.com)  
;;; *********************************************
(defun c:MultiCarte ()
 (princ "\nDéveloppé par Denis H. (vers.1.4)")
 (command "Geocarte" "h")
 (setq NbCarteHori     (getreal "\nNombre de carte horizontales : ")
       NbCarteVerti    (getreal "\nNombre de carte verticales : ")
       NbCarteHoriOrig NbCarteHori
       NbCarteVerti    (+ NbCarteVerti 1)
       screen          (getvar "screensize")
       ratio           (/ (car screen) (cadr screen))
       cen             (getvar "viewctr")
       cen             (trans cen 1 0)
       angle_rad       (getvar "viewtwist")
       angle_rad       (- (* 2 pi) angle_rad)
       h               (getvar "viewsize")
       w               (* h ratio)
       BasGauche       (polar (polar cen (+ angle_rad pi) (/ w 2)) (- angle_rad (/ pi 2)) (/ h 2))
       BasDroite       (polar (polar cen angle_rad (/ w 2)) (- angle_rad (/ pi 2)) (/ h 2))
       HautDroite      (polar (polar cen angle_rad (/ w 2)) (+ angle_rad (/ pi 2)) (/ h 2))
       HautGauche      (polar (polar cen (+ angle_rad pi) (/ w 2)) (+ angle_rad (/ pi 2)) (/ h 2))
       Xmin            (car BasGauche)
       Ymin            (cadr BasGauche)
       Xmax            (car HautDroite)
       Ymax            (cadr HautDroite)
       DeltaX          (- Xmax Xmin)
       DeltaY          (- Ymax Ymin)
       Haut            (/ DeltaY NbCarteVerti)
       Larg            (/ DeltaX NbCarteHori)
       ValDecal        (* Haut 0.028)
                       ;;NbCarteVerti    (fix (* (/ DeltaY DeltaX) NbCarteHori))
 ) ;_ Fin de setq
 (while (> NbCarteVerti 0)
   (while (> NbCarteHori 0)
     (setq PtGauche (list Xmin Ymin))
     (setq PtDroite (list (+ Xmin Larg) (+ Ymin Haut)))
     (command "zoom" "f" PtGauche PtDroite)
     (command "imagegeo" "")
     (setq NbCarteHori (- NbCarteHori 1))
     (setq Xmin (+ Xmin Larg))
   ) ;_ Fin de while
   (setq NbCarteVerti (- NbCarteVerti 1))
   (setq NbCarteHori NbCarteHoriOrig)
   (setq Xmin (car BasGauche))
   (setq Ymin (+ Ymin (- Haut ValDecal)))
 ) ;_ Fin de while
 (command "Geocarte" "d")
 (princ)
) ;_ Fin de defun

 

Sachant que j'ai des LiSP de plusieurs milliers de lignes ! !

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité