Big666 Posté(e) le 20 janvier 2014 Posté(e) le 20 janvier 2014 Bonjour Le lisp Pline_block De gille doit être pour moi devenu un toc. (Renommé SF pour surface) Il m’apporte tellement que je n’ai de cesse de rajouter des choses, petite jusque là. Mais là c’est un peut gros pour moi. Ma méthode et simple puisque je ne comprends pas le lisp. =>Là, Il a fait ça, si il la fait et que ça marche je le refais et hop (mais ça ne doit pas être si simple) Dans pline_blocs d’origine il y a : Le lisp : Pline_block.lspLe lisp :GetName.lspGetName.DCL Pour l’instant je touche au lisp Pline_block je lui dis je veux ça. En suite se sera le tour de GetName.lsp En suite se sera le tour de GetName.DCL Dans une autre vie peut être Puis de rajouter les attributs au bloc dwg Donc, là je vous demande (ok tu es bien partie pas a la suite). Ou, Mais non ça ne marchera pas, et pourquoi ? Et si ça me dépasse. Tempi…Je ferais du tricot..... ;;; sf -Gilles Chanteau- 13/04/07 ;;; Insère le bloc "sf" après sélection d'une polyligne ;;; Attribut 1 : Nom de la pièce ;;; Attribut 2 : Longueur de la polyligne ;;; Attribut 3 : Aire de la polyligne ;;; Attribut 4 : N° de la piece big666 ;;; Attribut 4 : HSP big666 (defun c:sf (/ AcDoc Space bloc nom ent obj ins op reg ech id long aire Nref) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (if (or (tblsearch "BLOCK" (setq bloc "sf")) (findfile (setq bloc "sf.dwg")) ) (progn ;; 01 attribut "nom de la pièce" (if (not (setq nom (getname "Nom de la pièce"))) (setq nom "") ) (while (not (setq ent (car (entsel))))) (setq obj (vlax-ename->vla-object ent)) (if (= "AcDbPolyline" (vla-get-ObjectName obj)) (progn (if (not (setq ins (getpoint "\nSpécifiez le point d'insertion ou < Centre >: " ) ) ) (progn (if (= (vla-get-closed obj) :vlax-false) (progn (vla-put-closed obj :vlax-true) (setq op T)) ) (setq reg (vlax-invoke space 'addRegion (list obj)) ins (vlax-get (car reg) 'Centroid) ) (if op (vla-put-closed obj :vlax-false) ) (vla-delete (car reg)) ) ) (if (not (vlax-ldata-get "sf" "ech")) (vlax-ldata-put "sf" "ech" 3) ) (if (not (setq ech (getreal (strcat "\nEntrez le facteur d'échelle <" (rtos (vlax-ldata-get "sf" "ech")) ">: " ) ) ) ) (setq ech (vlax-ldata-get "sf" "ech")) (vlax-ldata-put "sf" "ech" ech) ) (setq id (vla-get-ObjectID obj) ;; 02 Attribut périmètre (mm² -> m²) aire (strcat "Surface: " "%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).Area \\f \"%lu2%pr2%ct8[1e-0]\">%" " m²" ) ;; 03 Attribut surface (mm -> m) long (strcat "Perimétre: " "%<\\AcObjProp Object(%<\\_ObjId " (itoa id) ">%).Length \\f \"%lu2%pr2%ct8[1.00]\">%" " ml" ) ) (setq ref (vla-InsertBlock Space (vlax-3d-point (trans ins 1 0)) bloc ech ech 1 (angle '(0 0 0) (trans (getvar 'ucsxdir) 0 (trans '(0 0 1) 1 0 T)) ) ) ) (progn ;; " (progn ;; 04 n° de la piece" (if (not (setq nom (getname "N° de la piece"))) (setq nom "") ) (while (not (setq ent (car (entsel))))) (setq obj (vlax-ename->vla-object ent)) (if (= "AcDbPolyline" (vla-get-ObjectName obj)) (progn (if (not (setq ins (getpoint "\nSpécifiez le point d'insertion ou < Centre >: " ) ) ) (progn (if (= (vla-get-closed obj) :vlax-false) (progn (vla-put-closed obj :vlax-true) (setq op T) ) ) (setq reg (vlax-invoke space 'addRegion (list obj)) ins (vlax-get (car reg) 'Centroid) ) (if op (vla-put-closed obj :vlax-false) ) (vla-delete (car reg)) ) ) (if (not (vlax-ldata-get "sf" "ech")) (vlax-ldata-put "sf" "ech" 3) ) (if (not (setq ech (getreal (strcat "\nEntrez le facteur d'échelle <" (rtos (vlax-ldata-get "sf" "ech")) ">: " ) ) ) ) (setq ech (vlax-ldata-get "sf" "ech")) (vlax-ldata-put "sf" "ech" ech) ) (setq id (vla-get-ObjectID obj) (progn ;; 05 hsp" (if (not (setq nom (getname "hsp"))) (setq nom "") ) (while (not (setq ent (car (entsel))))) (setq obj (vlax-ename->vla-object ent)) (if (= "AcDbPolyline" (vla-get-ObjectName obj)) (progn (if (not (setq ins (getpoint "\nSpécifiez le point d'insertion ou < Centre >: " ) ) ) (progn (if (= (vla-get-closed obj) :vlax-false) (progn (vla-put-closed obj :vlax-true) (setq op T) ) ) (setq reg (vlax-invoke space 'addRegion (list obj) ) ins (vlax-get (car reg) 'Centroid) ) (if op (vla-put-closed obj :vlax-false) ) (vla-delete (car reg)) ) ) (if (not (vlax-ldata-get "sf" "ech")) (vlax-ldata-put "sf" "ech" 3) ) (if (not (setq ech (getreal (strcat "\nEntrez le facteur d'échelle <" (rtos (vlax-ldata-get "sf" "ech" ) ) ">: " ) ) ) ) (setq ech (vlax-ldata-get "sf" "ech")) (vlax-ldata-put "sf" "ech" ech) ) (setq id (vla-get-ObjectID obj) ;; attribution de leur valeur aux attributs (mapcar '(lambda (x y) (vla-put-TextString x y) ) (vlax-invoke ref 'GetAttributes) (list nom aire long N° HSP) ) (vla-regen AcDoc acActiveViewport) ) (alert "L'objet sélectionné n'est pas une polyligne." ) ) ) (alert "Le bloc \"sf\" est introuvable.") ) (princ) ) ) ) ) ) ) ) ) ) ) Nous vivons tous dans le ventre d'un chien géantTout le monde le sait mais personne ne dit rien du tout ultra Vomit
didier Posté(e) le 21 janvier 2014 Posté(e) le 21 janvier 2014 coucou c'est, pour le moins, pas clairni ton message ni dans ta tête il n'est pas question de te reléguer au tricot, mais si tu veux APPRENDRE il faut commencer petitbien connaître le logiciel est un plus avant de le programmer et pire encore avec le DCL... on a tous commencé petit, tout petit, mon premier "programme" était une rotation d'attributset je me souviens (ému) des débuts de (Giles) qui aujourd’hui nous survole de très haut on apprend à marcher puis on apprend à courir. pose des questions précises et les réponses le seront aussi. amicalement Éternel débutant… Mon site perso : Programmer dans AutoCAD
Big666 Posté(e) le 21 janvier 2014 Auteur Posté(e) le 21 janvier 2014 Je sais que tu a raison. Donc Je Sais que je ne sais pas qu’elle question posé ?? Essayons : je veux rajouter au lisp de gille deux attributs. Je me suis dit si ce que j’appelle le code, fonctionne pour Exemple ‘’nom de la piece’’ Cela peut fonctionner pour les attributs hsp, N° de la pièce. Si oui je fouille dans GetName.lsp Si non je pleure Par ailleurs j’ai très peux de temps pour apprendre le lisp je bidouille. Un stage me sera refusé de plus je ne pense pas avoir le niveau requit. Le temps je suis fonctionnaire depuis 4 ans et ça na rien à voir avec ‘’ les bande de tire au C’’ Merci pour la réponse. Nous vivons tous dans le ventre d'un chien géantTout le monde le sait mais personne ne dit rien du tout ultra Vomit
Olivier Eckmann Posté(e) le 22 janvier 2014 Posté(e) le 22 janvier 2014 Bonsoir, Il n'y a pas le choix, il faut décomposer et commenter un code pour essayer de comprendre ce qu'il fait; de plus il faudra de toute manière apprendre la syntaxe minium du langage (affectation, boucle, condition...) Dans le programme de Gilles la demande d'une valeur pour l'attribut se trouve dans ces 3 lignes ;; 01 attribut "nom de la pièce" (if (not (setq nom (getname "Nom de la pièce"))) (setq nom "") ) Il faut les décomposer et commenter(getname "Nom de la pièce") => appel la fonction GetName avec le message d'invite "Nom de la pièce" qui apparaitra dans le dialogue DCL(setq nom (getname "Nom de la pièce")) => stockage du résultat dans la variable nom(if (not (setq nom (getname "Nom de la pièce"))) => si la variable nom n'a pas de valeur ALORS faire la suite (setq nom "") => stocker un texte vide dans la variable nom Je te conseille donc de le ré-écrire comme cela ;; Appel le dialogue GetName avec le message "Nom de la pièce" ;; et stocke le résultat saisi dans la variable nom (setq nom (getname "Nom de la pièce")) ;; Si la variable nom n'existe pas (if (not nom) ;; ALORS stocke un texte vide dans la variable nom (setq nom "") ;; fin de la boucle de test sur la valeur de nom ) ensuite pour demander les 2 autres attributs, il suffit de dupliquer ces lignes et de créer 2 autres variables pour recevoir les valeurs ;; Appel le dialogue GetName avec le message "Numéro pièce" ;; et stocke le résultat saisi dans la variable numero (setq numero (getname "Numéro de la pièce")) ;; Si la variable numero n'existe pas (if (not numero) ;; ALORS stocke un texte vide dans la variable numero (setq numero "") ;; fin de la boucle de test sur la valeur de numero ) ;; Appel le dialogue GetName avec le message "Hauteur sous plafond" ;; et stocke le résultat saisi dans la variable hsp (setq hsp (getname "Hauteur sous plafond")) ;; Si la variable hsp n'existe pas (if (not hsp) ;; ALORS stocke un texte vide dans la variable nom (setq hsp "") ;; fin de la boucle de test sur la valeur de hsp )Dans quelques semaines lorsque tu seras plus à l'aise avec le langage tu simplifieras tes commentaires et tu pourras complexifier la syntaxe.Tu pourrais aussi te créer ton propre dialogue DCL qui demande la saisie de 3 valeurs dans le même écran... Olivier
Big666 Posté(e) le 22 janvier 2014 Auteur Posté(e) le 22 janvier 2014 Bonsoir, Il n'y a pas le choix, il faut décomposer et commenter un code pour essayer de comprendre ce qu'il fait; de plus il faudra de toute manière apprendre la syntaxe minium du langage (affectation, boucle, condition...) Dans le programme de Gilles la demande d'une valeur pour l'attribut se trouve dans ces 3 lignes ;; 01 attribut "nom de la pièce" (if (not (setq nom (getname "Nom de la pièce"))) (setq nom "") ) Il faut les décomposer et commenter(getname "Nom de la pièce") => appel la fonction GetName avec le message d'invite "Nom de la pièce" qui apparaitra dans le dialogue DCL(setq nom (getname "Nom de la pièce")) => stockage du résultat dans la variable nom(if (not (setq nom (getname "Nom de la pièce"))) => si la variable nom n'a pas de valeur ALORS faire la suite (setq nom "") => stocker un texte vide dans la variable nom Je te conseille donc de le ré-écrire comme cela ;; Appel le dialogue GetName avec le message "Nom de la pièce" ;; et stocke le résultat saisi dans la variable nom (setq nom (getname "Nom de la pièce")) ;; Si la variable nom n'existe pas (if (not nom) ;; ALORS stocke un texte vide dans la variable nom (setq nom "") ;; fin de la boucle de test sur la valeur de nom ) ensuite pour demander les 2 autres attributs, il suffit de dupliquer ces lignes et de créer 2 autres variables pour recevoir les valeurs ;; Appel le dialogue GetName avec le message "Numéro pièce" ;; et stocke le résultat saisi dans la variable numero (setq numero (getname "Numéro de la pièce")) ;; Si la variable numero n'existe pas (if (not numero) ;; ALORS stocke un texte vide dans la variable numero (setq numero "") ;; fin de la boucle de test sur la valeur de numero ) ;; Appel le dialogue GetName avec le message "Hauteur sous plafond" ;; et stocke le résultat saisi dans la variable hsp (setq hsp (getname "Hauteur sous plafond")) ;; Si la variable hsp n'existe pas (if (not hsp) ;; ALORS stocke un texte vide dans la variable nom (setq hsp "") ;; fin de la boucle de test sur la valeur de hsp )Dans quelques semaines lorsque tu seras plus à l'aise avec le langage tu simplifieras tes commentaires et tu pourras complexifier la syntaxe.Tu pourrais aussi te créer ton propre dialogue DCL qui demande la saisie de 3 valeurs dans le même écran... Olivier Nous vivons tous dans le ventre d'un chien géantTout le monde le sait mais personne ne dit rien du tout ultra Vomit
Big666 Posté(e) le 22 janvier 2014 Auteur Posté(e) le 22 janvier 2014 MERCI OLIVIER apprendre le lisp c'est un de m'est objectif comme dessinateur . quant je montre à des collèges, regarde ce que je peux faire ! remplir la nomenclature d'une pièce en quelque clic . "il ont des réactions étranges des jurons , il me dise monsieur." c'est programme sont indispensable, mais même si je suis capable de bricoler de la à en faire un il y a des kilomètres.oui il faut que je rentre dans l’apprentissage du lisp . merci pour t'es Lumière à temps perdu ou plutôt le temps qu'il me reste je vais appliquer t'est conseille sur ce lisp. je le soumettrait , et la si tu a la j'attendrais vos remarque (mais il n'y en n'aura pas)!!merci pour le mal que tu tes donné. Nous vivons tous dans le ventre d'un chien géantTout le monde le sait mais personne ne dit rien du tout ultra Vomit
didier Posté(e) le 23 janvier 2014 Posté(e) le 23 janvier 2014 coucou (mais il n'y en n'aura pas)il ne faut accuser les gens que de ce qu'ils ont fait et a minima attendre qu'ils l'aient fait.si tu commences à te mettre au lisp tu es au bon endroit pour les conseilssi tu copies-colles tu n'es pas dans la bonne démarche.amicalementps : soigne tes fautes de frappe; elles sont rédhibitoires en programmation Éternel débutant… Mon site perso : Programmer dans AutoCAD
Big666 Posté(e) le 24 janvier 2014 Auteur Posté(e) le 24 janvier 2014 D’accord avec toi olivier il faut ce jeter à lisp (jeu de mot) prffff.. A laide de vos explication et de l’aide auto lisp je cherche à comprendre plutôt d’écrire bien sûr il me faudrait des books pour mieux comprendre, Pas lsous et quelle livre, certain sont fait pour ce qui on déjà compris. Donc je décrit ce que je vois :merci de vôtre aide(if (or (tblsearch "BLOCK" (setq bloc "sf")) (findfile (setq bloc "sf.dwg"))) (progn ;; 01 attribut "nom de la pièce" (if (not (setq nom (getname "Nom de la pièce"))) (setq nom "") ; if => fonction Évalue conditionnellement des expressions ( ;;vérifié sur la ligne si toute les condition son ;;reuni pour exécuter la valeur de getname ;; or => fonction Rend le logique OU d'une liste d'expressions ;;(là je ne comprend pas) ;;tblsearch => fonction Fouille une table de symbole pour un nom de symbole ;;(regarde dans les texte proposer un nom) ;;findfile => fonction Fouille une table de symbole pour ;;un nom de symbole fait la même chose que blsearch ;;exemple "Bain" "Cuisine" "Entrée" "Séjour" "WC" ;qui se trouve dans .getnamelsp ;;progn => fonction Évalue chaque expression consécutivement et rend ;; la valeur de la dernière expression (la comprend pas) ;; re if ;; not => fonction Vérifie qu'un article évalue au zéro ;; ( qu'il n'y a rien au départ) ;;setq nom => fonction stoker le texte vide dan la variable nom ;; résumons : ;;le lisp cherche un block, il le cherche dans le format dwg, ;;inscrit la dernière saisie,(là je ne comprend pas), ;;regarde dans getname les nom proposer, ;;(la comprend pas) , regard si il n'y a rien,si rien stocke rien. Nous vivons tous dans le ventre d'un chien géantTout le monde le sait mais personne ne dit rien du tout ultra Vomit
didier Posté(e) le 24 janvier 2014 Posté(e) le 24 janvier 2014 Coucou j'admets que tu veuilles comprendre et tu donnes toutes les preuves de cela, toutefois je réitère mon conseil, ce n'est qu'un "conseil",ne commence pas pas ce genre de programme, les boucles avec des "if" et de "or" n'est pas au programme des débutants.c'est un peu comme à l'école, chaque niveau a un programme, tu commences tout de suite dans le secondaire sans avoir acquis les bases.je ne refuse pas l'aide mais je souhaite qu'elle soit profitable, commence par un programme de dix lignes on est tous passés par là avant de taper des pages et des pages de code. à ce sujet : je suis en train de remettre mon site sur pieds, il a explosé en vol. il sera dédié à l'AutoLisp et au VisualLisp et sans doute au net si (gile) vient y pointer sa souris. je compte y déposer des exercices et des exemples amicalement. Éternel débutant… Mon site perso : Programmer dans AutoCAD
philsogood Posté(e) le 24 janvier 2014 Posté(e) le 24 janvier 2014 hello@didier : je compte y déposer des exercices et des exemplescoooool@big666 (gile) a fait un tuto pour commencer le lisp... tu devrais le télécharger sur son site, il est plutot balaiZe pour un tuto qui se veut vouer à "l'initiation"Phil Projeteur Revit Indépendant - traitement des eaux/CVC
-Olivier- Posté(e) le 24 janvier 2014 Posté(e) le 24 janvier 2014 Bonjour à tous,J'approuves tout à fait ce que dit Didier.Pour preuve voici mon premier programme lisp :;;;COPIE LES OBJETS EN UTILISANT LE DERNIER POINT POUR REFERENCE. (defun c:cdernier (/ ss1 ang dist0 dist1 pt1 pt2) (princ "\Copie depuis dernier point :\n") (princ) (initget 1) (setq ss1 (ssget)) (setq ang (getangle "\nEntrez l'angle: ")) (while (setq dist1 (getdist "\nEntrez la distance: ")) (if (= dist0 nil) (setq dist0 '0)) (setq dist1 (+ dist1 dist0) pt1 '(0 0 0) pt2 (polar pt1 ang dist1)) (command "._copy" ss1 "" pt1 pt2) (setq dist0 dist1) ) (princ) ) J'ai travaillé du chapeau un bon moment avant de pondre ces quelques misérables lignes de codes.Avant j'avais aussi fait quelques macros. Voici un poste sur le sujet où j'ai détaillé les premières étapes en réponse #3. Bon courage Olivier
didier Posté(e) le 24 janvier 2014 Posté(e) le 24 janvier 2014 coucou le premier que j'ai réussi à faire fonctionner n'était ni plus ni moins au lisp ce que le batch est au DOSje me contentais de lancer des commandes avec les paramètres qui vont bien à la suitej'appliquais une rotation à des attributs (des altitudes de point topo) pour les coller à ligne qu'ils renseignent comme quand on dessinait "à la main"on parle de la fin des années 80 (hihihi) amicalement ps: on "programmait" dans l'edit du DOS qui est à l'IDE ce que le cheval est à la fusée interplanétaire. Éternel débutant… Mon site perso : Programmer dans AutoCAD
Big666 Posté(e) le 24 janvier 2014 Auteur Posté(e) le 24 janvier 2014 bon j'ai compris je m'attaque a trop fort pour moi. et je comprend votre point de vue.pour exemple j'ai été musicien, au début on fait "jbloing tlatlala inodible" mais on s'amuse.puis on apprend des morceau qui sonne de mieux en mieux.on s’intéresse à la théorie et rien ne se fait en un jour. bon j'ai tellement Besoin de se programme que je commence par le plus difficile. payer un programmeur, l’administration ne voudra pas et combien. donc retour casse départ comme tous le monde .qu"elle que livre pour débutant a la porté d'un débutant (la ref pas le livre)mercipour info cette façon d’analyser et bonne ou pas peut être pas ce qui et dit mes la méthode . Nous vivons tous dans le ventre d'un chien géantTout le monde le sait mais personne ne dit rien du tout ultra Vomit
-Olivier- Posté(e) le 24 janvier 2014 Posté(e) le 24 janvier 2014 Je persiste à dire que tu irais plus vite en commençant par le début, car contrairement à ta guitare, un programme informatique ne supporte aucune fausse note. Soit ton programme marche jusqu'au bout soit tu n'obtient rien. Je vais quand t'aider un peu dans la mesure de mes capacité car je ne suis pas sûr d'être capable de faire les modifs que tu souhaites. Les programmes de (gile) sont optimisés et du coup pas facile à modifier sans une grande expérience. Bon tout d'abord, si tu veux ajouter des commentaires dans ton programme, précèdent les d'un ; (point virgule)Dans une ligne donnée, tout ce qui est après ce symbole n'es pas pris en compte par ton programme. Ensuite pour le OR Le if te demande une condition (T pour vrai nil pour faux) Le OR renvoi T si au moins l'une des valeurs que tu lui donnent est vrai. Exemples :(or t nil) T _$ (or nil t) T _$ (or t t) T _$ (or nil nil) nil A plus...
Patrick_35 Posté(e) le 24 janvier 2014 Posté(e) le 24 janvier 2014 Je persiste à dire que tu irais plus vite en commençant par le début, car contrairement à ta guitare, un programme informatique ne supporte aucune fausse note. Soit ton programme marche jusqu'au bout soit tu n'obtient rien. Je vais quand t'aider un peu dans la mesure de mes capacité car je ne suis pas sûr d'être capable de faire les modifs que tu souhaites. Les programmes de (gile) sont optimisés et du coup pas facile à modifier sans une grande expérience. Bon tout d'abord, si tu veux ajouter des commentaires dans ton programme, précèdent les d'un ; (point virgule)Dans une ligne donnée, tout ce qui est après ce symbole n'es pas pris en compte par ton programme. Ensuite pour le OR Le if te demande une condition (T pour vrai nil pour faux) Le OR renvoi T si au moins l'une des valeurs que tu lui donnent est vrai. Exemples :(or t nil) T _$ (or nil t) T _$ (or t t) T _$ (or nil nil) nil A plus...Salut Cela peut-être un peu plus subtile que çaPar exemple, on peut se servir du or comme condition "tant que" pour atteindre une fonction et ne pas attendre forcément une valeur en retour.(or nil nil nil (alert "Ma Fonction")) En reprennant mon exemple et qui ne lance pas la boite d'alerte(or nil T nil (alert "Ma Fonction")) La même chose est faisable avec le AND (logique inversé au or --> non nil) ps : (gile) aime bien ce genre de subtilité mais pas facile à aborder au début.pps : dans le message #4, tu as (if (not nom)(setq nom "")) peut être traduit par (or nom (setq nom "")) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 24 janvier 2014 Posté(e) le 24 janvier 2014 Ensuite pour le OR Le if te demande une condition (T pour vrai nil pour faux) Le OR renvoi T si au moins l'une des valeurs que tu lui donnent est vrai.Pas tout à fait, le if regarde une valeur non nilPar exemple(if (setq a 45)(alert"Oui")(alert "Non")) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
-Olivier- Posté(e) le 24 janvier 2014 Posté(e) le 24 janvier 2014 ps : (gile) aime bien ce genre de subtilité mais pas facile à aborder au début. C'est bien pour ça que j'évite de modifier ses programmes et préfères partir de zéro ou avec des sous-fonctions complètes. Merci pour l'éclaircissement. Je coit que je vais m'en tenir là et arrêter de polluer ce poste. :D
Big666 Posté(e) le 24 janvier 2014 Auteur Posté(e) le 24 janvier 2014 bon jarrette de vous embêter avec mes question j'ai besoin de ce lisp avec c'est fonction ben je ne l'aurai pas. il me faut trouver des livres et tutos, des pour débutant faire des choses simple. (je ne sait pas ce qui est simple,) entre les temps de travail bien sur merci Nous vivons tous dans le ventre d'un chien géantTout le monde le sait mais personne ne dit rien du tout ultra Vomit
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant