Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

J'ai récupéré un fichier vraiment ignoble, je pose pas la question de comment ils ont réussi (car ça doit etre des scripts) mais je me retouve avec des bloc ou autocad voit des attributs mais quand on édite le bloc il n'y en a pas...

Pensez vous qu'il soit possible de faire un blocreplace (ou riblock) pour afficher un des attributs? Ou comment les ré-intégrer dans le bloc initial?

image.thumb.png.d4323fd59dd24dd747eb66fcc4bc5c38.png

Un fichier exemple, en cas de besoin, mais bon j'y crois guere avec mes 1900 blocks dont 500 comme cela/

bloc attribut farfelu.dwg

Merci d'avance

Cordialement

Posté(e)

Coucou,

Nan c'est un bug AutoCAD...J'ai déjà eu ce soucis auparavant ^^"
En clair cela peut arriver lorsque tu supprimes tous les attributs de ton bloc, mais comme tu as des références de bloc insérées dans le dessin et qu'il faut toujours faire un ATTSYNC sur les références de blocs si on modifie les définitions d'attribut...bah ATTSYNC refuse de fonctionner car la définition de bloc ne possède plus d'attributs ! Donc en clair ton bloc ne devrait pas posséder d'attributs mais comme ATTSYNC ne fonctionne pas sur ces blocs, c'est un peu complexe...

Si tu as un AutoCAD full (pas LT), tu peux essayer ce programme (j'ai testé sur ton .dwg et cela fonctionne parfaitement !) :

(defun c:FixBadAttBlocks ( / gettags bkc bln doc lst tmp )
  (defun gettags ( def / rtn )
    (vlax-for obj def
      (if (= "AcDbAttributeDefinition" (vla-get-objectname obj))
        (setq rtn (cons (strcase (vla-get-tagstring obj)) rtn))
      )
    )
    rtn
  )
  
  (vl-load-com)
  
  (setq
    doc (vla-get-activedocument (vlax-get-acad-object))
    bkc (vla-get-blocks doc)
  )
  (vlax-for blk bkc
    (if (= :vlax-false (vla-get-isxref blk))
      (vlax-for obj blk
        (if
          (and
            (= "AcDbBlockReference" (vla-get-objectname obj))
            (= :vlax-true (vla-get-hasattributes obj))
            (or
              (setq tmp (assoc (setq bln (vla-get-name obj)) lst))
              (and
                (setq tmp (cons bln (gettags (vla-item bkc bln))))
                (setq lst (cons tmp lst))
              )
            )
          )
          (foreach att (vlax-invoke obj 'getattributes)
            (or
              (member (strcase (vla-get-tagstring att)) (cdr tmp))
              (and
                (vlax-write-enabled-p att)
                (vla-delete att)
              )
            )
          )
        )
      )
    )
  )
  (vla-regen doc acallviewports)
  (princ)
)

Je l'ai récupéré sur ce fil de discussion >>ici<< donc je suppose que l'auteur est BeekeeCZ mais @lecrabe a peut-être plus d'infos s'il possède ce programme dans sa bibliothèque de 3001 routines 😉

Bisous,
Luna

Posté(e)

bonjour Luna, 

Merci beaucoup

Sur le fichier entier ça fait bugger et fermer mon autocad. Et sur le fichier joint cela supprime les attributs, c'est cela? L'idée c'est de les garder et ré-utiliser 😁

J'ai essayé de créer un nouveau attribut et de synchroniser, cela marche sur INSEE mais pas sur IDENT. Savez vous pourquoi il est en rouge d'ailleurs?

image.thumb.png.6e0a1fea1fa718ffc47963f94d132448.png

 

Merci d'avance

cdlt

Posté(e)

Alors vui, le programme permet uniquement de corriger les références de blocs qui ne sont pas bonnes, par contre je ne vois absolument pas comment faire l'inverse :
corriger les définitions de blocs qui ne correspondent pas à leur références !

Pour moi les attributs en rouges signifie qu'ils sont en doublon (voire plus) dans la définition de bloc (enfin du moins qu'il y a plusieurs attributs d'une même définition de bloc qui possèdent la même étiquette)...

Bisous,
Luna

Posté(e)
Il y a 13 heures, yann69690 a dit :

Luna,

Merci, en doublons, je vais essayer de créer un doublon d'attribue, sans grande conviction...

Merci beaucoup

Bonjour,

Je confirme pour ceux qui sont dans le même problème, il suffit de éditer le bloc, ajouter les attributs que l'on souhaite garder (ici il en avait en double donc créer aussi les attributs en double) + AttSyn => et c'est bon...

Pour ceux qui souhaite après _blocreplace ou RIBLOCK (https://www.cadstudio.cz/en/download.asp?file=RIblock ) pour remplacer et ré-attribuer les attributs...

La version ++, serait d'automatiser cela avec SAS superAutoScript mais il ne faut pas pousser trop loin 🙂 (pensez vous que on peut editer un bloc avec SAS) 

Bonne journée

Merci Luna, sans toi je n'aurai vraiment pas trouver la solution

 

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é