VDH-Bruno
Membres-
Compteur de contenus
1 146 -
Inscription
-
Dernière visite
-
Jours gagnés
20
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par VDH-Bruno
-
[Résolu] Comment ajouter 1 à un élément d'une liste ?
VDH-Bruno a répondu à un(e) sujet de DenisHen dans Visual LISP
Compare l'exemple donné par (gile): Et la façon dont tu as appelé sa fonction dans ton code: Que remarques tu? -
[Résolu] Comment ajouter 1 à un élément d'une liste ?
VDH-Bruno a répondu à un(e) sujet de DenisHen dans Visual LISP
@DenisHen, juste une petite observation au passage mais loin de moi l'idée de me poser en donneur de leçon, mais j'ai l'impression que tu butes souvent sur les mêmes problèmes, qui de mon point de vue n'ont rien avoir avec le langage de programmation que ce soit vba, lisp etc... Car bien souvent le problème se situe en amont, pour mon cas personnelle je passe en général plus de temps à exprimer clairement ce que je cherche à faire, plutôt qu'à le coder. Je te livre deux petites maximes bien connu que je me répète lorsque je bute sur un problème: La première: « Ce que l’on conçoit bien s’énonce clairement » Puis la seconde qui découle de la précédente: « Un problème bien posé est à moitié résolu ! » Et en général lorsque mon raisonnement répond à ces 2 maximes, le code s'écrit aisément. -
[Résolu] Comment ajouter 1 à un élément d'une liste ?
VDH-Bruno a répondu à un(e) sujet de DenisHen dans Visual LISP
Oui oui ça fonctionnait bien et apply est une bonne habitude dans le cas d'un nombre d'argument variable... C'est juste que ça faisait longtemps que je n'avais tapé qq lignes de Lisp et ça me démangeait, donc je me suis fait plaisir. Amicalement Bruno -
[Résolu] Comment ajouter 1 à un élément d'une liste ?
VDH-Bruno a répondu à un(e) sujet de DenisHen dans Visual LISP
_$ (setq ListNbTS '(0 0 0 0 0 0)) (0 0 0 0 0 0) _$ (setq ListNbTS (foo '+ 1 2 ListNbTS)) (0 0 1 0 0 0) _$ (setq ListNbTS (foo '+ 1 2 ListNbTS)) (0 0 2 0 0 0) _$ ou bien _$ (setq ListNb '(0 0 0 0 0 0)) (0 0 0 0 0 0) _$ (setq ListNb (cons (car ListNb) (cons (cadr ListNb) (cons (1+ (caddr ListNb)) (cdddr ListNb))))) (0 0 1 0 0 0) _$ (setq ListNb (cons (car ListNb) (cons (cadr ListNb) (cons (1+ (caddr ListNb)) (cdddr ListNb))))) (0 0 2 0 0 0) Qu'elle est le problème je comprend pas la question? Salutations -
[Résolu] Comment ajouter 1 à un élément d'une liste ?
VDH-Bruno a répondu à un(e) sujet de DenisHen dans Visual LISP
Bonjour Luna, Pour le retour et pour le jeu: (append (list (apply fun (vl-remove nil (list (car lst) val)))) (cdr lst)) J'aurais fait un (cons ..., plutôt qu'un (append (list ... et un (cons (car lst) (cond (val (list val)))) plutôt qu'un (vl-remove nil (list (car lst) val) ce qui aurait donné un: (cons (apply fun (cons (car lst) (cond (val (list val))))) (cdr lst)) Après c'est juste une écriture différente car je trouvais amusant pour l'exercice de vouloir gérer 1+ ou + en argument de fun, même si personnellement je ne l'aurais pas tenté et me serais contenté d'une écriture plus classique comme ceci: (defun foo (fun val ind lst) (cond ((null lst) nil) ((zerop ind) (cons ((eval fun) (car lst) val) (cdr lst))) ((cons (car lst) (foo fun val (1- ind) (cdr lst)))) ) ) $ (foo '+ 1 2 '(0 0 0 0 0 0)) (0 0 1 0 0 0) "Cha"lutations😉 -
[Résolu] Comment ajouter 1 à un élément d'une liste ?
VDH-Bruno a répondu à un(e) sujet de DenisHen dans Visual LISP
Un exemple de ce que tu as au départ et de ce que tu veux à l'arrivé? Que contient Item, Text ? -
[Résolu] Comment ajouter 1 à un élément d'une liste ?
VDH-Bruno a répondu à un(e) sujet de DenisHen dans Visual LISP
_$ (cons (car ListNb) (cons (cadr ListNb) (cons (1+ (caddr ListNb)) (cdddr ListNb)))) (0 0 1 0 0 0) Ou bien j'ai pas pas compris la question -
[Résolu] Petit soucis de tri d'une liste avec "vl-sort".
VDH-Bruno a répondu à un(e) sujet de DenisHen dans Visual LISP
Oui tout fait d'accord j'ai répondu avec la ligne de code basé sur le premier msg de @DenisHen, cette ligne trie en fonction des quantitatifs de TS, mais ne prend pas en compte le dimension de panneau de TS, comme dans le deuxième message de @DenisHen dans ce cas il faut découper la chaine avec la fonction (str2lst) de @(gile), puis effectuer le trie -
[Résolu] Petit soucis de tri d'une liste avec "vl-sort".
VDH-Bruno a répondu à un(e) sujet de DenisHen dans Visual LISP
@DenisHen: Pour compléter la fonction atoi en remplacement de la fonction read aurait tout aussi bien fait le travail -
[Résolu] Petit soucis de tri d'une liste avec "vl-sort".
VDH-Bruno a répondu à un(e) sujet de DenisHen dans Visual LISP
Bonjour, Pour compléter la réponse complète de @Luna sur le sujet. Je ferais remarquer que pour simplifier le code, dans le cas présent tes chaines de caractère sont "systématiquement" NumériqueAlpha et non AlphaNumérique (en ce qui concerne ton critère de trie) Tu peux tenter la ligne de code suivante au moyen de la fonction read: (vl-sort ListTS '(lambda (e1 e2) (< (read e1) (read e2)))) Cdt Bruno -
Parcourir un jeu de sélection pour modifier un attribut DXF
VDH-Bruno a répondu à un(e) sujet de OrionLG dans AutoCAD 2020-2024
@OrionLG heureux d'avoir pu aidé, bien que je ne puisse le faire autant que je voudrais, mais j'ai toujours plaisir à suivre vos discussions sur ce forum. Cdt Bruno -
Parcourir un jeu de sélection pour modifier un attribut DXF
VDH-Bruno a répondu à un(e) sujet de OrionLG dans AutoCAD 2020-2024
Bonjour Luna, Oui c'était l'occasion de rappeler une astuce parmi d'autres, mais si on veut être puriste la méthode avec if, subst, append est plus académique et c'est celle que j'utilise bien plus volontier (plus lisible) dans du code appelé à être réutilisé, et c'est celle que je recommanderais pour un débutant, après une fois que les bases sont bien assimilés, on peut effectivement prendre quelques libertés pour du code ponctuel qui doit être taper à la va vite, ou pendant la phase de prototypage de son code. Amicalement Bruno -
Parcourir un jeu de sélection pour modifier un attribut DXF
VDH-Bruno a répondu à un(e) sujet de OrionLG dans AutoCAD 2020-2024
Bonjour, Je n'ai pas d'AutoCAD sous la main pour te faire du surmesure, mais tu peux procéder avec entmode comme tu procedes avec entmake au moyen de la fonction append pour ajouter la paire DXF qui t'intéresse, dans mon message précedant je t'ai copier coller à titre d'exemple une réponse précedemment faite sur le forum lisp Cdt -
Parcourir un jeu de sélection pour modifier un attribut DXF
VDH-Bruno a répondu à un(e) sujet de OrionLG dans AutoCAD 2020-2024
-
Exceptions et anomalies dans certaines fonctions Lisp
VDH-Bruno a répondu à un(e) sujet de VDH-Bruno dans Visual LISP
Les fonctions max & min Pour mémoire, une petite subtilité avec ces 2 fonctions que j'avais oublié de relever ici: Appelé sans arguments, elles retournent toutes les 2 deux 0 _$ (min) 0 _$ (max) 0 Appelé avec des arguments valant nil, elles retournent une erreur _$ (min nil) ; erreur: type d'argument incorrect: numberp: nil _$ (max nil nil nil) ; erreur: type d'argument incorrect: numberp: nil Par analogie on comprend mieux pourquoi: Appliqué sur une liste vide les fonctions retourne 0 (un exemple d'application ici ) _$ (apply 'min nil) 0 _$ (apply 'max nil) 0 Et qu'appliqué à une liste d'élément vide ces fonctions retourne une erreur _$ (apply 'min '(nil nil nil)) ; erreur: type d'argument incorrect: numberp: nil -
Il faut le voir comme expliqué là: [challenge] A05 : Find out whether a list is a palindrome (theswamp.org) Bon WE
-
Oui c'est de l'AutoLisp il faut les voir comme une extension des fonctions Lisp de base, d’ailleurs on retrouve la plupart de ces fonctions dans les autres dialectes Lisp sans le préfixe vl-
-
Bonjour Patrice, Oui ça peut être une explication, mais ce n'est pas incontournable car les fonctions vl-* ont déjà été réécrite en "vieil" AutoLisp, à ce sujet voir les fonction de (gile) Équivalences à vl-* - Routines LISP - CadXP . Donc en toute logique tout bon lispeur devrait les avoir installé sur son clone pour être compatible.. A+ Bruno
-
Normalement le vl-cmd te met à l'abrit des plantages😉
-
Oui oui tu as tout bon avec le vocabulaire, oui comme toi je pense que c'est dommage de se limiter...
-
Dans ce cas c'est plus facile, car sur ma veille version d'AutoCAD cette ligne provoque une erreur en mode _VPMAX Donc cette ligne devrait suffire à faire la bascule, à tester: (cond ((vl-cmdf "_-VPORTS" "_Toggle") (command "_VPMIN")) (T (command) (command "_VPMAX"))) A+ Bruno
-
Oupss j'avais oublié de préciser que pour ces petites challenges, même si je le regrette, ils ont limité les codes aux seuls fonctions AutoLisp antérieur à l'apparition de Visual Lisp c.a.d. avant l'apparition des fonctions vl-, désolé... A+ Bruno
-
Bonjour, Rapidement et intuitivement je tenterais un truc comme ça, pour faire une bascule: ((lambda (v1 wmin v2) (if (= v1 v2) (command "_VPMAX"))) (getvar 'VIEWSIZE) (command "_VPMIN") (getvar 'VIEWSIZE)) A tester sur ta ligne de commande Bruno
-
Les challenges sont simples, l'anglais ne devrait pas être un repoussoir (moi même je ne parle toujours pas anglais, je ne le déchiffre que dans les grandes lignes en général je ne fais de proposition que si les exemples me semble clair). Ici aussi il y a beaucoup de challenges certains faciles d'autres un peu moins, même si ils ne sont pas regroupé dans un même fil de discussion avec une petite recherche on arrive à mettre la main dessus. D'une manière général dans un challenge ce qui compte c'est de les chercher, cela permet de mieux comprendre les réponses apportés, les lires sans avoir planché dessus au préalable n'a pas grand intérêt.. Les tenter n'obligent pas forcément à poster une réponse mais permet de s'exercer/réviser. Salutations Bruno
-
Bonjour, Un petit mot pour ceux qui veulent s’entraîner ou se divertir, sur TheSamp j'ai découvert il y a peu une section qui regroupe plein de petits challenges Lisp à réaliser et tout à fait abordable pour débutant. Les chercher de son coté et confronter ses solutions aux solutions déjà proposé, est je pense un bon moyen pour qui chercheraient à se perfectionner. Challenges (theswamp.org) Salutations Bruno
