speedy Posté(e) le 30 juillet 2007 Posté(e) le 30 juillet 2007 Bonjourj'ai des cartouches constitués d'attribut 'texte' mais chaque fois que j'e modifie mon texte tout se met en majuscule ??? y'a t'il un moyen de transformer ces attributs en texte, ou comment faire pour qu'il garde le texte sans tout transformer en majuscule ?? @+ Michel a
oran Posté(e) le 30 juillet 2007 Posté(e) le 30 juillet 2007 Bonjour,Si cela peut te servir en attendant mieux..... [surligneur]DECBLOC.lsp[/surligneur] Décompose un bloc composé d'attributs et récupère toutes les valeurs des attributs sous la forme d'objet texte ; DECBLOC.LSP ; =============================== ; recuperation des valeurs des attributs ; d'un bloc en le décomposant ; Remplace attribut par texte ; ; Dominique VAQUAND ; le 28.05.96 ; =============================== (defun c:DECBLOC () ; mise en mémoire du plan courant (setvar "cmdecho" 0) (setq derplan (getvar "clayer")) ; sélection du bloc (setq ent_bloc (entsel "\nSélectionnez le bloc: ")) (setq ent_bloc (car ent_bloc)) (if (= (cdr (assoc 0 (entget ent_bloc))) "INSERT") (progn (if (= (cdr (assoc 66 (entget ent_bloc))) 1) (progn (setq ent_att (entnext ent_bloc)) ; récupération des informations de l'attribut (while (/= (cdr (assoc 0 (entget ent_att))) "SEQEND") ; nom étiquette (setq att_etiq (cdr (assoc 2 (entget ent_att)))) ; valeur du contenu de l'attribut (setq att_val (cdr (assoc 1 (entget ent_att)))) ; justification du texte (setq flag72 (cdr (assoc 72 (entget ent_att)))) ; style texte (setq att_style (cdr (assoc 7 (entget ent_att)))) ; position x10 (setq att_x10 (cdr (assoc 10 (entget ent_att)))) ; position x11 (setq att_x11 (cdr (assoc 11 (entget ent_att)))) ;hauteur texte (setq att_htxt (cdr (assoc 40 (entget ent_att)))) ;nom du plan (setq att_plan (cdr (assoc 8 (entget ent_att)))) (command "_layer" "_m" att_plan "") (if (= (cdr (assoc 70 (entget ent_att))) 0) (progn (setq h_style (cdr (assoc 40 (tblsearch "style" att_style)))) (cond ((= flag72 0) (if (= h_style 0) (command "texte" "st" att_style att_x10 att_htxt 0 att_val) (command "texte" "st" att_style att_x10 0 att_val) ) ) ((= flag72 1) (if (= h_style 0) (command "texte" "st" att_style "c" att_x11 att_htxt 0 att_val) (command "texte" "st" att_style "c" att_x11 0 att_val) ) ) ((= flag72 2) (if (= h_style 0) (command "texte" "st" att_style "d" att_x11 att_htxt 0 att_val) (command "texte" "st" att_style "d" att_x11 0 att_val) ) ) ((= flag72 3) (if (= h_style 0) (command "texte" "st" att_style "A" att_x10 att_x11 att_htxt att_val) (command "texte" "st" att_style "A" att_x10 att_x11 att_val) ) ) ((= flag72 4) (if (= h_style 0) (command "texte" "st" att_style "M" att_x11 att_htxt 0 att_val) (command "texte" "st" att_style "M" att_x11 0 att_val) ) ) ((= flag72 5) (if (= h_style 0) (command "texte" "st" att_style "F" att_x10 att_x11 att_htxt att_val) (command "texte" "st" att_style "F" att_x10 att_x11 att_val) ) ) );end cond );end progn );end if (setq ent_att (entnext ent_att)) );end while ; on décompose le bloc (command "decompos" ent_bloc ) ; on efface tous les attributs (command "effacer" (ssget "x" (list (cons 0 "ATTDEF"))) "") (command "redess") ; on se replace sur le plan courant (command "_layer" "_m" derplan "") );progn (alert "Ce bloc ne contient pas d'attribut. Pour le décomposer\nutilisez simplement la commande DECOMPOS.") );if );progn (alert "Ce n'est pas un objet bloc.") );if (princ) );defun ; =================== END DEFUN (princ "\n==> DECBLOC") (princ) Oran
speedy Posté(e) le 30 juillet 2007 Auteur Posté(e) le 30 juillet 2007 Merci de ta réponse oran, ce ne sont pas des blocs ce sont que des attributs,avec etiquette et invité tout simplement, je cherche le moyen de convertir att2txt....... le code dxf "((0 . "ATTDEF") (2 . "Mon titre") (7 . "Style") (8 . "calque") (210 0.0 0.0 1.0))" @+ Michel a
(gile) Posté(e) le 30 juillet 2007 Posté(e) le 30 juillet 2007 Salut, En fait c'est l'étiquette de l'attribut que tu semble utiliser (code de groupe DXF 2).Dans ce cas je ne comprends pas l'intérêt par rapport à un texte simple :casstet: Un LISP qui transforme les définitions d'atribut sélectionnées en texte : (defun c:att2txt (/ ss n elst) (and (setq ss (ssget '((0 . "ATTDEF")))) (repeat (setq n (sslength ss)) (setq elst (entget (ssname ss (setq n (1- n))))) (entmake (cons '(0 . "TEXT") (cons (cons 1 (cdr (assoc 2 elst))) (vl-remove-if-not '(lambda (x) (member (car x) '(67 410 8 10 40 50 41 51 7 71 11 210)) ) elst ) ) ) ) (entdel (cdr (assoc -1 elst))) ) ) (princ) ) mais si tu préfères conserver des definitions d'attributs, en modifiant l'étquette par la fenêtre des propriétés, la casse est conservée. [Edité le 30/7/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
speedy Posté(e) le 30 juillet 2007 Auteur Posté(e) le 30 juillet 2007 Merci beaucoup Gile ça fonctionne, c'était pour éviter de refaire les cartouches, ils sont tous en textes maintenant et il n'y aura plus de différence entre eux. en cliquant simplement sur un texte ou changer un caractère tout venait en majuscule ??? c'était génant en final de l'uniformisation des cartouches. @+ Michel a
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