Aller au contenu

Messages recommandés

Posté(e)

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....?

 

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

É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

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

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 !

Posté(e)
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é...

 

Amicalement

Vincent

 

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)

Posté(e)

 

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

- pas

et - type de pas (au choix en déroulant -> triangle - carré - losange)

Posté(e)

(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

Posté(e)

Voila le truc .

l'image du haut avec le cercle au centre (routine) et l'image du bas avec ce que l'on devrait avoir

http://img13.imageshack.us/img13/1984/pascarr.jpg

J'ai pas essayé ton correctif.

 

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é