Revit : Suppression type de lignes non utilisées

Revit : Suppression type de lignes non utilisées

a.lieblang
Advocate Advocate
1 332 Visites
12 Réponses
Message 1 sur 13

Revit : Suppression type de lignes non utilisées

a.lieblang
Advocate
Advocate

Bonjour tout le monde.

 

Existe il un plugin ou un dynamo qui permet de supprimer les types de lignes non utilisées dans le projet.


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
Suppression type de lignes non utilisées

0 J'aime
Solutions acceptées (3)
1 333 Visites
12 Réponses
Replies (12)
Message 2 sur 13

ekouassi
Collaborator
Collaborator

Bonjour @a.lieblang ,

Avez vous essayer purger les élements non utilisées de revit et choisisant style de ligne?.

Salutations, 

0 J'aime
Message 3 sur 13

a.lieblang
Advocate
Advocate

C'est justement le problème, dans la fonction purger on ne retrouve pas les lignes. 😞

0 J'aime
Message 4 sur 13

jfbrigaud
Mentor
Mentor

Bonjour @a.lieblang 

 

Vous avez ce plugin

https://rv-boost.com/rv-deepclean/ 


Jean-François Brigaud

EESignature

0 J'aime
Message 5 sur 13

a.lieblang
Advocate
Advocate

Merci pour ta réponse mais malheureusement je n'arrive pas à l’obtenir 😞

On le trouve sur App Store mais seulement en version 2024 et je suis en 2023.

0 J'aime
Message 6 sur 13

jfbrigaud
Mentor
Mentor
Solution acceptée

OK, perso j'utilise la solution qui est décrite dans ce post:

https://forum.dynamobim.com/t/line-styles-deleted-by-dynamo-still-in-project/64415/2 

(Fais d'abord un test sur une une copie de maquette pour voir si cela convient)

 


Jean-François Brigaud

EESignature

0 J'aime
Message 7 sur 13

a.lieblang
Advocate
Advocate

Merci de ta réponse.

As-tu le script car je m'y connait pas en dynamo (pour l'instant)

0 J'aime
Message 8 sur 13

jfbrigaud
Mentor
Mentor

J'ai le script mais il ne fonctionnera pas sur ton pc, car je suis en 2024 et j'ai personnalisé certains noeud. Je regarde dès que j'ai un peu de temps si je peux faire une version plus facile à installer.


Jean-François Brigaud

EESignature

0 J'aime
Message 9 sur 13

a.lieblang
Advocate
Advocate

Je te remercie beaucoup. 👍

0 J'aime
Message 10 sur 13

jfbrigaud
Mentor
Mentor

Voici une version simplifiée, il faudra simplement installer le package GeniusLoci adaptée à ta version Revit avant d'ouvrir le script.


Jean-François Brigaud

EESignature

0 J'aime
Message 11 sur 13

FlorianFélix-Emery
Advocate
Advocate
Solution acceptée

Bonjour, 

Essaie avec le code python ci-dessous: 



#!/usr/bin/python
# encoding: utf-8




try:
	uiapp = __revit__
	doc = uiapp.ActiveUIDocument.Document
	app = uiapp.Application
	uidoc = uiapp.ActiveUIDocument

except:
	import clr
	clr.AddReference('RevitAPI')
	from Autodesk.Revit.DB import *
	from Autodesk.Revit.DB.Structure import *
	
	clr.AddReference('RevitAPIUI')
	from Autodesk.Revit.UI import *
	
	clr.AddReference('System')
	from System.Collections.Generic import List
	
	clr.AddReference('RevitNodes')
	import Revit
	clr.ImportExtensions(Revit.GeometryConversion)
	clr.ImportExtensions(Revit.Elements)
	
	clr.AddReference('RevitServices')
	import RevitServices
	from RevitServices.Persistence import DocumentManager
	from RevitServices.Transactions import TransactionManager
	doc = DocumentManager.Instance.CurrentDBDocument
	uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

from Autodesk.Revit.DB import FilteredElementCollector, LinePatternElement
from Autodesk.Revit.UI import TaskDialog
from Autodesk.Revit import DB

__doc__ = """Purge les motifs de lignes inutilisés."""
__title__ = """Purge
Motifs Lignes"""
__author__ = "Florian Félix-Emery"
__persistentengine__ = True

# Paramètres globaux pour purger les styles de lignes
modifiedByDeleteLinePattern = 0
checkForPurgeLinePatterns = False
_doc = None
patternName = ""
#------------------------------------------------------------------------------------------------------------------------------

#------------------------------------------------------------------------------------------------------------------------------
# Purge les styles de lignes inutilisés du documents
#------------------------------------------------------------------------------------------------------------------------------
def purgeMotifsLignes(doc, value):
    global modifiedByDeleteLinePattern, checkForPurgeLinePatterns, _doc, patternName
    _doc = doc
    app = doc.Application
    app.DocumentChanged += documentChanged_PurgeLigneStyle

    lp = FilteredElementCollector(doc).OfClass(LinePatternElement).ToElements()
    deletedMaterials = ""
    unusedMaterialCount = 0

    for pattern in lp:
        modifiedByDeleteLinePattern = 0
        patternName = pattern.Name + " (id " + str(pattern.Id) + ")"
        #print (patternName)
        with DB.TransactionGroup(doc, "Purge des motifs de lignes: " + patternName) as tg:
            tg.Start()
        
            with DB.Transaction(doc, "Purge de motifs de lignes") as t:
                t.Start()
                checkForPurgeLinePatterns = True
                doc.Delete(pattern.Id)
                t.Commit() # valider la transaction pour déclencher l'événement DocumentChanged
        
            checkForPurgeLinePatterns = False
            if modifiedByDeleteLinePattern == value:
                unusedMaterialCount += 1
                deletedMaterials += patternName + "\n"
                tg.Assimilate()
            else: # revenir sur le groupe de transactions pour annuler la suppression
                tg.RollBack()

    td = TaskDialog("Info")
    td.Title = "Purge de motifs de lignes"
    td.MainInstruction = str(unusedMaterialCount) + " motifs de lignes supprimés"
    td.MainContent = deletedMaterials
    td.Show()

    app.DocumentChanged -= documentChanged_PurgeLigneStyle
#------------------------------------------------------------------------------------------------------------------------------

#------------------------------------------------------------------------------------------------------------------------------
# Déclencheur d'évenement lorsque le document est modifié
#------------------------------------------------------------------------------------------------------------------------------   
def documentChanged_PurgeLigneStyle(sender, e):
    global checkForPurgeLinePatterns, modifiedByDeleteLinePattern, _doc, patternName   
    if not checkForPurgeLinePatterns:# ne pas vérifier lors du retour en arrière du groupe de transactions
        return
    deleted = e.GetDeletedElementIds()
    modified = e.GetModifiedElementIds()
    if "IMPORT" in patternName:
        print (modified)
        for id in modified:
            print (doc.GetElement(id))
            print (id)
    modifiedByDeleteLinePattern = len(deleted) + len(modified)
#------------------------------------------------------------------------------------------------------------------------------


with DB.TransactionGroup(doc, "Purge des motifs de lignes") as tgroup:
    tgroup.Start()
    purgeMotifsLignes(doc, 1)
    tgroup.Assimilate()

 Il devrait fonctionner avec dynamo ou pyRevit. Pour l'utiliser dans dynamo, il suffit de le coller dans un noeud "Python script" et de lancer l'exécution du fichier dynamo.

Message 12 sur 13

patrick.emin
Alumni
Alumni

Bonjour @a.lieblang 

Votre problème a-t-il été résolu? Si oui, pouvez vous nous indiquer de quelle façon pour que cela profite à la communauté, si non, pouvez vous nous dire si vous avez pu essayer les suggestions qui vous ont été faites? 

Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton  APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or
0 J'aime
Message 13 sur 13

a.lieblang
Advocate
Advocate
Solution acceptée

Merci à vos participations.

ça n'a pas fonctionné directement mais avec tous les éléments donnés un ami ma fait un dynamo mais Revit 2023 que je vous partage.