Aller au contenu

[Résolu] Récupère un attribut pour en faire un nouveau texte


Messages recommandés

Posté(e)

Bonjour à tous,

 

Et merci à tous les intervenants de ces forums grace à qui j'ai déjà appris énormément...

 

Mais là, je but un peu. Ca fait 10 ans que je n'ai pas touché au LiSP "sérieusement".

 

J'ai beaucoup cherché sur le NET et sur CadXP mais je n'ai pas trouvé ce que je cherche à faire...

 

Je souhaiterais créer un LiSP dont le processus serait assez simple, sélectionner un bloc nommé "PTRL_PROF", extraire son unique attribut ("PROF", attibut invisible) et créer un texte aligné le long d'un segment d'une Polyligne avec un préfixe "Pf:". Quelques petites explications (je joins une image pour plus de clareté).

 

1. le bloc à sélectionner est et sera toujours le bloc "PTRL_PROF" (le petit losange à chaque sommet d'une polyligne), qui n'existe dans AutoCAD uniquement pour en faire un SHP,

2. pour la direction du texte, ce sera toujours une polyligne avec que des segments droit, jamais de lissage, d'arc...

 

Je poste déjà ce que j'ai fais et qui est, je pense, le processus à suivre...

  ; Récupère l'attribut "PROF" dans le bloc "PTRL_PROF" et cré un texte type "Pf:x.xx" en l'allignant sur un segment de polyligne
(defun c:PtrlVersTxt ()
 ;Sauvegarde des variables AutoCAD courantes
 (setq old_osmd  (getvar "osmode")
       old_abase (getvar "angbase")
       old_adir  (getvar "angdir")
       ) ;_ Fin de setq
 ;Attribution de variables AutoCAD
 (setvar "osmode" 0)
 (setvar "angbase" 0)
 (setvar "angdir" 0)
 (setvar "cmdecho" 0)
 ;Sélection du bloc "PTRL_PROF" pour en extraire l'attribut "PROF"
 (while
   (null
     (setq SelBlk (entsel "\nSélectionnez le bloc 'PTRL_PROF' : "))
     ) ;_ Fin de null
   ) ;_ Fin de while
 ;Vérification que le bloc sélectionné est bien "PTRL_PROF"


 ;Extraction de la valeur de l'attribut "PROF"


 ;Sélection du segment pour orienter le texte
 (while
   (null
     (setq e_seg (entsel "\nSélectionnez le segment d'une polyligne : "))
     ) ;_ Fin de null
   ) ;_ Fin de while
 (setq typent (cdr (assoc 0 (setq dxf_ent (entget (car e_seg))))))


 (cond
   ((or (eq typent "LWPOLYLINE")
    	(and (eq typent "POLYLINE")
             (zerop (boole 1 118 (cdr (assoc 70 dxf_ent))))
             ) ;_ Fin de and
    	) ;_ Fin de or
	(setq l_2pt (near_vertex_arr e_seg))
	(grdraw (car l_2pt) (cadr l_2pt) -1 1)
	(if (zerop (caddr l_2pt))
  	(setq x_alpha (angle (trans (car l_2pt) 1 0)
                           (trans (cadr l_2pt) 1 0)
                           ) ;_ Fin de angle
        	) ;_ Fin de setq
  	(progn
    	(setq x_alpha nil)
    	(princ "\nNe peut obtenir un angle depuis ce type d'objet!")
    	) ;_ Fin de progn
  	) ;_ Fin de if
	)
   ) ;_ Fin de cond



 ;Placement du texte le long du segment de la polyligne



 ;Réaffectation des variables AutoCAD
 (setvar "osmode" old_osmd)
 (setvar "angbase" old_abase)
 (setvar "angdir" old_adir)
 ) ;_ Fin de defun

 ;Recherche de l'angle du segment cliqué, issus d'un LiSP de (gile) : ALTxt.lsp
(defun near_vertex_arr (obj
                       /
                       obj
                       dxf_obj
                       obj_vlax
                       pt_sel
                       par
                       pt_first
                       pt_snd
                       i
                       bulge
                       e_next
                       )
 (setq dxf_obj (entget (car obj)))
 (vl-load-com)
 (setq obj_vlax (vlax-ename->vla-object (car obj))
       pt_sel   (vlax-curve-getClosestPointTo
              	obj_vlax
              	(trans (osnap (cadr obj) "_near") 1 0)
              	) ;_ Fin de vlax-curve-getClosestPointTo
       par      (vlax-curve-getParamAtPoint obj_vlax pt_sel)
       pt_first (trans (vlax-curve-getPointAtParam obj_vlax (fix par)) 0 1)
       pt_snd   (trans (vlax-curve-getPointAtParam obj_vlax (1+ (fix par)))
                       0
                       1
                       ) ;_ Fin de trans
       i        0
       ) ;_ Fin de setq
 (cond ((eq (cdr (assoc 0 dxf_obj)) "LWPOLYLINE")
    	(while (or (/= (caar dxf_obj) 42)
                   (if (< i (fix par))
                     (setq i (1+ i))
                     ) ;_ Fin de if
                   ) ;_ Fin de or
      	(setq bulge   (cdadr dxf_obj)
            	dxf_obj (cdr dxf_obj)
            	) ;_ Fin de setq
      	) ;_ Fin de while
    	)
       (T
    	(setq e_next (entnext (car obj)))
    	(repeat (fix par) (setq e_next (entnext e_next)))
    	(setq bulge (cdr (assoc 42 (entget e_next))))
    	)
       ) ;_ Fin de cond
 (list pt_first pt_snd bulge)
 ) ;_ Fin de defun

 

J'aimerai qu'on me dise ou m'indique le ou les astuces à suivre et les pièges à éviter afin que je puisse développer cette macro... Les conseils sont aussi bienvenus ;)

 

Merci à tous,

 

Bonne journée

 

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)

Bonjour,

 

Sans répondre à ton sujet, je souhaite te poser une question.

je pensais que suite à la nouvelle législation sur les DT/DICT, il fallait indiquer l'altimétrie du réseau et non uniquement sa profondeur.

Posté(e)

Bonjour vannes,

 

Il me semble que, soit on indique l'altitude de la génératrice supérieur avec une profondeur sur des points remarquables (PTRL) soit on laisse l'altitude se la surface et on indique la profondeur sur ces mêmes points...

 

Mais effectivement, j'ai maintenant un affreux doute... Je vais me renseigner...

 

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)

en effet vannes, après documentation, les profondeurs des PTRL ne suffisent pas, il faut aussi indiquer l'altitude des génératrices supérieures des PTRL...

 

Merci de m'avoir mis le doute...

 

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)

Salut à tous,

 

Bon, j'arrive maintenant à récupérer la valeur de mon attribut dans mon bloc avec :

(defun c:PtrlVersTxt ()
 (vl-load-com)
 ;Sauvegarde des variables AutoCAD courantes
 (setq old_osmd  (getvar "osmode")
       old_abase (getvar "angbase")
       old_adir  (getvar "angdir")
       ) ;_ Fin de setq
 ;Attribution de variables AutoCAD
 (setvar "osmode" 0)
 (setvar "angbase" 0)
 (setvar "angdir" 0)
 (setvar "cmdecho" 0)
 (setq ent_bloc (entsel "\nSélectionnez le 'PTRL': "))
 (setq ent_bloc (car ent_bloc))
 ;Vérification que le bloc sélectionné est bien "PTRL_PROF"
 (if (= (cdr (assoc 66 (entget ent_bloc))) "PTRL_PROF")
   ((setq ent_att (entnext ent_bloc))
     ;Extraction de la valeur de l'attribut "PROF"
     (setq att_val (cdr (assoc 1 (entget ent_att))))
     )
   ) ;_ Fin de if
 (princ att_val)
 (princ)

 ;Sélection du segment pour orienter le texte

 ;Placement du texte le long du segment de la polyligne

 ;Réaffectation des variables AutoCAD
 (setvar "osmode" old_osmd)
 (setvar "angbase" old_abase)
 (setvar "angdir" old_adir)
 )

Maintenant, je dois récupérer la direction d'un segment de polyligne en cliquant dessus...

 

Je sens que ça, ça va être plus dur...

 

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)

Bon, il y a un truc que je ne comprend pas...

J'ai mon code qui est :

  ; Récupère l'attribut "PROF" dans le bloc "PTRL_PROF" et cré un texte type "Pf:x.xx" en l'allignant sur un segment de polyligne
(defun c:PtrlVersTxt ()
 (vl-load-com)
 ;Sauvegarde des variables AutoCAD courantes
 (setq old_osmd  (getvar "osmode")
       old_abase (getvar "angbase")
       old_adir  (getvar "angdir")
       ) ;_ Fin de setq
 ;Attribution de variables AutoCAD
 (setvar "osmode" 0)
 (setvar "angbase" 0)
 (setvar "angdir" 0)
 (setvar "cmdecho" 0)
 (setq ent_bloc (entsel "\nSélectionnez le 'PTRL': "))
 (princ "\nDrapeau 02")
 (setq ent_bloc (car ent_bloc))
 ;Vérification que le bloc sélectionné est bien "PTRL_PROF"
 (if (= (cdr (assoc 66 (entget ent_bloc))) "PTRL_PROF")
   ((princ "\nDrapeau 03")
   (setq ent_att (entnext ent_bloc))
 ;Extraction de la valeur de l'attribut "PROF"
 (princ "\nDrapeau 04")
     (setq att_val (cdr (assoc 1 (entget ent_att))))
     )
   ) ;_ Fin de if
 (princ "\nDrapeau 05")
 (setq Texte (strcat "pf:" att_val))
 ;(princ Texte)
 ;Récupération du segment de la polyligne
 (while
   (null
     (setq e_seg (entsel "\nSélectionnez le segment de la polyligne : "))
     ) ;_ Fin de null
   ) ;_ Fin de while
 (setq typent (cdr (assoc 0 (setq dxf_ent (entget (car e_seg))))))
 (cond
   ((or (eq typent "XLINE") (eq typent "RAY"))
    (setq dxf_11 (cdr (assoc 11 dxf_ent)))
    (setq x_alpha (atan (/ (cadr dxf_11) (car dxf_11))))
    (grdraw (trans (cdr (assoc 10 dxf_ent)) 0 1)
            (polar (trans (cdr (assoc 10 dxf_ent)) 0 1)
                   x_alpha
                   (distance (getvar "vsmin") (getvar "vsmax"))
                   ) ;_ Fin de polar
            -1
            1
            ) ;_ Fin de grdraw
    )
   ((eq typent "LINE")
    (setq x_alpha (angle (cdr (assoc 10 dxf_ent))
                         (cdr (assoc 11 dxf_ent))
                         ) ;_ Fin de angle
          ) ;_ Fin de setq
    (grdraw (trans (cdr (assoc 10 dxf_ent)) 0 1)
            (trans (cdr (assoc 11 dxf_ent)) 0 1)
            -1
            1
            ) ;_ Fin de grdraw
    )
   ((or (eq typent "LWPOLYLINE")
        (and (eq typent "POLYLINE")
             (zerop (boole 1 118 (cdr (assoc 70 dxf_ent))))
             ) ;_ Fin de and
        ) ;_ Fin de or
    (setq l_2pt (near_vertex_arr e_seg))
    (grdraw (car l_2pt) (cadr l_2pt) -1 1)
    (if (zerop (caddr l_2pt))
      (setq x_alpha (angle (trans (car l_2pt) 1 0)
                           (trans (cadr l_2pt) 1 0)
                           ) ;_ Fin de angle
            ) ;_ Fin de setq
      (progn
        (setq x_alpha nil)
        (princ "\nNe peut obtenir un angle depuis ce type d'objet!")
        ) ;_ Fin de progn
      ) ;_ Fin de if
    )
   (T
    (princ "\nNe peut obtenir un angle depuis ce type d'objet!")
    (redraw)
    )
   ) ;_ Fin de cond
 ;(princ x_alpha)
 (setq xy (getpoint "\nSpécifiez un point d'insertion pour le texte : "))
 ;Placement du texte le long du segment de la polyligne
 (command "-texte" xy "0.20" x_apha Texte "")

 ;Réaffectation des variables AutoCAD
 (setvar "osmode" old_osmd)
 (setvar "angbase" old_abase)
 (setvar "angdir" old_adir)
 ) ;_ Fin de defun


 ;Recherche de l'angle du segment cliqué,  (Bout de programme de (gile) : ALTxt.lsp)
(defun near_vertex_arr (obj
                       /
                       obj
                       dxf_obj
                       obj_vlax
                       pt_sel
                       par
                       pt_first
                       pt_snd
                       i
                       bulge
                       e_next
                       )
 (setq dxf_obj (entget (car obj)))
 (vl-load-com)
 (setq obj_vlax (vlax-ename->vla-object (car obj))
       pt_sel   (vlax-curve-getClosestPointTo
                  obj_vlax
                  (trans (osnap (cadr obj) "_near") 1 0)
                  ) ;_ Fin de vlax-curve-getClosestPointTo
       par      (vlax-curve-getParamAtPoint obj_vlax pt_sel)
       pt_first (trans (vlax-curve-getPointAtParam obj_vlax (fix par)) 0 1)
       pt_snd   (trans (vlax-curve-getPointAtParam obj_vlax (1+ (fix par)))
                       0
                       1
                       ) ;_ Fin de trans
       i        0
       ) ;_ Fin de setq
 (cond ((eq (cdr (assoc 0 dxf_obj)) "LWPOLYLINE")
        (while (or (/= (caar dxf_obj) 42)
                   (if (< i (fix par))
                     (setq i (1+ i))
                     ) ;_ Fin de if
                   ) ;_ Fin de or
          (setq bulge   (cdadr dxf_obj)
                dxf_obj (cdr dxf_obj)
                ) ;_ Fin de setq
          ) ;_ Fin de while
        )
       (T
        (setq e_next (entnext (car obj)))
        (repeat (fix par) (setq e_next (entnext e_next)))
        (setq bulge (cdr (assoc 42 (entget e_next))))
        )
       ) ;_ Fin de cond
 (list pt_first pt_snd bulge)
 ) ;_ Fin de defun

Mais AutoCAD me répond :

Commande: PTRLVERSTXT
Sélectionnez le 'PTRL':
Sélectionnez le segment de la polyligne :
Spécifiez un point d'insertion pour le texte : Commande inconnue "50".  Appuyez sur F1 pour obtenir de l'aide.
Commande inconnue "PTRLVERSTXT".  Appuyez sur F1 pour obtenir de l'aide.
0

Et je ne sais pas ce qui ne fonctionne pas...

 

Quelqu'un peut m'aider ?

 

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)

Bonjour,

 

Maintenant, je dois récupérer la direction d'un segment de polyligne en cliquant dessus...

 

Je sens que ça, ça va être plus dur...

 

Avec ceci?

 

(setq
ent (entsel)
ename (car ent)
ang
(angle
	'(0.0 0.0 0.0)
	(vlax-curve-getFirstDeriv ename
		(vlax-curve-getParamAtPoint ename
			(vlax-curve-getClosestPointTo ename (trans (cadr ent) 1 0))
		)
	)
)
)
(angtos ang)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour BonusCAD

 

Bonjour,

Avec ceci?

(setq
ent (entsel)
ename (car ent)
ang
(angle
	'(0.0 0.0 0.0)
	(vlax-curve-getFirstDeriv ename
		(vlax-curve-getParamAtPoint ename
			(vlax-curve-getClosestPointTo ename (trans (cadr ent) 1 0))
		)
	)
)
)
(angtos ang)

 

Veux-tu dire que celà remplace le "defun near_vertex_arr" ?

 

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)

Pfff...

 

Je ne m'en sors pas... Parfois, AutoCAD s'arrête entre les Drapeaux 2 et 3 et de temps en temps entre les drapeaux 4 et 5...

 

J'entrave quedalle ! ! :(

 

En ce moment, j'ai ça :

Commande: PTRLVERSTXT
Sélectionnez le 'PTRL':
Drapeau 02; erreur: type d'argument incorrect: lentityp nil

 

Je joint un fichier, si quelqu'un de curieux passe par-là...

 

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)

Au temps pour moi..., il manquait une parenthèse avant le (princ "\nDrapeau 03")...

 

Je l'ai corrigé dans le code...

 

Maintenant, c'est

Drapeau 02
Drapeau 05; erreur: type d'argument incorrect: stringp nil

 

Je n'ai ni le drapeau 3 ni le 4... Je cherche mais ce n'est pas évident ! !

 

EDIT : J'ai réécris un bout de code pour mieux localiser le problème... Ca donne ça :

(if (= (cdr (assoc 66 (entget ent_bloc))) "PTRL_PROF")
   (
    (princ "\nDrapeau 03")
     (setq ent_att (entnext ent_bloc))
 ;Extraction de la valeur de l'attribut "PROF"
     (princ "\nDrapeau 04")
     (setq att_val (cdr (assoc 1 (entget ent_att))))
     )
   (princ "Problème 04")
   )

Ce qui me donne :

Commande: PTRLVERSTXT
Sélectionnez le 'PTRL':
Drapeau 02Problème 04
Drapeau 05; erreur: type d'argument incorrect: stringp nil

Ce qui me donne l'impression que mon "if" est mal fait...

 

Dans la Console Visual LISP, j'ai :

(cdr (assoc 66 (entget ent_bloc)))
1

Alors qu'en fait, ça devrait me récupérer le nom de l'étiquette...

 

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 trouvé un indice...

 

C'était dans mon assoc. Il falait chercher l'indice 2 et non le 66, ce qui donne :

 (setq ent_bloc (entsel "\nSélectionnez le 'PTRL': "))
 (princ "\nDrapeau 02")
 (setq ent_bloc (car ent_bloc))
 (princ "\nDrapeau 03")
 (setq ent_att (entnext ent_bloc))
 ;Vérification que le bloc sélectionné est bien "PTRL_PROF"
 (if (= (cdr (assoc 2 (entget ent_bloc))) "PTRL_PROF")
   (
    (princ "\nDrapeau 04")
 ;Extraction de la valeur de l'attribut "PROF"
     (setq att_val (cdr (assoc 1 (entget ent_att))))
     )
   (princ "Problème 04")
   ) ;_ Fin de if
 (princ "\nDrapeau 05")
 (setq Texte (strcat "pf:" att_val))

 

Mais maintenant, j'ai çà :

Commande: PTRLVERSTXT
Sélectionnez le 'PTRL':
Drapeau 02
Drapeau 03
Drapeau 04; erreur: fonction incorrecte: "\nDrapeau 04"

Je ne comprend pas pourquoi il ne veut pas du setq att_val, puisque dans la Console, j'ai bien :

_1$ (setq att_val (cdr (assoc 1 (entget ent_att))))
"0.75"

 

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)

Et si tu colle ce qui suit directement en ligne de commande, ça ressemble à ce que tu veux faire?

 

((lambda ( / )
 (while
   (not
     (setq js
       (ssget "_+.:E:S" '((0 . "INSERT") (2 . "PTRL_PROF") (66 . 1)))
     )
   )
 )
 (setq ename (vlax-ename->vla-object (ssname js 0)))
 (setq att_val (strcat "pf:" (car (mapcar '(lambda (att) (vlax-get att 'TextString)) (vlax-invoke ename 'GetAttributes)))))
 (setq
   ent (entsel "\nChoix du segment de polyligne: ")
   ename (car ent)
   ang
   (angle
     '(0.0 0.0 0.0)
     (vlax-curve-getFirstDeriv ename
       (vlax-curve-getParamAtPoint ename
         (vlax-curve-getClosestPointTo ename (trans (cadr ent) 1 0))
       )
     )
   )
 )
 (setq
   AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
   Space
   (if (= 1 (getvar "CVPORT"))
     (vla-get-PaperSpace AcDoc)
     (vla-get-ModelSpace AcDoc)
   )
 )
 (setq nw_obj
   (vla-addMtext Space
     (vlax-3d-point (polar '(0.0 0.0 0.0) (* pi 0.5) (getvar "TEXTSIZE")))
     0.0
     att_val
   )
 )
 (mapcar
   '(lambda (pr val)
     (vlax-put nw_obj pr val)
   )
   (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint  'Layer 'Rotation)
   (list 8 (getvar "TEXTSIZE") 5 (trans (cadr ent) 1 0) (getvar "CLAYER") ang)
 )
 (prin1)
))

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

ReSalut BonusCAD,

 

WAOUW ! ! ! T'avais ça sous la main ? ?

 

Je suis impatient de tester ça demain matin, dès la première heure... Et je te dirais à quel point tu m'as soufflé ! !

 

Car je suis sûr que ça doit décoiffé ! ! !

 

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)

Salut à tous,

 

Effectivement, Tu m'as soufflé ! ! C'est exactement ça ! !

 

Seul problème, je ne comprend pas tout, et ça me gêne un peu pour, éventuellement, le modifier. Pas exemple, j'aimerai cliquer un point pour positionner ce texte et ne pas l'insérer au dernier clique.

 

Et surtout, je ne comprend toujours pas pourquoi ma macro ne fonctionne pas...

 

Mais un grand merci à toi...

 

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) (modifié)
Seul problème, je ne comprend pas tout, et ça me gêne un peu pour, éventuellement, le modifier. Pas exemple, j'aimerai cliquer un point pour positionner ce texte et ne pas l'insérer au dernier clique.

 

(entsel) retourne une liste composée du nom de l'entité et du point de sélection, je pensais faire d'une pierre 2 coup en utilisant celui-ci.

 

Donc: (trans (cadr ent) 1 0) à la fin du code place le texte à ce point, c'est ici que tu doit agir.

 

Dans ton code tu fais une erreur en rajoutant tes drapeaux de suivi, notemmment dans le if.

IF requiert SEULEMENT 2 conditions vrai ou faux, s'il y a plusieur conditions vrai ou faux, IL FAUT LES REGROUPER avec progn (tu les as seulement regrouper avec une paire de parenthèses supplémentaires)

 

A la fin tu as aussi une erreur sur l'écriture du texte.

(princ "\nEcriture du texte...")

(command "-texte" xy "0.20" "" x_apha Texte)

 

Doit être:

(princ "\nEcriture du texte...")

(command "-texte" xy "0.20" (angtos x_alpha) Texte)

 

Une entrée en trop ""

x_alpha et non x_apha

Utiliser (angtos), autrement l'angle sera lu en radian...

Si tu passe par (entmake) on peut alors utiliser directement cet angle en radian.

Modifié par bonuscad
  • Upvote 1

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour à tous,

 

Mille mercis BonusCAD ! ! ! C'est exactement ça, ça fonctionne nikel...

 

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)

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é