nicolas2 Posté(e) le 13 mars 2009 Posté(e) le 13 mars 2009 Bonjour,voila la base : http://img8.imageshack.us/img8/7998/pastriangulaire.jpg Tracer une multitude de cercles de Ød au pas triangulaire (60°) circonscrit au ØD.Une idée....?
Tramber Posté(e) le 13 mars 2009 Posté(e) le 13 mars 2009 C'est pour les tubes d'uranium en centrale nucléaire ?Je préfère pas t'aider :cool: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bseb67 Posté(e) le 13 mars 2009 Posté(e) le 13 mars 2009 Mais non tramber, c'est pour faire un jeu du solitaire sous autocad :D Tous pour lisp, Lisp pour tous!Avec Revit, cela ne vas trop vite...
bonuscad Posté(e) le 13 mars 2009 Posté(e) le 13 mars 2009 Écrit rapidement ((lambda ( / pt_c s_rad g_rad pas tmp_rad obj e_length t_length pt) (vl-load-com) (setq pt_c (getpoint "\nPoint centre: ")) (setq s_rad (getdist pt_c "\nPetit rayon: ") g_rad (getdist pt_c "\nGrand rayon: ") pas (getdist "\nPas triangulaire: ") ) (command "_.circle" "_none" pt_c s_rad) (command "_.circle" "_none" pt_c g_rad) (setq tmp_rad (* (sqrt 3) 0.5 pas)) (while (<= (+ tmp_rad s_rad) g_rad) (command "_.polygon" "3" "_none" pt_c "_circumscribed" tmp_rad) (setq obj (vlax-ename->vla-object (setq e_last (entlast))) e_length 0.0 t_length (vlax-get-property obj 'Length) ) (while (< e_length t_length) (setq pt (vlax-curve-getPointAtDist obj e_length)) (if (<= (+ (distance pt pt_c) s_rad) g_rad) (command "_.circle" "_none" pt s_rad) ) (setq e_length (+ e_length pas)) ) (entdel e_last) (setq tmp_rad (+ tmp_rad (* (sqrt 3) 0.5 pas))) ) )) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
usegomme Posté(e) le 13 mars 2009 Posté(e) le 13 mars 2009 D' enfer Bonuscad, les bras m'en tombent !
Tramber Posté(e) le 13 mars 2009 Posté(e) le 13 mars 2009 Logique, tu regardes si la distance au centre est dans le cercle pour dire si on est dedans.Tout simple, tu utilises un polygone à 3 côtés. Bravo pour la concision. J'ai fait des essais, ça fait des moirés superbes ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bonuscad Posté(e) le 13 mars 2009 Posté(e) le 13 mars 2009 Bravo pour la concision. Merci à tous les deux! Si il est concis, c'est que j'ai utilisé (command), fait aucun contrôle d'entrée utilisateur, même pas d'(initget). Pas testé dans des SCU. Bref c'est court, mais gagne à être affiné pour la fiabilité. Mais cela donne la structure principale du code, je laisse nicolas2 le soin de conclure ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
nicolas2 Posté(e) le 16 mars 2009 Auteur Posté(e) le 16 mars 2009 Bonuscad t'es terrible....!! Avec Usegomme, on est comme 2 manchots....Tramber, c'est pas un solitaire mais puisque tu en parles et que [surligneur] Tout simple[/surligneur], tu utilises un polygone à 3 côtés....une petite variante à la routine de Bonus avec un pas carré.... ;) ? Merci à tous pour vos compétences et votre bonne humeur !
lecrabe Posté(e) le 16 mars 2009 Posté(e) le 16 mars 2009 Hello Comme Tramber, je soupconne Nicolas2 de travailler pour AREVA !? :) Le Decapode Autodesk Expert Elite Team
zebulon_ Posté(e) le 16 mars 2009 Posté(e) le 16 mars 2009 Comme Tramber, je soupconne Nicolas2 de travailler pour AREVA !? C'est un jeu ? Celui qui devine où travaille Nicolas2 gagne une visite guidée de la centrale de Flamanville ?Pour moi, ça ressemblait plus à une coupe d'un câble de précontrainte, si les cercles avaient été tangents. Tout ça pour dire que ce n'est pas une tare que de travailler pour AREVA. Il y en a beaucoup qui participent à ce forum (dont moi) qui bossent dans le domaine de la route. Et on ne les montre pas du doigt en disant : "oh le méchant constructeur de route qui fait diminuer les surfaces cultivables et augmenter le CO²". On devrait ? Dans ce cas, éteignez vos ordinateurs, ils utilisent de la méchante énergie nucléaire. Vendez vos voitures : vive le tram, le vélo et la marche à pied. Je ne suis pas un fervent défenseur de l'énergie nucléaire, au contraire, je considère cela comme si on faisait voler un avion sans savoir le faire atterrir. On fait vachement confiance aux générations futures pour régler le problème des déchets. Mais le problème est bien complexe et ce n'est pas moi qui trouverais la solution. L'argument qui prétend que l'énergie nucléaire est une réponse à l'effet de serre est aussi peu crédible que celui qui prétend que l'énergie fossile est une réponse aux déchets nucléaires. Le débat est lancé... AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
lecrabe Posté(e) le 16 mars 2009 Posté(e) le 16 mars 2009 Hello COOL / ZEN :) Je n'ai rien contre Areva et/ou l'énergie nucléaire ... et je ne suis pas non plus un écologiste "option fanatique anti-nucléaire" ;) Cette énergie a des avantages et des inconvénients ! C simplement que cette disposition (comme Tramber) m'a fait instantanément penser à ... :P Le Decapode Autodesk Expert Elite Team
nicolas2 Posté(e) le 16 mars 2009 Auteur Posté(e) le 16 mars 2009 Y'en a pas un pour rattraper l'autre les gones....alors qu'est-ce qu'il fabrique le Nicolas.......??? ;)
bonuscad Posté(e) le 16 mars 2009 Posté(e) le 16 mars 2009 comme si on faisait voler un avion sans savoir le faire atterrir J'aime bien l'image :cool: Malheureusement elle ne s'applique pas qu'au nucléaire. L'application génétique est à mon avis dans le même cas. Un truc pas "clean" (Hors sujet, mais bon) que je viens de découvrir récemment... :( une petite variante à la routine de Bonus avec un pas carré.... ? (setq tmp_rad (* (sqrt 3) 0.5 pas)) -> (setq tmp_rad (* 0.5 pas))(command "_.polygon" "3" "_none" pt_c "_circumscribed" tmp_rad) -> (command "_.polygon" "4" "_none" pt_c "_circumscribed" tmp_rad)(setq tmp_rad (+ tmp_rad (* (sqrt 3) 0.5 pas))) -> (setq tmp_rad (+ tmp_rad (* 0.5 pas))) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
nicolas2 Posté(e) le 16 mars 2009 Auteur Posté(e) le 16 mars 2009 Tramber, tu t'en sors bien.... :casstet: Merci Bonus, j'ai dû oublier quelque chose....dans ton code...???!!! Le résultat n'est pas là... ((defun c:clambda ( / pt_c s_rad g_rad pas tmp_rad obj e_length t_length pt) (vl-load-com) (setq pt_c (getpoint "\nPoint centre: ")) (setq s_rad (getdist pt_c "\nPetit rayon: ") g_rad (getdist pt_c "\nGrand rayon: ") pas (getdist "\nPas carré: ") ) (command "_.circle" "_none" pt_c s_rad) (command "_.circle" "_none" pt_c g_rad) (setq tmp_rad (* (sqrt 3) 0.5 pas)) -> (setq tmp_rad (* 0.5 pas)) (while (<= (+ tmp_rad s_rad) g_rad) (command "_.polygon" "3" "_none" pt_c "_circumscribed" tmp_rad) -> (command "_.polygon" "4" "_none" pt_c "_circumscribed" tmp_rad) (setq obj (vlax-ename->vla-object (setq e_last (entlast))) e_length 0.0 t_length (vlax-get-property obj 'Length) ) (while (< e_length t_length) (setq pt (vlax-curve-getPointAtDist obj e_length)) (if (<= (+ (distance pt pt_c) s_rad) g_rad) (command "_.circle" "_none" pt s_rad) ) (setq e_length (+ e_length pas)) ) (entdel e_last) (setq tmp_rad (+ tmp_rad (* (sqrt 3) 0.5 pas))) -> (setq tmp_rad (+ tmp_rad (* 0.5 pas))) ) )) Merci encore
bonuscad Posté(e) le 16 mars 2009 Posté(e) le 16 mars 2009 Le résultat n'est pas là... J'ai juste indiqué les lignes qui subissaient une modification.Il faut comprendre " -> " dans le sens de "devient"Donc remplacer l'ancienne ligne par la nouvelle et ne pas mettre l'intégralité de la ligne comme je l'ai présentée ;) Oups j'avais pas vu ((defun c:clambda plutôt (defun c:TON_NOM_DE_COMMANDE ( .... / .....) ET enlever une parenthèse fermante à la fin. [Edité le 16/3/2009 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
nicolas2 Posté(e) le 16 mars 2009 Auteur Posté(e) le 16 mars 2009 Merci Bonuscad.Il y a un cercle (à l'intersection des 2 diagonales du carré) qui ne devrait pas exister....?J'ai cherché du côté de ton "_.polygone" "4"..... J'ai juste ajouté: (command "rotation" "tout" "" pt_c "45") à la fin pour faire un pas losange en restant avec la fonction command.Peut--être une Inputbox avec : - s_rad - g_rad - paset - type de pas (au choix en déroulant -> triangle - carré - losange)
bonuscad Posté(e) le 16 mars 2009 Posté(e) le 16 mars 2009 (defun c:special_array ( / pt_c s_rad g_rad pas key js tmp_rad obj e_length t_length pt) (vl-load-com) (initget 1) (setq pt_c (getpoint "\nPoint centre: ")) (initget 7) (setq s_rad (getdist pt_c "\nPetit rayon: ") g_rad s_rad) (while (<= g_rad s_rad) (initget 7) (setq g_rad (getdist pt_c "\nGrand rayon: ")) ) (initget 1 "Triangulaire Carré _Triangular Square") (setq key (getkword "\nPAs [Triangulaire/Carré]: ")) (initget 7) (setq pas (getdist (if (eq key "Triangular") "\nPas triangulaire: " "\nPas carré: ")) js (ssadd)) (setvar "cmdecho" 0) (command "_.undo" "_group") (command "_.circle" "_none" pt_c s_rad) (setq js (ssadd (entlast) js)) (command "_.circle" "_none" pt_c g_rad) (setq tmp_rad (if (eq key "Triangular") (* (sqrt 3) 0.5 pas) pas)) (while (<= (+ tmp_rad s_rad) g_rad) (command "_.polygon" (if (eq key "Triangular") "3" "4") "_none" pt_c "_circumscribed" tmp_rad) (setq obj (vlax-ename->vla-object (setq e_last (entlast))) e_length 0.0 t_length (vlax-get-property obj 'Length) ) (while (< e_length t_length) (setq pt (vlax-curve-getPointAtDist obj e_length)) (if (<= (+ (distance pt (trans pt_c 1 0)) s_rad) g_rad) (progn (command "_.circle" "_none" (trans pt 0 1) s_rad) (setq js (ssadd (entlast) js)) ) ) (setq e_length (+ e_length pas)) ) (entdel e_last) (setq tmp_rad (if (eq key "Triangular") (+ tmp_rad (* (sqrt 3) 0.5 pas)) (+ tmp_rad pas))) ) (command "_.undo" "_end") (setvar "cmdecho" 1) (command "_.rotate" js "" pt_c) (prin1) ) Il y a un cercle (à l'intersection des 2 diagonales du carré) qui ne devrait pas exister....? Là j'ai pas bien compris... Peut être remplacer (command "_.circle" "_none" pt_c s_rad) (setq js (ssadd (entlast) js)) par (if (eq key "Triangular") (progn (command "_.circle" "_none" pt_c s_rad) (setq js (ssadd (entlast) js)) ) ) [Edité le 16/3/2009 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
nicolas2 Posté(e) le 16 mars 2009 Auteur Posté(e) le 16 mars 2009 Voila le truc .l'image du haut avec le cercle au centre (routine) et l'image du bas avec ce que l'on devrait avoirhttp://img13.imageshack.us/img13/1984/pascarr.jpgJ'ai pas essayé ton correctif.
nicolas2 Posté(e) le 16 mars 2009 Auteur Posté(e) le 16 mars 2009 Ton correctif fonctionne sur le polygone référence, mais pas sur l'extension jusqu'au cercle d'inscription. Merci
bonuscad Posté(e) le 16 mars 2009 Posté(e) le 16 mars 2009 Réessayes le dernier code, je l'ai modifié. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
nicolas2 Posté(e) le 16 mars 2009 Auteur Posté(e) le 16 mars 2009 Super Bonus, encore merci pour ton aide.je m'attèle à la Inputbox
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