Aller au contenu

Messages recommandés

Posté(e)

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!

Posté(e)

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!

Posté(e)

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.

 

 

Posté(e)

Y a pas de raisons, il était dans le Autodesk Mechanical Desktop 2004.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

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 0

Phil http://www.autospeed.biz

 

Auteur du logiciel Autospeed

Auteur de la théorie du site www.kheops.biz

Auteur de nombreux livres

Posté(e)

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.

Posté(e)

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-4

CACHE sur Main-2

FORT sur Main-1

0 sur Main-1 aussi

FIN sur Main-19

COTATION sur Main-3

HACHURES sur Main-16

 

D'avance merci!

 

 

Posté(e)

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és

Voilà 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

Posté(e)

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

 

 

Posté(e)

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

Posté(e)

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]

Posté(e)

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-4

CACHE sur Main-2

FORT sur Main-1

0 sur Main-1 aussi

FIN sur Main-19

COTATION sur Main-3

HACHURES 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

 

@ +

Posté(e)

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

Posté(e)

:) Et avec le convertisseur de calques ça fonctionne aussi.

Voir dans le menu Outis/Norme CAO/Convertisseur de calques

En plus on optien un raport de conversion.

Salutations

 

Posté(e)

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!

 

Posté(e)

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

Posté(e)

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... ;)

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é