Aller au contenu

Supprimer des attributs sur un ensemble de bloc (répertoire)


Messages recommandés

Posté(e)

Bonjour,

 

Je recherche un lisp, du type du Edit_bloc_rep de Gil, pour supprimer 1 ou 2 attributs dans des blocs (suivant le type de bloc), mais sans ouvrire chaque bloc.

 

Une etiquette à toujours le même nom. (du type invisible)

Pour l'autre elle peut avoir 4 noms differents (ex: CV SA CH) (du type invisible)

 

Les 2 étiquettes ne sont pas toujours dans les blocs, et il y a d'autre étiquette (1 ou 2) à ne pas supprimer.

Posté(e)

Personne ?

Salut

 

Dans le dessin courant, rien de plus simple, mais pour les autres dessins que l'on ouvre avec ObjectDbx (si j'ai bien compris la question), le problème est la synchro.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bonjour Patrick,

Tu as bien compris, mais j'ai pas forcement un problème de synchro.

 

Si j'utilise les blocs dans un nouveau dessin, je n'aurais pas de problème ?

En fait le problème, est que allons peut-être diffuser notre bibliothéque au niveau "national", et dans le bloc figure l'ancien nom de notre agence. (sa fait pas pro :))

Posté(e)

Hello

 

Je pense qu'un Script (FILEDIA=0) avec le Lisp/VLisp qui va bien :

 

_OPEN DWG1

Progr_Lisp

puis un ATTSYNC ...

_SAVEAS

et on boucle

 

C la meilleure solution ...

 

lecrabe

Autodesk Expert Elite Team

Posté(e)

Bonjour,

 

J'ai l'impression qu'il y a une confusion sur ce que tu appelles des blocs.

Ne s'agit-il pas plutôt d'une bibliothèque constituée d'un simple répertoire contenant un tas de fichiers dwg (destinés à être insérés en tant que bloc) ? :unsure:

 

Si c'est bien ça, il faudrait donc simplement supprimer les définitions d'attributs, sans besoin de synchroniser.

Posté(e)

Effectivement Bryce,

Je viens de verifier (c'est pas ma biblio à la base, je suis la depuis qq mois), et lorsque que je fais glisser le dwg depuis l'explorateur dans AutoCAD, il ne propose pas d'ouvrir l'éditeur de bloc.

Je me retrouve avec un "dessin" et des attributs.

Cela me semble deja plus facile.

Mais l'idée d'un Script me semble pas adaptée. Il y à 984 dwg !

Je reviens donc sur la sitation de Patrick et ObjectDbx (que je ne métrise pas)ou alors "bricoler le lisp de Gil"

Posté(e)

Si tu veux tester en script, tu peux télécharger et décompresser Sequence:

https://www.box.com/s/d6kzzmt5y50pkutsqc9w

 

Ensuite tu le lances, dans l'onglet Options tu indiques le chemin vers l'exécutable AutoCAD (acad.exe).

 

Dans le 1er onglet, tu définis la liste des fichiers à traiter (je ne sais pas s'il est raisonnable d'en faire 1000 d'un coup, mais tu peux tenter).

 

Dans le 2e onglet, tu colles le code ci-dessous dans la partie centrale (commandes à appliquer à chaque fichier):

(setq tags "CV,SA,CH")
(if (setq ss (ssget "_X" (list (cons 0 "ATTDEF") (cons 2 tags))))
 (progn
   (repeat (setq i (sslength ss))
     (entdel (ssname ss (setq i (1- i))))
   )
 )
)

La 1ère ligne est à modifier pour définir les étiquettes d'attribut à effacer.

 

Dans le 3e onglet, tu cliques sur le bouton Lancer, et tu admires... B)

 

J'ai fait un test sur une grosse liste de 4 fichiers, ça a fonctionné. :P

Posté(e)

Bonjour Bryce,

Pas mal ton appli, elle me donne même qque idée...

 

J'ai juste un problème, car il ne ferme pas le premier dessin, et donc ne passe pas au suivant.

Voila le message depuis le lancement

Commande: (setq tags "NOM,PB")
"NOM,PB"

Commande: (if (setq ss (ssget "_X" (list (cons 0 "ATTDEF") (cons 2 tags))))
(_> (progn
((_>    (repeat (setq i (sslength ss))
(((_>    (entdel (ssname ss (setq i (1- i))))
(((_>     )
((_>   )
(_> ) _.qsave
nil

Commande: _.close
Voulez-vous vraiment ignorer les modifications du dessin? <N> _.open
Oui ou Non, s'il vous plaît.
Voulez-vous vraiment ignorer les modifications du dessin? <N> *Annuler*

:

(cest moi qui annule la commande)

J'ai comparé avec ton script purger_tout, lui fonction bien sur ma liste, ouvre et ferme.

 

Voila mon fichier script

<preproc>
</preproc>
<proc>(setq tags "NOM,PB")
(if (setq ss (ssget "_X" (list (cons 0 "ATTDEF") (cons 2 tags))))
(progn
  (repeat (setq i (sslength ss))
  (entdel (ssname ss (setq i (1- i))))
   )
 )
)
</proc>
<postproc>
</postproc>
<autoopen>True</autoopen>
<autosave>True</autosave>
<diesel>False</diesel>

Posté(e) (modifié)

Bonjour,

 

Dans le 2e onglet, dans la partie centrale (commandes à appliquer à chaque fichier), vérifie s'il n'y a pas une ligne vide à la fin, après la dernière parenthèse.

Si c'est le cas, supprime-la.

 

Le fichier .seq devrait être comme ceci (je viens de voir qu'un saut de ligne gênant est ajouté à l'export):

<preproc></preproc>
<proc>(setq tags "NOM,PB")
(if (setq ss (ssget "_X" (list (cons 0 "ATTDEF") (cons 2 tags))))
(progn
  (repeat (setq i (sslength ss))
  (entdel (ssname ss (setq i (1- i))))
   )
 )
)</proc>
<postproc></postproc>
<autoopen>True</autoopen>
<autosave>True</autosave>
<diesel>False</diesel>

 

Edit: j'ai mis en ligne une version corrigée de Sequence.

Modifié par bryce
Posté(e)

Bonjour Bryce,

Ok c'est bon.

Juste à la fin du traitement de tous les fichiers, Acad ouvre l'aide.

Peut-être du à mon AutoCAD, (MEP 2011) ?

C'est une bonne application, qui me donne d'autre idée de traitement par lot de fichier (nettoyage de plan,...)

 

Merci encore pour ton aide.

Posté(e)

Bonjour,

 

Tu as peut-être une ligne vide qui traîne dans la partie "Commandes finales", dans le 2e onglet.

 

Tu as lancé le script sur les 900 fichiers d'un coup ?

Bonjour Bryce,

Effectivement, j'ai une ligne vide, mais j'exporte le fichier, et le corrige avec l'éditeur de texte.

 

Je n'ai pas encore fait la manip sur l'ensemble des fichiers, car il faut que je consulte les collègues.

Et chance pour moi, les fichiers sont repartis sur 6 répertoires.

 

Mais j’ai profité de ton appli pour faire un lisp qui remplace 2 types de ligne dans les plans.

Le programme remplace la ligne TOTO par Axes et TITI par cache (Toto et Titi sont des exemples), afin d’avoir une correspondance avec acadiso.

La sélection se fait dans un plan type, le programme génère un lisp, et ensuite je l’utilise dans ton appli.

 

J’ai juste une question, ton appli ne pourrait-elle pas ignorer les commentaires dans le lisp (ceux sur une ligne, ou en fin de ligne) ?

Posté(e)

Bonjour,

Effectivement, j'ai une ligne vide, mais j'exporte le fichier, et le corrige avec l'éditeur de texte.

Ca devrait être corrigé si tu retélécharges la version la plus récente. ;)

 

J’ai juste une question, ton appli ne pourrait-elle pas ignorer les commentaires dans le lisp (ceux sur une ligne, ou en fin de ligne) ?

Ca peut se faire, c'est même une bonne idée.

Je suis en déplacement, je verrai ça en fin de semaine.

Posté(e)

Bonjour Bryce,

 

Je reviens sur un probleme avec Autocad MEP 2011:

 

A chaque ouverture d'un dessin il lance l'aide d'autocad:

Copy de la fenêtre texte:

 

Commande: (setq v1 (ssget "_X" '((0 . "ATTDEF"))))
<Selection set: 4>

Commande:  _HELP
Commande: (setq v2 0)
0

Commande:  AIDE
Commande: (if (/= v1 nil)
(_>  (while (< v2 (sslength v1))
((_>   (setq name (ssname v1 v2))
((_>   (setq entite (entget name))

 

Et le debut du fichier seq:

(command "-style" "SNC" "ARIAL" "" "" "" "" "")
(setq v1 (ssget "_X" '((0 . "ATTDEF"))))
(setq v2 0)
(if (/= v1 nil)
(while (< v2 (sslength v1))
 (setq name (ssname v1 v2))
 (setq entite (entget name)) 
(setq pt1 (cdr(assoc 2 entite)))
(setq lancien (assoc 7 entite))
(setq ancien (cdr lancien))
(if (= ancien "AS")

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é