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. Responsable Support Technique– AEC/BSD Editeur Américain Architecture et Bâtiment) Fondé en 1974, notre client est un groupe international, leader dans la distribution de produits informatiques, de services et de solutions High Tech auprès d’un large panel de clients, en B to B. Pour soutenir notre croissance, nous vous offrons l’opportunité de faire la différence, au sein d’une organisation passionnée, partageant la culture de la réussite et du challenge. Si vous partagez nos valeurs, nous vous proposons de rejoindre notre équipe CAD en tant que Responsable Support Technique vous aurez à :  Manager une équipe de 2 collaborateurs (avant-ventes/après-ventes),  Promouvoir l’offre Autodesk/architecture au travers d’actions d’avant-ventes chez nos partenaires (Salons, animation d’ateliers/séminaires, support aux revendeurs),  Préparer et créer des outils d’aide à la vente (démonstration, analyses de la concurrence…) en relation avec le service marketing,  Organiser et réaliser avec les partenaires des démonstrations de produits chez les clients finaux,  Participer au développement du chiffre d’affaires de la cellule en intervenant en tant que support de la force commerciale. De formation Architecte ou Ingénieur BTP, vous avez une expérience réussie d’au moins 5 ans sur un poste similaire et maîtrisez parfaitement l’environnement Autocad ou un logiciel concurrent, vous êtes à l’aise avec le Pack Office, vous parlez un anglais professionnel. (La connaissance du marché de la distribution indirecte est un plus). Ou bien vous faite partit d’un cabinet d’architecte et avez une bonne expérience de la relation client. Votre forte capacité à former et à accompagner les clients aussi bien en interne qu’en externe, votre force de proposition et votre leadership naturel vous permettront de vous démarquer, alors n’hésitez pas à nous faire parvenir votre candidature. Envoyer votre CV et lettre de motivation à :muriel.baron@mbasearch.fr
  2. Bonjour à toutes et tous, Lovecraft, peux-tu réduire ton image comme le préconise (gile) ici , réponse 29 (en bas de la page N° 1)? Intéressant ce p'tit challenge,.. Merci d'avance.
  3. Rassurez vous, il ne s'agit pas de politique mais d'un petit challenge Il s'agit d'écrire une fonction qui permettra de savoir si un point P est à droite ou à gauche d'une direction donnée par deux points A et B (droiteougauche P A B) doit retourner 1 si P est à droite de AB, -1 si P est à gauche de AB 0 si P est aligné avec A et B
  4. (gile)

    Outil fluo?

    Salut bono05, Au boulot, si je veux ! Ce que tu demandes est relativement simple à coder avec les commandes AutoCAD (style macro améliorée). Ce serait un bon exercice pour débuter, alors au boulot, et je serais prêt à t'aider (dans la mesure de mes disponibilités). adat-btp, J'avais écrit ce LISP, d'abord pour le challenge consistant à faire un truc qui fonctionne quelque soient la justification, la rotation, le plan des textes et mtextes et justement parce que je pensais qu'il est plus simple d'utilisation et plus polyvalent que que le masque d'arrière plan de la commande MTEXT : une fois les paramètres (décalage, couleur ou wipeout) établis, mt permet de traiter tout un jeu de sélection de textes et/ou mtextes en une seule fois. [Edité le 28/2/2008 par (gile)]
  5. sosun38

    Interpolation.....

    :( :( Salut, merci pour ta réponse...mais pour moi c'est pour une utilistion très occasionnelle et pour le challenge aussi. Mais c'est pas grave je le met de côté pour moi quand je serrais programmer en lisp. Sosun38.... :yltype: :) :) :)
  6. (gile)

    Interpolation.....

    Salut, Ce que tu demandes là est un programme complexe, notamment un point sur lequel tu passes plutôt rapidement : Ceci avait fait l'objet d'un challenge (ici) auquel personne pour l'instant n'a répondu...
  7. (gile)

    Grouper dégrouper

    Gégé, tu as bien compris ce que je voulais dire par "profite vraiment" et ce côté des choses ne peut pas me laisser indifférent : voir ici (réponse 3 page 2) ou encore là (où on peut lire à la fin de la discussion que ma "générosité" n'est pas sans limites). D'autant plus que "le développement sur mesure" et la formation au LISP sont des choses que j'aimerais vraiment faire (contre rémunération, bien sûr). Mais à côté de cet aspect, le partage de routines et/ou de conseils sur des sites comme celui-ci permet à beaucoup (moi le premier) d'apprendre énormément. Je ne pense pas que j'aurais pu évoluer en LISP aussi vite et aussi facilement si j'avais continué tout seul dans mon coin. Et ce, à la fois grâce à l'aide fournie par les plus aguerris, à la lecture et l'étude de routine données par d'autres et par tous les exercices pratiques qui consistent à essayer de répondre aux demandes d'autres membres. Même si je préfère aider (dans la mesure de mes moyens) quelqu'un qui pratique ou veut apprendre le LISP, ou participer à un "challenge", je ne peux m'empêcher de répondre à certaines demandes et de poster la réponse pour avoir un retour. PS Je ne l'ai pas encore ouverte... [Edité le 18/2/2008 par (gile)]
  8. Bien que je n'ai pas d'expérience sur les réacteurs, je pense que ce serait une piste à explorer. Par exemple si le calque est verrouillé alors le réacteur désactive OSMODE. Patrick_35 nous dira si c'est possible car il a de l'expérience sur les réacteurs. Un nouveau challenge de pros ?
  9. (gile)

    Équivalences à vl-*

    Optimisation de SORT suite au Challenge 20. La routine, contrairement à vl-sort, ne supprime pas les doublons. Pour les supprimer il suffit d'utiliser remove-doubles, exemple : (sort (remove-doubles '(3 5 6 2 1 3 8 9 4 5)) ' (1 2 3 4 5 6 8 9)
  10. Matt666

    Hatch2Line/arc

    Salut Didier... Pardon je n'ai pas été assez clair... Parce que je n'ai pas autocad, mais BricsCAD, un clone d'autoCAD qui ne lit pas le VLISP... EDIT : En fait c'est bon, un collègue m'a fait le travail ! Excusez du temps perdu... Merci encore Didier ! PS : Ce serait une bon challenge, ça !!! :) Re-PS : Saloperie de bulge :P A bientot. Matt. [Edité le 22/1/2008 par Matt666]
  11. (gile)

    Challenge 20

    C'est vrai que les formes récursives sont en général moins rapides que les formes itératives, mais dans ce cas je pense que le choix de l'algorithme (suivant le type de liste) est primordial. J'ai une routine qui utilise un algorithme de tri qui n'a pas encore été utilisé dans ce challenge, elle est récursive et plus rapide que celles déjà postée. Exemple avec la liste longue d'Evgeniy : (benchmark '((tri lst '<) (quicksort lst '<) (tri_pat lst '<) (bubblesort lst '<)(gilesort lst '<))) Benchmarking ......Elapsed milliseconds / relative speed for 8 iteration(s): (GILESORT LST (QUOTE <)).......1156 / 60.93 [b]<[/b]fastest> (TRI_PAT LST (QUOTE <)).........3781 / 18.63 (TRI LST (QUOTE <)).............5344 / 13.18 (QUICKSORT LST (QUOTE <)).......8922 / 7.89 (BUBBLESORT LST (QUOTE <)).....70437 / 1.00 [b]<[/b]slowest> J'attends un peu avant de la donner pour laisser du champ à d'autres réponses. En tout cas, les routines données jusqu'à présent ne semblent pas "au top" question performances...
  12. (gile)

    Challenge 20

    Comme ce n'est pas directement l'objet du challenge, je donne deux méthodes pour faire une fonction de comparaison "générique". L'idée est d'utilser dans le defun un argument (fun) qui contient la fonction de comparaison quotée comme : ' ou '(lambda ...) puis, - soit d'utiliser apply pour faire paser une liste d'arguments à cette fonction. Exemple : (defun compare (e1 e2 fun) (apply fun (list e1 e2)) ) (compare 1 2 ' (compare 1 2 '>) --> nil (compare '(1 2) '(3 2) '(lambda (x1 x2) (= (cadr x1) (cadr x2)))) --> T - soit d'utiliser la fonction eval (defun compare (e1 e2 fun) ((eval fun) e1 e2) ) qui donne les mêmes résultats. On peut donc utiliser ces méthodes pour écrire une fonction de tri "générique" (qui accepte différentes fonctions de comparaison)[Edité le 17/1/2008 par (gile)]
  13. bseb67

    Màj safearray bloc dynamique

    Re, En fait je vais recréer le bloc dynamique en fintant, j'inverse le point d'origine que je n'arrive pas à bouger avec l'autre point du paramètre linéaire => et ca marche! :D Si j'ai le temps je mettrai un post pour le challenge sur les polygone puis sur le tri. Merci encore pour le soutien ;)
  14. (gile)

    Challenge19

    Voilà plus de 15 jours que j'avais lancé ce challenge et toujours aucune réponse... Je donne donc une solution pour évaluer si la liste de points décrit un polygone croisé. Il s'agit d'une routine appelant deux sous-routines récursives, ça laisse la porte ouverte pour écrire l'équivalent sous forme itérative ou quelque chose de différent. La routine évalue si chaque segment (2 points successifs de la liste) ont une intersection avec chacun des autres segments. Elle retourne T si une intersection est trouvée, nil sinon. Les routines utilisent donc les opérateurs logiques and et or. La première sous routine, SUBR1, requiert 3 arguments : 2 points et une liste de points. Elle évalue si les deux points ont une intersection avec les deux premiers points de la liste et s'il n'y a pas d'intersection, refait l'évaluation avec les deuxième et troisième points de la liste et ainsi de suite jusqu'à ce qu'une intersection soit trouvée ou que la liste n'ait plus qu'un seul point. La seconde sous routine, SUBR2, requiert un argument : une liste de points. Elle fait passer les deux premiers points de la liste et la liste privée de ces points à SUBR1 pour trouver une intersection. Si aucune intersection n'est trouvée, le processus est renouvelé avec les deuxième et troisième points et le reste de la liste. SUBR2 n'est pas suffisante pour une évaluation complète. Les deux routines doivent donc être intégrées à une routine principale, CROSSED-P, pour pouvoir évaluer si le dernier segment d'une polyligne fermée (dernier point au premier point) a ou non une intersection avec un des autres segments. CROSSED-P appelle d'abord SUBR1 avec comme arguments les premiers et deuxième points et le reste de la liste, si aucune intersection n'est trouvée, elle appelle SUBR2 avec comme argument la liste dont on a fait passer le premier élément à la fin. (defun crossed-p (l / subr1 subr2) (defun subr1 (p1 p2 l) (and (cdr l) (or (inters p1 p2 (car l) (cadr l) T) (subr1 p1 p2 (cdr l)) ) ) ) (defun subr2 (l) (and (cdddr l) (or (subr1 (car l) (cadr l) (cddr l)) (subr2 (cdr l)) ) ) ) (or (subr1 (car l) (cadr l) (cddr l)) (subr2 (cdr (append l (list (car l))))) ) )
  15. (gile)

    Challenge19

    :casstet: :casstet: :casstet: Je ne pense pas... Un triangle est toujours convexe et a, au plus, un seul angle obtu. Je penserais plutôt à évaluer la position de tous les autres sommets par rapport à un segment (et ce, pour chaque segment bien sûr). Voir ce challenge.
  16. Matt666

    Challenge19

    Bah oui, il est dur ton challenge !! Ca creuse, ca creuse.... A bientot ! Matt.
  17. Il m'énerve ce gile !!! :D Incroyable.... J'en suis arrivé au 2ème niveau, c'est tout !! Patrick ! Il est dur ce challenge !! Dément !
  18. (gile)

    test

    Avec les routines Alpha2Number et Number2Alpha de GetExcel ;;------------------------------------------------------------------------------- ;; Alpha2Number - Convertit une chaîne alphabétique en nombre entier ;; Function By: Gilles Chanteau from Marseille, France ;; Arguments: 1 ;; str = Chaîne à convertir ;; Exemple de syntaxe : (Alpha2Number "BU") = 73 ;;------------------------------------------------------------------------------- (defun Alpha2Number (str / num) (if (= 0 (setq num (strlen str))) 0 (+ (* (- (ascii (strcase (substr str 1 1))) 64) (expt 26 (1- num)) ) (Alpha2Number (substr str 2)) ) ) ) ;;------------------------------------------------------------------------------- ;; Number2Alpha - Convertit un nombre entier en chaîne alphabétique ;; Function By: Gilles Chanteau from Marseille, France ;; Arguments: 1 ;; num = Nombre à convertir ;; Exemple de syntaxe : (Number2Alpha 73) = "BU" ;;------------------------------------------------------------------------------- (defun Number2Alpha (num / val) (if (< num 27) (chr (+ 64 num)) (if (= 0 (setq val (rem num 26))) (strcat (Number2Alpha (1- (/ num 26))) "Z") (strcat (Number2Alpha (/ num 26)) (chr (+ 64 val))) ) ) ) (defun inc1 (str i / n num len low) (setq n (strlen str)) (while (and (< 0 n) (numberp (read (substr str n)))) (setq n (1- n)) ) (if (= n 0) (setq num str str "" ) (setq num (substr str (1+ n)) str (substr str 1 n) ) ) (and (= str (strcase str T)) (setq low T)) (cond ((= "" str) (setq len (strlen num) num (itoa (+ (atoi num) i)) ) (while (< (strlen num) len) (setq num (strcat "0" num)) ) num ) ((= "" num) (strcase (Number2Alpha (+ (Alpha2Number str) i)) (if low T nil ) ) ) (T (setq len (strlen num) str (strcase (Number2Alpha (+ (Alpha2Number str) (/ (+ i (atoi num)) (expt 10 len))) ) (if low T nil) ) num (itoa (rem (+ i (atoi num)) (expt 10 len))) ) (while (< (strlen num) len) (setq num (strcat "0" num)) ) (strcat str num) ) ) ) Avec la routine Inc-Str du challenge 4 modifiée pour respecter la casse ;; INC-STR ;; Incrémente une chaine alphabétique de la valeur spécifiée ;; ;; (inc-str "aa" 2) -> "ac" ;; (inc-str "ZZ" 29) -> "ABC" (defun inc-str (str inc / sub up) (defun sub (lst inc / tmp) (if (< 122 (setq tmp (+ inc (car lst)))) (if (cadr lst) (cons (+ (- tmp 122) 96) (sub (cdr lst) 1)) (list 97 97) ) (cons (+ inc (car lst)) (cdr lst)) ) ) (if (= str (strcase str)) (setq str (strcase str T) up T ) ) (repeat (/ inc 26) (setq str (vl-list->string (reverse (sub (reverse (vl-string->list str)) 26)) ) ) ) (setq str (vl-list->string (reverse (sub (reverse (vl-string->list str)) (rem inc 26))) ) ) (if up (strcase str) str ) ) (defun inc2 (str i / num len) (setq n (strlen str)) (while (and (< 0 n) (numberp (read (substr str n)))) (setq n (1- n)) ) (if (= n 0) (setq num str str "" ) (setq num (substr str (1+ n)) str (substr str 1 n) ) ) (cond ((= "" str) (setq len (strlen num) num (itoa (+ (atoi num) i)) ) (while (< (strlen num) len) (setq num (strcat "0" num)) ) num ) ((= "" num) (inc-str str i)) (T (setq len (strlen num) str (inc-str str (/ (+ i (atoi num)) (expt 10 len))) num (itoa (rem (+ i (atoi num)) (expt 10 len)))) (while (< (strlen num) len) (setq num (strcat "0" num)) ) (strcat str num) ) ) ) [Edité le 18/12/2007 par (gile)]
  19. Salut à tous!! Me servant souvent du entnext (pour les attributs), du entlast pour vérifier si mes appels ont bien créer des éléments. Je suis un peu déçu de ne pas avoir un entfirst :( :( :( . Alors, est-il possible de faire cette fonction? Ce serai pas mal :D , enfin je pense, car cela me tenterai bien de l'avoir afin de scanner un peu les dessins, pour faire du nettoyage par exemple. Ceci pourrai même faire un challenge ! La seule méthode bourrin qui me vient à l'esprit est de chercher grace à l'oid en vlisp. Mais je ne sais pas si cet id est vraiment par ordre croissant de création. :casstet:
  20. Salut ! Super, un nouveau !!! :D <acronym class=dict title= nan, les débutants. Et on est tous passé par là. :P Ce n'est pas ridicule, au contraire... Ca commence bien, en tout cas ! Tu as presque résolu le challenge, il ne te manque pas grand chose ! Tout d'abord, je te conseillerai d'utiliser entsel plutot que nentsel. Nentsel permet de retourner le nom d'une entité qui est dans un bloc. Ici, on veut juste connaitre le nom du calque d'une entité, c'est tout. Mais ce n'est pas ça qui fera fonctionner ta routine ! (setq ent1 (entsel "Cliquer sur une entité : ")) Essie de copier ce bout de code dans la ligne de commande, et valide là. Si tu cliques sur une entité, tu auras ce type de réponse : Ensuite tu enchaînes avec un entget sur ent1 pour avoir les codes dxf associés. Entget attend un nom d'entité à développer. Mais ta variable ent1 est une liste avec un nom d'entité et les coordonnées d'un point. Voici ton erreur. Il faut arriver à donner juste le nom d'entité à entget. Voilà ! Adtal ! Matt. [Edité le 3/1/2008 par Matt666]
  21. Re, Patrick_35=> Mon précédent post signifiait qu'en regardant les infos que le boite donne, devrai donner des indices pour ceux qui vont chercher. Par contre, je peux te dire que sur la version 2008, il y a une petite différence :casstet:. Si tu ne l'utilise pas, je la donnerai à la fin de ce challenge ;)
  22. Bonjour Et bien, voici un challenge que j'ai raté, mais qui a bien fonctionné apparement. :) Je constate que se sont ceux d'un certain niveau qui ont beaucoup participé. Faut-il en déduire qu'il faut toujours que cela soit dur pour avoir des participations ? @+
  23. J'ai vu cette demande dans un forum US. J'ai trouvé le challenge intéressant (réécrire une commande raccord) Après ne nombreux tests et ce n'est pas encore parfait (parfois; problème de mise en place dans des SCU non parallèles), mais déjà bien aboutie ,je trouve. Si certains veulent essayer d'aller plus loin... pour le "fun" ;) (defun ang_x (px p1 p2 / l_pt l_d p ang) (setq l_pt (mapcar '(lambda (x) (list (car x) (cadr x))) (list px p1 p2)) l_d (mapcar 'distance l_pt (append (cdr l_pt) (list (car l_pt)))) p (/ (apply '+ l_d) 2.0) ang (* (atan (sqrt (/ (* (- p (car l_d)) (- p (caddr l_d))) (* p (- p (cadr l_d)))))) 2.0) ) ) (defun det_wh (px p1 p2 / v1 v2 det_or) (setq v1 (mapcar '- p2 p1) v2 (mapcar '- px p1) ) (if (> (apply '(lambda (x1 y1 z1 x2 y2 z2) (- (* x1 y2) (* y1 x2))) (append v1 v2)) 0.0) 1 -1) ) (defun k_th (p1 p2 c / k) (setq k (/ c (distance p1 p2))) (mapcar '+ (mapcar '* (mapcar '- p2 p1) (list k k k)) p1) ) (defun c:bubble_fillet ( / js1 js2 ps1 ps2 pt_lst pt l3 key_fillet alpha chord p_o a1 a2) (princ "\nSélectionnez la première ligne: ") (while (or (null (setq js1 (entsel))) (/= (cdr (assoc 0 (entget (car js1)))) "LINE"))) (princ "\nSélectionnez la deuxième ligne: ") (while (or (null (setq js2 (entsel))) (/= (cdr (assoc 0 (entget (car js2)))) "LINE"))) (setq ps1 (trans (cadr js1) 1 0) ps2 (trans (cadr js2) 1 0) js1 (entget (car js1)) js2 (entget (car js2)) pt_lst (list (cdr (assoc 10 js1)) (cdr (assoc 11 js1)) (cdr (assoc 10 js2)) (cdr (assoc 11 js2))) pt (inters (car pt_lst) (cadr pt_lst) (caddr pt_lst) (cadddr pt_lst) nil) ) (cond ((and pt (equal (assoc 210 js1) (assoc 210 js2) 1E-8)) (if (eq (det_wh (cadddr pt_lst) (car pt_lst) (cadr pt_lst)) (det_wh (caddr pt_lst) (car pt_lst) (cadr pt_lst))) (if (> (distance pt (caddr pt_lst)) (distance pt (cadddr pt_lst))) (setq l3 (list pt (caddr pt_lst))) (setq l3 (list pt (cadddr pt_lst))) ) (if (eq (det_wh ps2 (car pt_lst) (cadr pt_lst)) (det_wh (caddr pt_lst) (car pt_lst) (cadr pt_lst))) (setq l3 (list pt (caddr pt_lst))) (setq l3 (list pt (cadddr pt_lst))) ) ) (if (eq (det_wh (cadr pt_lst) (caddr pt_lst) (cadddr pt_lst)) (det_wh (car pt_lst) (caddr pt_lst) (cadddr pt_lst))) (if (> (distance pt (car pt_lst)) (distance pt (cadr pt_lst))) (setq l3 (cons (car pt_lst) l3)) (setq l3 (cons (cadr pt_lst) l3)) ) (if (eq (det_wh ps1 (caddr pt_lst) (cadddr pt_lst)) (det_wh (car pt_lst) (caddr pt_lst) (cadddr pt_lst))) (setq l3 (cons (car pt_lst) l3)) (setq l3 (cons (cadr pt_lst) l3)) ) ) (initget 4) (setq key_fillet (getdist (strcat "\nSpécifiez le rayon du raccord [b]<[/b]" (rtos (getvar "FILLETRAD")) ">:" ) ) ) (if (null key_fillet) (setq key_fillet (getvar "FILLETRAD")) (setvar "FILLETRAD" key_fillet)) (setq alpha (ang_x (cadr l3) (car l3) (caddr l3)) chord (/ (* (getvar "FILLETRAD") (sin (- pi alpha))) (sin (* alpha 0.5))) js1 (subst (cons 10 (car l3)) (assoc 10 js1) js1) js2 (subst (cons 10 (caddr l3)) (assoc 10 js2) js2) ) (entmod (setq js1 (subst (cons 11 (k_th pt (car l3) chord)) (assoc 11 js1) js1))) (entmod (setq js2 (subst (cons 11 (k_th pt (caddr l3) chord)) (assoc 11 js2) js2))) (setq p_o (k_th pt (mapcar '* (mapcar '+ (cdr (assoc 11 js1)) (cdr (assoc 11 js2))) '(0.5 0.5 0.5)) (getvar "FILLETRAD")) a1 (angle p_o (cdr (assoc 11 js1))) a2 (angle p_o (cdr (assoc 11 js2))) ) (entmake (list (cons 0 "ARC") (cons 100 "AcDbEntity") (assoc 67 js1) (assoc 410 js1) (cons 8 (getvar "CLAYER")) (if (assoc 62 js1) (assoc 62 js1) (cons 62 256)) (if (assoc 6 js1) (assoc 6 js1) (cons 6 "BYLAYER")) (cons 38 (+ (cadddr (assoc 10 js1)) (getvar "ELEVATION"))) (cons 39 (getvar "THICKNESS")) (cons 100 "AcDbCircle") (cons 10 (trans p_o 0 (cdr (assoc 210 js1)))) (cons 40 (getvar "FILLETRAD")) (assoc 210 js1) (cons 100 "AcDbArc") (cons 50 (if (equal (* (+ (max a1 a2) (min a1 a2)) 0.5) (angle p_o pt) 1E-8) (min a1 a2) (max a1 a2) ) ) (cons 51 (if (equal (* (+ (max a1 a2) (min a1 a2)) 0.5) (angle p_o pt) 1E-8) (max a1 a2) (min a1 a2) ) ) ) ) ) (T (princ "\nNe peut raccorder des lignes dans des plans différents!") ) ) (prin1) )
  24. Bred

    Challenge 16

    Salut Zebulon, on peut en effet faire ce que tu dits, et c'est d'aileur la finalité je pense de ce challenge. Personnellement j'utilise cette routine : ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; (lst-assoc 10 ent-lwpolyligne) -> tous les sommets de la lwpolyligne; (defun lst-assoc (cle lst) (mapcar 'cdr (vl-remove-if '(lambda (x) (not(equal(car x) cle))) lst)) ) Edit : Je viens de réaliser un Echo à (gile).... Ok, gile, il est vrais que assoc doit certainement passer en revue la liste (c'est bien lent d'ailleurs... :casstet:) [Edité le 11/12/2007 par Bred]
  25. (gile)

    Challenge 16

    Bred, Pas vraiment, assoc doit bien parcourrir la liste jusqu'au premier (10 ...) trouvé et vl-remove parcourt toute la liste à la recheche de toutes les occurences. _$ (benchmark '((coord-recurs lst20) (bred4 lst20))) Benchmarking ................Elapsed milliseconds / relative speed for 8192 iteration(s): (COORD-RECURS LST20).....1219 / 1.90 (BRED4 LST20)............2312 / 1.00 _$ (benchmark '((coord-recurs lst100) (bred4 lst100))) Benchmarking ..............Elapsed milliseconds / relative speed for 2048 iteration(s): (COORD-RECURS LST100)......1125 / 9.08 (BRED4 LST100)............10219 / 1.00 zebulon_, C'est ce que je voulais dire avec dxf-grpe, on peut adapter chacune des routines qui ont été données plus haut. Pour le nouveau challenge (retourner la liste des longueurs de chaque segment), pour ceux qui ne savent pas à quoi correspond le bulge (la courbure) d'un segment de polyligne, pour ceux qui ont du mal en anglais avec le lien donné par zebulon_, La valeur du code de groupe DXF 42 des polylignes correspond à la tangente du quart de l'angle de l'arc, autrement dit à la longueur de la flèche divisée par la moité de la corde. Cette valeur est positive quand l'arc (par rapport à l'ordre des sommets) est dans le sens trigonométrique, négative si l'arc est dans le sens horaire. Elle est égale à 0.0 pour les segments droits à 1 (ou -1) pour les demi cercles. La longueur d'un arc est égale à l'angle de l'arc (en radians) multiplié par le rayon. http://img212.imageshack.us/img212/3293/arcdw7.png [Edité le 11/12/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é