Calcul de centre de gravité d'éléments

Bonjour,

Je suis en train d’automatiser la création d’un centre de gravité de plusieurs modules en bois. Les différents éléments constituants chaque module ont des masses différentes donc le centre de chaque module ne sera pas à la même position.
Pour faire cela avec dynamo, j’ai utilisé Solid.Centroid mais en investiguant en profondeur la fonction, je me rends compte qu’il ne se base pas sur la densité du matériau pour calculer le centre mais plutôt sur le volume. Et donc pour s’en sortir, ile me faut calculer le centre de gravité autrement en utilisant une pondération par masse :
image
ou wi sont des masses.

Pour calculer cela rapidement, il me faut utiliser la bibliothèque Pandas de Python. Aurez-vous quelques idées sur comment importer cette bibliothèque ?

Merci énormément

Salut,
les instructions d’installation de bibliothèques Python3 sont ici (pandas et numpy n’étant pas compatible avec IronPython2)

Note : l’utilisation de pandas pour ce problème me semble un peu excessif :thinking:

1 « J'aime »

Merci Cyril. Oui tu as raison, c’est un peu excessif d’utiliser Pandas pour un truc aussi simple finalement.
Je m’en ai débrouillé autrement. Voici un petit code python pour calculer la pondération :

import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

clr.AddReference('RevitAPI') 
clr.AddReference('RevitAPIUI') 
from Autodesk.Revit.DB import * 

 long = IN[0]
 X = IN[1]
 Y=IN[2]
 Z=IN[3]
 weights = IN[4]
 OUT = []

 def weighted_average_m1(distribution, weights):

      numerator = sum([distribution[i]*weights[i] for i in range(len(distribution))])
      denominator = sum(weights)

  return round(numerator/denominator,2)


 X_weighted = weighted_average_m1(X, weights)
 Y_weighted = weighted_average_m1(Y,weights )
 Z_weighted = weighted_average_m1(Z, weights)

 OUT = X_weighted,Y_weighted,Z_weighted
1 « J'aime »

Sauf erreur tu ne sembles pas avoir calculé la masse depuis la densité
masse = density * Volume (attention aux unités)

1 « J'aime »

Oui bonne remarque. J’ai apporté des modifs.

2 « J'aime »