BIM G CO Posté(e) le 10 février 2005 Posté(e) le 10 février 2005 Je suis en train de créer un AutoLISP qui créé des lignes de repère personnalisée au bureau.La commande "_leader" a dû être abandonné par DECRET patronal. - Je travaille avec AutoCAD 2005 (pas besoin de dire en version pleine :cool: ) - je trace donc des lignes (avec toutes les caractéristiques) c'est OK- j'ajoute un texte Mulltiligne (avec le bon style ) çà c'est OK- je souligne avec le bon décalage chaque ligne de texte correspondant à cette ligne de repère (utilisation des code DXF 10, 40, 41, 42, 43, 44. Mon problème est :je désirerait cacher ce qu'il y a derrière les textes.Or (command "TEXTMASK") me retourne comme quoi cette commande ne fonctionne pas.J'ai cherché un autre moyen.Avec AutoCAD 2005 dans les propriétés on a la possibilité de masqué un teste multiligne j'ai donc lu les codes DXF du texte à chaque état de masquage : Entité non masquée: "Bibliothèque:" (0 . "STYLE") (2 . "Standard") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 0.2) (3 . "txt") (4 . "") "Contenu entité:" (-1 . ) (0 . "MTEXT") (330 . ) (5 . "169") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbMText") (10 -0.100979 8.16674 0.0) (40 . 0.2) (41 . 4.82053) (71 . 1) (72 . 5) (1 . "Texte de test Masquage") (7 . "Standard") (210 0.0 0.0 1.0)(11 1.0 0.0 0.0) (42 . 4.33333) (43 . 0.266667) (50 . 0.0) (73 . 1) (44 . 1.0) "Contenu entité devenue masquée:" (-1 . ) ... [surligneur] (90 . 3) (63 . 9) (421 . 13158600) (45 . 1.5)[/surligneur] [surligneur] (441 . 7668844)[/surligneur] "Contenu entité devenue masquée:" texte surligné effacé et remplacé par [surligneur] (90 . 2)[/surligneur] Or malheureusement en testant sur plusieurs Textes multiligne la valeur de la paire pointée 441 change. je suis bloqué là Bon mais ensuite lorsque ce texte multiligne est masqué les lignes soulignant le texte sont masquée elles aussi (la soulution du soulignement du texte %%u est insatisfaisante par DECRET patronal) et un command ("DRAWORDER") ou (ai_draworder "_F") Entity .... ne fonctionne pas.Je trouverai dommage de devoir supprimer à chaque masquage de texte les lignes pour relancer instantanément aprèsle soulignage. je suis bloqué là 1ère question : quelqu'un a-t-il trouvé à quoi correspond le code 441 et comment la calculer ? (elle change à chaque nouveau MTEXT") (la solution de rajouter encore un solide n'est pas satisfaisante http:// http://www.cadxp.com/sujetXForum-2471.htm)2ème question : comment intégrer draworder dans un lisp car je viens de chercher dans le forum et la solution proposée ne fonctionne pas chez moi [surligneur] ((command "_.draworder" (cdar dxf_ent) "" "_above" mask_txt)[/surligneur]) Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
Patrick_35 Posté(e) le 10 février 2005 Posté(e) le 10 février 2005 SalutC'est une commande des express tools, donc pour l'appeler un (c:textmask) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 10 février 2005 Posté(e) le 10 février 2005 et pour le draworderpar exemple(command "_.draworder" (car (entsel)) "" "_f") @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
BIM G CO Posté(e) le 10 février 2005 Auteur Posté(e) le 10 février 2005 merci Patrick_35 (foreach n1 ARG_EntLINE (command "_.draworder" (cdr (assoc -1 n1)) "" "_above" (cdr (assoc -1 ARG_EntMTEXT)) "") ) en sachant que ARG_EntMTEXT = (entget .....) du texteARG_EntLINE = (list (enget...)..) de toutes les lignes attaché au texte il me reste l'histoire du masquage de ce f*** texte Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
BIM G CO Posté(e) le 10 février 2005 Auteur Posté(e) le 10 février 2005 ça me donne rien, ca reste sur la ligne de commande. (c:textmask)(cdr (assoc -1 ARG_EntMTEXT))""et trop d'argument pour celle là (c:textmask (cdr (assoc -1 ARG_EntMTEXT)) "") Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
BIM G CO Posté(e) le 10 février 2005 Auteur Posté(e) le 10 février 2005 le problème c'est que je reste bloqué dans la fonction c:textmaskcar même : (sssetfirst nil (ssadd (cdr (assoc -1 ARG_EntMTEXT))))(c:textmask)_Pne donne rien Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
BIM G CO Posté(e) le 10 février 2005 Auteur Posté(e) le 10 février 2005 le code 441 correspond au couleur 32 bits donc pour avoir du vide de cher vide il faut affecter au 441 (2 à la puissance 32) - 1 et là malheur AutoCAD ne le gère pas avec la fonction expt Commande: (expt 2 30) 1073741824 Commande: (expt 2 31) -2147483648 Alors je prend ma bonne Casio fx 7000 2^32=4.294.967.296 affectez donc 4.294.967.295 au code 441 pour le masquage du texte multiligne(pour les versions autoCAD 2005) Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
Patrick_35 Posté(e) le 10 février 2005 Posté(e) le 10 février 2005 Salut, j'ai trouvé Il faut bien sûre charger le lisp textmask.lsp et ensuite par exemple (command "_.wipeout" "_frame" "_off") (acet-textmask-make-wipeout (car (entsel)) 0.35) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
BIM G CO Posté(e) le 10 février 2005 Auteur Posté(e) le 10 février 2005 J'ai cherché de mon coté et j'ai trouvé autrement Patrick_35.(merci quand même :cool: ) J'utilise une fonctionnalité de AutoCAD 2005(comme tout le BE a une version 2005 c'est OK) ARG_EntMTEXT = (entget (car (entsel))) d'un texte MULTILIGNE(nth 0 PUBLIC_STYLE_TXT) = 1.05 (pour le calcul de l'offset de wipeout) (if (assoc 90 ARG_EntMTEXT) (setq ARG_EntMTEXT (subst (cons 90 3) (assoc 90 ARG_EntMTEXT) ARG_EntMTEXT)) (setq ARG_EntMTEXT (append ARG_EntMTEXT (list (cons 90 3))))) (if (assoc 63 ARG_EntMTEXT) (setq ARG_EntMTEXT (subst (cons 63 9) (assoc 63 ARG_EntMTEXT) ARG_EntMTEXT)) (setq ARG_EntMTEXT (append ARG_EntMTEXT (list (cons 63 9))))) (if (assoc 421 ARG_EntMTEXT) (setq ARG_EntMTEXT (subst (cons 421 13158600) (assoc 421 ARG_EntMTEXT) ARG_EntMTEXT)) (setq ARG_EntMTEXT (append ARG_EntMTEXT (list (cons 421 13158600))))) (if (assoc 45 ARG_EntMTEXT) (setq ARG_EntMTEXT (subst (cons 45 (sqrt (nth 0 PUBLIC_STYLE_TXT))) (assoc 45 ARG_EntMTEXT) ARG_EntMTEXT)) (setq ARG_EntMTEXT (append ARG_EntMTEXT (list (cons 45 (sqrt (nth 0 PUBLIC_STYLE_TXT))))))) (if (assoc 441 ARG_EntMTEXT) (setq ARG_EntMTEXT (subst (cons 441 -1) (assoc 441 ARG_EntMTEXT) ARG_EntMTEXT)) (setq ARG_EntMTEXT (append ARG_EntMTEXT (list (cons 441 -1))))) (entmod ARG_EntMTEXT) Remarque ce code ne fonctionne qu'à partir d'autoCAD 2005 il est inopérant pour les versions antérieures (testé sur une 2004) Nota : le code DXF 45 correspond à l'offset de la commande WipeOUT mais il est totalement modifiable indépendamment .... ouf! pour moi environ 25 % c'est largement suffisant Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
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