nakapuf Posté(e) le 26 octobre 2003 Posté(e) le 26 octobre 2003 Pour des raisons de facilté et rapidité, et lorsque je n'ai pas à garder un ensemble d'entités par la suite j'utilise l'excellente commande GROUP.A savoir, je sélectionne les objets désirés, et je tape GROUP, ou je clique sur l'icone que j'ai créée à cet effet. Ceci me produit un bloc qui prend la dénomination $GROUP01, $GROUP02, ....etc suivant le nombre de $GROUP qui existent déja.Mon problème est le suivant : Comme je fais la même opération sur tous les dessins, et qu'en suite il reste toujours quelques $GROUPXX, lorsque je j'insére mon dessin dans un autre par la commande coller, je me retrouve avec des entités non désirées, a divers endrois. En fait les blocs se transformes en ceux qui ont le même nom dans le dessin.Question : Existe t'il une variable qui annule ce changement d'un bloc par un autre quand il vient d'un autre dessin ?Ou alors comment peut-on ecrire un programme en lisp permettant de renommer d'un coup tous les $GROUPXX avec un nom generique qui serait par example les premieres lettre de l'affaire de laquelle le plan est issu, tout en gardant les numeros des differents blocs. Il y a bien la commande renommer, mais losque qu'il y a une vingtaine de blocs, c'est un peu pénible. J'ai essayé de faire un lisp, mais je ne m'y connais pas assez pour pouvoir mener a bien ce programme.Merci d'avance, à ceux qui connaissent bien le lisp, et qui pourront m'aider à résoudre ce casse tête. :casstet:
zebulon_ Posté(e) le 27 octobre 2003 Posté(e) le 27 octobre 2003 C'est d'autant plus un casse tête que je ne comprend pas le sujet. Il s'agit de renommer des blocs, je suppose. Le plus simple est d'insérer une commande _-RENAME dans une boucle WHILE. (defun c:renblock () (setq PRE (getstring "PREFIXE : ")) ; le nouveau préfixe (setq B (tblnext "block" T)) ; pointer sur le début du tableau des blocs (While B (setq NOM (cdr (assoc 2 B))) ; extraire le nom (if (/= (substr NOM 1 1) "*") ; pas les blocs sans nom (command "_-RENAME" "BL" NOM (strcat PRE NOM)) ; renommer ) (setq B (tblnext "block")) ; pointer sur le suivant )) Voilà, j'espère que ça convient. Un point que je n'ai pas vérifié : avant de faire le rename il faudrait vérifier si le nom de bloc n'existe pas déjà. [Edité le 27/10/2003 par zebulon_] C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
nakapuf Posté(e) le 28 octobre 2003 Auteur Posté(e) le 28 octobre 2003 Merci Zebulon pour ta réponse, ton programme fonctionne bien. C'est un peu ce que je voulais faire, mais je ne veux renommer que les blocs qui porte le nom $GROUP en leur laissant le numéros de création qu'ils ont reçu lor de l'incrémentation. Cepandant je desire supprimer la chaine "$GROUP" :casstet: Example :Si prefixe = "PAJ" Ton programme fait sur un liste de blocs quelconque : PAJ$GROUP01PAJ$GROUP08PAJ$GROUP20PAJBOULEPAJCUBE Alors que j'aimerais faire : PAJ01PAJ08PAJ20BOULECUBE de sorte que les "vrais" nom de bloc ( boule ou cube ) garde leur nom d'origine. S'il te reste quelques quelques minutes pour te pencher sur ton petit programme et surtout si ce que je cherche est possible, merci d'avance de bien vouloir essayer de faire une derniere modif qui accederait a ce que je souhaite.Il faudrait d'ailleur que je me penche une fois pour toute sur la programmation, parce que j'ai plein d'idées de commande pour me simplifier la vie, mais je n'ai pas les connaissances nécéssaires pour les réaliser. Merci encore.
zebulon_ Posté(e) le 28 octobre 2003 Posté(e) le 28 octobre 2003 (defun c:renblock () (setq PRE (getstring "PREFIXE : ")) ; le nouveau préfixe (setq B (tblnext "block" T)) ; pointer sur le début du tableau des blocs (While B (setq NOM (cdr (assoc 2 B))) ; extraire le nom (if (= (strcase (substr NOM 1 6)) "$BLOCK") ; uniquement ceux qui doivent être renommés (command "_-RENAME" "_BL" NOM (strcat PRE (substr NOM 7 (strlen NOM)))) ; renommer ) (setq B (tblnext "block")) ; pointer sur le suivant )) C'est presque pareil ... Attention, je n'ai toujours pas vérifié les éventuels doublons. C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
nakapuf Posté(e) le 28 octobre 2003 Auteur Posté(e) le 28 octobre 2003 Merci Zebulon, super sympas, c'est exactement ce que je cherchais. Merci encore pour ton aide, et continu... :D :D :D
davidcad01 Posté(e) le 20 janvier 2010 Posté(e) le 20 janvier 2010 excellents lisp (les deux !) Néanmoins j'ai un petit probleme... (va falloir que j'apprenne le language lisp !)Dans le second lisp, l'application ne renomme QUE les blocs contenant "$" en remplacant $ par le nouveau préfixe rentré dans la commande. dans mon cas les préfixes à modifier sont différents à chaque fois ! N'y a t'il pas moyen que le lisp demande le préfixe a remplacer avant de demander le nouveau au lieu d'aller modifier à chaque fois le préfixe dans le lisp ? (dailleurs j'ai le meme probleme avec les calques... :casstet: ) poser une question c'est prendre le risque de paraitre bete 5 minutes. ne pas en poser c'est prendre le risque de le rester toute sa vie.
zebulon_ Posté(e) le 20 janvier 2010 Posté(e) le 20 janvier 2010 (va falloir que j'apprenne le langage lisp !)Bienvenu au club ;) N'y a t'il pas moyen que le lisp demande le préfixe a remplacerde la même manière qu'on demande le nouveau préfixe, avec la fonction getstring d'ailleurs j'ai le même problème avec les calques.. Au lieu d'aller parcourir la table des "BLOCK", il faudra parcourir la table des "LAYER". Sinon, le principe est le même. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
davidcad01 Posté(e) le 22 janvier 2010 Posté(e) le 22 janvier 2010 Merci vincent :P Je vais commencer a modifier les lisps. poser une question c'est prendre le risque de paraitre bete 5 minutes. ne pas en poser c'est prendre le risque de le rester toute sa vie.
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