Aller au contenu

Petite flèche de rappel + XY


DenisHen

Messages recommandés

Bonjour à tous,

 

Voilà, pour une fois que je peux partager une routine de ma création...

 

Voici un petit LiSP qui dessine une flèche avec les coordonnées XY du point.

 

Tout se fait dans le calque courant et dans le style de texte courant et l'oriantation du texte multiligne se fait parallèle à la direction du réticule...

 

Voici mon code, toutes remarques seront les bienvenues :

(defun c:DHXY (/)
 (princ "\nDéveloppé par Denis H.")
 (setq old_osmd   (getvar "osmode")
       old_abase  (getvar "angbase")
       old_adir   (getvar "angdir")
       old_aunits (getvar "aunits")
       VarSnapAng (getvar "snapang")
 ) ;_ Fin de setq
 (setvar "osmode" 1)
 (setvar "angbase" 0)
 (setvar "angdir" 0)
 (setvar "cmdecho" 0)
 (setvar "aunits" 0)
 (initget 1)
 (setq pt_ins (getpoint "\nPointe de la flèche : "))
 (setq X (rtos (car pt_ins) 2 2))
 (setq Y (rtos (cadr pt_ins) 2 2))
 (initget 1)
 (setq pt_ins_Txt (getpoint pt_ins "\nPied de la flèche : "))
 (setq p3 (polar pt_ins (angle pt_ins pt_ins_Txt) 1))
 
 (command "_.pline" "_non" pt_ins "_w" 0 0.5 "_non" p3 "_w" 0 0 "_non" pt_ins_Txt "") ;_ Fin de command
 (setq angl_Txt (/ (* VarSnapAng 180) pi))
 (setq angl_Txt (- angl_Txt 90))
 (setq Text (strcat "X=" X "\\PY=" Y))
 (initget 1 "BG HG BD HD") ;_ Fin de initget
 (setq OptionIns
        (getkword
          "Entrez le point d'insertion du texte multiligne [bG/HG/BD/HD] :"
        ) ;_ Fin de getkword
 ) ;_ Fin de setq
 ;;InsTxt
 (cond ((= OptionIns "BG")
        (command "_.-MTEXT" pt_ins_Txt "R"        angl_Txt
                 "J"        "BG"       pt_ins_Txt Text
                 ""
                ) ;_ Fin de command
;_ Fin de command
;_ Fin de command
       )
       ((= OptionIns "HG")
        (command "_.-MTEXT" pt_ins_Txt "R"        angl_Txt
                 "J"        "HG"       pt_ins_Txt Text
                 ""
                ) ;_ Fin de command
;_ Fin de command
;_ Fin de command
       )
       ((= OptionIns "BD")
        (command "_.-MTEXT" pt_ins_Txt "R"        angl_Txt
                 "J"        "BD"       pt_ins_Txt Text
                 ""
                ) ;_ Fin de command
;_ Fin de command
;_ Fin de command
       )
       ((= OptionIns "HD")
        (command "_.-MTEXT" pt_ins_Txt "R"        angl_Txt
                 "J"        "HD"       pt_ins_Txt Text
                 ""
                ) ;_ Fin de command
;_ Fin de command
;_ Fin de command
       )
 ) ;_ Fin de cond
 (setq Text (strcat "X=" X "\\PY=" Y)) ;_ Fin de setq
 (princ "\nEtiquette Ok")              ;Réaffectation des variables AutoCAD
 (setvar "osmode" old_osmd)
 (setvar "angbase" old_abase)
 (setvar "angdir" old_adir)
 (setvar "aunits" old_aunits)
 (princ)
) ;_ Fin de defun

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)

Lien vers le commentaire
Partager sur d’autres sites

GRRRR ! ! !

 

Je viens d'utiliser ma routine sur deux plans, tout deux avec une rotation de la vue mais toujours en SCU général.

 

Et bien si mon SNAPANG=46.6294, ça ne fonctionne pas, il faut que sa valeur soit 346.6294...

 

Par contre, avec ça, je ne sais pas trop quoi faire...

 

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)

Lien vers le commentaire
Partager sur d’autres sites

Hello,

J'avais également fait un truc dans le genre de ce que propose lovecraft.

Là, il n'existe que pour le XY.

 

J'ai bien tenter de faire un truc pour X,Y et Z. Le truc, c'est que le paramètre d'étirement ne marche pas en 3D. C'est un fonctionnement normal? J'ai l'impression que le parametre d'étirement est parfait pour faire des choses en 2D, mais en 3D, ça ne marche pas.

Sauf à faire comme le bloc de lovecraft, c.à.d. en déplaçant le bloc en Z.

 

A plus.

bloc coordonnées.zip

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à tous,

 

pierrevigneux : Et si ton style de texte comporte déja, dans ses paramètres, une hauteur ?

 

lovecraft : ton lien est périmé... Et j'aimerais bien l'avoir...

 

La Lozère : j'ai déjà eu ce problère... Il faut un accrochage 3D et ne plus rien bouger... Faut être précis dès le début... C'est vrai, c'est super chi*nt...

 

Mais je vais bosser dans les jours prochains sur une version plus "paramétrable", taille du texte, de la flèche...

 

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)

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à tous,

 

pierrevigneux : Et si ton style de texte comporte déja, dans ses paramètres, une hauteur ?

 

lovecraft : ton lien est périmé... Et j'aimerais bien l'avoir...

 

La Lozère : j'ai déjà eu ce problère... Il faut un accrochage 3D et ne plus rien bouger... Faut être précis dès le début... C'est vrai, c'est super chi*nt...

 

Mais je vais bosser dans les jours prochains sur une version plus "paramétrable", taille du texte, de la flèche...

 

Denis...

 

Le voici en pièce jointe (par contre mon lien fonctionne toujours.

 

Cordialement,

POINT_DYN.zip

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

 

Merci lovecraft, mais je ne me suis pas encore familiarisé avec les blocs dynamiques...

 

J'ai amélioré ma routine pour la rendre plus "paramétrable"... Longueur de la flèche, largeur, épaisseur de sa queue et hauteur du texte...

 

Voici le nouveau code :

;;;Trace une flèche puis écrit les X, Y et Z (s'il y en a un)
(defun c:DHXY (/)
 (princ "\nDéveloppé par Denis H.")
 (setq old_osmd   (getvar "osmode")
       old_abase  (getvar "angbase")
       old_adir   (getvar "angdir")
       old_aunits (getvar "aunits")
       VarSnapAng (getvar "snapang")
 ) ;_ Fin de setq
 (setvar "osmode" 1)
 (setvar "angbase" 0)
 (setvar "angdir" 0)
 (setvar "cmdecho" 0)
 (setvar "aunits" 0)
 (setq Long (vlax-ldata-get "DenisH" "FlXYLong" 0.75))
 (setq Larg (vlax-ldata-get "DenisH" "FlXYLarg" 0.4))
 (setq Epais (vlax-ldata-get "DenisH" "FlXYEpais" 0.01))
 (setq Haut (vlax-ldata-get "DenisH" "FlXYHaut" 0.5))
 (prompt (strcat "\tLongueur : " (rtos Long 2 3)
                 ", lArgeur : " (rtos Larg 2 3)
                 ", Epaisseur : " (rtos Epais 2 3)
                 ", Hauteur : " (rtos Haut 2 3)
         ) ;_ Fin de strcat
 ) ;_ Fin de prompt
 (while (/= (type pt_ins) 'LIST)
   (initget 1 "Longueur lArgeur Epaisseur Hauteur")
   (setq pt_ins
          (getpoint
            "\nPointe de la petite flèche ou [Longueur/lArgeur/Epaisseur/Hauteur] <Longueur> : "
          ) ;_ Fin de getpoint
   ) ;_ Fin de setq
   (cond ((= pt_ins "Longueur")
          (initget 7)
          (setq Long (getdist "\nLongueur de la flèche : "))
         )
         ((= pt_ins "lArgeur")
          (initget 7)
          (setq Larg (getdist "\nlArgeur de la flèche : "))
         )
         ((= pt_ins "Epaisseur")
          (initget 7)
          (setq Epais (getdist "\nEpaisseur de la queue de la flèche : "))
         )
         ((= pt_ins "Hauteur")
          (initget 7)
          (setq Haut (getdist "\nHauteur du texte : "))
         )
   ) ;_ Fin de cond
 ) ;_ Fin de while
 (initget 1)
 (vlax-ldata-put "DenisH" "FlXYLong" Long)
 (vlax-ldata-put "DenisH" "FlXYLarg" Larg)
 (vlax-ldata-put "DenisH" "FlXYEpais" Epais)
 (vlax-ldata-put "DenisH" "FlXYHaut" Haut)
 (setq pt_ins (getpoint "\nPointe de la flèche : "))
 (setq X (rtos (car pt_ins) 2 2))
 (setq Y (rtos (cadr pt_ins) 2 2))
 (setq Z (rtos (caddr pt_ins) 2 2))
 (initget 1)
 (setq pt_ins_Txt (getpoint pt_ins "\nPied de la flèche : "))
 (setq p3 (polar pt_ins (angle pt_ins pt_ins_Txt) Long))
 (command "_.pline"         "_non"   pt_ins   "_w"     0
          Larg     "_non"   p3       "_w"     0        0
          "_non"   pt_ins_Txt        ""
         ) ;_ Fin de command
;_ Fin de command
 (setq angl_Txt (/ (* VarSnapAng 180) pi))
 (setq angl_Txt (- angl_Txt 90))
 (if (= Z "0.00")
   (setq Text (strcat "X=" X "\\PY=" Y))
   (setq Text (strcat "X=" X "\\PY=" Y "\\PZ=" Z))
 ) ;_ Fin de if
 (initget 1 "BG HG BD HD") ;_ Fin de initget
 (setq OptionIns
        (getkword
          "Entrez le point d'insertion du texte multiligne [bG/HG/BD/HD] :"
        ) ;_ Fin de getkword
 ) ;_ Fin de setq
 ;;InsTxt
 (cond ((= OptionIns "BG")
        (command "_.-MTEXT"          pt_ins_Txt          "R"
                 angl_Txt  "J"       "BG"      "H"       Haut
                 pt_ins_Txt          Text      ""
                ) ;_ Fin de command
;_ Fin de command
       )
       ((= OptionIns "HG")
        (command "_.-MTEXT" pt_ins_Txt "R"        angl_Txt
                 "J"        "HG"       pt_ins_Txt Text
                 ""
                ) ;_ Fin de command
;_ Fin de command
       )
       ((= OptionIns "BD")
        (command "_.-MTEXT" pt_ins_Txt "R"        angl_Txt
                 "J"        "BD"       pt_ins_Txt Text
                 ""
                ) ;_ Fin de command
;_ Fin de command
       )
       ((= OptionIns "HD")
        (command "_.-MTEXT" pt_ins_Txt "R"        angl_Txt
                 "J"        "HD"       pt_ins_Txt Text
                 ""
                ) ;_ Fin de command
;_ Fin de command
       )
 ) ;_ Fin de cond
 (setq Text (strcat "X=" X "\\PY=" Y)) ;_ Fin de setq
 (princ "\nEtiquette Ok")              ;Réaffectation des variables AutoCAD
 (setvar "osmode" old_osmd)
 (setvar "angbase" old_abase)
 (setvar "angdir" old_adir)
 (setvar "aunits" old_aunits)
 (princ)
) ;_ Fin de defun

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)

Lien vers le commentaire
Partager sur d’autres sites

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é