Aller au contenu

les xref, les calques, les fenêtres


landk

Messages recommandés

Bonjour!

 

Je cherche une solution simple mais je ne trouve pas...

 

Soit:

-Un fichier A.dwg,comportant une 30aine de calques, répartis entre existant/démolition/projet

-Des fichiers B,C,D,E.dwg applelant le plan A.dwg en xref

-Les fichiers B,C,D,E comportant chacun 4 présentations, soit un total de 16 présentations.

-Les 16 présentations nécessitant des gels de calques de A dans les fenêtres de présentation, par catégorie (en gros: existant/démolition/projet, les gels des calques variant selon les présentations).

-Un plan A qui peut être amené à changer, notamment au niveau de la couleur des calques et des épaisseurs des lignes.

-La gestion de l'affichage des calques dans les fenêtres de présentations qui doit être calée une fois pour toute.

 

Je ne trouve pas de solution simple...

Si je joue avec visretain, soit toute ma gestion de l'affichage des calques est foutue en l'air à chaque rechargement de A.dwg, soit les modifications de couleur et d'épaisseur ne sont pas prises en compte en les modifiant sur A.dwg

 

Moi je veux juste que l'affichage des calques de mon xref reste après chaque rechargement (tout en récupérant toutes les modifications apportées au xref, notament couleurs et épaisseurs, gestion de l'affichage des calques non comprise)

 

J'ai un peu cherché, mais sans trouver de solution...

Quelqu'un connaitrait LA variable qui solutionnerait mon problème? :(

 

(je ne l'ai pas non plus signalé, mais je ne souhaite pas utiliser le gestionnaire des états de calque, ni les filtres de propriétés, ni une lisp: trop compliqué pour tous les intervenants)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Dans tous les cas, VISRETAIN doit être à 1....

 

Une solution, peut être en utilisant des styles de tracé !

 

Par contre, si tu modifies les propriétés des calques de tes XREFS, c'est plus embêtant, car une fois inséré, les anciennes propriétés seront validées ! Faudrait creuser la méthode de travail...

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Peut-être une solution.

Lorsque tu es dans une tes présentations, et que tu es dans la fenêtre (Espace Objet), tu ouvres ton gestionnaire de propriétés des calques, tu fais défiler la barre de défillement en bas du gestionnaire sur la droite. Tu vas voir une autre colonne avec les propriétés des calques:

 

http://pix.toile-libre.org/upload/img/1350631838.png

 

C'est dans cette deuxième colonne que tu vas modifier la propriété des calques dont tu veux donner une apparence particulière (Couleur, épaisseur, type de ligne, etc.) Tu modifiera les propriétés des calques seulement dans la fenêtre courante. Ca ne modifieras pas les propriétés de tes calques dans l'espace objet flottant (l'espace objet où tu dessines) Tu fais la même chose dans les autres fenêtres des autres présentations.

Modifié par Steven

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Par contre, il faudra enregistrer des états de calques pour les sorties car AutoCAD ne conserve pas la configuration des propriétés des calques pour les sorties de plans dans les fenêtres si tu modifie les couleurs des calques de tes Xref.

D'ailleurs, ça serait bien que la configuration des propriétés des calques pour les sorties de plans soient conserver même si on intervient sur les Xref.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Par contre, avec 2013, il n'y a pas besoin de s'enregistrer des états de calques :)

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

En fait, après avoir testé et retesté, lorsque je change la couleur d'u calque des d'une Xref, et que je la recharge dans le dessin hôte, si Visretain est à 1, le calque ne change pas de couleur et du coup, la configuration des propriétés de calques pour la sortie ne change pas.

Par contre, si je change la couleur d'un calque sur la Xref puis que je la recharge dans le dessin hôte, si Visretain est à 0, le changement de couleur du claque de la xref est pris en compte. par contre, la configuration des propriétés de calques pour la sortie est annulé. Même sur 2013 :(

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Justement, c'est tout le problème avec cette variable VISRETAIN !

 

Une astuce consiste à changer le NOM du/des calques modifiés dans les différentes XREF et de recharger...ça marche, mais du coup comme c'est considéré comme un nouveau calque, il ne prendra pas en compte les options de visibilité dans le dessin en cours...

 

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à toutes et tous,

 

Salut Steven,

 

 

 

Que veux tu dire exactement ?

 

Merci d'avance

 

Salut Lilian.

 

Je me suis un peu trop hâté dans ma réponse :unsure: En fait, que ce soit sous 2012 ou 2013, il faut quand même s'enregistrer un état des calques si on veut retrouver sa configuration des propriété des calques pour la sortie après avoir modifier les propriétés des calques dans la Xref.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

peut-être une solution, un peu tordue certes, et qui ne fonctionne pas sur les nouvelles versions d'AutoCAD

1. mettre VISRETAIN à 0

2. Sauvegarder l'état des calques de la fenêtre de présentation, mais en ne cochant à droite dans les propriétés à restaurer que "Visibilité dans la fenêtre courante" et nommer cet état de calque avec le nom de la présentation

3. Créer un bouton avec la macro suivante :

^C^CEO;(command "-calque" "a" "r" (getvar "CTAB") "" "");EP

 

Avec VISRETAIN à 0 on recharge les propriétés du dessin d'origine, puis on passe sur la présentation, on clique sur le bouton et ça restaure uniquement la visibilité des calques. Le fait d'avoir un nom d'état de calque correspondant au nom de la présentation, ça permet d'avoir un seul bouton.

 

Maintenant, cette méthode fonctionne bien sous AutoCAD 2008, par contre sous 2012 et 2013, la restauration de l'état de calque en ligne de commande semble ne pas fonctionner.

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Merci pour toutes vos réponses

 

Comme le dit Christian, c'est tout le problème avec cette variable VISRETAIN

La régénération des xrefs mériterait de pouvoir être paramétrée comme bon nous semble,

Dans mon cas je travaille sur un batiment de 4 niveaux, implanté dans un site.

Chaque niveau est complexe et j'ai préféré créer un fichier par niveau.

Le site est également sur un fichier à part, et c'est lui qui est appelé en xref sur tous les niveaux, en jouant avec xdelim.

Le site étant régulièrement modifié, cela me posait problème...

Au final j'ai tout de même cédé et j'ai récupéré un lisp qui me parait très bien:

 

http://www.lee-mac.com/resetxreflayers.html

 

 

ResetXRefLayersV1-1.lsp © 2012 Lee Mac

 

Dark

Light

VLIDE

 

;;-------------------=={ Reset XRef Layers }==----------------;;

;; ;;

;; Resets specific properties of all layers dependent on the ;;

;; selected External Reference(s) to those set in the source ;;

;; drawing file(s). ;;

;;------------------------------------------------------------;;

;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;;

;;------------------------------------------------------------;;

;; Version 1.0 - 19-11-2011 ;;

;; ;;

;; First Release. ;;

;;------------------------------------------------------------;;

;; Version 1.1 - 27-11-2011 ;;

;; ;;

;; Added code to search for XRef Source File in working ;;

;; directory & support directories if not found at XRef Path ;;

;;------------------------------------------------------------;;

 

(defun c:RXL nil (c:ResetXRefLayers))

 

(defun c:ResetXRefLayers

 

( / *error* _Settings _GetDocumentObject acapp acdoc acdocs acver dbxdoc dcl def han inc lst props sel tile tiles xrf )

 

(defun *error* ( msg )

(if (< 0 han) (setq han (unload_dialog han)))

(if (and dcl (setq dcl (findfile dcl))) (vl-file-delete dcl))

(if (and dbxdoc (not (vlax-object-released-p dbxdoc))) (vlax-release-object dbxdoc))

(if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))

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

)

(princ)

)

 

(defun _Settings ( code / bit dcl han tmp )

(cond

(

(not

(and

(setq dcl (vl-filename-mktemp nil nil ".dcl"))

(setq tmp (open dcl "w"))

(progn

(foreach line

'(

"rxl : dialog { label = \"Settings\"; spacer;"

" : boxed_column { label = \"Properties to Reset\"; width = 65.0; fixed_width = true; alignment = centered; spacer;"

" : row { alignment = centered; spacer; "

" : column {"

" : toggle { key = \"colour\"; label = \"Colour\"; }"

" : toggle { key = \"linetype\"; label = \"Linetype\"; }"

" : toggle { key = \"lineweight\"; label = \"Lineweight\"; }"

" }"

" : column {"

" : toggle { key = \"plot\"; label = \"Plot\"; }"

" : toggle { key = \"plotstyle\"; label = \"Plot Style\"; }"

" : toggle { key = \"frozenvp\"; label = \"Frozen in VP\"; }"

" }"

" : column {"

" : toggle { key = \"on\"; label = \"On\"; }"

" : toggle { key = \"locked\"; label = \"Locked\"; }"

" : toggle { key = \"frozen\"; label = \"Frozen\"; }"

" }"

" : column {"

" : toggle { key = \"description\"; label = \"Description\"; }"

" spacer;"

" : toggle { key = \"selectall\"; label = \"Select All\"; }"

" }"

" }"

" spacer;"

" }"

" spacer; ok_cancel;"

"}"

)

(write-line line tmp)

)

(setq tmp (close tmp))

(while (null (findfile dcl)))

(< 0 (setq han (load_dialog dcl)))

)

(new_dialog "rxl" han)

)

)

(princ "\nError Loading Dialog.")

)

( t

(setq bit 1

tmp code

)

(if (= 1023 tmp)

(set_tile "selectall" "1")

)

(foreach tile

(setq tiles

'(

"colour"

"linetype"

"lineweight"

"plot"

"plotstyle"

"frozenvp"

"on"

"locked"

"frozen"

"description"

)

)

(if (= bit (logand tmp bit))

(set_tile tile "1")

(set_tile tile "0")

)

(action_tile tile

(strcat

"(setq tmp (boole 6 tmp " (itoa bit) "))"

"(set_tile \"selectall\" (if (= 1023 tmp) \"1\" \"0\")))"

)

)

(setq bit (lsh bit 1))

)

(action_tile "selectall"

(strcat

"(foreach tile tiles (set_tile tile $value))"

"(if (eq \"1\" $value)"

" (setq tmp 1023)"

" (setq tmp 0)"

")"

)

)

(if (= 1 (start_dialog)) (setq code tmp))

)

)

(if (< 0 han) (setq han (unload_dialog han)))

(if (and dcl (setq dcl (findfile dcl))) (vl-file-delete dcl))

code

)

 

(defun _GetDocumentObject ( dbxdoc acdocs xref / path xpath )

(setq xpath (cdr (assoc 1 (entget (tblobjname "BLOCK" xref)))))

(cond

( (null

(or

(setq path (findfile xpath))

(setq path (findfile (strcat (vl-filename-base xpath) ".dwg")))

)

)

(princ (strcat "\nSource Drawing for " xref " not Found."))

nil

)

( (cdr (assoc path acdocs))

)

( (null

(vl-catch-all-error-p

(vl-catch-all-apply 'vla-open (list dbxdoc path))

)

)

dbxdoc

)

( (princ (strcat "\nUnable to Open " xref " Source Drawing."))

nil

)

)

)

 

(if (null (setq props (getenv "LMac\\RXLProps")))

(setq props (+ 1 2 4 8 512))

(setq props (atoi props))

)

 

(while (setq def (tblnext "BLOCK" (null def)))

(if (= 4 (logand 4 (cdr (assoc 70 def))))

(setq lst (cons "," (cons (cdr (assoc 2 def)) lst)))

)

)

 

(cond

( (null lst)

(princ "\nNo XRefs found in Drawing.")

)

( t

(setq acapp (vlax-get-acad-object)

acdoc (vla-get-activedocument acapp)

dbxdoc (vla-GetInterfaceObject acapp

(if (< (setq acver (atoi (getvar "ACADVER"))) 16)

"ObjectDBX.AxDbDocument"

(strcat "ObjectDBX.AxDbDocument." (itoa acver))

)

)

acdocs (vlax-for doc (vla-get-documents acapp)

(setq acdocs (cons (cons (vla-get-fullname doc) doc) acdocs))

)

)

(while

(progn

(setvar 'ERRNO 0)

(initget "Multiple All Settings")

(setq sel (entsel "\nSelect XRef to Reset [Multiple/All/Settings] <Exit>: "))

(cond

( (= 7 (getvar 'ERRNO))

(princ "\nMissed, try again.")

)

( (null sel)

nil

)

( (eq "Multiple" sel)

(setvar 'NOMUTT 1)

(princ "\nSelect XRefs to Reset <Exit>: ")

(setq sel

(vl-catch-all-apply 'ssget

(list

(list '(0 . "INSERT") (cons 2 (apply 'strcat (cdr lst))))

)

)

)

(setvar 'NOMUTT 0)

(if (and sel (not (vl-catch-all-error-p sel)))

(repeat (setq inc (sslength sel))

(LM:ResetXRefLayers

(setq xrf (cdr (assoc 2 (entget (ssname sel (setq inc (1- inc)))))))

(_GetDocumentObject dbxdoc acdocs xrf)

acdoc

props

)

)

)

nil

)

( (eq "All" sel)

(while (setq def (tblnext "BLOCK" (null def)))

(if (= 4 (logand 4 (cdr (assoc 70 def))))

(LM:ResetXRefLayers

(setq xrf (cdr (assoc 2 def)))

(_GetDocumentObject dbxdoc acdocs xrf)

acdoc

props

)

)

)

nil

)

( (eq "Settings" sel)

(setq props (_Settings props))

)

( (vl-consp sel)

(if (eq "INSERT" (cdr (assoc 0 (setq sel (entget (car sel))))))

(if (= 4 (logand 4 (cdr (assoc 70 (tblsearch "BLOCK" (cdr (assoc 2 sel)))))))

(LM:ResetXRefLayers

(setq xrf (cdr (assoc 2 sel)))

(_GetDocumentObject dbxdoc acdocs xrf)

acdoc

props

)

(princ "\nSelected Block is not an XRef.")

)

(princ "\nInvalid Object Selected.")

)

)

)

)

)

(vla-regen acdoc acallviewports)

(vlax-release-object dbxdoc)

)

)

(setenv "LMac\\RXLProps" (itoa props))

(princ)

)

 

;;------------------------------------------------------------;;

 

(defun LM:ResetXRefLayers ( xref xrdoc acdoc props / _GetLayerProperties ass bit data name pos value xdef )

 

(defun _GetLayerProperties ( doc props / bit lst data )

(vlax-for layer (vla-get-layers doc)

(setq bit 1

lst nil

)

(foreach prop

'(

color

linetype

lineweight

plottable

plotstylename

viewportdefault

layeron

lock

freeze

description

)

(if

(and

(vlax-property-available-p layer prop)

(= bit (logand bit props))

)

(setq lst (cons (cons bit (vlax-get-property layer prop)) lst))

)

(setq bit (lsh bit 1))

)

(setq data

(cons

(cons

(strcase (vla-get-name layer))

(reverse lst)

)

data

)

)

)

data

)

 

(cond

( (null xrdoc)

nil

)

( (vl-catch-all-error-p

(setq xdef

(vl-catch-all-apply 'vla-item (list (vla-get-blocks acdoc) xref))

)

)

(princ "\nXRef not present in Drawing.")

nil

)

( (setq data (_GetLayerProperties xrdoc props))

(vla-reload xdef)

 

(vla-startundomark acdoc)

(vlax-for layer (vla-get-layers acdoc)

(setq bit 1)

(if

(and

(setq pos (vl-string-position 124 (setq name (strcase (vla-get-name layer)))))

(eq (strcase xref) (substr name 1 pos))

(setq ass (cdr (assoc (substr name (+ 2 pos)) data)))

)

(foreach prop

'(

color

linetype

lineweight

plottable

plotstylename

viewportdefault

layeron

lock

freeze

description

)

(if

(and

(vlax-property-available-p layer prop t)

(= bit (logand bit props))

(setq value (cdr (assoc bit ass)))

)

(if (and (= 2 bit) (not (eq "CONTINUOUS" (strcase value))))

(vl-catch-all-apply 'vlax-put-property (list layer prop (strcat xref "|" value)))

(vl-catch-all-apply 'vlax-put-property (list layer prop value))

)

)

(setq bit (lsh bit 1))

)

)

)

(vla-endundomark acdoc)

t

)

)

)

 

;;------------------------------------------------------------;;

 

(vl-load-com)

(princ)

(princ "\n:: ResetXRefLayers.lsp | Version 1.1 | © Lee Mac 2011 www.lee-mac.com ::")

(princ "\n:: Type \"ResetXRefLayers\" or \"RXL\" to Invoke ::")

(princ)

 

;;------------------------------------------------------------;;

;; End of File ;;

;;------------------------------------------------------------;;

 

 

vali vala encore merci à vous tous pour vos réponses! :)

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é