Aller au contenu

[Résolu] Ca fonctionne à l'horizontale, mais pas à la verticale (insertion de bloc aligné).


Messages recommandés

Posté(e)

Bonjour à la communauté.
Aujourd'hui, je tente de faire une petite macro qui insert un bloc (le petit zigzag), à la fin d'un mur "coupé" (voir image).
J'ai écris ce petit bout de code, mais il fonctionne quand le mur est vertical (hachures possibles) mais pas quand il est horizontal (le bloc est joint).
 

;;; *******************************************
;;; Dessine un zigzag à la fin d'un mur coupé  
;;; *******************************************
(defun c:FinMur (/ p1 p2 pM)
  (princ "\n\tDéveloppé par Denis H. (1.0)")
;;; Nom du bloc = "TraitCoupeMur.dwg"
  (setq old_Osmode (getvar 'osmode))
  (if (and (setq p1 (getpoint "\nPremier point: ")) (setq p2 (getpoint p1 "\nDernier point: ")))
    (progn
           (setq rot (* 180.0 (/ (angle p1 p2) pi))
                 ech (distance p1 p2)
                 pM  (polar p1 rot (/ ech 2))
           ) ;_ Fin de setq
           (setvar 'osmode 0)
           (command "inserer" "TraitCoupeMur" pM ech ech rot)
    ) ;_ Fin de progn
  ) ;_ Fin de if
  (setvar 'osmode old_Osmode)
  (princ)
) ;_ Fin de defun


Quelqu'un aurait une idée, une astuce, un conseil ?
1550598588_PB_MurCoup.png.67442a48ee6025e08b6f981d2c834923.png
Bonne journée à la communauté.
Denis.

TraitCoupeMur.dwg

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)

Quand le mur est en biais ça donne quoi ?

[Edit]
Titre : Ça fonctionne à l'horizontale, mais pas à la verticale (insertion de bloc aligné).
Message : il fonctionne quand le mur est vertical (hachures possibles) mais pas quand il est horizontal

Ça fonctionne à quel moment ^^ ?

Posté(e)

Salut JPhil.
Merci pour ton intérêt.
Curieusement, ça donne ça :
538336672_PB_MurCoup.thumb.png.083cfee7111142717d73980fdf30ed0f.png

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)

Chose plus inquiétante, voici quand les fins du mur "vertical" ne sont pas alignées horizontalement (en épais).
J'avoue ne plus rien comprendre...
729830383_PB_MurCoup.thumb.png.ad2a02f62df02175e43c98a651ed79ea.png

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)

Dans la fonction polar, la valeur de la variable rot doit être en radian.

Est-ce le cas ?

En regardant ailleurs sur d'autres forums il s'avère que la variable rot est définie comme cela (setq rot (angle p1 p2)).

Pour ech et pM c'est bon.

Posté(e)

+1 avec @JPhil !

La fonction (polar), et même la quasi totalité des fonctions nécessitant un angle ont besoin que l'angle soit exprimé en radian ! Donc comme ta variable 'rot' est justement exprimée en degrés donc cela va pouvoir fonctionner pour la commande (à partir du moment où tes unités sont bien en degrés décimaux) mais pour la fonction polar, cela ne sera pas bon. Si tu regardes bien au niveau de tes captures, le point d'insertion de ton bloc semble en effet être à 1/2 de la distance entre P1 et P2 mais c'est uniquement l'angle qui n'est pas bon 😉 Mais la rotation, elle est bonne

Bisous,
Luna

Posté(e)

Bonjour à tous.
Effectivement, j'avais oublié cette notion de radian...
J'ai donc modifié un peu mon code, sui fonctionne parfaitement maintenant, grace à vous...
Encore merci à vous...
Je vous donne le code et le bloc...
 

;;; *******************************************
;;; Dessine un zigzag à la fin d'un mur coupé  
;;; *******************************************
(defun c:MurCoupe (/ p1 p2 pM)
  (princ "\n\tDéveloppé par Denis H. (1.0)")
;;; Nom du bloc = "TraitCoupeMur.dwg"
  (setq old_Osmode (getvar 'osmode))
  (if (and (setq p1 (getpoint "\nPremier point: ")) (setq p2 (getpoint p1 "\nDernier point: ")))
    (progn
           (setq rot (* 180.0 (/ (angle p1 p2) pi))
                 ech (distance p1 p2)
                 pM  (polar p1 (angle p1 p2) (/ ech 2))
           ) ;_ Fin de setq
           (setvar 'osmode 0)
           (command "inserer" "TraitCoupeMur" pM ech ech rot)
    ) ;_ Fin de progn
  ) ;_ Fin de if
  (setvar 'osmode old_Osmode)
  (princ)
) ;_ Fin de defun

 

TraitCoupeMur.dwg

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é