Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour « challenge » dans sujets.

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Fonctionnement de ce site
    • Nouvelle règle pour les invités : plus d'écriture possible sans inscription
    • CADxp, comment ça marche?
    • CADxp, vos souhaits
    • Forum test
  • Emploi
    • Emploi, monde du travail
  • AutoCAD
    • AutoCAD 3D
    • AutoCAD 2020-2024
    • AutoCAD LT 2024
    • AutoCAD LT 2020-2023
    • AutoCAD 2019
    • AutoCAD LT 2019
    • AutoCAD 2018
    • AutoCAD LT 2018
    • AutoCAD 2017
    • AutoCAD LT 2017
    • AutoCAD avant 2017
    • AutoCAD LT avant 2017
    • Tutoriaux AutoCAD
    • AutoCAD, liste de souhaits
  • Autres logiciels de CAO
    • Microstation
    • IntelliPlus, IntelliCAD, CadIdesk
    • ZWCAD
  • Architecture, Bâtiment
    • Revit
    • AutoCAD Architecture
    • AutoCAD MEP
    • BIM
  • Mécanique
    • Inventor
    • SolidWorks
    • Creo (ex. Pro/Engineer)
    • Catia
  • SIG, Génie civil, Cartographie, VRD
    • Autodesk Map
    • VRD
    • Covadis
    • Infraworks 360
    • Mensura
    • AutoCAD Civil
    • Autopiste
    • SIG internet
  • Imagerie, animation, PAO, modélisation 3D
    • 3DSMAX
    • Création et retouche d'images
    • Sketchup
    • Autres logiciels d'infographie
    • Lumion 3D
  • Programmation
    • LISP et Visual LISP
    • VBA et VB
    • Personnalisation, macros, DIESEL
    • ObjectARX/DBX, C++, .NET, RealDWG
    • Programmer en s'amusant
    • Suggestions de développements
  • Trucs et astuces
    • AutoCAD trucs et astuces
    • Windows trucs et astuces
  • Matériel CAO
    • Ordinateurs
    • Périphériques d'entrée
    • Périphériques de sortie, impression
  • Divers
    • CAO, généralités
    • Echanges de fichiers
    • Organisation du travail
    • Visualisateurs, annotation
    • Pause café
    • Bibliothèques de composants
    • Formation
  • Logiciels connexes
    • Devis, métré, estimation, quantitatif
    • Calculs et simulation
  • Forums métier
    • Bâtiment
    • Infrastructures

Calendriers

Il n’y a aucun résultat à afficher.

Blogs

Il n’y a aucun résultat à afficher.


Rechercher les résultats dans…

Rechercher les résultats qui contiennent…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. bseb67

    Challenge 13

    :o :o :casstet: :P C'est n'importe quoi! Donc je vais quand même devoir changer mon code :( ! Sinon il me reste à faire une fonction de trie. J'ai déjà fait le tri à bulles, mais c'est l'un des plus lent. Sinon, free ca coince encore. j'ai donc mis en partage un fichier zip: http:// http://dl.free.fr/c3gj6Kooc/bd_mots_bseb67_challenge13.zip Le zip est protégé nom:bseb67 mdp: cadxp. C'est un fichier contenant 6 fichiers txt: MOT3L.txt, MOT4L.txt, MOT5L.txt, MOT6L.txt MOT7L.txt, MOT8L.txt et MOT9L.txt. Deuxième partie: 1) il faut charger chaque fichier sous forme d'une liste par fichier. Les mots ne sont pas accentués. => les fichiers contiennent plusieurs lignes. Pour les mots de 3 lettres (MOT3L.txt) les premières lignes sont celles-ci: AAA/ AAB/ AAC/ AAD/ada/ Donc en majuscule on a une suite de lettres triées alphabétiquement. Puis un "/" pour séparer les mots. Ensuite en minuscule la liste des mots possibles pour cette suite. (Voilà le pourquoi de genere et de combi :) ). Pour ce mini exemple on aura alors une variable (MOT3L par exemple) qui vaudra: '(("AAA") ("AAB") ("AAC") ("AAD" "ada")) 2) faire une fonction qui renvoie tous les mots possibles avec la liste créer par genere. exemple: (setq lst (genere 4)) => '("A" "A" "D" "A") (setq lst_combi (combi lst 3)) => '(("A" "A" "A" "D") ("A" "A" "A") ("A" "A" "D")) (tous_les_mots lst_combi) => '("ada") 3) faire un petit main qui demande à l'utilisateur un nombre de lettre (utilisé pour genere) et on lancera combi avec 3 comme deuxième paramètre. Il faudra alors lui demander de taper tous les mots qu'il connait et de donner un score. 4) Il sera possible, vu que je pense avoir oublier des mots, de créer un lisp pour ajouter de nouveau mot et sauvegarder les données dans les fichiers. 5) Une variante possible: le mot le plus long (vu que c'est 9 lettres pour le jeu) 6) Autre variante : le jeu du pendu. 7) Pour finir de faire une extension graphique : dessin dans autocad d'un tableau contenant les mots saisie et s'ils sont validés + ceux non trouvés. Voilà, j'espère enfin voir quelqu'un de plus que Gile, :( , ce n'est pas que je ne t'aimes pas Gile, mais à part nous deux il n'y a personne pour mon challenge. :( :( :( [Edité le 23/10/2007 par bseb67]
  2. bseb67

    Challenge 13

    :o :o :casstet: :P C'est n'importe quoi! Donc je vais quand même devoir changer mon code :( ! Sinon il me reste à faire une fonction de trie. J'ai déjà fait le tri à bulles, mais c'est l'un des plus lent. Sinon, free ca coince encore. j'ai donc mis en partage un fichier zip: http:// http://dl.free.fr/bW9vkmWuu/bd_mots_challenge13.zip Le zip est protégé nom:bseb67 mdp: cadxp. C'est un fichier contenant 6 fichiers txt: MOT3L.txt, MOT4L.txt, MOT5L.txt, MOT6L.txt MOT7L.txt, MOT8L.txt et MOT9L.txt. Deuxième partie: 1) il faut charger chaque fichier sous forme d'une liste par fichier. Les mots ne sont pas accentués. => les fichiers contiennent plusieurs lignes. Pour les mots de 3 lettres (MOT3L.txt) les premières lignes sont celles-ci: AAA/ AAB/ AAC/ AAD/ada/ Donc en majuscule on a une suite de lettres triées alphabétiquement. Puis un "/" pour séparer les mots. Ensuite en minuscule la liste des mots possibles pour cette suite. (Voilà le pourquoi de genere et de combi :) ). Pour ce mini exemple on aura alors une variable (MOT3L par exemple) qui vaudra: '(("AAA") ("AAB") ("AAC") ("AAD" "ada")) 2) faire une fonction qui renvoie tous les mots possibles avec la liste créer par genere. exemple: (setq lst (genere 4)) => '("A" "A" "D" "A") (setq lst_combi (combi lst 3)) => '(("A" "A" "A" "D") ("A" "A" "A") ("A" "A" "D")) (tous_les_mots lst_combi) => '("ada") 3) faire un petit main qui demande à l'utilisateur un nombre de lettre (utilisé pour genere) et on lancera combi avec 3 comme deuxième paramètre. Il faudra alors lui demander de taper tous les mots qu'il connait et de donner un score. 4) Il sera possible, vu que je pense avoir oublier des mots, de créer un lisp pour ajouter de nouveau mot et sauvegarder les données dans les fichiers. 5) Une variante possible: le mot le plus long (vu que c'est 9 lettres pour le jeu) 6) Autre variante : le jeu du pendu. 7) Pour finir de faire une extension graphique : dessin dans autocad d'un tableau contenant les mots saisie et s'ils sont validés + ceux non trouvés. Voilà, j'espère enfin voir quelqu'un de plus que Gile, :( , ce n'est pas que je ne t'aimes pas Gile, mais à part nous deux il n'y a personne pour mon challenge. :( :( :(
  3. Bon j'avais pas vue passer le poste mais si tu as d'autre challenge dans le meme genre alors, je veux bien essayer de participer. @+ MDSV31 PS: code bien documenté, jamais vue avant.
  4. bseb67

    Challenge 13

    Salut (gile). Oui, c'est vrai qu'il n'y a pas grand monde pour mon challenge :( . Pour la suite, j'attends l'activation de mes pages persos chez free pour donner les fichiers nécessaires à la suite. J'ai déjà fait une partie de la seconde partie (et oui je triche ;), vu que je connais le sujet). Je vais me mettre sur la première partie cette aprem. En tout cas merci pour la fonction rng. Au départ je pensais aussi faire simplement un random entre 1 et 26, mais j'ai choisis de mettre la fréquence des lettres en jeu. (setq FREQ_LETTRES '(("A" 00.00 08.12 8.12) ("B" 08.12 08.94 00.82) ("C" 08.94 12.32 3.38) ("D" 12.32 16.61 4.29) ("E" 16.61 34.30 17.69) ("F" 34.30 35.43 1.13) ("G" 35.43 36.62 1.19) ("H" 36.62 37.36 00.74) ("I" 37.36 44.60 7.24) ("J" 44.60 44.78 0.18) ("K" 44.78 44.80 00.02) ("L" 44.80 50.79 5.99) ("M" 50.79 53.08 2.29) ("N" 53.08 60.76 07.68) ("O" 60.76 65.96 5.20) ("P" 65.96 68.89 2.93) ("Q" 68.89 69.73 00.84) ("R" 69.73 76.17 6.44) ("S" 76.17 85.05 8.88) ("T" 85.05 92.50 07.45) ("U" 92.50 97.74 5.24) ("V" 97.74 99.02 1.28) ("W" 99.02 99.08 00.06) ("X" 99.08 99.62 0.54) ("Y" 99.62 99.88 0.26) ("Z" 99.88 100.00 0.12) ) ) Les quadruplets sont: lettre - % départ - % arrivée - fréquence) Et donc j'obtiens alors: ;--------------------------------; ; nom: random_char ; ; role: retourne un caractère ; ; en utilisant la fréquence; ; param: aucun ; ; retour: un caractère ; ; date: 17/10/2007 ; ; BLAES Sébastien ; ;--------------------------------; (defun random_char( / res cpt find) (setq res (* (rng) 100.0) cpt 0 find nil) ; on parcourt les fréquences, pour trouver la lettre (while (= find nil) (if (and (>= (cadr (nth cpt FREQ_LETTRES)) res) (<= res (caddr (nth cpt FREQ_LETTRES)))) (setq res (car (nth cpt FREQ_LETTRES)) find t) ) ; if ; on incrémente cpt (setq cpt (1+ cpt)) ) ; while res ) ; random_char ;-----------------------------; ; nom: genere ; ; role: retourne nb caractères; ; sous forme d'une liste; ; param: nb => entier ; ; retour: entier ; ; date: 17/10/2007 ; ; BLAES Sébastien ; ;-----------------------------; (defun genere( nb / cpt res) (setq cpt 0 res '()) (while (< cpt nb) (setq res (cons (random_char) res) cpt (1+ cpt)) ) ; while res ) ; genere Il me reste plus qu'a faire combi :). A plus!
  5. (gile)

    Conversion HEX to DEC

    Salut, Ce fut l'objet d'un "challenge" ici.
  6. Un exemple d'utilisation du challenge !! ;;;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;;; Crée des copies Incrémentées du texte sélectionné (defun c:cpi ( / ent ntxt inc pt val lst ntxt) (setq cmdecho (getvar "cmdecho") m:err *error* *error* erreur ) (setvar "cmdecho" 0) (command "_undo" "D") (if (eq (ssget "i") nil) (setq ent (car (entsel "\nSélectionner texte à incrémenter :"))) (if (> (sslength (ssget "i")) 1) (setq ent (car (entsel "\nSélectionner texte à incrémenter :"))) (setq ent (ssname (ssget "i") 0)) ) ) (cond ((and ent (member (cdr (assoc 0 (entget ent))) '("TEXT" "MTEXT")) (setq inc (read2 (getstring "\nIncrément : "))) (setq pdst (getpoint (cdr (assoc 10 (entget ent)))"\nPoint d'insertion :")) ) (while pdst (if (or (eq pdst "I") (eq pdst "i")) (progn (while (not (setq inc (read2 (getstring "\nNouvel incrément : "))))) (setq pdst (getpoint (cdr (assoc 10 (entget ent)))"\nNouveau point d'insertion :")) ) ) (setq val (cdr (assoc 1 (entget ent)))) (if (and (eq (substr val 1 1) "0") (> (strlen val) 2) ) (setq lst (cons 0 (sep val))) (setq lst (sep val)) ) (cond ((and (eq 1 (length lst)) (or (eq (type (car lst)) 'REAL) (eq (type (car lst)) 'INT) ) ) (setq ntxt (+ inc (car lst))) (if (and (eq (substr val 1 1) "0") (< ntxt 10) (eq (type (car lst)) 'INT) (/= (substr (princ-to-string ntxt) 1 1) "0") ) (setq ntxt (strcat "0" (princ-to-string ntxt))) (setq ntxt (princ-to-string ntxt)) ) ) ((< 1 (length lst)) (setq ntxt "") (foreach pt lst (if (/= 0.00 pt) (if (or (eq (type pt) 'INT) (eq (type pt) 'REAL) ) (setq ntxt (strcat ntxt (princ-to-string (+ inc pt)) )) (setq ntxt (strcat ntxt pt)) ) (if (or (eq (type pt) 'INT) (eq (type pt) 'REAL) ) (setq ntxt (strcat ntxt "0")) ) ) ) ) ) (if ntxt (entmake (list (cons 0 (cdr (assoc 0 (entget ent)))) (cons 10 pdst) (cons 1 ntxt) (cons 8 (cdr (assoc 8 (entget ent)))) (cons 6 (cdr (assoc 6 (entget ent)))) (cons 62 (cdr (assoc 62 (entget ent)))) (cons 71 (cdr (assoc 71 (entget ent)))) (cons 72 (cdr (assoc 72 (entget ent)))) (cons 7 (cdr (assoc 7 (entget ent)))) (cons 40 (cdr (assoc 40 (entget ent)))) )) (princ "\nTexte créé.") ) (initget "I") (setq ent (entlast) pdst (getpoint (cdr (assoc 10 (entget ent)))"\nNouveau point d'insertion [incrément] :") ) ) ) ) (command "_undo" "F") (setq *error* m:err m:err nil) (setvar "cmdecho" cmdecho) (princ) ) Avec sep = routine de ElpanovEvgeniy ou de gile Et read2 c'est ça ;;; Read en prenant en compte le point (defun read2 (str) (if (/= str ".") (read str) str ) ) Voilà ! A bientot. matt EDIT : PS Faut pas oublier les VL avant princ-to-string, et tout le bazaar... J'ai pas testé sur autoCAD ! EDIT2 : Bout de code en trop déclé par ElpanovEvgeniy [Edité le 19/10/2007 par Matt666] [Edité le 19/10/2007 par Matt666]
  7. lili2006

    MARCHE PAS, SNIF !

    Bonjour à toutes et tous, Voilà ou j'en suis à ce jour : Avant : ; ******************************************************************* ; barre droitenom.LSP ; ;(modes '("CMDECHO" "ATTDIA" "ATTREQ" "GRIDMODE" "UCSFOLLOW")) ;(setvar "cmdecho" 0) ; turn cmdecho off ;(setvar "attdia" 0) ; turn attdia off ;(setvar "attreq" 1) ; turn attreq on ;(setvar "gridmode" 0) ; turn gridmode off ;(setvar "ucsfollow" 0) ; turn ucsfollow off (defun C:barredroitenom () (setq p3 (getpoint "\pt d'insertion nomenclature : ")) (command "_.insert"" nom barre droite " p3 1 1 "") (command "_.explode" "d") (setq p2 (getpoint "\pt d'insertion bloc : ")) (command "_.insert"" ha barre droite " p2 1 1"") (setq p4 (getpoint "\pt d'insertion repere acier : ")) (command "_.insert"" rep acier barre " p4 1 1 "") (setq p5 (getpoint "\pt intermediere de ligne de repere : ")) (setq p6 (getpoint "\pt insertion numero de repere : ")) (command "_.layer" bac ferraillage repere plan "") (command "_.pline" p4 p5 p6 "") (command "_.insert"" numerorepere " p6 1 1 "") (command "_.explode" "d")) Aprés : ; ******************************************************************* ; barre droitenom.LSP ; ;(modes '("CMDECHO" "ATTDIA" "ATTREQ" "GRIDMODE" "UCSFOLLOW")) ;(setvar "cmdecho" 0) ; turn cmdecho off ;(setvar "attdia" 0) ; turn attdia off ;(setvar "attreq" 1) ; turn attreq on ;(setvar "gridmode" 0) ; turn gridmode off ;(setvar "ucsfollow" 0) ; turn ucsfollow off (defun C:bdh () (setq p3 (getpoint "\pt d'insertion nomenclature : ")) (command "_.insert"" nom barre droite " p3 1 1 "") (command "_.explode" "d") (setq p2 (getpoint "\pt d'insertion bloc : ")) (command "_.insert"" ha barre droite " p2 1 1"") (setq p4 (getpoint "\pt d'insertion repere acier : ")) (command "_.insert"" rep acier barre " p4 1 1 "") (setq p5 (getpoint "\pt intermediere de ligne de repere : ")) (command "_.pline" p4 p5 "") (command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "") (setq p6 (getpoint "\pt insertion numero de repere : ")) (command "_.pline" p5 p6 "") (command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "") (command "_.insert"" numerorepere " p6 1 1 "") (command "_.explode" "d")) Ce qui est sûr, c'est que cela marche comme je voulais, mais de là à dire que c'est la bonne écriture,.... Merci d'avance de vos remarques et suggestions (j'en ai encore une quinzaine comme ça et je reviendrai vous voir pour savoir comment les ranger toutes dans un seul fichier Lisp,... Tiens, cela pourrait être un challenge débutant, non???). (gile) & Patrick_35, je n'ai pas tenu compte de vos conseils afin d'avoir votre avis sur ce que je propose. Si vous aviez le temps et l'envie je serai intéressé pour savoir comment vous auriez fait pour répondre au problème. Dans le même esprit (et c'est pour cela que j'aimerai pouvoir combiner l'ensemble,...chose possible d'aprés Patrick_35, ) insertion d'une barre double avec crochet à 45 ° de part et d'autre : ; ******************************************************************* ; bdoublenom.LSP ; ;(modes '("CMDECHO" "ATTDIA" "ATTREQ" "GRIDMODE" "UCSFOLLOW")) ;(setvar "cmdecho" 0) ; turn cmdecho off ;(setvar "attdia" 0) ; turn attdia off ;(setvar "attreq" 1) ; turn attreq on ;(setvar "gridmode" 0) ; turn gridmode off ;(setvar "ucsfollow" 0) ; turn ucsfollow off (defun C:bd4545nom () (setq p3 (getpoint "\pt d'insertion nomenclature : ")) (command "_.insert"" NOM BD4545 " p3 1 1 "") (command "_.explode" "d") (setq p2 (getpoint "\pt d'insertion bloc : ")) (command "_.insert"" HA crochet double 45° 45° " p2 1 1"") (setq p4 (getpoint "\pt d'insertion repere acier : ")) (command "_.insert"" rep acier barre " p4 1 1 "") (setq p5 (getpoint "\pt intermediere de ligne de repere : ")) (command "_.pline" p4 p5 "") (command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "") (setq p6 (getpoint "\pt insertion numero de repere : ")) (command "_.pline" p5 p6 "") (command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "") (command "_.insert"" numerorepere " p6 1 1 "") (command "_.explode" "d")) , bref, ça reste la même chose mais pour moi, c'est déjà un grand pas ! Au plaisir.
  8. Bonjour à toutes et tous, . Je suis assez d'accord avec toi et m'en excuse car découvrir le lisp et progresser m'intéresse vraiment. MAIS (parce qu'il y a toujours un mais!), cela reste trés difficile de rentrer dedans, même quand on sait ce que l'on veut faire.(Ce qui était ton cas pour ce challenge) Je viens tous juste de finaliser, suite aux conseils de nos maitres et expert ce dont j'ai traité en partie dans ce post et vous soumet le code pour critique, en espérant, lovecraft, qu'il te profite aussi car j'ai apprécié ta démarche. Suite sur le post citée plus haut. [Edité le 17/10/2007 par lili2006]
  9. Exemple d'utilisation du code généré par ce challenge (bah oui faut bien quand même !) : Optimisation de polyligne : (defun c:OPL (/ CMDECHO CN DENT ENT LST N NLST SEL) (princ "\nSélectionner les polylignes à optimiser : ") (setq cmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (if (setq sel (ssget)) (progn (command "_UNDO" "D") (repeat (setq cn (sslength sel)) (setq ent (ssname sel (setq cn (1- cn))) dent (entget ent) lst (remove-doubles (remove-align (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent)))) ) (foreach pt (remove-all lst (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent))) (setq n (vl-position pt dent)) (setq nlst (append (sublist dent 0 n) (sublist dent (+ n 4) nil) ) ) (setq dent nlst) ) (entmod nlst) (entupd ent) (princ "\nPolyligne optimisée.") ) ) ) (command "_UNDO" "F") (setvar "cmdecho" cmdecho) (princ) ) ;;; SUBLIST De GILE (defun sublist (lst start leng / n r) (if (or (not leng) (< (- (length lst) start) leng) ) (setq leng (- (length lst) start)) ) (setq n (+ start leng)) (repeat leng (setq r (cons (nth (setq n (1- n)) lst) r)) ) ) ;;; REMOVE-ALIGN De GILE (defun remove-align (lst / rslt) (while (caddr lst) (if (betweenp (car lst) (caddr lst) (cadr lst)) (setq lst (cons (car lst) (cddr lst))) (setq rslt (cons (car lst) rslt) lst (cdr lst) ) ) ) (append (reverse rslt) lst) ) ;;; REMOVE-DOUBLES De GILE (defun remove-doubles (lst) (if lst (cons (car lst) (remove-doubles (vl-remove (car lst) lst))) ) ) ;;; REMOVE-ALL ;;; Supprime tous les éléments d'une liste à partir d'une autre ;;; (REMOVE-ALL '(1 3 5) '(1 2 3 4 5 6 7)) -> (2 4 6 7) (defun REMOVE-ALL (lise lisc) (foreach pt lise (setq lisc (vl-remove pt lisc))) ) ;;; BETWEENP Evalue si pt est entre p1 et p2 (ou égal à) ;;;Lisp de GILE (defun betweenp (p1 p2 pt) (or (equal p1 pt 1e-9) (equal p2 pt 1e-9) (equal (vec1 p1 pt) (vec1 pt p2) 1e-9) ) ) ;;; VEC1 Retourne le vecteur normé (1 unité) de p1 à p2 (nil si p1 = p2) ;;;Lisp de GILE (defun vec1 (p1 p2) (if (not (equal p1 p2 1e-009)) (mapcar '(lambda (x1 x2) (/ (- x2 x1) (distance p1 p2)) ) p1 p2 ) ) ) Voilà. Bon je sais mon code n'est pas des plus concis, et puis comme d'habitude, je n'ai pas du prendre en compte tous les cas de figures ! A bientot ! Matt. PS : Merci encore à vous pour ces très belles (je reste sur ma position de code "beau" bseb67 ;) ) routines qui nous font apprendre un peu plus ce langage ! [Edité le 15/10/2007 par Matt666]
  10. OK, Pour être plus compréhensible (vue que c'est le premier challenge), je me permet d'expliquer un peu la base : Faites un Mutlti-Texte dans un calque TEXTE_INDICE au point x = 2.0 et y = 5.0. Dans l'édituer VL, créer un nouveau fichier et taper ceci : ([b]setq[/b] lst-sel ([b]entsel[/b] "\n Choix du texte :")) sélectionner ce code et "charger la selection". Vous devez alors avoir la main sur Autocad vous demandant de sélectionner le texte. Vous le selectionnez et vous devez avoir en retour sur la console (au "Nom d'entité près et aux coordonée près") : ... vous avez donc, dans la variable sel, le liste ci dessus. celle ci représente : l'entité texte et les coordonnées où vous avez cliquez. Ensuite vous taper cette ligne et vous la chargez : ([b]setq[/b] 1er-element-lst-sel ([b]car[/b] lst-sel)) Ce code vous retpurnera le 1er élément (car) de la liste "lst-sel" : Puis, enfin, tapez ceci et chargez-le : ([b]setq[/b] ent-sel ([b]entget[/b] 1er-element-lst-sel)) Cela vous retourneras une liste enregistré dans la variable ent-sel : Cette liste donnant certaines caractéristique de l'entité texte que vous avez sélectionnez !
  11. Salut, À propos de l'éditeur Visual LISP, j'ai commencé un nouveau sujet. Ça faisait un moment que je voulais le faire, ce challenge m'en donne l'occasion. Lovecraft, C'est un très bon début, il y a moyen d'optimiser un tout petit peu en évitant quelques expressions (c'est du détail qu'on pourra aborder plus tard...).
  12. Voici un fichier support: http:// http://cjoint.com/?kouSSPCV6J Voici ma reponse pour la premiere etape: ;******************challenge débutant ;******************Etape 1 création de la fonction sstext (defun sstext () (ssget "X" (list (cons 0 "*TEXT") (cons 8 "TEXTE_INDICE"))) ) Merci de vos aides @plus
  13. oups il y a eu un bug du site pendant ma redaction...... Voilà, je relance le challenge débutant j'espère qu'il attira les plus novices.Comme je me situe dans la cours des débutants, je vais essayer de lancer un thème. 1- traitement d'un jeu de selection 2-creer une liste de ce jeu 3-trier la liste 4-ecrire dans un fichier Sujet: Prenons un dessin contenant des textes ou mtextes (des chiffres ex: 1-23-78-2-3 ECT....) dans le calque "TEXTE_INDICE". le but est de faire un jeu de selection puis de creer une liste , de trier la liste dans l'ordre croissant et ensuite d'ecrire cette liste dans un fichier texte sur forme de colonne . Allez au boulot.(lili2006) je pense que c'est le moment de commencer ;) PS:Pour les ténors du lisp ou vlisp je vous prie de ne pas donner de réponse toute faite, mais vous pouvez cependant nous aider. en nous aiguillant sur les command fonctions variables etc.... que nous devons utiliser, ou sur la façon de nous y prendre . Merci de votre aide
  14. Une routine que je met dans mes lisps ou comme (gile) Pour le challenge 12, je n'ai pas eu le temps et en plus, il est en 3D, chose que je ne maitrise pas @+
  15. Bonsoir à toutes et tous, Super ElpanovEvgeniy mais, heu, ça te dérangerai un ch'ti commentaire, car j'y comprend rien et j'aimerai bien, ne serais-ce que suivre un peu ce qui s'passe. Juste dans le domaine du test car je débute ( j'sais même pas si j'peux dire ça!!!) en Lisp. Merci d'avance et bravo à tous pour ces petits (hum, façon de parler,...!) challenge.
  16. Salut Matt666, Pas vraiment, je sais que l'on peut faire un (done_dialog x). Mais c'est, j'ai réussi à faire ce que je voulais. J'ai des variables globales qui contiennent le choix de l'utilisateur lors d'un clic, comme cela en bouclant sur la fonction qui lance la dcl, il peut faire toutes les étapes et dans n'importe quel ordre. Si j'ai le temps, je ferai une version simplifiée. Pour le futur challenge, disons qu'il n'est pas trop en rapport avec autocad, c'est plus tot l'intérêt des listes (encore :o ), et pour une fois pas vraiment un exercice :casstet: ! Je le lancerai dimanche ou lundi. a+
  17. Ah dément un challenge 13 !! ta technique ne fonctionne que si un seul bouton de saisie utilisateur hors de la boîte de dialogue est disponible... Tu peux donner des flags à (done_dialog) qui te permettent de pouvoir donner des instructions pour chaque boutons... Avec un (setq loop (start_dialog)), tu donnes à la varible loop le flag de ton bouton, puis avec un (cond ((eq loop [flag du bouton])... Tu définis les actions pour ce bouton... Enfin bon je suppose que tu sais déjà tout ça... Voilà ! A bientot. Matt.
  18. La vache mais il est vachement compliqué ce challenge !!!! Gile, comme toujours, tes précisions sont redoutables d'efficacité !! Bon bah on va d'abord essayer de comprendre ce qui est demandé avant de se lancer :) A bientot. Matt.
  19. (gile)

    Coupe sur TN

    J'aurais pensé te voir donner une réponse dans le challenge 11. C'est ton domaine, non ?
  20. Bred

    Challenge 12

    Salut..... Ben je suis largué !... en fait je pense qu'il n'y a qu'une seule manière de résoudre ton problème : un fonction récursive ... ;) et je sais que (gile) est sur les starting-bloc.... Le truc que j'ai essayé de faire c'est de tester un l'angle d'un point avec tous les autres pour ressortir les points alignés... puis à partir de ces points alignés je teste la distance pour ressortir les plus éloigné et suprimer les autres... mais je plante lamentablement sur la manière d'interroger TOUS les points, dans toutes les configurations possibles.... J'abandonne pour l'instant.... Un challenge trés interressant !... La routine pour tester une multitude de points les uns par rapport aux autre me semble être un trés bon outils !....
  21. (gile)

    \"Commande :\" en trop !!!

    Non vraiment je ne vois pas, mais entre nous, au lieu de pinailler sur des détails d'affichage, tu devrais t'amuser avec le challenge 12, j'ai une réponse que je me retiens de poster depuis hier apès midi ;)
  22. bseb67

    Challenge 12

    Salut! Désolé Matt666 :o, j'espère que tu m'en voudra pas ;). Sinon petit message pour (gile), j'ai un premier jet pour ce challenge, je cherche à l'améliorer en me servant de benchmark, et bien il n'est pas très fiable :P . J'ai voulu tester mes deux méthodes pour une sous fonction, j'obtiens 1.00 pour la plus lente (lap lus lente aura toujours 1.00), mais l'autre le coef va de 1.00 à 1.30 :o. Des fois c'est plus rapide, des fois non :casstet: . Donc pour la mesure de temps, il faudrai rien faire d'autre sur le pc. Comme on ne peut mesurer le temps CPU (comme je le faisais en C++). Il me reste aussi à corriger le challenge10, j'ai un petit souci pour des suites de "." dans une suite de chiffres.
  23. Ton challenge présente plusieurs difficultés. Du calcul de coordonnées en 3d (ce qui suppose un peu de calcul vectoriel ou l'utilisation de la calculatrice géométrique), ça, tu as montré que tu sais le faire. Faire un sélection de faces à partir d'un point, chose que je n'ai pas réussi à faire directement (même en style visuel "Réaliste" ou "Conceptuel" on ne sélectionne que la face supérieure). Il faut donc trouver une astuce pour sélectionner le minimum de faces (y compris celles à la verticale du point) afin que le traitement ne soit pas trop long. Peux tu me dire si ça n'est pas trop long avec un nombre important de facs affichées dans la fenêtre ou, mieux, m'envoyer un fichier du style de ceux que tu utilises contenant deux modélisations de terrain, je le mettrais en téléchargement ici pour que d'autres puissent essayer aussi.
  24. A la base c'est, comme tu dirais Gile une coquetterie... J'ai fait une routine qui copie un texte et le colle en ajoutant un nombre à la chaîne. Si c'est un entier ou un décimal, pas de p. J'aurais pu laisser tomber à partir du moment où le texte copié est une chaine de caractères, mais nan ! A chaque nombre trouvé il ajoute la valeur demandée ! Voilà... Ce n'est pas le lisp le plus utile jamais écrit, mais il a le mérite de soulever des problèmes méritant un challenge ;) A bientot. Matt. [Edité le 4/10/2007 par Matt666]
  25. (gile)

    Challenge 10

    On ne fait pas ça pour des médailles ;) J'ai trouvé ce challenge intéressant, pas tellement pour ses applications possibles (là je vois pas bien) mais pour ce qu'il m'aura révélé ou confirmé : - le traitement des listes est plus rapide que celui des chaines. Les routines les plus rapides (pour l'instant) sont celle qui traitent une liste de codes ascii plutôt que la chaine directement. - paradoxalement, dans le cas présent les formes récursives semblent plus rapides que les méthodes itératives équivalentes et ce, d'autant plus que la chaine est longue (je ne comprends pas encore tout à fait bien pourquoi) Attention ces résultat sont à tempérer du fait que les routines ne retourne pas exactement la même chose dans certains cas (voir réponse 12) la routine de bseb67 semble éluder certains tests que font les autres ce qui pourrait expliquer une exécution plus rapide. PS : C'était moi le dernier avec ma première routine avant que je lui supprime un appel récursif inutile. [Edité le 4/10/2007 par (gile)]
×
×
  • 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é