CADxp: copier sur plusieur calques - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

copier sur plusieur calques

#1 L'utilisateur est hors-ligne   touvenant 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 33
  • Inscrit(e) : 29-mai 07

Posté 07 septembre 2011 - 14:35

Bonjour,

j'ai des objets sur un calque et je voudrais copier une sélection de ces objets sur 4 autres calques.
Je les sélectionne, je les copie, je resélectionne les objets copiés un par un puis je clique sur un des calques sur lequel je veux coller et je recommence...

Il me semble avoir utilisé autrefois, dans une autre vie (celle où mes neurones faisaient du zèle) une commande qui faisait ça plus simplement. Je croyais avec express tool, mais ils sont installés sur mon poste et je ne retrouve pas de commande qui ressemble à ça...


Et en plus, les objets que je copie sont des objets dynamiques et ils perdent leurs propriétés dynamique (trop vieux ?)



[Edité le 7/9/2011 par touvenant]
0

#2 L'utilisateur est hors-ligne   FormaBois 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1376
  • Inscrit(e) : 18-mai 06

Posté 07 septembre 2011 - 17:27

Salut,
Bonuscad à créé un lisp qui copie tous les objets d'un calque sur tous les autres calques, il suffit de faire une petite recherche.
Si tu ne veux pas la copie sur tous il suffit d'isoler les calques non concernés
En revanche je ne sais pas si on peut copier une sélection seulement
@+
Studio Gfilm - Agence de communication par l'image

"Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"
0

#3 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8435
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 07 septembre 2011 - 18:31

Pour un truc comme cela je fais une selection.
Je lance CHPROP, je fais une selection et je change le calque (si le nom n'est pas trop complexe).
Puis je copie. et je recommence.

Mais j'utilise toujours P comme Précédent dans les manips de COPIER et CHPROP et ça gaze très vite. Je ne fais de la souris qu'à la première selection. Que du clavier après.

Faire un programme se justifie-t-il ?
Image IPB

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

#4 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2160
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 07 septembre 2011 - 18:55

Bonjour,


J'avais déjà fait un truc semblable aussi :


(defun c:CPAL (/ acdoc layers *error* lay slay ss obj i)
; Copie les objets sélectionnés dans tous les calques.

(vl-load-com)

(setq	layers (vla-get-layers (setq
		acdoc (vla-get-ActiveDocument (vlax-get-acad-object))))
)

(defun *error* (msg)
	(and msg
		(or
			(member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))
			(princ (strcat "\nErreur : " msg))
		)
	)
	(vla-endundomark acdoc)
	(princ)
)

(vla-startundomark acdoc)

(if (or
			(setq ss (cadr (ssgetfirst)))
			(setq ss (ssget))
		)
	(progn
		(vlax-for lay layers
        (setq i 0)
        (repeat (sslength ss)
          (if (/= (vla-get-layer (setq obj (vlax-ename->vla-object (ssname ss i)))) (setq slay (vla-get-name lay)))
            (vla-put-layer (vla-copy obj) slay)
          )
          (setq i (1+ i))
        )
		);vlax-for layer
		(princ "\nCopie effectuée !")
	)
);if selection

(*error* nil)
);cpl

(princ "\nCommande à utiliser: CPAL")
(princ)



Mais ça copie la sélection dans TOUS les calques, même s'ils sont gelés ou verrouillés.

Pour ton besoin, il faudrait le modifier un peu pour ne pas prendre en compte les calques gelés/verrouillés, ou pour afficher une boîte permettant de choisir les calques de destination.

Mais bon, pour faire 4 copies... :cool:
0

#5 L'utilisateur est hors-ligne   FormaBois 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1376
  • Inscrit(e) : 18-mai 06

Posté 07 septembre 2011 - 20:04

Salut à tous,

j'ai retrouvé le lisp de Bonuscad, c'est ici

et en plus le code est commenté
Studio Gfilm - Agence de communication par l'image

"Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"
0

#6 L'utilisateur est hors-ligne   touvenant 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 33
  • Inscrit(e) : 29-mai 07

Posté 12 septembre 2011 - 09:20

[quote name='FormaBois' timestamp='1315412834' post='177033']
Salut,

Bonuscad à créé un lisp qui copie tous les objets d'un calque sur tous les autres calques, il suffit de faire une petite recherche.

Si tu ne veux pas la copie sur tous il suffit d'isoler les calques non concernés

Bonjour,
ça a l'air bien, mais j'ai trouvé ce lien :
bonuscad.perso.sfr.fr/
et je ne trouves pas le lisp dont tu parles.
0

#7 L'utilisateur est hors-ligne   touvenant 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 33
  • Inscrit(e) : 29-mai 07

Posté 12 septembre 2011 - 09:21

Voir le messageFormaBois, le 07 septembre 2011 - 20:04 , dit :

Salut à tous,

j'ai retrouvé le lisp de Bonuscad, c'est ici

et en plus le code est commenté


Bonjour,
le lien ne marche pas.
Dommage.
0

#8 L'utilisateur est hors-ligne   touvenant 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 33
  • Inscrit(e) : 29-mai 07

Posté 12 septembre 2011 - 09:25

Voir le messageTramber, le 07 septembre 2011 - 18:31 , dit :

Pour un truc comme cela je fais une selection.

Je lance CHPROP, je fais une selection et je change le calque (si le nom n'est pas trop complexe).

Puis je copie. et je recommence.


Mais j'utilise toujours P comme Précédent dans les manips de COPIER et CHPROP et ça gaze très vite. Je ne fais de la souris qu'à la première selection. Que du clavier après.


Faire un programme se justifie-t-il ?


Bonjour,
merci tramber (y'a un lien avec les créateurs de Kébra ?).
A défaut de retrouver la commande (je l'ai peut être rêvée ?) ça va déjà beaucoup plus vite.
0

#9 L'utilisateur est hors-ligne   touvenant 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 33
  • Inscrit(e) : 29-mai 07

Posté 12 septembre 2011 - 09:50

Voir le messagebryce, le 07 septembre 2011 - 18:55 , dit :

Bonjour,


J'avais déjà fait un truc semblalble aussi :


(defun c:CPAL (/ acdoc layers *error* lay slay ss obj i)

; Copie les objets sélectionnés dans tous les calques.


(vl-load-com)


(setq	layers (vla-get-layers (setq

		acdoc (vla-get-ActiveDocument (vlax-get-acad-object))))

)


(defun *error* (msg)

	(and msg

		(or

			(member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))

			(princ (strcat "\nErreur : " msg))

		)

	)

	(vla-endundomark acdoc)

	(princ)

)


(vla-startundomark acdoc)


(if (or

			(setq ss (cadr (ssgetfirst)))

			(setq ss (ssget))

		)

	(progn

		(vlax-for lay layers

        (setq i 0)

        (repeat (sslength ss)

          (if (/= (vla-get-layer (setq obj (vlax-ename->vla-object (ssname ss i)))) (setq slay (vla-get-name lay)))

            (vla-put-layer (vla-copy obj) slay)

          )

          (setq i (1+ i))

        )

		);vlax-for layer

		(princ "\nCopie effectuée !")

	)

);if selection


(*error* nil)

);cpl


(princ "\nCommande à utiliser: CPAL")

(princ)



Mais ça copie la sélection dans TOUS les calques, même s'ils sont gelés ou verrouillés.

Pour ton besoin, il faudrait le modifier un peu pour ne pas prendre en compte les calques gelés/verrouillés, ou pour afficher une boîte permettant de choisir les calques de destination.

Mais bon, pour faire 4 copies... :cool:


Bonjour,
merci pour ce programme.
Je ne sais malheureusement pas quoi en faire.
Je l'ai naïvement copié puis collé dans "outils" "autolisp" "editeur visual lisp" mais je ne peux même pas faire un enregistrement, alors le modifier...
Y a-t-il une âme charitable qui voudrait, non pas me donner le produit tout cuit prêt à consommer, mais me mettre le pied à l'étrier pour débuter l'apprentissage du lisp à partir de ce petit bout de programme en commentant chaque ligne ?
Ensuite, si Formabois voulais bien envoyer une copie du programme qu'il a trouvé (bonuscad) peut être que je pourrais faire quelque chose avec les deux.
Je ne suis pas complètement ignorant, j'ai appris le basic en 1978, le DOS en 1983 et un peu d'assembleur en 1986...
0

#10 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2160
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 12 septembre 2011 - 12:32

Bonjour,

Je t'ai mis le fichier en téléchargement:
http://www.creao.fr/...s/lisp/cpal.lsp

Il suffit de le charger dans AutoCAD (Outils > Charger une application, ou commande APPLOAD) pour l'utiliser tel quel.
Pour le modifier, tu peux l'ouvrir dans l'éditeur AutoLISP ou n'importe quel éditeur de texte (Bloc-notex, Notepad++, etc.).
Pa contre je n'ai pas le temps de le commenter aujourd'hui, désolé...
0

#11 L'utilisateur est hors-ligne   Titi95 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2250
  • Inscrit(e) : 22-septembre 10
  • Location95 / 78

Posté 12 septembre 2011 - 12:33

Pour les lisp, je procède de 2 facons :

Je prends le fichier et je le glisse dans Autocad directement puis tu l’appel.

Ou tu fais un copier/coller de l’ensemble du code dans la barre de commande de Autocad et tu l’appel
0

#12 L'utilisateur est hors-ligne   touvenant 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 33
  • Inscrit(e) : 29-mai 07

Posté 13 septembre 2011 - 15:59

Merci, ca marche !
j'ai déjà compris ça.
si quelqu'un peut le commenter...

A+
0

#13 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2160
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 13 septembre 2011 - 17:32

(defun c:CPAL (/ acdoc layers *error* lay slay ss obj i)
; Copie les objets sélectionnés dans tous les calques.

(vl-load-com) ; chargement des extensions Visual Lisp

; on stocke dans la variable layers la liste des calques du dessin
(setq	layers (vla-get-layers (setq
		acdoc (vla-get-ActiveDocument (vlax-get-acad-object))))
)

; on redéfinit la fonction *error*, qui est appelée en cas d'erreur du programme.
; Elle est aussi appelée volontairement à la fin du programme pour "faire le ménage".
(defun *error* (msg)
	(and msg
		(or
			(member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))
			(princ (strcat "\nErreur : " msg))
		)
	)
	(vla-endundomark acdoc) ; on ferme la dernière marque d'annulation 
	(princ)
) ; fin de la redéfinition de *error*

(vla-startundomark acdoc) ; on crée une marque d'annulation

(if (or
			(setq ss (cadr (ssgetfirst))) ; si une sélection est active, on la récupére dans le jeu de sélection appelé ss
			(setq ss (ssget)) ; sinon on demande à l'utilisateur de choisir des objets, et on récupére la sélection dans le jeu de sélection appelé ss
		)
	(progn ; début du progn qui contient toutes les actions effectuées sur la sélection

		(vlax-for lay layers ; début de la boucle des calques. Boucle effectuée successivement pour chaque calque contenu dans la variable layers, le calque en cours de traitement étant stocké dans la variable lay.

			(setq i 0) ; on met le compteur i à 0
			(repeat (sslength ss) ; début de la boucle des entités, répétée autant de fois qu'il y a d'objets dans le jeu de sélection ss.

			  (if (/= (vla-get-layer (setq obj (vlax-ename->vla-object (ssname ss i)))) (setq slay (vla-get-name lay))) ; si le nom du calque de l'objet n° i dans la sélection est différent du nom du calque stocké actuellement dans lay (nom que l'on stocke dans slay)
				(vla-put-layer (vla-copy obj) slay) ; alors on copie l'objet sur le calque dont le nom est stocké dans slay
			  )
			  (setq i (1+ i)) ; on ajoute 1 à i, pour que la prochaine passe de la boucle traite l'objet suivant dans le jeu de sélection

			) ; fin de la boucle des entités

		); fin de la boucle des calques

		(princ "\nCopie effectuée !")

	) ; fin du progn qui contient toutes les actions effectuées sur la sélection
);fin du if sélection

(*error* nil) ; on appelle volontairement *error* pour fermer la marque d'annulation créée précédemment
);cpl

(princ "\nCommande à utiliser: CPAL")
(princ)

0

#14 L'utilisateur est hors-ligne   lili2006 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11914
  • Inscrit(e) : 21-décembre 05

Posté 14 septembre 2011 - 09:39

Bonjour à toutes et tous,

Et pourquoi pas :

Format => outils de calque => Copier les objets dans un nouveau calque ? ("_copytolayer" au clavier,...)
AutoCAD MAP 3D 2019 - Covadis 17.0d
Forum : http://genie-civil.bbactif.com/
0

#15 L'utilisateur est hors-ligne   touvenant 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 33
  • Inscrit(e) : 29-mai 07

Posté 15 septembre 2011 - 09:09

Merci, merci beaucoup !

lili206 : et pourquoi pas ? => parce que ! Pourquoi faire simple quand on peut faire comme moi ?
Sans plaisanter, merci pour cette commande de laquelle je suis passé à coté.
bryce, merci aussi pour le commentaire (la commentation ? la commentarisation ? ) je vais profiter de cet exemple concret pour me mettre enfin au lisp et tacher, d'une seule commande, de copier la sélection sur une sélection de calques.

Bonne journée à tous,moi, avec ça, ça va être être facile.
0

#16 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8435
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 15 septembre 2011 - 14:05

Voir le messagetouvenant, le 12 septembre 2011 - 09:25 , dit :

merci tramber (y'a un lien avec les créateurs de Kébra ?).


Non. C'est Bertrand à l'envers...
Image IPB

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

#17 L'utilisateur est hors-ligne   FormaBois 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1376
  • Inscrit(e) : 18-mai 06

Posté 17 octobre 2011 - 07:34

Citation

le lien ne marche pas. Dommage.

touvenant, j'ai retrouvé et mis à jour le lien
Je sais que la réponse arrive un peu tard, mais comme on dit mieux vaut tard que jamais ;)
Studio Gfilm - Agence de communication par l'image

"Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"
0

#18 L'utilisateur est hors-ligne   Sagittaire 

  • ceinture blanche
  • Groupe : Membres
  • Messages : 2
  • Inscrit(e) : 06-juin 05

Posté 16 avril 2015 - 22:12

Bonsoir tout le monde,

Ce lisp m'intéresse, mais est'il possible de modifier la variable sur tous les calques
par une variable qui permet de copier les objets, uniquement sur un calque précis ?

Merci d'avance et bonne soirée. :)
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)