11 nov. 2019

[Dynamo+=Python] Copier les états des calques CAO



A défaut de travailler qu'avec des maquettes en liens, travailler avec des liens CAO sous Revit peut poser quelques difficultés

La difficulté n'étant pas dans l'importation du lien CAO ou dans le géo-référencement du DWG ni dans le changement de couleur des calques (via gestionnaire de style d'objet) mais par exemple dans la gestion des états de calques au travers de différents gabarits de vue.

En effet impossible d'enregistrer un état de "calque" d'un lien CAO pour le réattribuer sur un autre gabarit de vue (ou vue).

Quand Revit importe un DWG (Classe ImportInstance) on retrouve les calques en Sous-Catégories, la Catégorie étant le lien CAO.


le Defpoints qui se pensait insupprimable...








Pour collecter les statuts de visibilité des liens CAO on applique la méthode View.GetCategoryHidden(ElementId) en passant en argument l'Id (Objet) de la sous catégorie (calque CAO).

Gist getstatus




Ensuite pour appliquer ces états aux autres vues existantes il faut d'abord vérifier si pour chacune d'entre elles l'instance est dépendante d'un gabarit de vue ou non avec la propriété View.ViewTemplateId  et la méthode View.GetNonControlledTemplateParameterIds()

Gist checkview



Enfin pour chaque vue ou gabarit de vue, on applique ces statuts aux autres vues, méthode View.SetCategoryHidden(ElementId, bool).




aperçu en vidéo du script complété