Aller au contenu

Copie dans tous les calques


Messages recommandés

Posté(e)

Bonjour,

 

Fais un copier-coller en ligne de commande de ce qui suit

 

[color=green];Définition d'une fonction anonyme et temporaire en mémoire.
; Une fonction (defun C:Dupli2AllLayer ( / ....) aurait pu la remplacer[/color]
((lambda ( / js def_lay nam_lay n dxf_ent lay_ori dxf_nent)
 (princ "\nChoisir les objets à dupliquer sur tout les calques")
[color=green];Une boucle (While) qui m'assure qui il aura bien une sélection non vide (not)
; pour pouvoir être sur que l'entrée utilisateur sera bien faite et que la routine pourra continuer sans erreur[/color]
 (while (not (setq js (ssget))))
[color=green];Avec (tblnext) j'explore la table des calque en commençant par le 1er avec l'option T[/color]
 (setq def_lay (tblnext "LAYER" T))
[color=green];J'entame une boucle (while) tant que la définition du calque existe (def_lay)
; La défintion suivante étant cherchée à la fin de la boucle (sans l'option T)[/color]
 (while def_lay
[color=green];J'extrais le nom de du calque de la définition de la table[/color]
   (setq nam_lay (cdr (assoc 2 def_lay)))
[color=green];Je fais une répétion de boucle en corélation avec le nombre d'entités contenu dans le jeu de sélection
; J'en profite pour indexer avec la variable n ce nombre d'éléments[/color]
   (repeat (setq n (sslength js))
[color=green];J'extrais le nom de l'entité indexée (qui est décrémentée), puis sa définition DXF dans laquelle je récupère le calque de celle-ci[/color]
     (setq
       dxf_ent (entget (ssname js (setq n (1- n))))
       lay_ori (cdr (assoc 8 dxf_ent))
     )
[color=green];Une condition vérifie que le calque de l'entité n'est pas la même que celui de l'élément de la table des calques en cours de traitement[/color]
     (cond
       ((not (eq lay_ori nam_lay))
[color=green];Si la condition est vérifiée
; Je récupère le calque de l'entité traitée auquel je lui substitue le nom du calque extrait de la table des calque en cours[/color]
         (setq dxf_ent (subst (cons 8 nam_lay) (assoc 8 dxf_ent) dxf_ent))
[color=green];Avec cette liste de code DXF à jour je crée la même entité sur le calque concerné[/color]
         (entmake dxf_ent)
[color=green];Si j'ai affaire à une entité complexe. Bloc, Polyligne ancienne ou polyligne 3D[/color]
         (if (member (cdr (assoc 0 dxf_ent)) '("INSERT" "POLYLINE"))
           (progn
[color=green];Alors j'explore les entités suivantes...[/color]
             (setq dxf_nent (entget (entnext (cdar dxf_ent))))
[color=green];... jusqu'à rencontrer la fin par l'entité spéciale SEQEND.[/color]
             (while (/= (cdr (assoc 0 dxf_nent)) "SEQEND")
[color=green];Comme précédemment substitution[/color]
               (setq dxf_nent (subst (cons 8 nam_lay) (assoc 8 dxf_nent) dxf_nent))
[color=green];Puis création[/color]
               (entmake dxf_nent)
[color=green];Affectation de dxf_nent à l'entité suivante (dans la boucle pour pouvoir en sortir)[/color]
               (setq dxf_nent (entget (entnext (cdar dxf_nent))))
             )
[color=green];Puis création de l'entité SEQEND de fin de boucle qui n'a pas été évalué dans la boucle (condition de sortie)[/color]
             (entmake dxf_nent)
           )
         )
       )
     )
   )
[color=green];Définition suivante de la table des calques[/color]
   (setq def_lay (tblnext "LAYER"))
 )
))

 

[Edité le 21/4/2011 par bonuscad]

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

La devinette c'est : Quel est le calque dominant ;)

C'est incroyable ce qu'il est possible de faire avec un pt programme, ça paraît tellement simple...

A l'utilisation c'est sûr, après j'imagine qu'à mettre en place c'est autre chose.

En tout cas bravo. Je serais curieux de connaître l'utilité :o

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"

Posté(e)

La devinette c'est : Quel est le calque dominant

Dans le code ?

 

lay_ori (cdr (assoc 8 dxf_ent)) : le calque de/des entités sélectionnées

 

éviter le doublon dans le calque d'origine :(not (eq lay_ori nam_lay))

 

ça paraît tellement simple...

Il m'arrive de prendre des chemins plus tortueux, ça dépends de l'inspiration ;)

 

e serais curieux de connaître l'utilité

 

Moi aussi, à part créer une multiplicité d'objet.....

c'est un peu pour ça que j'ai fait une fonction anonyme unique (ça évite de relancer la commande par accident, car bonjour les effacements ultérieurs).

Mais peut être veut-il par exemple dupliquer les murs du rez-chaussée sur les étages...)

 

Tout les calques me surprend un peu quand même ! (faudrait rester en début de conception où il y a peu de calques)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour,

Merci pour le coup de main.

Je m'explique : mon boulot est d'automatiser au maximum les imports-exports entre Autocad et Alllpan.

Pour cela j'ai besoin de mapper les calques Autocad avec les Layers Allplan.

Mais Allplan ne "voit" que les calques non vides.

Donc pour créer un fichier de configuration standard (unique) Allplan utilisable avec mon Template Autocad j'ai besoin de mettre quelque chose dans chacun des 136 calques.

Voilà le pourquoi du comment.

 

Je n'ai pas encore eu le temps de tester mais merci encore.

 

 

Posté(e)

 

Hello Bruno

 

SVP je suis eventuellement preneur d'une version amelioree de ta routine

 

- Selection classique AutoCAD de N objets

 

- Selection dans un DCL (genere dynamiquement) des 1-N calques voulus

 

- Copie de la selection sur les 1-N calques

(ce qui inclut la possibilite de selectionner TOUS les calques,

donc ce que fait aujourd'hui ta routine)

 

Merci d'avance, Le Decapode

 

Autodesk Expert Elite Team

Posté(e)

Tout ça reste obscur pour moi

 

Comme le code n'est pas très long, j'édite mon code pour le commenter.

Ainsi j'espère que cela t'éclairera les zones obscures et te sera d'une bonne aide pour t'y plonger

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

  • 4 mois après...
Posté(e) (modifié)

Bonjour,

juste ce petit mot pour préciser que les deux derniers messages qui apparaissent ne sont pas de moi,

même si c'est mon pseudo qui est utilisé !????

En fait après vérification c'est le contenu du message qui a changé, et quand j'édite le message c'est l'ancien contenu qui apparait.

 

Si j'édite le message :

 

Hey ho !

:angry:

Vous faites quoi sur mon fil de discussion ?!

 

Le texte qui apparait c'est :

Tout ça reste obscur pour moi, même si je repère ici et là quelques termes de script

Merci en tout cas Bruno pour les explications ;)

 

Bizarre ce truc... certainement du à la refonte du site

 

Bon le post est à nouveau normal... allez comprendre

J'aurais bien supprimé celui-ci mais je n'ai pas trouvé le bouton pour faire ça

Modifié par FormaBois

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"

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é