Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

Dans une routine assez imposante de fusion d'un fichier natif dans un modèle pré-paramétré, je cherche à transformer l'apparence et la composition de certains "TEXT" en éléments "MTEXT" avec l'insertion de préfixes et suffixes composés de caractères unicodes , ◄ en préfixes et ► en suffixes.

Pour cela, j'ai adapté un morceau de LISP (PTX-STX) trouvé sur ce même forum, mais dans lequel je n'arrive pas à paramétrer les caractères UNICODE, même en les entrants manuellement.

(defun TextDp1b2Mtext (/ doc ent Pref Suff)
	(setq TDPsel (ssget "X" '((0 . "TEXT") (8 . "Sectionnement_PlotsAnno"))))
	(vl-load-com)
	(setq doc (vla-get-activedocument (vlax-get-acad-object)))
	(vla-startundomark doc)
	(setq Pref (getstring "\Entrer alt+17"))	;Définition du préfixe manuelle
  	(setq Suff (getstring "\Entrer alt+16"))	;Définition du suffixe manuelle
	(while (< i (sslength TDPsel))
		(setq ent (vlax-ename->vla-object (ssname TDPsel i)))
		(vla-put-textstring ent (strcat Pref (vla-get-textstring ent) Suff))
		(setq i (1+ i))
	)
	(vla-endundomark doc)
	(setq Setlen (sslength TDPsel) Count 0 )
	(repeat SetLen				
		(setq Ntxt (ssname TDPsel Count))
		(command "_txt2mtxt" Ntxt "")
		(setq jsF (ssadd (entlast))	NMtxt (entlast))
		(setq dxf_ent (entget NMtxt))
		(entmod 
			(append dxf_ent 
				(list 
					(cons 90 19)				;Encadrement
					(cons 8 "G-ANNOTATIONS")	;Calque
					(cons 40 0.15)				;Hauteur de texte
					(cons 45 1.2)				;Bordure
					(cons 441 0)				;Echelle
					(cons 41 1.4)				;Largeur
				)
			)
		)
		(setq Count (+ 1 Count))
	)
	(princ)
)

Le résultat du code joint me donne bien l'apparence désirée mais n'insère pas les caractères demandés.

Help me please.

Posté(e)

J'y ai pensé (je suis allé sur la même page), mais la liste des 255 caractères ASCII ne comporte pas les deux caractères, seulement les caractères < et > qui ne sont pas assez visuellement explicites dans l'utilisation de nos plans...

https://www.purebasic.com/french/documentation/reference/ascii.html

Il s'agit d'Alt codes issus de la table de codage graphique de la page de code 850, en fait si je tape (setq A ►) j'ai nil comme réponse, donc je pense juste que ça ne devrai pas être possible...

SAUF QUE quand j'utilise le code duquel je me suis inspiré ça fonctionne, donc mon problème doit être ailleurs...

Je cherche encore.

Posté(e)

Pourtant, j'utilisais avant un autre LISP mais qui correspondait moins bien à mes besoins et qui lui fonctionne très bien avec ces caractères :

; Ajouter un morceau de texte (prefix)
(defun c:ptx(/ doc ent tx1 tx2 txt)
  (vl-load-com)
  (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark doc)
  (and    (ssget (list (cons 0 "TEXT,MTEXT")))
    (setq tx1 (getstring "\nTexte à ajouter : "))
    (progn
      (vlax-for ent (setq sel (vla-get-activeselectionset doc))
    (vla-put-textstring ent (strcat tx1 (vla-get-textstring ent)))
      )
      (vla-delete sel)
    )
  )
  (vla-endundomark doc)
  (princ)
)

Peut être faut-il que je pense mon code autrement en ajustant la commande de sélection de celui-ci ?

Posté(e)

Bonjour @Déméter_33

J'ai un peu utilisé le même principe, il n'y en a pas cent.
Par contre, je change la police, Wingdings 3 en l'occurrence, les caractères t et u sont des triangles orientés.
Voici le visuel :

2025-02-06_14-22-15.thumb.gif.8d96b3aa11b43ed5b2b1a548a3586f31.gif

Voici le code :

(setq ent (car (entsel)))
(setq val (cdr (assoc 1 (entget ent))))
(entmod (subst (cons 1 (strcat "{\\fWingdings 3|b0|i0|c2|p18;t\\"
			       "fArial|b0|i0|c0|p34;"
			       val
			       "\\fWingdings 3|b0|i0|c2|p18;u}")
		     )
	       (assoc 1 (entget ent))
	       (entget ent)
	       )
	)

Éternel débutant…
Mon site perso : Programmer dans AutoCAD

 

 

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é