By Benoît LECRIOUX on Lundi 4 Juillet 2016
Replies 23
Likes 2
Views 14.5K
Votes 0
Bonjour à tous et notamment aux utilisateurs de Dynamo,
je cherche à faire quelque chose à priori simple: obtenir la valeur de la hauteur d'une porte et ce, pour toutes les portes du projet.
Je récupère bien toutes les occurences de portes du projet mais lorsque j'essaie d'obtenir une valeur d'un des paramètres j'obtiens des erreurs. A noter que j'utilise des customs nodes du package Archi-Lab (j'ai essayé avec un revit anglais, à priori ça ne vient pas de là).
Je vous ai joint le screenshot.
Bonjour Benoît,

Mes maigres compétences en programmation ne me permettent pas de te dire pourquoi ta méthode ne marche pas.
En revanche, j'ai réussi à le faire différemment dans un de mes scripts. Voir pièce jointe.
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Merci Nathan. En combinant ta solution et la mienne, j'arrive à mes fins. Le noeud "Element.Type" semble être mieux adapté que "Get Type parameter"...

Une idée pour récupérer le niveau du sol le plus proche au-dessus de la porte pour en déduire la hauteur de linteau restant?
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
A première vue j'aurai plutôt tendance à récupérer le mur qui contient la porte avec "Element.host" de Clockwork Package puis utiliser la hauteur du mur (hauteur totale avec dalle incluse donc) et travailler à partir de ca.

Après il ne faut pas avoir dessiné les murs sur toute la hauteur du bâtiment ...
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Oui c'est ce que j'ai commencé à faire mais il faut que le haut du mur corresponde au haut de la dalle. pour les murs extérieurs ça devrait couvrir la majorité des cas. Par contre comment faire avec un voile intérieur sous plancher? La hauteur du linteau comprend l'épaisseur de la dalle.
C'est pour ça que je cherchais du côté du sol mais cela semble compliqué de faire: porte=> mur hôte=> sol attaché (je bloque après la 2é étape).
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Je suppose donc que tu as donné une hauteur à tes voiles plutôt qu'une contrainte inférieure et une contrainte supérieure ?
Je dessine en général en utilisant les contraintes et la hauteur du voile est donc toujours celle entre ma contrainte inf et ma contrainte sup. Même en réalisant un joint entre un sol et mon mur la hauteur de mon voile ne change pas. C'est très énervant dans certaines situations d'ailleurs, je songe de plus en plus à dessiner avec des voiles "Sans contrainte" ... Mais justement si tu spécifies une hauteur à ton voile tu as effectivement un problème pour les voiles intérieurs.

Pour obtenir le sol attaché à ton voile je peux te donner quelques pistes que j'ai moi même suivi pour créer automatiquement des joints entre des éléments. Il n'y a qu'une fonction qui va changer d'ailleurs.
En suivant ce lien : http://dynamobim.org/forums/topic/automatic-join-geometry-in-revit/ tu peux trouver un post de Ben OSBORNE qui donne un code permettant de joindre des éléments. Tu as aussi une fonction qui permet de tester si des éléments sont joints : Autodesk.Revit.DB.JoinGeometryUtils.AreElementJoined(doc, elementA, elementB). En adaptant le code tu devrais pouvoir sortir un booléen qui associé avec le noeud "FilterByBoolMask" devrait récupérer uniquement les sols joints à certains voiles.

Voila je pense que ça serait un bon point de départ mais c'est juste la démarche qui me vient à l'esprit en voyant ton problème ... et je suis pas expert haha ! Mais cela me semble réalisable ! Tu auras besoin de conseils de quelqu'un qui s'y connait mieux que moi pour continuer
Tu peux t’inscrire sur le forum DynamoBIM et poser ta question directement la bas. Certaines personnes font des trucs assez incroyables ...
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Je vais regarder cela et m'inscrire sur le forum. Merci Nathan.
L'anglais risque de me mettre des freins une fois de plus...
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Ah oui il est préférable de bien maîtriser l'anglais sinon cela peut poser des problèmes de compréhension ...

J'ai réfléchis un peu à ton problème, je pense que récupérer les niveaux ne sera pas forcément suffisant. Il faudra aussi systématiquement associer le niveau inférieur de ta dalle pour obtenir ta hauteur d'étage à l'aide d'une différence entre tes deux altitudes. Sinon cela me parait compliqué d'obtenir ta hauteur de linteau sur la base de la hauteur de porte et l'élévation haute de ta dalle supérieure.

Mais du coup j'ai pensé à une autre solution : Au lieu d'utiliser les Sols, tu peux directement utiliser les niveaux. Sur cette base tu calcules toutes tes hauteurs d'étages (Arase Sup dalle base jusqu'à arase sup dalle haute). En principe ces hauteurs seront correct que le voile soit en extérieur ou en intérieur. Tu filtres également tes portes par niveaux puis pour chaque porte tu déduis la hauteur d'étage correspondante à la hauteur de porte.
Tu devrais alors obtenir tes hauteurs de linteaux.

Je pense que c'est beaucoup plus simple comme solution étant donné que cela t'évites de passer par du code Python. J'ai pas essayé mais cela peut marcher, enfin cela dépend aussi de la complexité de ton projet avec les décalages éventuels des dalles.
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Merci Nathan de partager ta réflexion.
En fait c'est la 1ère idée que j'ai eu car ça semble le plus simple à récupérer dans Dynamo. Mais j'ai laissé cette piste car que se passe-t-il quand la dalle ne correspond pas aux niveaux (décaissés, recharges, niveau en fini, dalle en brut...)? Eh bien la hauteur de linteau sera faussée.
Au début je me suis dit que ça couvrirait au moins 80% des cas mais le problème avec l'automatisation c'est que les utilisateurs ont tendance à ne plus se poser la question de comment est obtenu la valeur avec le temps; et on finit par créer plus d'erreur que quand c'était calculé à la main... Je tends donc à trouver un script qui fonctionnerait pour tous les cas, avec les difficultés que ça comporte... J'ai dû mettre un peu de côté le script pour faire autre chose ce matin mais je m'y remets; je vais regarder ce que me donne ce script Python.

Sinon, peut-être qu"en combinant les infos du mur hôte et des niveaux j'arriverais à quelque chose?... je vais voir...
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Bon j'avance doucement sans avoir si je vais arriver au bout...
Comment générer une liste de toutes les combinaisons possibles entre 2 listes. Je voudrais combiner les sols et les murs pour voir s'ils sont joints.
En essayant d'expliquer cela "mathématiquement":
- Liste n°1 contient a,b, et C
- Liste n°2 contient x,y et z
- Je voudrais obtenir une liste 3 avec 9 sous-listes:
[o] [2] [4] [6] [8]
[0]a [0]a [0]b [0]c [0]c
[1]x [1]z [1]y [1]x [1]z
[1] [3] [5] [7]
[0]a [0]b [0]b [0]c
[1]y [1]x [1]z [1]y

Je suis sûr que Dynamo sait faire cela et j'ai trouvé des choses sur internet mais je n'arrive pas à l'appliquer à mon cas...
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Mince, je viens de voir qu'Hexabim avait rendu mon exemple illisible (y'avait des tabulations)...

Les 9 sous listes sont:
[0] a et x
[1] a et y
...
[5] b et z
...
[8] c et z
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
En fait il doit me manquer le "Combinateur" pour le noeud "List.Combine" mais je ne sais pas quoi mettre (voir PJ)
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Si j'ai bien compris avec ça, ça devrait marcher.
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Je suis partie sur un Ray Cast, voici les fichiers.
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Je n'ai pas encore regardé vos réponses mais j'abandonne l'idée de chercher le sol attaché au mur contenant l'ouverture car je viens de constater qu'un même mur peut être attaché à plusieurs sols d'altimétries différentes; je n'obtiendrai donc pas l'info. d'un sol unique que je souhaitais.
Le code Python de Ben Osborne fonctionne correctement pour des éléments joints mais entre une dalle et un mur, la fonction utilisée est "Attacher haut/bas" et non "Attacher la géométrie"; le script renvoie donc "Faux" même s'ils sont attachés.
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
T'as raison Benoit c’était pas une bonne idée

Regarde mon draft. Ca te permet de trouver le point bas tout de suite, tu refais un raycast par en haut et hop tu as la hauteur de l'ouverture
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Tu veux dire que tu trouves toujours la bonne idée du 1er coup? Allez, avoues que tu n'es pas arrivé à ce niveau sans galérer comme moi...
Et puis à défaut d'être productif tout de suite, chercher permet de tomber sur des trucs qui serviront sûrement plus tard.

Je viens de l'ouvrir, j'essaie de comprendre. Ce sont des noeuds que je n'ai pas encore utilisé.
Par contre je ne cherche pas la hauteur de l'ouverture mais la hauteur du linteau, je ne sais pas si la méthode peut s'appliquer quand même?
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Comme j'aime bien les Bretons envoie un mp et je te contacte demain
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Merci Daniel, ça récompensera le fait que je vienne te voir au PRUG ! (Aller-retour Rennes-Paris en voiture entre 16h et 2h du mat', j'étais bien motivé quand même!)

Je creuse ta solution de mon côté quand même en attendant.
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Je vous fais un petit retour suite à l'aide précieuse de Daniel. Son idée du Ray Cast a porté ses fruits après quelques noeuds supplémentaires.
L'idée du code Dynamo est de tracer un vecteur depuis l'ouverture jusqu'au sol supérieur pour en déduire son altimétrie Z. Si je décortique un peu les étapes:
1) Créer une BoundingBox et en déduire son altimétrie maxi
2) Créer un vecteur allant de ce point maxi au 1er point de rencontre avec le sol supérieur (son arase inférieure donc)
3) Créer un second vecteur d'une longueur arbitraire pour "dépasser" l'épaisseur du sol
4) Créer un 3e vecteur vers le bas pour obtenir l'arase supérieure du sol

Comme il vaut mieux un schéma qu'un long discours, je vous ai mis le code en PJ.

Merci également à Nathan pour son aide.
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Au point 2) le vecteur est égal à la hauteur du linteau recherché non ? Pourquoi ajouter les points 3) et 4) ?
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Non car le point trouvé correspond à l'arase inférieure du plancher et la hauteur du linteau comprend l'épaisseur de celui-ci.
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Ok.
Belle petite usine à gaz
(intégré dans un nœud personnalisé à en croire la présentation)
·
8 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
Voila un petit code pour récupérer les paramètres.
J'espère que sera utile.
cdt
·
7 years ago
·
2 Likes
·
0 Votes
·
0 Comments
·
View Full Post