Aller au contenu

Dessiner une polyligne, mais avec un arc de cercle...


Messages recommandés

Posté(e)

Bonjour à la communauté...
Voilà, aujourd'hui, je cherche à dessiner une polyligne, mais je n'arrive pas a faire les arcs de cercle.
Pour info (voir image), l'utilisateur saisie les trois points de base, en magenta (PtA, PtB et PtC), ensuite, il tape ce qu'on appelle les "enrobages" (un getreal), qui sont représentés par les "5" en rouge, c'est du  centimètres, puis le prolongement, les 8.5, qui seront calculés selon le type de polyligne.
L'angle aussi peut changer, il sera saisi aussi en getreal aussi, mais il sera toujours entre 180° (demi-tour) et 90° (droit)...
Pour toutes ces données saisies (les getreal) je pense faire un petit DCL, pour les enregistrer dans le dessin, car on peut en avoir des dizaines à saisir...
Le diamètre de l'arc est un calcul qui oscille entre 6 et 16 centimètre, environ, toujours selon le type de polyligne...
Ce sont des barres d'armatures dans des murs en béton armé ou en parpaing...
Le truc que je ne n'arrive pas à faire, c'est l'arc de cercle...
Je pense qu'il faudrait calculer les point de couleur cyan (Pt1a, Pt2a...) avant des dessiner la polyligne... Mais je n'en suis pas certain...
 

OBArmDess-CadXP_01.thumb.jpg.c0ee788e362e29566c2d364129eaec3a.jpg

Si quelqu'un a une solution, un exemple, une astuce... Je suis preneur...
Bien à toi la communauté...
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Si le rayon de l'arc est R, alors le centre de l'arc est à 5+R de la droite A-B et 5+R de la droite A-C. Une fois que tu as le centre, tu trouves ton point de tangence sur la droite horizontale et tu ouvres de ton angle complémentaire à 180°

 

Olivier

Posté(e)

ça me rappelle un truc...

une ft de (Gile) BulgeData, qui renvoyait les valeurs cachées derrière le code 42 des polyligne avec un arc....voir ici cherche la ft dans les codes...

 

Posté(e)

Coucou,

En effet tout est caché dans les bulges (code DXF 42) des polylignes. Personnellement je me suis aidé de ce cours pour mieux comprendre : https://www.afralisp.net/autolisp/tutorials/polyline-bulges-part-1.php

Ensuite il me semble qu'il existe le logiciel ADFER qui permet de réaliser du ferraillage plus ou moins complexe et plutôt complet (je me souviens avoir eu une formation sur ce logiciel), si jamais cela peut répondre à tes besoin également (mais je ne connais pas les prix...donc à voir) !

Bisous,
Luna

Posté(e)

Salut,

Pour faire simple, pas besoin de "bulge". Une fois les points calculés, il suffit d'utiliser les options de la commande POLYLIGN (_PLINE).

(command "_pline" pt1a pt2a "_arc" pt3a "_line" pt4a "_arc" pt5a "_line" pt6a "")

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour à tous et mille mercis pour vos réponses.
Je pense m'être mal fais comprendre, je n'arrive pas à calculer les points Pt1a, Pt2a, Pt5a et Pt6a.

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Coucou,

Oki, sur le plan mathématique je résoudrais cela ainsi :
image.png.f9bfa94d434982e637ad5e426998ce06.png

A partir des données ci-dessus, je ferais ceci :

En connaissant PtA tel que PtA = (Xa Ya)

(setq Pt3a (list (+ Xa en ep r) (+ Ya en (/ ep 2.))))

(setq O (list (+ Xa en ep r) (+ Ya en ep r)))

(setq Pt2a (polar O (+ a (/ pi 2.)) r))

(setq Pt3a (polar Pt2a a lg))

Du moins pour moi le problème peut se résoudre ainsi pour connaître Pt1a, Pt2a et Pt3a en connaissant PtA, en, ep, r, a et lg 😉

Bisous,
Luna

Posté(e)
Il y a 23 heures, DenisHen a dit :

mais il sera toujours entre 180° (demi-tour) et 90° (droit)

Donc sur ton dessin, c'est 135° au lieu de 45° ? Ou alors c'est entre 0° (demi-tour) et 90° (droit) ?

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Chalut Luna.
Mille mercis pour cette aide précieuse et détaillée...
Dans ton schéma, il y a deux fois "en" et pas "ep", mais ne t'inquiète pas, je ferais avec sans problèmes, j'ai compris le principe...
Encore un grand merci à toi...
Je posterais mon résultat, au cas où...
Bisous aussi...
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Bonsoir (gile).
Oui, je ne sais pas pourquoi, mais en ferraillage, on parle de l'angle complémentaire...
Donc, on saisi "135" pour que le véritable angle soit "45".
C'est donc un angle droit (le plus grand, 90°) jusqu'à un angle "demi-tour" (le plus "petit", mais en fait, ils disent "180°" au lieu de "0°")
Bien vu Monsieur, je n'avais pas précisé ce détail...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Tu devrais pouvoir t'inspirer de ça :

(setq *angle* (* pi 0.75))
(setq *rayon* 3.0)
(setq *enrobage* 5.0)
(setq *prolongement* 8.5)

(defun c:toto (/ a r e p ptA ptB ptC os c pt1 pt2 tp3 tp4 pt5 pt6)
  (if (setq a (getangle (strcat "\nAngle <" (angtos *angle*) ">: ")))
    (setq *angle* a)
    (setq a *angle*)
  )
  (if (setq r (getdist (strcat "\nRayon <" (rtos *rayon*) ">: ")))
    (setq *rayon* r)
    (setq r *rayon*)
  )
  (if (setq e (getdist (strcat "\nEnrobage <" (rtos *enrobage*) "> ")))
    (setq *enrobage* e)
    (setq e *enrobage*)
  )
  (if (setq p (getdist (strcat "\nProlongement <" (rtos *prolongement*) ">: ")))
    (setq *prolongement* p)
    (setq p *prolongement*)
  )
  (if
    (and
      (setq ptA (getpoint "\nPoint de base A: "))
      (setq ptB (getpoint ptA "\nPoint de base B: "))
      (setq ptC (getpoint ptA "\nPoint de base C: "))
    )
     (progn
       (setq os (getvar 'osmode))
       (setvar 'osmode 0)
       (command-s "_UCS" "_3p" ptA ptB ptC)
       (setq pt3 (list (+ e r) e)
	     c	 (list (car pt3) (car pt3))
	     pt2 (polar c (- (* 1.5 pi) a) r)
	     pt1 (polar pt2 (- pi a) p)
	     pt4 (list (- (distance ptA ptb) e r) 5)
	     c	 (list (car pt4) (car pt3))
	     pt5 (polar c (- a (* 0.5 pi)) r)
	     pt6 (polar pt5 a p)
       )
       (command-s "_pline"	  pt1	  pt2	  "_arc"  pt3
		  "_line" pt4	  "_arc"  pt5	  "_line" pt6
		  ""
		 )
       (command-s "_UCS" "_previous")
       (setvar 'osmode os)
     )
  )
  (princ)
)

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonsoir (gile), alors là, je ne sais pas comment tu as fais...
Je ne me souvient tellement pas de cette routine que je ne sais même plus à quoi elle sert...
Certes, elle se nomme "denish", mais je n'ai pas le souvenir d'avoir créé une commande à mon pseudo (si non, il y a des dizaines d'années, voir plus), en plus, il y a des "mapcar"... J'ai peur des mapcar...
Mais si j'ai fais un truc pareil, je devrais pouvoir le refaire...
Et ta mémoire éléphantesque pourrait me dire de quand ça date ?
En tous cas, merci à toi, je vais creuser...
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

J'ai écrit cette routine juste avant de la poster.
Je l'avais appelée c:denish parce c'était le premier truc qui m'est venu à l'esprit, mais ce n'est vraiment pas le nom de la commande qui est important.

J'ai modifié la routine : 

- correction d'un dysfonctionnement avec la commande _UCS (comme ça il n'y a plus de mapcar*)
- valeur par défaut stockées dans des variables globales
- changement de nom pour éviter toute équivoque.

* comprendre et apprivoiser mapcar est une étape majeure dans l'apprentissage du LISP, idem pour la récursivité.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Oui, je pensais que c'était une vieille macro de moi à cause de son nom, mais tu as raison, le nom de la commande n'a aucune importance... 
Par contre, ça fonctionne nickel, des tonnes de mercis à toi ! ! !

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Denis,

J'ai considéré 'en' pour 'Enrobage', 'ep' pour 'épaisseur' (car le diamètre de ton acier est important dans le calcul à mes yeux !), 'a' pour 'angle', 'lg' pour 'longueur' et 'r' pour le 'rayon'.
Pour l'histoire des 90° à 180° d'angle au lieu de 0° à 90°, c'est parce qu'une barre d'acier est droite à la base, donc pour obtenir un angle de 45° comme sur ton exemple, il faut tordre la barre d'acier de 135°. Donc donner les valeurs entre 90° et 180° est logique 🙂

Donc cela me semble cohérent de prendre en compte le diamètre de ta barre d'acier, car c'est lui qui va d'ailleurs déterminer ton rayon de torsion ! Et si tu considères le centre de ton acier dans les calculs, alors ton enrobage et ton rayon sont faussés justement par le manque de l'épaisseur (sur ton exemple tu montres très bien que ton acier à un diamètre, que l'enrobage est pris entre la surface du béton et l'extérieur de ton acier, et que le rayon est pris par rapport à l'intérieur de ton acier)

Bisous,
Luna

Posté(e)

Bonjour @DenisHen

Je pense que pour faire ce que tu souhaites, le bloc dynamique est, de très loin, la meilleure solution.

C'est bien plus léger en code lisp et hyper fonctionnel dans la vie de tous les jours, pour faire les métrés par exemple le nom des blocs et les paramètres suffisent à faire le travail.

Les polylignes telles que tu t'apprêtes à le faire sont bien plus lourdes à gérer en cas de modifications.

Amicalement

Posté(e)

Autrement il me semble que _zebulon avait justement réalisé un programme complet et gratuit pour le ferraillage

Bref, je pense qu'il y a suffisamment d'outils existants pour faire ce que tu désires car tu n'es pas le premier à vouloir faire cela ^^"
L'idée des blocs dynamiques est pas mal autrement, bien que certains points me semble difficilement faisable en utilisant un bloc dynamique (la torsion de la barre en fonction de l'angle par exemple)...

Bisous,
Luna

Posté(e)

Bonjour @Luna

Je ne vois pas ce qui est délicat, car je ne comprends pas ce que signifie "la torsion de la barre en fonction de l'angle".

Les plans d'armatures respectent des normes bien précises, taille de mandrin en fonction du diamètre de la barre, longueur des crochets en fonction du diamètre de la barre etc, l'angle aussi est une norme, quant à la torsion ?

Ce genre de dessins est un bonheur pour qui veut programmer, mais pour être efficace c'est le bloc dynamique qui emporte le marché.

Je me suis pas mal amusé avec ces armatures...

Amicalement

Posté(e)

Ma question c'est, comment gères-tu l'angle avec des paramètres dynamiques ? En clair comment "enroules"-tu la barre en fonction de l'angle et du rayon ?

Bisous,
Luna

Posté(e)

L'angle ? Le rayon ?

Le rayon est donné par le diamètre du mandrin, le diamètre du mandrin est défini par le diamètre de la barre.

L'angle aussi est donné des normes et n'est pas "variable".

Contacte-moi en privé si tu veux pour ne pas continuer à polluer les messages, on déposera nos exemples à la fin le cas échéant.

Amicalement

Posté(e)

Bonsoir Luna, et merci pour toutes tes observations.
Oui, le rayon, le prolongement, le diamètre, l'encombrement... Tout ça dépend du HA, je n'arrivais juste pas à créer les Pt1 et Pt2 (donc, les 5 et 6 aussi). Car je lis aussi que je me suis très mal expliqué, j'ai oublié de dire qu'il peut il y avoir 4 enrobages différents, et les angles de crosses différentes aussi...
Maintenant que (gile) m'a fait un super code, qu'il faut encore que je le domestique (le code, pas gile), je peux commencer à mieux envisager mes macros, pour l'instant, je fais mon mode d'emploi et l'interface utilisateur.
Surtout que je ne compte pas me limité aux barres droites, je vais aussi faire mon code pour les épingles, les cadres, les U (tu trouveras en pièces jointes mes aides graphiques qui serviront aux futurs utilisateurs)...
J'ai testé le programme de Zébulon, qui est franchement impressionnant, et carrément incroyable ! ! Mais je dois faire le mien, car je vais ajouter le métré des armatures (linéaire HA8, HA10, cadre HA6, épingles pour en faire des tableaux...), gérer les calques utilisés, et des (vlax-ldata que je collerais aux éléments créé, pour faire ce métré grâce à d'autres routines (que j'ai déjà partiellement pour d'autre macros)...
Mais je te remercie encore pour ton aide et tes judicieuses observations.
Bisous à toi aussi...
Denis.

OBArmDess_135.jpg

OBArmDess_Cadre.jpg

OBArmDess_L.jpg

OBArmDess_U.jpg

 

OBArmDess_U.jpg

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

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é