Aller au contenu

Comment changer de calque sans changer de type de ligne??


zizou_elec

Messages recommandés

Bonjour à tous,

 

J'ai un petit souci sur Autocad 2006 :dans le cadre de mon boulot, je dois traiter des plans émanant de plusieurs entités.

Je créé ensuite un plan sur la base d'un calque=un plan recu.

Le problème qui se pose est que je souhaite conserver les types de lignes des différents calques des plans d'origine mais le tout sur un seul calque avec une seul couleur!

Quelqu'un aurait une idée ( un lisp?) pour effectuer cette opération?

 

Merci d'avance et bonnes fêtes de fin d'année à tous et à toutes.

Lien vers le commentaire
Partager sur d’autres sites

une solution...

travailler avec des xref (tu insères ton plan dans un calque spécifique)

tu passe par un de ces lisp pour le mètre tout gris (ou la couleur de ton choix)

 

les avantages: tu conserve les calques et les types de trait de l'archi, tu peu geler quand même tout d'un coup (si tu as plusieurs niveaux sur un plan par exemple)

si ya une modif sur le plan de ref, c'est plus facile à diffuser..

Lien vers le commentaire
Partager sur d’autres sites

zizou_elec

 

Si j'ai bien compris, les objets sont initialement de type de ligne ByLayer (DuCalque) et en les fusionnant sur un calque, tu perd la propriété d'origine (il semble que la couleur ne pose pas problème puisque tu dois avoir choisi un gris pale).

 

Il te faudra modifier le fichier source d'abord grâce à cette routine qui forcera les propriétés. Tu pourras l'insérer par la suite.

 

;;; c:BylayerToByEntityProps
;;; Par Serge Camiré, 2008-12-18
(defun c:BylayerToByEntityProps (
/ forceTypeLigne forceCouleur pref prop Props
  )
  ;; Force les propriétés (couleur et type de ligne) à être par objet plutôt que par calque.
  (initget "TypeLigne Couleur 2")
  (setq pref (getkword "\nForcer les propriétés suivante [TypeLigne/Couleur/les 2] : "))
  (setq forceTypeLigne (/= pref "Couleur"))
  (setq forceCouleur (wcmatch pref "Couleur,2"))
  (setq Props (GetLayerProperties))

  (vlax-for ModelSpaceObject (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
     (setq prop (assoc (vla-get-layer ModelSpaceObject) Props))
     (if (and forceCouleur (= 256 (vla-get-Color ModelSpaceObject))) (vla-put-Color ModelSpaceObject (nth 1 prop)))
     (if (and forceTypeLigne (= "BYLAYER" (vla-get-Linetype ModelSpaceObject))) (vla-put-Linetype ModelSpaceObject (nth 2 prop)))
  )
  (princ)
)

(defun GetLayerProperties (
/ name color linetype prop return
  )
  ;; Retourne (list (list nomclaque1 couleur1 typeligne1) (list nomclaque2 couleur2 typeligne2)) ...)
  ;; de tout le dessin.
  (setq return nil)
  (vlax-for layer (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object)))
     (setq name (vla-get-name layer))
     (setq color (vla-get-Color layer))
     (setq linetype (vla-get-Linetype layer))
     (setq prop (list (list name color linetype)))
     (setq return (append return prop))
  )
  return
)
(princ "\nTapez BylayerToByEntityProps pour forcer les propriétés.")
(princ)

 

Serge

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à toutes et tous,

 

Par contre comment s'appelle ce lisp?

 

BylayerToByEntityProps

 

comment je le lance?

 

Rappel commentaires de (gile) =>

 

Comme la demande est récurente et que je commence à me lasser de répéter...

J'ouvre donc un nouveau sujet qui servira, j'espère, aussi bien aux utilisateurs novices de routines qu'aux débutants qui se lancent dans l'aventure de la programmation en LISP.

 

1 Pour charger une routine LISP

 

1.1 Sans enregistrer de fichier

 

C'est la méthode à utiliser pour les expressions simple et les fonctions "lambda" : ((lambda ...)).

Elle peut aussi être utilisée pour les "defun" : (defun ...).

Il suffit de copier le code (rien que le code, tout le code) et de le coller sur la ligne de commande et de valider (Entrée ou Espace)

Dans le cas d'expression simple ou de fonction "lambda", l'expression est immédiatement évaluée, s'il s'agit d'un "defun", il faut ensuite lancer la commande (voir "2 Pour lancer une commande LISP", plus bas)

 

 

1.2 Enregistrer un fichier .lsp

 

Après avoir copié le code (rien que le code, tout le code), le coller dans le bloc-note (ne pas utiliser d'éditeur de texte sofistiqué -type Word- qui rajoute des caractères de mise en pages).

Enregistrer le fichier, peu importe le nom, avec l'extension .lsp (par exemple : Toto.lsp).

Si le LISP est amené à resservir, il peut être judicieux de l'enregistrer dans un dossier du chemin de recherche des fichiers de support (menu Outils >> Options ... onglet Fichiers).

 

 

1.3 Charger dans le dessin courant

 

1.3.1 Commande APPLOAD

 

Taper APPLOAD à la ligne de commande ou menu Outils >> AutoLISP >> Charger une application.

Charger le LISP depuis le dossier où il a été enregistré.

 

1.3.2 Cliquer/déposer

 

Depuis l'explorateur Windows, sélectionner le fichier et le déposer dans la fenêtre d'AutoCAD.

 

1.3.3 Depuis la ligne de commande

 

Utiliser la fonction LISP load :

Si le fichier est enregistré dans un dossier du chemin de recherche, entrer l'expression LISP :

(load "Toto. lsp") ou (load "Toto")

Sinon, spécifier le chemin complet (dans ce cas les anti-slashes doivent être remplacés par des slashes ou des doubles anti-slashes) exemple :

(load "C:/MesLisp/toto.sp") ou (load "C:\\MesLisp\\toto.sp")

 

 

1.4 Charger automatiquement un fichier .lsp

 

Si le LISP est amené à être utilisé régulièrement, il peut être intéressant qu'il soit automatiquement chargé au démarrage d'AutoCAD et/ou dans tous les dessins.

 

1.4.1 Commande APPLOAD

 

Dans la boite dialogue de la commande APPLOAD, dans la case Au démarrage (valise), cliquer sur Contenu et ajouter le fichier.

 

1.4.2 Fichiers de chargement automatique

 

Les fichiers AutoCAD.LSP, ACADDOC.LSP (à crééer dans un dossier du chemin de recherche, s'ils n'existent pas) et les fichier MNL (associés aux fichier de menu MNS ou CUI de même nom) sont des fichiers contenant des routines et expressions LISP qui sont chargées automatiquement au démarrage (acad.lsp) ou dans chaque dessin (acaddoc.lsp et mnl).

Voir dans l'aide Guide de personnalisation >> Introduction aux interfaces de programmation >> AutoLISP et VisualLISP >> Chargement et exécution automatiques des routines AutoLISP.

NOTA : ne pas modifier les fichiers ACAD200*.LSP et ACAD200*DOC.LSP.

 

 

2 Pour lancer une commande LISP

 

On définit une commande en LISP en faisant précéder le nom de la commande/fonction par c: au début de la routine, juste après (defun , exemple :

(defun c:toto (...))

Dans ce cas il suffit de taper à la ligne de commande : toto et de valider.

 

 

3 Éditeur VisualLISP

 

AutoCAD intègre un éditeur de programmes LISP (commande VLIDE ou VLISP ou menu Outils >> AutoLISP >> Editeur VisualLISP).

Dans celui-ci, il est aussi possible, entre autre choses, de coller, écrire, modifier, enrgistrer, charger, évaluer des routines ou des expressions LISP, mais son utilisation (que je recommande fortement) ferait l'objet d'un sujet entier (voir ici).

 

 

4 Boites de dialogue (DCL)

 

Certains LISP fonctionnent avec une (ou des) boite(s) de dialogue. Le fichier LISP est alors accompagné d'un (ou de plusieurs) fichier(s) .DCL. Ces fichiers sont appelés par le LISP pour ouvrir la boite de dialogue. Pour qu'AutoCAD les trouvent ils doivent être enregistrés sous le nom qui leur a été donné, avec l'extension .dcl, dans un répertoire du chemin de recherche des fichiers de support (menu Outils >> Options... >> onglet Fichiers >> Chemin de recherche des fichiers de support). Il est préférable, à mon avis, de créer son propre répertoire de fichiers LISP et DCL et d'ajouter ce chemin à la liste.

 

 

5 Les fichiers VLX

 

Les fichier VLX sont des fichiers compilés (et cryptés) qui peuvent être la compilation de plusieurs fichiers LISP et DCL. Ils se chargent de la même manière que les fichiers LISP et permettent d'éviter d'avoir à s'occuper des fichiers DCL.

 

 

En espérant que je n'en ai pas trop oublié, si c'est le cas, faites le savoir...

[Edité le 6/4/2007 par (gile)][Edité le 16/6/2007 par (gile)]

 

[Edité le 28/12/2007 par (gile)]

 

 

____________________

De chacun selon ses moyens,

À chacun selon ses besoins.

Civil 3D 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

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é