barbichette Posté(e) le 29 mars 2012 Posté(e) le 29 mars 2012 Bonjour, Comment faire pour placer des lignes dans un calque qui n'existe pas.Je m'explique :j'ai souvent à travailler sur des plans créé par des personnes extérieures, qui ot chacunes leur façon de travailler. Il m'arrive souvent de sélectionner un grand nombre de ligne, forme, blocs pour les placer dans un nouveau calque, et là je me rend compte que le calque dans lequel je veut les mettre n'a pas encore été créé. Oui je sais, je m'y prend mal, et je devrait d'abord créer les calques dont j'ai besoin, (c'est d'ailleurs que ce j'ai fait). Dans le meilleur des mondes ce serait suffisant, mais il m'arrive souvent d'avoir à utiliser des calques non encore créés. Donc est il possible de d'abord sélectionner des lignes, puis de les envoyer dans un calque qui serait créé à ce moment là ? Merci ***********************Rien ne sert de courrir, il faut partir à point.
SOP767138 Posté(e) le 29 mars 2012 Posté(e) le 29 mars 2012 Bonjour, je ne suis pas pro, mais tu pourrais te créer un fichier gabarit avec les calques type de lignes et autres dont tu as besoin. tu ouvres toujours avec ton gabarit de base,tu insère le plan recupéré et decomposétu sauvegarde souset tu envoie les lignes et blocs existants dans tes claques déjà créér dans ton gabarit un peu archaique certes :P sur covadis 14.0c et AutoCAD® Map 3D 2015
bonuscad Posté(e) le 29 mars 2012 Posté(e) le 29 mars 2012 Bonjour, (entmake) permet de créer des entités sur des calques non définis au préalable, même pas besoin de s'assurer que le calque existe dans la table des "LAYER", (entmake) assume la cohérence avec la définition de la table.Donc le code suivant devrait fonctionner avec soit une sélection effectuée ou objet "gripés". Attention je ne vérifie pas les caractères autorisés pour le nom du calque (absence de :? < > etc..) ((lambda ( / js nam_lay n dxf_ent dxf_nent) (setq js (ssget "_I")) (if (null js) (setq js (ssget "_P"))) (cond (js (setq nam_lay (getstring T "\nNom du nouveau calque?: ")) (repeat (setq n (sslength js)) (setq dxf_ent (entget (ssname js (setq n (1- n)))) dxf_ent (subst (cons 8 nam_lay) (assoc 8 dxf_ent) dxf_ent) ) (entmake dxf_ent) (if (member (cdr (assoc 0 dxf_ent)) '("INSERT" "POLYLINE")) (progn (setq dxf_nent (entget (entnext (cdar dxf_ent)))) (while (/= (cdr (assoc 0 dxf_nent)) "SEQEND") (setq dxf_nent (subst (cons 8 nam_lay) (assoc 8 dxf_nent) dxf_nent)) (entmake dxf_nent) (setq dxf_nent (entget (entnext (cdar dxf_nent)))) ) (entmake dxf_nent) ) ) ) ) ) (prin1) )) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
barbichette Posté(e) le 29 mars 2012 Auteur Posté(e) le 29 mars 2012 ok, merci beaucoup, je teste et je reviens vers toi. ***********************Rien ne sert de courrir, il faut partir à point.
barbichette Posté(e) le 29 mars 2012 Auteur Posté(e) le 29 mars 2012 euh, question :Comment tu utilises cette fonction. ***********************Rien ne sert de courrir, il faut partir à point.
barbichette Posté(e) le 29 mars 2012 Auteur Posté(e) le 29 mars 2012 Bonjour, je ne suis pas pro, mais tu pourrais te créer un fichier gabarit avec les calques type de lignes et autres dont tu as besoin. tu ouvres toujours avec ton gabarit de base,tu insère le plan recupéré et decomposétu sauvegarde souset tu envoie les lignes et blocs existants dans tes claques déjà créér dans ton gabarit un peu archaique certes :PNon, comme dit plus haut c'est exactement cette procédure que j'utilise, mais parfois il arrive que certaint éléments doivent être disposé dans des calques "nouveaux"et bien sur je me rend compte à chaque fois que ces calques me manquent une fois que j'ai fini la sélection (qi bien sûr dans tous les cas concerne un nombre important d'éléments, dificiles à sélectionner) ***********************Rien ne sert de courrir, il faut partir à point.
SOP767138 Posté(e) le 29 mars 2012 Posté(e) le 29 mars 2012 Ooopss désolée je découvre également cette manip mais la barre d'outils autocad "calques II" est la solution dedans tu as une icone(2 calques avec une tite etoile)"copier les objets dans un nouveau calque" que tu nomme à l'envie bon courage :P sur covadis 14.0c et AutoCAD® Map 3D 2015
bonuscad Posté(e) le 29 mars 2012 Posté(e) le 29 mars 2012 euh, question :Comment tu utilises cette fonction. Lorsque ta sélection est effectuée, pour tester; tu copie-colle le code en ligne de commande et cela sera exécuté immédiatement. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
barbichette Posté(e) le 4 avril 2012 Auteur Posté(e) le 4 avril 2012 Ooopss désolée je découvre également cette manip mais la barre d'outils autocad "calques II" est la solution dedans tu as une icone(2 calques avec une tite etoile)"copier les objets dans un nouveau calque" que tu nomme à l'envie bon courage :P En fait c'est pas mal, sauf que cela fait une copie,alors que ce que je voudrais c'est déplacer mes données... ***********************Rien ne sert de courrir, il faut partir à point.
-Olivier- Posté(e) le 4 avril 2012 Posté(e) le 4 avril 2012 Bonjour, Tu peux utiliser cette petite macro ^C^C_COPYTOLAYER \Y;D;0;_erase;P; Attention à ne pas rajouter d'espace.Le calque doit impérativement ne pas exister car j'ai supprimé la confirmation de création. A+
SOP767138 Posté(e) le 4 avril 2012 Posté(e) le 4 avril 2012 En fait c'est pas mal, sauf que cela fait une copie,alors que ce que je voudrais c'est déplacer mes données... Re Oopps en effet barbichette!! :unsure: alors après verification cette fois du as Commande: CHANGCALQUEMULTSélectionnez les objets à modifier:Choix des objets: 1 trouvé(s)Choix des objets:Sélectionnez un objet sur le calque de destination ou [Nommer]: NUn objet transféré au calque "****"....a toi ensuite de parametrer ton calque et pour la selection je viens d'apprendre sur ce forum les commandesselection similaire et selection des etiquettes similairesmerci Cadxp :) sur covadis 14.0c et AutoCAD® Map 3D 2015
barbichette Posté(e) le 5 avril 2012 Auteur Posté(e) le 5 avril 2012 Bonjour, Tu peux utiliser cette petite macro ^C^C_COPYTOLAYER \Y;D;0;_erase;P; Attention à ne pas rajouter d'espace.Le calque doit impérativement ne pas exister car j'ai supprimé la confirmation de création. A+On avance pas mal du toutje peux d'abord sélectionner et ensuite créer le calque qui me manquemaintenant ce qu'il faudrait c'est que cela ne fasse une copie des entités dans le nouveau calque, mais que cela déplace ces entités dans le nouveau calque. Est-ce possibleun truc du style ^c^c_ChangeTOLAYER \Y;D;0;_erase;P; ***********************Rien ne sert de courrir, il faut partir à point.
-Olivier- Posté(e) le 5 avril 2012 Posté(e) le 5 avril 2012 Bonjour, Je ne connaissais pas la commande CHANGCALQUEMULT donné par SOP767138 qui fonctionne très bien.Si tu veux supprimer les étapes intermédaires de la commande, tu peux utiliser la macro ci-dessous : ^C^C_CHANGCALQUEMULT;n;\O; Comme la précédente, cette macro supprime les différentes confirmations. Ton calque doit donc impérativement ne pas exister sinon la commande plante. En cas de doute, utilise la commande CHANGCALQUEMULT. A+ PS : Je ne comprend pas trop pourquoi cette commande n'est présente nulle part et doit impérativement être appelée au clavier (même pas un petit alias !). :mellow:
barbichette Posté(e) le 5 avril 2012 Auteur Posté(e) le 5 avril 2012 Salut, il doit y avoir une petite erreur dans la syntaxe du code...car pendant l'exécution, il me propose de déplacer (ce qui est bien) les objets mais sur le calque courant (ou sur un calque existant qu'il faut alors nommer)cela ne demande pas la création d'un nouveau calque.je vais tester en modifiant des paramètres..... ***********************Rien ne sert de courrir, il faut partir à point.
-Olivier- Posté(e) le 5 avril 2012 Posté(e) le 5 avril 2012 Salut Barbichette, La commande fonctionne à condition d'avoir sélectionné les objets en premier.
barbichette Posté(e) le 5 avril 2012 Auteur Posté(e) le 5 avril 2012 Ah putain merci (comme dirait Jean Dujardin) Ca marche et ça répond exactement à ce que je désirai : que demander de mieu Elle marche à 2 conditions :- Que la macro soit enregistrée en bouton- que les objets soient précédemment sélectionnés. Je te ferais bien un bisou, mais je ne me suis pas rasé ce matin. Joyeuses Pâques. ***********************Rien ne sert de courrir, il faut partir à point.
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