Begood Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 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ésdes xrefsdes blocs non décomposablesetc 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) Déverrouiller tous les calquesInsérer (et non lier) les xrefs s'il y en aRendre les blocs non décomposables décomposablesDécomposer tous les blocs en convertissant les attributs en texte jusqu'à ce qu'il n'y ai plus de blocStopper la routine si elle rencontre un obstacle Merci d'avance.David.
sbosarl Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 Je ne vois pas l’enterrais de décomposer des blocs sauf si tes blocs sont uniquesPar 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
Begood Posté(e) le 30 juin 2016 Auteur Posté(e) le 30 juin 2016 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.
Steven Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 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.
Steven Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 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.
Begood Posté(e) le 30 juin 2016 Auteur Posté(e) le 30 juin 2016 J'ai horreur des xrefs...Et après nettoyage le fichier n'est pas si lourd que ça, par exemple aujourd'hui je bosse sur un fichier avec 12 niveaux et il ne fait que 3mo.
sbosarl Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 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 ?
Begood Posté(e) le 30 juin 2016 Auteur Posté(e) le 30 juin 2016 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.
Tramber Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 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 ./__\. (.°=°.)
Patrick_35 Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Begood Posté(e) le 30 juin 2016 Auteur Posté(e) le 30 juin 2016 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.
sbosarl Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 re,(peu être pas les originaux)calqueverou.lsp de gile in-deco.lsp de pascal_35calqueverou.lspin-deco.lsp
Begood Posté(e) le 30 juin 2016 Auteur Posté(e) le 30 juin 2016 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 ?
Patrick_35 Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Begood Posté(e) le 30 juin 2016 Auteur Posté(e) le 30 juin 2016 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.
Patrick_35 Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 Et le while dans le lisp sert a faire bonne figure ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Begood Posté(e) le 30 juin 2016 Auteur Posté(e) le 30 juin 2016 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 ?
lecrabe Posté(e) le 30 juin 2016 Posté(e) le 30 juin 2016 Hello Les Jeunots Et si tu essayais cette routine EXPLODEALL !?https://sites.google.com/site/cadkits/home/explodeall SVP tu nous raconteras ... Bye, lecrabe Autodesk Expert Elite Team
Begood Posté(e) le 1 juillet 2016 Auteur Posté(e) le 1 juillet 2016 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 : ALTEXTSi ça fonctionne le repérage va être vite fait à l'avenir !Je vous tient au courant.
Patrick_35 Posté(e) le 1 juillet 2016 Posté(e) le 1 juillet 2016 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.lsp3) Attention aux calques verrouillés / gelées.4) Utiliser la boucle que je t'ai donné utilisant burst des express5) 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Megeon Posté(e) le 4 juillet 2016 Posté(e) le 4 juillet 2016 tien ça me rappelle mes tentatives d'apprentissage du Lisp ^^ http://forums.autodesk.com/t5/autocad-francais/lisp-epaisseur-de-trait/m-p/5580594#M43119
Begood Posté(e) le 6 juillet 2016 Auteur Posté(e) le 6 juillet 2016 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.
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