denisf Posté(e) le 9 février 2017 Posté(e) le 9 février 2017 Bonjour Je butte dans lisp où je remplis un mleader. Le nombre de caractère est limité à 134... 134 caractères, çà passe...(command "_.mleader" "p" pause pause (strcat "xxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxx") "") 135 caractères, çà casse...(command "_.mleader" "p" pause pause (strcat "xxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxx") "") Y a-t-il moyen de changer cette limite? Merci d'avance ... et ben, j'ai mis un moment pour trouver la façon de mettre [Résolu]... un petit bouton serait sympa!!! Bon week-end
bonuscad Posté(e) le 9 février 2017 Posté(e) le 9 février 2017 Bonjour, Pour un MLEADER tu retombe dans la même configuration d'un MTEXTAu delà de 250 caractères la chaine est stockée dans un ou plusieurs groupes de code DXF 3 par tranche de 250 caractères.Les dernier restant (ou si inférieur à 250) sont stocké dans le code groupe 1 (comme pour un TEXT classique). Pour moi la solution de facilité est d'utiliser les fonctions vla- qui gèrent très bien cette limitation sans te casser la tête. Un exemple tiré de l'aide en reprenant ton désidérata. (defun c:Example_AddMLeader() (setq acadObj (vlax-get-acad-object)) (setq doc (vla-get-ActiveDocument acadObj)) ;; Define the leader points (setq points (vlax-make-safearray vlax-vbDouble '(0 . 5))) (vlax-safearray-fill points (append (getpoint "\n1er point :") (getpoint "\n2ème point: "))) (setq i 0) ;; Add the mleader object to model space (setq modelSpace (vla-get-ModelSpace doc)) (setq mLeader (vla-AddMLeader modelSpace points i)) (mapcar '(lambda (pr val) (vlax-put mLeader pr val) ) (list 'TextString 'StyleName 'Layer) (list (strcat "xxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" ) "Standard" "0" ) ) ) 1 Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 9 février 2017 Posté(e) le 9 février 2017 Salut, Je pense que le problème vient de l'appel de la commande en LISP qui limite le nombre de caractères à 128 caractères imprimables.Une solution de contournement est d'utiliser command pour dessiner une ligne de repère multiple avec un texte vide et de le remplir ensuite avec entmod. ;; on récupère l'identifiant de la dernière entité (setq lastEnt (entlast)) ;; on lance la commande (command "_.mleader" "_head" pause pause "" "") ;; si la commande a abouti, la dernière entité est différente de lastEnt (if (/= lastEnt (entlast)) (entmod (subst (cons 304 (strcat "xxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" "\nxxxxxxxxxxxxxxxxxxxx" ) ) '(304 . "") (entget (entlast)) ) ) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
denisf Posté(e) le 9 février 2017 Auteur Posté(e) le 9 février 2017 Merci infiniment pour ton aide. J'étais resté sur le lisp avec "lrepere", qui marchait très bien.Je ne pense pas toujours au vla... qu'il faut bien dire, je ne maîtrise pas assez.
denisf Posté(e) le 9 février 2017 Auteur Posté(e) le 9 février 2017 ... du coup merci aussi à Gile pour ton autre solution qui est arrivée pendant ma première réponse.
denisf Posté(e) le 9 février 2017 Auteur Posté(e) le 9 février 2017 ... pour compléter, il faut encore changer l'orientation du texte (+ 360°) par une fonction vla- (vla-put-textrotation (vlax-ename->vla-object (entlast)) (* 2 pi)) Salut
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant