Davv42 Posté(e) le 6 juillet 2006 Posté(e) le 6 juillet 2006 Bonjour, J'aimerais sélectionner toutes les entités contenues dans un calque 1 pour les transférer dans un calque 2. Cela est-il possible en automatique?La fonction selectrap irait bien mais elle ouvre une boite de dialogue à chaque fois, donc adieu le mode auto... D'avance merci!
Fraid Posté(e) le 6 juillet 2006 Posté(e) le 6 juillet 2006 bonjour, la selection rapide n'est pas assez rapide pour toi? https://github.com/Fraiddd
Eric Posté(e) le 6 juillet 2006 Posté(e) le 6 juillet 2006 Pour cela utilise plutôt la fonction SSX du menu express Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
Davv42 Posté(e) le 6 juillet 2006 Auteur Posté(e) le 6 juillet 2006 Le but final est de sélectionner tous les traits d'un calque "AXES" par exemple, pour les mettre dans un autre, puis ensuite tous ceux du calque "CACHE", puis de le mettre ailleurs, etc... tout ça environ 10 fois par plan. Et j'ai 200 plans... donc la sélection rapide n'est pas assez rapide... Sinon, de quel menu espress vous voulez parler, je suis sous AutoCad Mechanical 2004 et je ne crois pas avoir ce menu! Merci encore!
Eric Posté(e) le 6 juillet 2006 Posté(e) le 6 juillet 2006 Sinon, de quel menu espress vous voulez parler, je suis sous AutoCad Mechanical 2004 et je ne crois pas avoir ce menu! C'est un menu supplémentaire qui est disponible sur le CD d'installation d'AutoCAD Par contre pour Mechanical, je ne sais plus s'il y était aussi Dominique ou quelqu'un d'autre pourrais peut être nous éclairer la dessus. Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
Tramber Posté(e) le 6 juillet 2006 Posté(e) le 6 juillet 2006 Y a pas de raisons, il était dans le Autodesk Mechanical Desktop 2004. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 6 juillet 2006 Posté(e) le 6 juillet 2006 Sino, un petit LISP vite fait : (defun c:sel_lay (/ ent) (while (not (setq ent (car (entsel "\nSélectionnez un objet sur le calque cible: ") ) ) ) ) (sssetfirst nil (ssget "_X" (list (cons 8 (cdr (assoc 8 (entget ent))))))) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
autospeed Posté(e) le 6 juillet 2006 Posté(e) le 6 juillet 2006 rien de plus facile ! tu n'as qu'a utilser la commande filter pour selectionner les entités a transférer , ensuite des qu'elle sont sélectionnées , tu te sers du pinceau de copie des propriétés , tu clique sur une entité du calque ou doivent se transferer les autres entités et tu fais P comme précedent ! Voila , c'est fait ! Je fais souvent cela pour transferer les entités que certains archi dessinent dans le calque 0Phil http://www.autospeed.biz Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
Davv42 Posté(e) le 7 juillet 2006 Auteur Posté(e) le 7 juillet 2006 Merci autospeed, mais j'ai un million de plans à transférer de la sorte, donc j'aimerais avoir une commande ou je sélectionne rien à la main.
Davv42 Posté(e) le 7 juillet 2006 Auteur Posté(e) le 7 juillet 2006 Pour (Gile): Merci, c'est bien ce que je voulais, mais maintenant je voudrais être un peu plus gourmand...!Il faudrait transférer toutes les entités des calques suivants en automatique sans aucune sélection manuelle: AXES sur Main-4CACHE sur Main-2FORT sur Main-10 sur Main-1 aussiFIN sur Main-19COTATION sur Main-3HACHURES sur Main-16 D'avance merci!
bonuscad Posté(e) le 7 juillet 2006 Posté(e) le 7 juillet 2006 Une première ébauche, non testée en profondeur! Ce qui est déjà indispensable c'est la case des noms de calques qui doit bien correspondre à l'existant (majuscule-minuscule)Assures toi aussi que les calques ne soient pas vérrouilésVoilà fais un 1er test, et on affinera si possible. ((lambda ( / target_lay stuff_lay def_lay nam_lay js trans_lay dxf_ent) (setq stuff_lay '("FORT" "CACHE" "COTATION" "AXES" "HACHURES" "FIN") target_lay '("Main-1" "Main-2" "Main-3" "Main-4" "Main-16" "Main-19") ) (setq def_lay (tblnext "LAYER" T) nam_lay (cdr (assoc 2 def_lay))) (cond ((and (setq js (ssget "_X" (list (cons 8 nam_lay)))) (member nam_lay stuff_lay)) (setq trans_lay (nth (vl-position nam_lay stuff_lay) target_lay) n -1) (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n))))) (entmod (subst (cons 8 trans_lay) (assoc 8 dxf_ent) dxf_ent)) ) ) ) (while (setq def_lay (tblnext "LAYER")) (setq nam_lay (cdr (assoc 2 def_lay))) (cond ((and (setq js (ssget "_X" (list (cons 8 nam_lay)))) (member nam_lay stuff_lay)) (setq trans_lay (nth (vl-position nam_lay stuff_lay) target_lay) n -1) (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n))))) (entmod (subst (cons 8 trans_lay) (assoc 8 dxf_ent) dxf_ent)) ) ) ) ) (foreach n stuff_lay (command "_.purge" "_layer" n "_no")) (prin1) )) [Edité le 7/7/2006 par bonuscad] Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Davv42 Posté(e) le 7 juillet 2006 Auteur Posté(e) le 7 juillet 2006 Bonjour et merci pour votre aide, néamoins, le prog ne fonctionne pas, voici le message d'erreur: ; erreur: structure incorrecte de la chaîne en entrée
bonuscad Posté(e) le 7 juillet 2006 Posté(e) le 7 juillet 2006 Désolé, j'avais oublié un " (guillemet) lors de la retranscription pour tes noms de calques :( J'ai corrigé, il te suffit de faire un copier-coller en ligne de commande dans le fichier dessin Autocad qui t'interresse pour faire un test Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Davv42 Posté(e) le 7 juillet 2006 Auteur Posté(e) le 7 juillet 2006 Ouah!!! ça marche nickel!!! :) J'ai juste rajouté le transfert des entités du calque 0 dans Main-1 et c'est complet! Sinon, pour être un peu pénible, y aurait-il moyen après ces conversions, de passer toutes les cotes ayant le style "ISO-5" dans le style "AM_ISO$0" ??? Ainsi, une grosse partie du boulot serait toute faite!Merci beaucoup! PS: j'ai trouvé un léger bug. Y aurait-il moyen avant de lancer la conversion, de mettre le groupe de calques "MAIN" en actif puis de créer le calque "MAIN-3"? Ensuite, on lancerait la conversion normale... [Edité le 7/7/2006 par Davv42]
emeric.allio Posté(e) le 7 juillet 2006 Posté(e) le 7 juillet 2006 Bonjour à tous, Une idée pour transférer toutes les entités des calques suivants en automatique sans aucune sélection manuelle: AXES sur Main-4CACHE sur Main-2FORT sur Main-10 sur Main-1 aussiFIN sur Main-19COTATION sur Main-3HACHURES sur Main-16 C'est de faire une norme (fichier .dws)... :casstet: Pour celà il te faut ouvrir la barre d'outil Nomre CAO et cliquer l'icone Convertir Calques.Une boite de dialogue te propose de convertir des calques sur des nouveaux calques que tu vas créer.1. tu crées tes nouveaux calques(icone Nouveau) (Main) avec le type de ligne et la couleur.2. tu assignes le calques AXES sur MAIN-4(icone assigner).3. vérifie les paramètres suivant ce que tu veux faire...4. enregistre sous un fichier .dws que tu chargeras (icone charger)pour tes prochains plans.5. converti le tout (icone convertir)6. purge ton dessin et tes anciens calques seront supprimés @ +
bonuscad Posté(e) le 7 juillet 2006 Posté(e) le 7 juillet 2006 La proposition de emeric est interressante (je ne l'ai jamais utilisé) :( Elle a le mérite d'être plus polyvalente. Voici quand même le code modifié en aveugle (pas testé) ((lambda ( / target_lay stuff_lay def_lay nam_lay js trans_lay dxf_ent) (setq stuff_lay '("0" "FORT" "CACHE" "COTATION" "AXES" "HACHURES" "FIN") target_lay '("Main-1" "Main-1" "Main-2" "Main-3" "Main-4" "Main-16" "Main-19") ) (setq def_lay (tblnext "LAYER" T) nam_lay (cdr (assoc 2 def_lay))) (cond ((and (setq js (ssget "_X" (list (cons 8 nam_lay)))) (member nam_lay stuff_lay)) (setq trans_lay (nth (vl-position nam_lay stuff_lay) target_lay) n -1) (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n))))) (entmod (subst (cons 8 trans_lay) (assoc 8 dxf_ent) dxf_ent)) ) ) ) (while (setq def_lay (tblnext "LAYER")) (setq nam_lay (cdr (assoc 2 def_lay))) (cond ((and (setq js (ssget "_X" (list (cons 8 nam_lay)))) (member nam_lay stuff_lay)) (setq trans_lay (nth (vl-position nam_lay stuff_lay) target_lay) n -1) (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n))))) (if (and (eq trans_lay "Main-3") (eq (cdr (assoc 3 dxf_ent)) "ISO-5")) (entmod (setq dxf_ent (subst (cons 3 "AM_ISO$0") (assoc 3 dxf_ent) dxf_ent))) ) (entmod (subst (cons 8 trans_lay) (assoc 8 dxf_ent) dxf_ent)) ) ) ) ) (foreach n stuff_lay (command "_.purge" "_layer" n "_no")) (command "_.purge" "_dimstyle" "ISO-5" "_no") (prin1) )) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
phco Posté(e) le 7 juillet 2006 Posté(e) le 7 juillet 2006 :) Et avec le convertisseur de calques ça fonctionne aussi.Voir dans le menu Outis/Norme CAO/Convertisseur de calquesEn plus on optien un raport de conversion.Salutations
Davv42 Posté(e) le 10 juillet 2006 Auteur Posté(e) le 10 juillet 2006 Merci encore une fois, Bonuscad. Il esxiste malheureusement quelques petits soucis sur certains plans car ils ne sont pas tous identiques... A savoir: -Les cotes ne sont pas toujours dans le calque "COTATION" alors, pourrait-on les sélectionner toutes pour les passer dedans avant de les envoyer dans "MAIN-3" pour les convertir? -Certaines de ces cotes sont dans le style "STANDARD", elles ne sont pas prises en compte lors de la conversion. -Pourrait-on convertir le style des cotes même si elles ne sont pas dans "MAIN-3"? D'avance merci!
bonuscad Posté(e) le 10 juillet 2006 Posté(e) le 10 juillet 2006 mais j'ai un million de plans à transférer de la sorte, donc j'aimerais avoir une commande ou je sélectionne rien à la main. Je pense qu'il serait bien que tu réflèchisse et t'investisse un peu par toi même et faire au moins une proposition de code au lieu de te mettre en attente de réflexion d'autrui. Je m'investis pour l'entraide et non pour une demande qui en plus est bien spécifique à ton boulot, ça ne profite qu'a toi. :mad: Je te donne quand même ce que je ferais, mais je n'ai pas du tout testé ma proposition, si ça ne fonctionne pas, à toi d'ajuster en conséquence. ((lambda ( / target_lay stuff_lay js n dxf_ent def_lay nam_lay trans_lay) (setq stuff_lay '("0" "FORT" "CACHE" "COTATION" "AXES" "HACHURES" "FIN") target_lay '("Main-1" "Main-1" "Main-2" "Main-3" "Main-4" "Main-16" "Main-19") ) (cond ((setq js (ssget "_X" '((0 . "DIMENSION")))) (setq n -1) (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n))))) (entmod (subst '(8 . "COTATION") (assoc 8 dxf_ent) dxf_ent)) (entmod (subst '(3 . "AM_ISO$0") (assoc 3 dxf_ent) dxf_ent)) ) ) ) (setq def_lay (tblnext "LAYER" T) nam_lay (cdr (assoc 2 def_lay))) (cond ((and (setq js (ssget "_X" (list (cons 8 nam_lay)))) (member nam_lay stuff_lay)) (setq trans_lay (nth (vl-position nam_lay stuff_lay) target_lay) n -1) (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n))))) (entmod (subst (cons 8 trans_lay) (assoc 8 dxf_ent) dxf_ent)) ) ) ) (while (setq def_lay (tblnext "LAYER")) (setq nam_lay (cdr (assoc 2 def_lay))) (cond ((and (setq js (ssget "_X" (list (cons 8 nam_lay)))) (member nam_lay stuff_lay)) (setq trans_lay (nth (vl-position nam_lay stuff_lay) target_lay) n -1) (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n))))) (entmod (subst (cons 8 trans_lay) (assoc 8 dxf_ent) dxf_ent)) ) ) ) ) (foreach n stuff_lay (command "_.purge" "_layer" n "_no")) (command "_.purge" "_dimstyle" "ISO-5,STANDARD" "_no") (prin1) )) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Davv42 Posté(e) le 10 juillet 2006 Auteur Posté(e) le 10 juillet 2006 Merci Bonuscad! Mais je suis totalement réfractaire au LISP... Je promets de m'autoformer chez moi mais ma demande était pour un besoin plus qu'urgent! C'est grace à des gens comme vous qu'on avance... ;)
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