Dynamo - Revit - Placer vue sur feuille existante

Dynamo - Revit - Placer vue sur feuille existante

bvalleeWB6BZ
Advocate Advocate
1 350 Visites
14 Réponses
Message 1 sur 15

Dynamo - Revit - Placer vue sur feuille existante

bvalleeWB6BZ
Advocate
Advocate

Bonjour,

Je cherche à ajouter une vue sur une feuille existante via dynamo.

 

J'ai essayé avec viewport.create mais quelque chose semble ne pas fonctionner.

bvalleeWB6BZ_0-1700490975976.png

Sauriez-vous résoudre cette erreur ou me donner un autre nœud pour faire ceci?

0 J'aime
Solutions acceptées (1)
1 351 Visites
14 Réponses
Replies (14)
Message 2 sur 15

nmarcelis
Advisor
Advisor

@bvalleeWB6BZ Je ne peux pas vous aider avec votre script dynamo, mais je peux te recommander le plugin gratuit diroots.
Avec « Sheetgen », vous pouvez facilement placer des vue sur une feuille, selon certaines règles.

https://diroots.com/revit-plugins/batch-create-revit-sheets-and-place-views-with-sheetgen/

 

Revit Certified Professional Architecture, Structure and MEP.
0 J'aime
Message 3 sur 15

bvalleeWB6BZ
Advocate
Advocate

Bonjour,

C'est gentil mais je crée un script complet qui me permet de générer tout mes plans de vente instantanément, il faut que ce soit intégré à mon script.

Mais merci !

0 J'aime
Message 4 sur 15

JC_LEBEAU
Participant
Participant

Bonjour,

 

Est-ce que cela fonctionne avec une seule feuille et une seule vue ?

 

Je pense que c'est un problème de listes en entrée, vous avez 8 vues pour 3 feuilles. Il faudrait, selon moi, repartir les vues par feuilles.

0 J'aime
Message 5 sur 15

bvalleeWB6BZ
Advocate
Advocate

 

Non je viens de tester avec une vue et une feuille, même avertissement)..

 

bvalleeWB6BZ_0-1700499316078.png

 

0 J'aime
Message 6 sur 15

christian.stan
Collaborator
Collaborator

Salut

Je pense que tu as vérifié si ta vue n'est pas placée déjà sur une feuille?

voici avec nœud python

christianstan_0-1700515027302.png

import clr
import sys

import System
from System import Array
from System.Collections.Generic import *
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager 
from RevitServices.Transactions import TransactionManager 

clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")

import Autodesk 
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication 
app = uiapp.Application 
uidoc = uiapp.ActiveUIDocument

#######OK NOW YOU CAN CODE########
Vue=UnwrapElement(IN[0])
Feuille=UnwrapElement(IN[1])
point_ins=IN[2].ToXyz() #Transformez en Point revit
a=Feuille.Id
b=Vue.Id
TransactionManager.Instance.EnsureInTransaction(doc)
c=Viewport.Create(doc,a,b,point_ins)
TransactionManager.Instance.TransactionTaskDone()
OUT = c

cordialement

christian.stan

Message 7 sur 15

bvalleeWB6BZ
Advocate
Advocate

Bonjour @christian.stan ,

Oui ce sont des vues et des feuilles qui sont créée dans ce même script (peut-être là le souci, la vue veut se placer avant que la feuille ne soit créée? J'avoue ne pas savoir comment ça se passe à ce niveau là.

 

Merci beaucoup pour le python mais ça ne fonctionne toujours pas. J'ai collé bêtement, je ne connais pas python non plus 😅

 

bvalleeWB6BZ_0-1700555286453.png

 

Message 8 sur 15

christian.stan
Collaborator
Collaborator

Salut, c'est un problème de Liste (même si ce n'est qu'un élément cela reste une liste avec un élément que tu envoies pour la vue et la feuille   voici une illustration)

christianstan_0-1700560150789.png

 

 

réalise cette adaptation dans le code python initial:

ligne 34 et 35

a=Feuille[0].Id

b=Vue[0].Id

 

cordialement

christian.stan

 

Message 9 sur 15

bvalleeWB6BZ
Advocate
Advocate

Super, Merci beaucoup @christian.stan!

Seul hic c'est qu'au final je veux que ça fonctionne avec une liste 😅

la de ce que je comprend on attrape la ligne 0 dans la liste des feuilles et celle des vues.

Ce qui fait que je n'ai qu'une vue qui se place dans une feuille.

 

bvalleeWB6BZ_0-1700561185823.png

*

bvalleeWB6BZ_1-1700561238023.png

 

 

Message 10 sur 15

bvalleeWB6BZ
Advocate
Advocate

Je me dis que c'est peut-être aussi qu'il me faut autant de coordonnées que de vues et de feuilles donc j'ai fait un list.ofreapeatedItem mais le python ne l'accepte pas .

0 J'aime
Message 11 sur 15

FlorianFélix-Emery
Advocate
Advocate

Salut,

Essayes avec le code python proposé modifié pour intégrer une liste de vue:

vue=UnwrapElement(IN[0])
Feuille=UnwrapElement(IN[1])
point_ins=IN[2].ToXyz() #Transformez en Point revit

def CreateViewport(vue, feuille, point):
    a=feuille.Id
    b=vue.Id
    c=Viewport.Create(doc,a,b,point_ins)
    return c

viewports=[]
TransactionManager.Instance.EnsureInTransaction(doc)
for v in vue:
    viewports.append(CreateViewport(v, Feuille, point_ins))
TransactionManager.Instance.TransactionTaskDone()
OUT = viewports

 

Message 12 sur 15

y_fang6XKHT
Participant
Participant
Solution acceptée

pour mon script de PDV, j'utile ce nœud la, qui fonctionne très bien 

y_fang6XKHT_0-1700566599445.png

et Pour le légende, j'utilise un autre noeud: 

 

y_fang6XKHT_1-1700566651319.png

 

peut-etre tu peux essayer. 

Message 13 sur 15

bvalleeWB6BZ
Advocate
Advocate

Bonjour,

Merci pour ta réponse,

Je ne sais pas d'où tu tiens ton premier noeud mais je ne l'ai pas.

Le second c'était ma version initiale mais qui ne fonctionnait pas..

0 J'aime
Message 14 sur 15

y_fang6XKHT
Participant
Participant

J'ai mis un note en haut de nœud, tu vois le nom de package et sa version, donc tu peux aller télécharger. 

 

Le nœud que tu as utilisé, ca marche bien pour légende, mais ca ne marche pas trop avec les vues comme vue de plan. 

 

 

Message 15 sur 15

bvalleeWB6BZ
Advocate
Advocate
Super merci beaucoup, on est sur une victoire !
0 J'aime