-
Compteur de contenus
2 523 -
Inscription
-
Dernière visite
-
Jours gagnés
23
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Fraid
-
Il me semble que de traiter le lecteur seul, est une exception hors challenge, puisque qu'il est question de dossiers. Mais c'est vrais que mon code n'est pas concis, et est une adaptation d'un code que j'utilise pour lister des fichiers, et pas des dossiers. Je remercie en passant Lee Mac, mon autre mentor.
-
heu, la tu m'embrouille :blink:
-
bon, je n'ai pas réussi à faire un filtre correct dans la boucle récursive. du coup je traite la liste finale. (defun c:all-dir (/ alldir dir listdir) (setq dir (getstring "\nSaisir le dossier Racine:")) (defun alldir (dir) (setq dir (vl-string-right-trim "\\" (vl-string-translate "/" "\\" dir))) (append (mapcar '(lambda ( x ) (strcat dir "\\" x)) (vl-directory-files dir nil -1)) (apply 'append (mapcar '(lambda ( x )(if (not (wcmatch x ".,..")) (alldir (strcat dir "\\" x)))) (vl-directory-files dir nil -1) );Fin mapcar );Fin apply );Fin append );Fin alldir (setq listdir (remove-doubles (mapcar '(lambda ( x ) (vl-string-right-trim "\\..,\\." x)) (alldir dir)))) );Fin all-dir (defun remove-doubles (lst) (if lst (cons (car lst) (remove-doubles (vl-remove (car lst) lst))) ) )
-
Je pensais les avoir fait sautés avec (wcmatch x ".,.."), mais effectivement ils se sont rajouté à la fin des chemins. En fait la difficultés du challenge, c'est le point dans le nom des dossiers, qui fait qu'on ne peut pas utiliser le filtre "*.*" ... je regarde ta soluce tout à l'heure, merci
-
Bonjour, Du coup je met la mienne (defun c:all-dir (/ alldir dir listdir) (setq dir (getstring "\nSaisir le dossier Racine:")) (defun alldir (dir) (setq dir (vl-string-right-trim "\\" (vl-string-translate "/" "\\" dir))) (append (mapcar '(lambda ( x ) (strcat dir "\\" x)) (vl-directory-files dir nil -1)) (apply 'append (mapcar '(lambda ( x )(if (not (wcmatch x ".,..")) (alldir (strcat dir "\\" x)))) (vl-directory-files dir nil -1) );Fin mapcar );Fin apply );Fin append );Fin alldir (setq listdir (alldir dir)) );Fin all-dir
-
Bonjour, Autodesk, ayant croqué la pomme depuis déjà quelque temps, je réfléchi à la portabilité de certain Lisp. Notamment, ceux qui on besoin de chercher un dossier par le biais d'une demande utilisateur. La chose étant déjà "difficile" sur PC, voir la fin de ce Post Je ne vois pas d'autres solution que de passer par une routine Java pour explorer, puisque qu'il est théoriquement impossible d'utiliser les fonctions Active X. Ou peut etre qu'il y a quelque chose qui existe et qui m'a échappé???
-
A360 Desktop va stopper le 19 Juin 2018 !?
Fraid a répondu à un(e) sujet de lecrabe dans AutoCAD 2018
Bonjour, Sait tu si il vont le remplacer par autre chose? -
C'est claire que je vais utiliser cela au compte goûte. C'est pour des petites fonctions de mise à la charte, et j'en ai pas tant que cela qui s'y prête. Après, avec nos PC de maintenant, on ne vois pas trop la différence. Le fait que les variables et les fonctions (arguments et retours) ne soient pas typés d'avance en Lisp, je trouve cela plutôt pratique, mais demande plus de rigueur et de contrôle.
-
Oups, pas pris bon exemple (ou plutôt si du coup), pas fait attention quelle était récursive, autant pour moi. Et terrible le coup de la fonction auxiliaire pour les récursives. Cela faisait un petit moment que je voulais poser la question, mais je n'osais pas.. Comme quoi il n'y a jamais de questions bêtes. En tout cas j'avais bien vu que de passer une liste en argument était une façon de "polymorphiser" une fonction. Cela va me permettre d'en réduire le nombre dans mon fatras.
-
J'ai oublier de préciser qu'en lisp evidement on ne peut pas avoir le meme nom.
-
Bonjour, Dans certains langages, comme le C ou le Java, nous pouvons avoir des méthodes (un peux comparables à nos fonctions) ayant le même nom mais pas le même nombres et/ou types d'arguments. (Polymorphisme) En Autolisp, j'ai beau chercher, je ne vois pas d'utilisation concrète de ce concept. Pourtant c'est possible. Exemple avec une fonction bien connue str2lst qui transforme une suite de texte séparé par un séparateur en liste. (defun str2lst (str sep / pos);ici nous ne connaissons pas le séparateur d'avance (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) (defun strtolst (str / pos sep);ici nous connaissons le séparateur d'avance (setq sep ";") (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (strtolst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) (defun str2list (arg / pos sep str);ici les 2 sont possible (if (= (type arg) liste)(setq sep (cadr arg) str (car arg))(setq sep ";" str arg)) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) Est ce une aberration?
-
Décidément, je bute, j'ai finis par regarder, je n’étais pas loin. et celle que je préfère pour sa concision est celle de Bonuscad. sinon hors challenge je pense que j'aurais fait cela. (defun doublon (lst) (if (/= (length lst) (length (remove-doubles lst))) T) ) (defun remove-doubles (lst);de Gile (if lst (cons (car lst) (remove-doubles (vl-remove (car lst) lst)))) ) hihihi
-
Yop Je vais donc m’abstenir sur celui la,(déja fait) surtout que je me remet sur l'autre, déjà résolu, mais je m'y colle n'ayant pas regarder les résultats même si il est tard et que Simone va gueuler.
-
j'vais etre en retard pour mes plans... je remet cela pour à ce soir, j'y arrive pas non plus
-
Bonjour, Les calculs de débits de climatisation tel que tu nous les présente, ne sont connus que de quelques ingénieur spécialisé qui eux seul pourront t'aider, si il connaissent l'Autolisp. cela réduit terriblement les chances que quelqu’un puisse t'aider au delà de cela. Débit en m3/h=Vitesse (m/s) x Surface (m) x 3600 tu devrait repenser ton problème avec du code générique et non spécialisé. et surtout mettre en place un vrais Algorithme complet, comme te l'a indiqué Gile. La, on ne voit même pas ce que tu cherche à faire.... Je te conseil les cours d'algo present sur developpez.com Bonne chance
-
Bonjour, Malheureusement, cela est du à un manque de formation de plus en plus redondant. Désolé, cela ne vous aide pas, mais c'est une triste vérité. Mais ou sont les formateurs?????
-
Merci, Je suis allez voir Wiki avant de poser la question, et m'avait un peu embrouiller pour une fois. Surtout avec la définition de semi effet de bord :unsure: En fait, c'est en inspectant mes vielles fonctions, qui à la base, étais bien rangées, mais maintenant, perdues dans la masse, que le problème se pose. Je vais devoir les reprendre, en vérifiant bien, qu'il n'y est pas de variables BORDéliques.. Pa facile, car mon ensemble est constitué d'une vingtaine de Lisps thématiques (polyligne, bloc, texte...) ou sont regroupées mes petites routines. On a beau prévoir une Architecture, au bout d'un moment c'est le foutoir malgré tout. Surtout qu'as mes début, je faisait beaucoup de copier/coller sans savoir vraiment ce que je faisais et l'impact produit sur l'ensemble. Sur le conseil de Gile, je vais encapsuler un maximum.
-
Bonjour, Je ne suis pas sure d'avoir bien compris ce qu'est une effet de bord. Pour moi, c'est une variable qui prend une valeur inattendue (ou attendue si on le fait volontairement) à cause d'une fonction qui utilise une variable du même nom. Chose impossible dans certain langages grâce leur interface de développement qui les empêche. En Autolisp, pas de contrôle dans ce sens. Ai je bien compris? et quelle sont les astuces pour les éviter. Merci d'avance pour vos spots luminescent.
-
jusqu’à maintenant, a chaque fois que j'ai eu des petites erreurs comme cela, c'étais un problème de géoréférencement sur un des plans... j’espère pour toi, que je me trompe.
-
Suis pas doué du tout pour expliquer.. de plus, comme j'apprend le Java, m’emmêle un peux la gestion des variables, qui chez l'un on est obligé de rendre globale (Statique) la variable incrémentée à cause de l'encapsulation à l’intérieur d'une boucle et pas en Lisp.
-
comme à l'inverse, pour compter la profondeur de tes récursions par exemple, il faut déclarer la variable au dessus de ta fonction récursive.(pas en argument) (setq la-variable 0) (defun lafonction) mais Gile va certainement mieux t'expliquer :)
-
en englobant ta fonction avec (while ta-variable (ta fonction)) me semble t'il
-
Yop J'ai eu beaucoup de mal aussi avec l'imbrication des fonctions. dans ce cas la, c'est F2 qui ne peut pas appeler F1. dans certain cas, c'est le passage en argument ou non de certaines variables qui est difficile pour moi encore. Mais en testant les différentes possibilités on finis par s'en sortir. Hélas, comme nous ne disposons pas d'un véritable IDE, cela fonctionne, même si on à pas fait le meilleur choix. Conclusion, il faut tester, et tester encore...
-
Pour redonné la balle à l'auteur du post, car nous commençons à digresser... Comment fait tu ton Copier/coller? (rigolo J'anime) et petit rappel, nous ne cherchons absolument pas à avoir raison, mais aider un dessinateur dans la panade.
-
tu confirme ce que je vient de dire re :blink:
