Gege Posté(e) le 25 janvier 2021 Posté(e) le 25 janvier 2021 Bonjour, Je me permets de vous solliciter, Voila j'essaie de dynamiser le bureau avec des blocs dynamiques. J'ai créer par conséquent par mal de bloc dynamqiues. Ces éléments sont ensuite envoyés à des clients. Je fais donc la fonction burst. Mais malheureusement les attributs se transforme en caractère spéciaux. J'ai donc essayé d'introduire une LISP qu'une personne à déposé sur internet mais rien y fait. Pouvez-vous me donner un conseil ou une solution à ce problème ? Je vous joins le DWG d'origine (Non bursté) ==> faite la fonction Busrt ==> et théorie vous verrez des caractères spéciaux une fois cette fonction faite. Merci par avance pour vos retour.
lecrabe Posté(e) le 25 janvier 2021 Posté(e) le 25 janvier 2021 Hello SVP ton DWG dans un lien Download : Free, WETransfert, etc ... LA SANTE, Bonne Annee, Bye, lecrabe Autodesk Expert Elite Team
Gege Posté(e) le 25 janvier 2021 Auteur Posté(e) le 25 janvier 2021 Hello SVP ton DWG dans un lien Download : Free, WETransfert, etc ... LA SANTE, Bonne Annee, Bye, lecrabe Je vous communique le lien : https://we.tl/t-BR6b4NDg1K Merci
lecrabe Posté(e) le 25 janvier 2021 Posté(e) le 25 janvier 2021 Hello Pas sur de bien comprendre ton probleme ! J'ai utilise un tres vieux Lisp ATT2TXT pour traiter tes Blocs dynamiques et obtenir en TEXTs les attributs classiques de tes Blocs ! En plus ces TEXTs arrivent sur de multiples calques dependants du Nom du bloc et du Nom d Etiquette des attributs ... Cela t'aidera peut etre !? CONSEIL : SVP AUCUN caractere special ou accentue ou blanc/espace dans le Nom d Etiquette des attributs ! LA SANTE, Bye, lecrabe ;; ;; Programme developpe par Hubert L. pour Patrice B. ;; ;; Routine: Att2Txt par HL - Blocs classiques ONLY ! ;; ;; ;; Micro-modifs par PB le 16/06/2000 + 19/06/2000 ;; Noms de calques generes : "ATT__VAR__*" & "ATT__CON__*" ;; (defun c:Att2Txt ( / CTENT ENT PTYPE GE PNOM PA ATTNAME ATTETIQ ATTVAL ATTHAU ATTROT OTHER_NAME OTHER_LIST EN1 LIST_ATT POINT_ATT ATTX ATTY INSATT ) (command "_UNDO" "_M") (att_bl_list) (princ "\n") (princ CTENT) (command "_layer" "_set" "0" "") ;; **** Eventuellement commentez les lignes suivantes *** (ALERT "Attributs copies en Textes sur calques ' ATT__CON__* / ATT__VAR__* ' \n Textes crees au point d'insertion des attributs \n Retour au calque 0 ") ;; **** Eventuellement commentez la ligne suivante *** (alert (strcat "Nombre de bloc traites = " (itoa ctent))) ) (defun att_bl_list () (ssget) (setvar "cmdecho" 0) (setvar "highlight" 0) (setq ent (ssget "P" (list (cons 0 "INSERT")))) (setq ctent 0) (if ent (progn (while (< ctent (sslength ent)) (setq selent (ssname ent ctent)) (xlist) (setq ctent (1+ ctent)) ) ) (prompt "\nRIEN A LISTER") ) (setvar "highlight" 1) (setvar "cmdecho" 1) (princ) ) (defun xlist () (setq ptype nil) (setq ge (entget selent)) (setq pnom (cdr (assoc 2 ge))) (setq pa selent attname "VERTEX") (bl_def) ;(princ pnom) (if (= 1 (cdr (assoc 66 ge))) ;entite suit (while (/= attname "SEQEND") (setq pa (entnext pa)) (if pa (progn (setq attname (cdr (assoc 0 (entget pa)))) (setq attetiq (cdr (assoc 2 (entget pa)))) ;; ATTPLACE ci-dessous = Point d'insertion de l' ATTRIBUT (setq attplace (cdr (assoc 10 (entget pa)))) (setq attval (cdr (assoc 1 (entget pa)))) (setq atthau (cdr (assoc 40 (entget pa)))) ;; ATTPLACE ci-dessous = Point d'insertion du BLOC ;; (setq attplace (cdr (assoc 10 ge))) ;; Hauteur du texte MICROSCOPIQUE et non pas hauteur de l'attribut ;; (setq atthau 0.001) ;; Fin Modification (setq attrot (cdr (assoc 50 (entget pa)))) (if (= attname "ATTRIB") (progn ;(princ attval)(princ "\n") ;; (command "_layer" "_m" (strcat "ATT__CON__" attetiq) "") (command "_layer" "_m" (strcat "ATT__VAR__" attetiq) "") (command "_text" attplace atthau (/ (* 180 attrot) pi) attval) ) ) ;fin de if attrib ) ;fin de progn pa (= attname "SEQEND") ) ;fin de if pa ) ;fin de while ) ; fin de if "entite suit" ) (defun bl_def() (setq other_name nil) (setq other_list nil) (setq en1 nil) ;(setq list_att xbetiq2) (setq en1 (cdr (assoc '-2 (tblsearch "block" pnom)))) (while (/= nil en1) (if (and (= "ATTDEF" (cdr (assoc '0 (entget en1)))) (or (= 2 (cdr (assoc '70 (entget en1)))) (= 3 (cdr (assoc '70 (entget en1)))) ) ) (progn (setvar "lastpoint" (cdr (assoc '10 ge))) (setq pointatt (cdr (assoc '10 (entget en1)))) (setq attx (car pointatt)) (setq atty (cadr pointatt)) (setq insatt (strcat "@" (rtos attx) "," (rtos atty))) ;; (command "_layer" "_m" (strcat "ATT__CON__" (cdr (assoc '2 (entget en1)))) "") (command "_layer" "_m" (strcat "ATT__CON__" (cdr (assoc '2 (entget en1)))) "") (command "_text" (cdr (assoc '10 ge)) (cdr (assoc '40 (entget en1))) "0" (cdr (assoc '1 (entget en1)))) ) ) (setq en1 (entnext en1)) ) ;fin de while 1 (princ) ) (princ "\nTapez ==> ATT2TXT ") (princ) ;; (princ "\nPour une selection partielle: Utiliser FILTER auparavant ") (princ) Autodesk Expert Elite Team
Gege Posté(e) le 25 janvier 2021 Auteur Posté(e) le 25 janvier 2021 Re, En gos mon problème c'est : J'utilise la fonction burst sur mes bloc Dynamiques, une fois burster j'enregistre le plan. je quitte autocad et ouvre à nouveau ce dernier. Et quand je regarde mes blocs dynamiques les caractères spéciaux apparaissent. Pour info Je n'ai pas mis d'espace entre les attributs cela donne : 20x50ht avant burst et ##x##ht après burst. j'espère avoir été plus clair. Pour la routine LISP que vous m'avez passé je prend tout le texte ou je ne prend pas ce début :;; ;; Programme developpe par Hubert L. pour Patrice B.;; ;; Routine: Att2Txt par HL - Blocs classiques ONLY !;; ;; ;; Micro-modifs par PB le 16/06/2000 + 19/06/2000;; Noms de calques generes : "ATT__VAR__*" & "ATT__CON__*" Merci par avance
Gege Posté(e) le 25 janvier 2021 Auteur Posté(e) le 25 janvier 2021 Et si je peux encore plus vous éclairez voici un lien d'autodesk expliquant les problèmes rencontrés : https://knowledge.autodesk.com/fr/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/FRA/Bursting-a-dynamic-block-with-text-attributes-in-AutoCAD-transforms-those-attributes-into-special-characters.html Merci à tous pour vos retours afin de pouvoir m'aider.
lecrabe Posté(e) le 25 janvier 2021 Posté(e) le 25 janvier 2021 Hello Tout ce qui commence par ;C du commentaire !Donc tu peux inclure dans ton copier / coller vers ton futur fichier texte ATT2TXT.lsp Désolé plus de AutoCAD sous la main à cet instant ! SVP tu es avec quelle version 20XX de AutoCAD ?? Si AutoCAD 2021, SVP tu re-essayes avec LISPSYS = 0 (Juste pour voir) LA SANTE, Bye, lecrabe Autodesk Expert Elite Team
Steven Posté(e) le 25 janvier 2021 Posté(e) le 25 janvier 2021 Bonjour, Je me permets de vous solliciter, Voila j'essaie de dynamiser le bureau avec des blocs dynamiques. J'ai créer par conséquent par mal de bloc dynamqiues. Ces éléments sont ensuite envoyés à des clients. Je fais donc la fonction burst. Mais malheureusement les attributs se transforme en caractère spéciaux. J'ai donc essayé d'introduire une LISP qu'une personne à déposé sur internet mais rien y fait. Pouvez-vous me donner un conseil ou une solution à ce problème ? Je vous joins le DWG d'origine (Non bursté) ==> faite la fonction Busrt ==> et théorie vous verrez des caractères spéciaux une fois cette fonction faite. Merci par avance pour vos retour. Salut, Ça fonctionne très bien de mon côté. Que veux-tu dire par caractères spéciaux?Peux-tu joindre un fichiers avec lesdits caractères spéciaux après la commande BURST? Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
Fraid Posté(e) le 25 janvier 2021 Posté(e) le 25 janvier 2021 Bonjour, Peut etre des champs dans les attributs? https://github.com/Fraiddd
eklundh80 Posté(e) le 26 janvier 2021 Posté(e) le 26 janvier 2021 Bonjour, Et en utilisant le lisp de Lee Mac Nburst? 1
Gege Posté(e) le 26 janvier 2021 Auteur Posté(e) le 26 janvier 2021 Bonjour, Et en utilisant le lisp de Lee Mac Nburst? J'ai utilisé le Lisp de Lee Mac et malgré tout les caractères spéciaux sont de nouveau apparus : Méthode : 1. J'ai pris les éléments en question.2. Je fais la fonction Burst NBurst Ou PBursT3. J'enregistre et quitte le dessin.4. J'ouvre le dessin et je refais par exemple un coup de sauvegarde et je perds les informations.
Gege Posté(e) le 26 janvier 2021 Auteur Posté(e) le 26 janvier 2021 Salut, Ça fonctionne très bien de mon côté. Que veux-tu dire par caractères spéciaux?Peux-tu joindre un fichiers avec lesdits caractères spéciaux après la commande BURST? Bonjour Merci pour votre retour. Je vous joins le DWG avec les caractères spéciaux.je vous transmets également le DWG initial via ce lien : https://we.tl/t-BR6b4NDg1KMéthode qui à fait que j'ai des caractères spéciaux :1. Burst version initial2. sauvegarde et quitter3. ouvrir le dessin puis sauvegarder. Et j'ai remarqué que les caractères spéciaux (##x##ht) correspondent à des attributs qui n'apparaissent pas sur le bloc dynamqiue mais sur des éléments cachés dans ce blocs dyn. La hauteur par exemple ne figure pas sur le dessin car on travail en 2D mais dans la table des propriétés sur autocad on rentre la valeur de la hauteur pour que le dessin mette à jour la valeur demandée. La fonction Burst pour moi supprime les éléments cachés du bloc dynamiques donc à mon avis c'est pour ça que les "#" apparaissent. J'espère avoir été plus clair dans mes information et merci encore de votre aide.
Maxime063 Posté(e) le 27 janvier 2021 Posté(e) le 27 janvier 2021 Bonjour, De mon point de vue, tu devrait aussi décomposer ton texte après la fonction burst. Car le texte est en lien avec l'objet dans le bloc, en le décomposant il perd l'association est donc affiche une erreur.
Gege Posté(e) le 27 janvier 2021 Auteur Posté(e) le 27 janvier 2021 Bonjour, De mon point de vue, tu devrait aussi décomposer ton texte après la fonction burst. Car le texte est en lien avec l'objet dans le bloc, en le décomposant il perd l'association est donc affiche une erreur. Bonjour merci pour votre retour. En effet quand je fais la fonction Burst puis la fonction décomposer je conserve le texte. Pensez-vous qu'il ai une solution par exemple avec une routine ou un LISP pour faire ces deux fonctions en une ? Merci
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