Matt666
Membres-
Compteur de contenus
736 -
Inscription
-
Dernière visite
-
Jours gagnés
2
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Matt666
-
Raaah le salaud !! :thumbup: Faut pas le chercher Bred !! hehe Lovecraft, sache que tu as plusieurs autres solutions, moins techniques (et moins belles du coup) pour y arriver.. Avec un repeat, aussi... Courage ! [Edité le 6/12/2007 par Matt666]
-
Bah voilà ! Bravo !!! :D Vu que je ne connais pas bien ta maitrise du lisp, je vais (si je peux me permettre) préciser les remarques constructives de (gile)... Dans ta routine, tu utilises plusieurs variables (setq). Pour éviter de les mettre à nil au début de la routine, tu peux les déclarer. Comment déclarer des variales, et où ?? la première ligne de ton code est (en général) la fonction defun (DEfine FUNction). (defun nom_de_la_fonction (arguments / variables_locales)) Voilà où tu dois mettre tes variables locales. Pour ton premier programme, ce serait ça : (defun c:test (/ lst nbrelts p_dep nbr_supp i lst2 lst1 lst_final) ...) Déclarer tes variables signifie en quelque sorte lister toutes les variables qui servent au programme, mais qui ne servent pas en dehors. Lorsque ton programme est fini, toutes les variables inscrites ici seront mises à nil. Si tu ne déclares pas tes variables, et ça tu l'as compris puisque tu as mis certaines variables à nil avant de les utiliser, elles peuvent encore avoir une information lorsque tu démarres ton programme. En plus déclarer ses variables est très pratique pour utiliser les mêmes variables dans tous tes programmes ! par exemple toutes mes listes se nomment lst, mes chaînes de caractères str, etc... Rappel de la définition de la fonction defun (defun nom_de_la_fonction (arguments / variables_locales)) Un argument est un paramètre de la fonction. Presque toutes les fonctions interne utilisées en lisp utilisent des arguments ! Exemple : (setq nom1 definition_de_la_variable1 [nom2 definition_de_la_variable1]) où nom = nom de la variable definition_de_la_variable = Ce que tu mets sous cette variable. Autre exemple : (defun carre (nb) (* nb nb)) Donc pour trouver le carré de 5, tu fais (carre 5), et ça te retourne 25... Pour notre challenge, Gile te propose ceci : (defun delist (lst dep nb / nbrelts ...) ...) Avec lst = liste à modifier dep = Numéro de départ nb = nombre d'éléments à enlever.. Nota : juste un truc, on ne peut pas faire d'arguments optionnels pour des fonctions persos. Par exemple la fonction (substr) : (substr chaîne début [longueur]) Tu vois que la longueur est entre crochet... Eh bien cet argument n'est pas obligatoire. Voilà. Voilà !! A toi de jouer maintenant !! Bon courage.. A bientot. Matt.
-
Génial ça marche !!! Ok, c'est pour ça toutes ces équivalences.... :D Merci Gile ! A bientot. Matt.
-
Cool ! Ca fonctionne ! merci Gile ! Juste au passage, dans ta routine sort, c'est remove[surligneur]-[/surligneur]doubles et pas remove[surligneur]_[/surligneur]doubles....
-
Salut Gile ! :D Bon chu déjà désolé pour la remarque que je vais te faire... Paske je suis bien conscient que la compatibilité de tes routines avec des moteurs autres qu'autocad peut t'indifférer (un peu, déjà)... Alors voilà, a force d'essayer tes routines avec BircsCAD mais sans avoir creusé la chose, j'en suis venu à ceci : je pense que ta fonction "sort" d'équivalence à "vl-sort" diffère de l'originale. Ici ta routine (qui est très intéressante à lire, merci !) ne fonctionne pas du fait de cette fonction... :casstet: voilà. En plus je n'ai pas de message d'erreur, après la routine. Après le test su la fonction non plus, d'ailleurs. Bing. Est-ce que tu peux qqh ? Merci ! A bientot. Matt.
-
SuperAutoScript, l\'heure du grand test.
Matt666 a répondu à un(e) sujet de Eric dans Programmer en s'amusant
Wouahooouuuuu !!! Dément !! Je regarde ça demain direc' ! Merci à toi Eric ! A bientot. Matt. -
Attention substr ne fonctionne que pour les chaînes de caractère... Pas pour les listes... Ceci dit, ce que tu demandes est exactement la réponse de ce challenge, mais à l'envers !! Un équivalent à la fonction substr pour les listes... Donc pour ta gouverne, nan !! :) Courage lili !! Petite piste : Au lieu de chercher à supprimer, pourquoi ne pas recréer une liste sans les éléments que l'on souhaite enlever ? ;) [Edité le 5/12/2007 par Matt666] [Edité le 6/12/2007 par Matt666]
-
Salut lovecraft ! Bah c'est pas mal du tout !! (setq lst '(1 2 3 4 5 6 7 8 9 10)) (setq nbrelts (length lst)) (setq p_dep (- (getint "\nDonnez la position de départ : ") 1)) (setq nbr_supp (getint "\nDonner le nombres d'éléments à supprimer: ")) Là tu donnes les bases du problème. Et c'est bon. Ensuite, ça se complique : (repeat nbr_supp) Une fonction repeat. Ok, tu peux le faire comme ça, et c'est même le plus simple à faire... (vl-remove (nth p_dep lst) lst) C'est ici ton premier porblème. si on décortique un peu, tu utilises la fonction nth. nth retourne la position d'un élément dans une liste. Dans ton code, tu ne demandes la position d'un élément. Tu demandes la position d'une position ! (p_dep) Voilà. Si tu veux continuer dans ce sens, il faut d'abord que tu trouves quel élément se trouve à la position "p-dep". Autre problème : vl-remove demande un élément de la liste à supprimer. Et pas une position. Ensuite tu dis ceci : (setq p_dep (+ 1 p_dep)) le seul problème, c'est que ce bout de code se trouve en dehors de la fonction de répétition (repeat)... Pour que ça fonctionne, il faut que ton compteur se trouve au sein de la répétition... Sinon, et pour finir, vl-remove supprime tous les éléments donnés d'une liste. Si tu as une liste comme ceci (0 1 2 3 0 0 1 2 4 0 0 1 2 0 0 1), et que tu demandes à vl-remove de supprimer le 0 de la liste, il supprimera tous les 0... Comme ça : (1 2 3 1 2 4 1 2 1)... Ici la fonction sert à supprimer un nombre défini d'une liste... vl-remove est trop "puissant" pour cette fonction... Voilà ! Bon courage à toi !
-
Ces exercices sont justement faits pour ça ! Ah bah merci !!! :) Cool ! C'est bien de se lancer ! Oui, il a raison... PISTE : Déjà, le sujet porte sur une liste. --->En autolisp, tu n'as que quelques fonctions utilisant des listes. (car cdr assoc member last length list cons append listp reverse foreach acad_strlsort nth). --->En Vlisp, c'est pareil (vl-every vl-list vl-list->string vl-list-length vl-member-if vl-member-if-not vl-position vl-remove vl-remove-if vl-remove-if-not vl-some vl-sort vl-sort-i). Sauf qu'ici tu n'as pas besoin de vlisp. Si tu regardes la fonction (delst lst pos nb) tu as : delst -> Le nom de la fonction lst -> La liste à modifier pos -> La position de dépoart nb -> Le nombre d'éléments à supprimer. Dans l'exemple de gile, (setq liste '(1 2 3 4 5 6 7 8 9)) Si tu veux supprimer le 4, le 5 et le 6 de la liste. tu fais donc appel à la fonction (delst ensuite la position de départ (le premier élt d'une liste, c'est zéro), donc 3 (delst 3 et enfin le nb d'éléments à supprimer, donc 3 (delst 3 3) ==> (1 2 3 7 8 9) Voilà. Bon courage !! Matt.
-
Exactement Gile !
-
Ouvrir un gabarit en lisp
Matt666 a répondu à un(e) sujet de bseb67 dans Pour aller plus loin en LISP
Je ne sais pas si ça fonctionne sur autocad, et je me demande si je ne suis pas hors propos... Avec la commande "_LAYOUT" ! Tu mets ta variable filedia à 0, tu lances la commande _layout, option "Modèle", et tu entres le chemin de ta présentation en dur... N'oublie pas de remettre filedia à 1 ! Voilà.. [Edité le 4/12/2007 par Matt666] -
Les secteurs qui payent bien... ?
Matt666 a répondu à un(e) sujet de wyzer dans Emploi, monde du travail
:thumbup: -
Raaah là là... Va falloir que je revois ma capacité à établir un énoncé clair... :( En fait je pensais que tout ça était à trouver, justement... Comment faire pour supprimer de la liste un nombre d'éléments donné en partant d'une position dans la liste... Bon... J'ai fait une routine comme suit : (delst lst pos nb) Avec : lst -> La liste à modifier pos -> La position de dépoart nb -> le nombre d'éléments à supprimer. J'ai trouvé qu'il était intéressant d'en faire un challenge, c'est tout ! Mais je voulais pas en dire trop... Faut croire que j'aurais du !! Nan, promis ! ;) Avec la position de départ... Voilà, désolé pour tout ça... PS : Il commence bien ce challenge !!! :mad2: [Edité le 4/12/2007 par Matt666]
-
Bah oui que c'est possible !!! Voici 3 routines. MDATE1 2 et 3. Je travaille sur un autre logiciel, qui ne remplit les dates qu'avec la routine MDATE2, qui force l'affichage de toutes les présentations dispo. MDATE3 montre ce que disait bseb67. MDATE1 est une autre technique, elle regarde toutes les entités du dessin. Voici les codes : (defun c:MDATE1 ( / ent str) (setq str (strcat (substr (itoa (fix (getvar "CDATE"))) 7) "/" (substr (itoa (fix (getvar "CDATE"))) 5 2) "/" (substr (itoa (fix (getvar "CDATE"))) 1 4) )) (setq ent (entnext)) (while ent (if (and (member '(0 . "ATTRIB") (entget ent)) (member '(2 . "DATE") (entget ent)) ) (progn (entmod (subst (cons 1 str) (assoc 1 (entget ent)) (entget ent) )) (entupd ent) ) ) (setq ent (entnext ent)) ) (princ) ) (defun c:MDATE2 ( / ctab sel n ent str) (setq ctab (getvar "ctab") str (strcat (substr (itoa (fix (getvar "CDATE"))) 7) "/" (substr (itoa (fix (getvar "CDATE"))) 5 2) "/" (substr (itoa (fix (getvar "CDATE"))) 1 4) ) ) (foreach pt (layoutlist) (setvar "ctab" pt) (if (setq sel (ssget "_x" '((2 . "cartouche_meril")))) (repeat (setq n (sslength sel)) (setq ent (ssname sel (setq n (1- n)))) (while (setq ent (entnext ent)) (if (and (member '(0 . "ATTRIB") (entget ent)) (member '(2 . "DATE") (entget ent)) ) (progn (entmod (subst (cons 1 str) (assoc 1 (entget ent)) (entget ent) )) (entupd ent) ) ) ) ) ) ) (setvar "ctab" ctab) (princ) ) (defun c:MDATE3 ( / sel n ent str) (setq str (strcat (substr (itoa (fix (getvar "CDATE"))) 7) "/" (substr (itoa (fix (getvar "CDATE"))) 5 2) "/" (substr (itoa (fix (getvar "CDATE"))) 1 4) )) (if (setq sel (ssget "_x" '((2 . "cartouche_meril")))) (repeat (setq n (sslength sel)) (setq ent (ssname sel (setq n (1- n)))) (while (setq ent (entnext ent)) (if (and (member '(0 . "ATTRIB") (entget ent)) (member '(2 . "DATE") (entget ent)) ) (progn (entmod (subst (cons 1 str) (assoc 1 (entget ent)) (entget ent) )) (entupd ent) ) ) ) ) ) (princ) ) A bientot ! Matt.
-
Oui, mais si on a une liste comme celle-ci : (0 0 0 1 2 5 4 0 1 2 4 0 0 1 2 5 0 5 8 4 0) je veux enlever les deux zéros du milieu, pour ce résultat : (0 0 0 1 2 5 4 0 1 2 4 1 2 5 0 5 8 4 0) Ici la fonction interne n'est plus utile PS : J'espère que l'on parle de la même... vl-remove L'intérêt ici est de supprimer un nombre fixe d'éléments de liste. Je reprends mon exemple, en le modifiant un peu : (1 2 3 4 5 6 7 8 9 10 11 12 23 7 8 9 15 8) La routine retourne la même liste sans le 7 8 9 du milieu. (1 2 3 4 5 6 10 11 12 23 7 8 9 15 8) par contre elle ne supprime les autres 7, 8 ou 9 de la liste. Voilà. Si ca peut t'aider à voir la différence entre les deux et à éclaircir le but de cette fonction... [Edité le 4/12/2007 par Matt666]
-
Cadeau de noël !!! :) Petit challenge pas très dur, mais intéressant, je trouve... Donc tout le monde sur le pont ! Il s'agit de supprimer des éléments au sein d'une liste (encore un challenge sur les listes !!). Un exemple est toujours plus probant : Une liste : (1 2 3 4 5 6 7 8 9 10 11 12 23) La routine retourne la même liste sans le 7 8 9. Donc : (1 2 3 4 5 6 10 11 12 23) A l'attaque !!! PS : Ce challenge est un peu visé... Lili, lovecraft et consorts, à vous de jouer !! Allez-y tranquillement, et puis si vous avez besoin d'un coup de main, ya qu'à demander :D ! Bon courage.. A bientot ! Matt. [Edité le 4/12/2007 par Matt666]
-
Ah cool ! Merci !
-
Didon y rigole po Maximilien !!! :o
-
Salut ! Bon je commence aussi sur Sketchup. Perso j'ai la version gratuite, je ne sais pas si la version pro est pourvue d'un programme de rendu. Pour faire des rendus photo réalistes, tu as plusieurs possibilités de programmes : - Gratuit : Kerkythea. C'est gratuit, mais c'est pas évident. Faut se lancer dedans quoi. tu as des tutoriaux intéressants sur le net. - Payant mais avec des verions d'essai : -> IRender. Le plus simple, il est intégré directement à sketchup. Par contre il te met des textes en filigrane un peu partout sur ton image... Donc faut laisser un fond très clair. -> Podium. jamais essayé, parce qu'aucune réponse au mail envoyé. -> Artlantis R. Avec le plugin d'ouverture d'un fichier skp. intéressant, mais pas évident au début. Par contre c'est un logiciel de rendu connu et reconnu. ya surement moyn de faire des choses intéressantes dessus. Attention aux attributions des shaders sur les zones. C'est un bizarre au début, mais on s'y fait. Voilà. Pour l'instant c'est ce que j'ai trouvé. A bientot ! Matt.
-
Juste une petite info supplémentaire, n'oublie de cliquer sur "mettre en file d'attente" pour ta première impression.. A bientot ! Matt.
-
FormaBois as tu la dernière version ? 8 ? La version 0.7 fonctionnait assez mal pour ce qu est de la fusion... Ca vient surement de là... Lili Je viens d'installer acad2008 chez moi, avec pdfcreatormais pas en réseau, et pas sur vista... Et bien les deux routines fonctionnent parfaitement !!! Ecoute, le pc de ma copine est sous vista, mais je n'arrive pas à installer AutoCAD 2008. dès que j'y arrive, j'installe pdfcreator, et je vois si le pb est le même que le tien. J'ai bien peur que le problème ne vienne ni de AutoCAD, ni de la routine.... on va y arriver !! A bientot. Matt.
-
confiance accrochage ou visualisation ??
Matt666 a répondu à un(e) sujet de lili2006 dans AutoCAD 2008
Salut Bred.. Je ne sais pas si c'est vraiment ce que tu dis.. J'aurais pensé la même chose si c'était deux cercles... Ici, le point d'intersection se trouve en dehors du cercle, mais aussi en dehors de la polyligne... C'est bizarre. A moins que le bout de polyligne qui croise le cercle soit un arc.... Je ne vois que ça.. Nan ? -
confiance accrochage ou visualisation ??
Matt666 a répondu à un(e) sujet de lili2006 dans AutoCAD 2008
C'est parce que les deux entités sont des cercles, ou des arcs, ou tout ce qui est pourvu d'un rayon, nan ? C'est bizarre... Perso je fais plus confiance aux accroches, mais bon, je travaille en 2d... -
La commande "repere", aussi...
-
lisp utilisant la variable \"ucsfollow\"?
Matt666 a répondu à un(e) sujet de thierryd dans Routines LISP
ou alors tu fais un bouton avec une macro... genre ^c^cucsfollow;1;^c^c_ucs; Pas testé
