Aller au contenu

Exploser tous les blocs


Begood

Messages recommandés

Bonjour à tous,

Je reviens vers vous pour faire appel à votre expertise afin de peaufiner une routine.

Elle permet de décomposer tous les blocs y compris ceux imbriqués.

 

(defun c:exp (/ bSet)
(command "-calque" "d" "*"); déverrouille tous les calques
(command); stoppe la commande -calque
 (setvar "qaflags" 1)
 (while(setq bSet(ssget "_x" '((0 . "insert"))))
   (command "_.explode" bSet "")
   ); end while
 (setvar "qaflags" 0)
(princ "\n==> Tous les blocs ont été explosés.")
(princ)
); end of c:exp

 

Le problème c'est qu'elle plante si le dessin contient :

  • des calques verrouillés
  • des xrefs
  • des blocs non décomposables
  • etc

 

J'ai donc rajouté les lignes 2 et 3 qui permettent de déverrouiller tous les calques.

 

Est-ce qu'il serait possible de la modifier en intégrant la procédure suivant :

(si ça demande trop de boulot, laissez tomber)

 

  1. Déverrouiller tous les calques
  2. Insérer (et non lier) les xrefs s'il y en a
  3. Rendre les blocs non décomposables décomposables
  4. Décomposer tous les blocs en convertissant les attributs en texte jusqu'à ce qu'il n'y ai plus de bloc
  5. Stopper la routine si elle rencontre un obstacle

 

Merci d'avance.

David.

Lien vers le commentaire
Partager sur d’autres sites

Je ne vois pas l’enterrais de décomposer des blocs sauf si tes blocs sont uniques

Par défaut ton plan deviendra plus lourd et toute demande de modification par la suite deviendra plus longue

(voir des informations peuvent être perdus : D’attribut , xdata,claque 0,claque du bloc, etc)

Si c’est un problème de couleur fait une recherche tu à plein de post sur le sujet

voir de bon lisp type edit-bloc de gille

Lien vers le commentaire
Partager sur d’autres sites

Si j'ai pris la peine de poster cette demande c'est qu'il y a un intérêt.

Ceux qui font du nettoyage de plans comprendront.

 

Un exemple : réunir tous les niveaux d'un même batiment sur le même fichier. Selon l'archi et la provenance du fichier les blocs posent problème à cause d'un nom commun pour des blocs différents.

Lien vers le commentaire
Partager sur d’autres sites

Arf, une réponse en même que la mienne.

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.

Lien vers le commentaire
Partager sur d’autres sites

Si j'ai pris la peine de poster cette demande c'est qu'il y a un intérêt.

Ceux qui font du nettoyage de plans comprendront.

 

Un exemple : réunir tous les niveaux d'un même batiment sur le même fichier. Selon l'archi et la provenance du fichier les blocs posent problème à cause d'un nom commun pour des blocs différents.

 

Salut,

 

Pourquoi ne pas utiliser les Xref, plutôt que de réunir tous les niveaux sur un seul dessin qui risque de créer un dessin extrêmement lourd?

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.

Lien vers le commentaire
Partager sur d’autres sites

Re,

Attention au bloc nommer de la même manier

exemple « flèche »

tu peu avoir une définition différente d’un plan à l’autre, tu change

facilement la montée d’un escalier sans même le voir

 

Question : pour les indices tu les gère comment (mise à jour archi et tes réseaux) c’est tout ou rien ?

Lien vers le commentaire
Partager sur d’autres sites

Re,

Attention au bloc nommer de la même manier

exemple « flèche »

tu peu avoir une définition différente d’un plan à l’autre, tu change

facilement la montée d’un escalier sans même le voir

 

Question : pour les indices tu les gère comment (mise à jour archi et tes réseaux) c’est tout ou rien ?

 

D’où l'intérêt de décomposer les blocs.

 

Tu parles des mises à jour archi ? Je bosse sur les plans EXE, à partir de là il y a rarement de nouveaux indices. Si c'est le cas je reporte les modifs me concernant sur mon fichier.

 

Pas de réseaux pour moi, je ne suis pas dans le CVC mais dans les menuiseries extérieures.

Lien vers le commentaire
Partager sur d’autres sites

En tant que modérateur, je souhaite demander à chacun de ne pas remettre en question les demandes de nos amis si vous n'avez pas d'éléments de réponse qui collent au moins un peu.

Merci.

 

Il y a du travail Begood.

Pour dire pro tout de suite, il y a les blocs dans les blocs, alors à l'explosion tu retrouves des blocs !

Mais combien de fois ?

Philosophiquement il y a déjà de quoi discuter.

J'ai vu que tu comptais sur un while pour exploser jusqu'à plus soif. Ca marchera ...

 

Pour le déverrouillage, je ne sais pas encore.

Pour le point 4, il y a BURST. Si tu ne parviens pas à le placer dans ton process, il faudra le ré-écrire... le DXF 66 dit si il y a attribut à suivre.

Mais à mon avis, tu passeras au Vlisp...

 

Dernier point; je suis certain qu'il existe des routines approchant tes besoins ou utiles à démarrer. Si on en trouve à adapter, promis, j'aide si je suis là. Mais justement je m'en vais demain et ne trouverais pas le temps de faire un squelette, qui sera balayé par mieux rapidement... Si des confrères nous aident à retrouver ce qui existe déjà...

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Un truc vite fait utilisant le lisp burst des express tools

(defun c:expa(/ js ok to1 to2)
 (setq ok T)
 (while (and (setq js (ssget "x" (list (cons 0 "insert")))) ok)
   (setq to1 (sslength js))
   (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "burst _all \n")
   (if (= to1 to2)
     (setq ok nil)
     (setq to2 to1)
   )
 )
)

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse Tramber.

 

Dans l'état la routine avec le while fonctionne mais il arrive qu'elle plante selon les éléments présents dans le dessin.

 

Pour le déverrouillage ça roule, les 2 lignes que j'ai rajouté font le boulot.

C'est effectivement BURST que j'utilise actuellement, pour faire simple CTRL A et puis BURST et ça décompose tous les blocs tout en conservant les valeurs d'attribut sous forme de texte.

 

L'idéal serait de pouvoir placer BURST dans un while mais je ne sais pas si c'est possible.

Je rappelle que je suis novice, je ne connais rien à la programmation lisp.

 

Pour les routines existantes, j'ai cherché, j'en ai trouvé et testé pas mal mais je n'ai jamais trouvé le saint graal à part celle que j'ai posté ici, selon les dessins elle tourne impec.

Lien vers le commentaire
Partager sur d’autres sites

Je viens de tester ta routine Patrick_35, elle décompose bien les blocs du premier niveau en gardant les valeurs d'attribut mais elle ne tourne pas en boucle.

 

J'ai du mal à interpréter le code, si je comprends bien il s'agit d'une partie de la routine finale ?

Cette portion permet d'exécuter BURST uniquement ?

Lien vers le commentaire
Partager sur d’autres sites

Tu as une boucle pour décomposer les blocs.

 

Le problème se pose sur des blocs qui ne peuvent pas être décomposé, donc une condition de sortie en testant si le nombre de blocs sélectionnés correspondent au nombre de blocs sélectionnés lors de la précédente sélection (sinon, tu as une boucle infinie).

 

Tu peux y ajouter de déverrouillage des calques, in-deco proposé par sbosarl, lier lex xrefs, etc... (avant la décomposition globale)

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

Tu as une boucle pour décomposer les blocs.

 

Le problème se pose sur des blocs qui ne peuvent pas être décomposé, donc une condition de sortie en testant si le nombre de blocs sélectionnés correspondent au nombre de blocs sélectionnés lors de la précédente sélection (sinon, tu as une boucle infinie).

 

Tu peux y ajouter de déverrouillage des calques, in-deco proposé par sbosarl, lier lex xrefs, etc... (avant la décomposition globale)

 

@+

 

Je viens de re-tester, la boucle ne se fait pas.

Lien vers le commentaire
Partager sur d’autres sites

Et le while dans le lisp sert a faire bonne figure ?

 

@+

 

Quand la routine s'arrête et que j'ai à nouveau la main il reste des blocs dans le dessin.

On est d'accord, j'utilise ta routine seule, elle n'est pas prévue pour être ajoutée à celle que j'ai posté au début ?

Lien vers le commentaire
Partager sur d’autres sites

Hello Les Jeunots

 

Et si tu essayais cette routine EXPLODEALL !?

https://sites.google.com/site/cadkits/home/explodeall

 

SVP tu nous raconteras ...

 

Bye, lecrabe

 

 

J'ai envoyée la demande de code d'enregistrement.

Je vous tiens au courant.

J'ai trouvé une autre petite perle sur ce site : ALTEXT

Si ça fonctionne le repérage va être vite fait à l'avenir !

Je vous tient au courant.

Lien vers le commentaire
Partager sur d’autres sites

Quand la routine s'arrête et que j'ai à nouveau la main il reste des blocs dans le dessin.

On est d'accord, j'utilise ta routine seule, elle n'est pas prévue pour être ajoutée à celle que j'ai posté au début ?

Salut

 

1) Un xref est un bloc dans le dessin. Il faut donc le lier auparavant.

2) Tu peux avoir des blocs indécomposable. Utilises la routine in-deco.lsp

3) Attention aux calques verrouillés / gelées.

4) Utiliser la boucle que je t'ai donné utilisant burst des express

5) S'il reste des blocs.

a ) Essayer de les décomposer manuellement

b ) Si c'est toujours des blocs, essayer de comprendre pourquoi ils ne se décomposent pas et adapter le lisp en conséquence.

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

J'aimerais bien me mettre au lisp sérieusement mais je n'ai que très peu de notions de programmation (web design uniquement) et manque de temps aussi.

Rien que pour combiner plusieurs routines existantes afin d'obtenir le résultat dont j'ai besoin, je galère... Je ne connais pas la syntaxe ni l'architecture d'un lisp.

C'est pour ça que je fais appel à vos compétences.

 

Comme cela a déjà été dit, inutile de refaire ce qui a déjà été fait.

J'ai donc testé EXPLODEALL.VLX qui correspond parfaitement à mes besoins.

 

Le problème c'est que cette routine nécessite une activation sous peine de devoir supporter une dizaine de fenêtres popup...

J'ai donc fait la demande d'un code d'activation, je l'ai reçu mais il n'est valide que pour mon poste et seulement pour l'année 2016. Pour 2017 il faut envoyer une carte postale en Australie... je vous passe les détails.

Perso je pense que l'éditeur ferait mieux de vendre son programme sur Autocad Exchange que d'en passer par ces procédures douteuses.

 

Du coup EXPLODEALL.VLX est pour l'instant activée et fonctionne parfaitement, pour un temps... Mais je cherche encore une alternative que je pourrais installer sur le poste de mes collègues.

 

J'en ai profité pour essayer ALTEXT.VLX, pouvoir incrémenter des attributs de bloc dynamique était pour moi une chose inespérée. Le programme fonctionne mais son utilisation est compliquée et pas très logique à mon avis.

 

Après quelques recherches et plusieurs tests je suis tombé sur "Increment" de Gilles, d'abord le lisp puis la version plus élaborée sur Autocad Exchange.

Je salue le travail de Gilles sur ce programme qui va bien au-delà de tout ce que j'ai pu tester, il fonctionne à merveille, en français et gratuit, merci.

Lien vers le commentaire
Partager sur d’autres sites

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é