plus que nécessaire dans la mise en place des applications intégrées
Les modèles géométriques des assemblages mécaniques font l’objet d’une grande quantité
d’informations. Afin d’extraire ces données, il est nécessaire de mettre en place une multitude
d’algorithmes complexes et intégrés au système CAO. Généralement, un assemblage
mécanique est composé de pièces liées entre elles par des contraintes d’assemblage. Dans ce
qui suit, nous allons recenser les données à extraire à partir d’un système de CAO.
Les matrices de l’assemblage:
Les assemblages CAO sont basés sur les relations qui existent entre leurs composants. A
partir de ces relations, on peut extraire un grand nombre de données qui peuvent être
présentées sous forme de matrices. Les matrices extraites sont : la matrice des relations, la
matrice d’adjacence et les matrices de contacts suivant les trois directions.
Matrice des relations : La matrice de relations [Re] est une matrice carrée et symétrique de
dimension (N×N) avec N le nombre de pièces dans l’assemblage. L’élément Re(i,j) de cette
matrice, indique le nombre de relations ou encore le nombre de contraintes entre les pièces i et
j. Ainsi, on a :
Re(i,j) = n s’il y a n relations entre les pièces i et j ;
Re(i,j) = 0 s’il n’y a pas de relations entre les pièces i et j ;
Re(i,j) = 0 si i = j.
voici l'exemple et l'exemple de matrice des relation
je veut implémenter un macro qui fait l'extraction de la matrice des relations d'un assemblage mécanique
j'ai commencer le code
Code: Select all
import FreeCAD
import FreeCADGui
#creation liste piece
LP = []
#LC = ['planesParallel','circularEdge']
LP2=[]
for object in FreeCAD.ActiveDocument.Objects:
if 'objectType' in object.PropertiesList:
LP.append(object.Label)
if 'Type' in object.PropertiesList:
LP2.append(object.Object1)
LP2.append(object.Object2)
n=len(LP)
for i in range (n):
LP[i] = "b_"+str(LP[i]+"_")
print(LP)
print("le nombre de pièce= : ", len(LP))
#Matrice X
X = [0] * n
for i in range (n):
X[i] = [0] * n
print(X)
#♣Matrice Y
Y = [0] * n
for i in range (n):
Y[i] = [0] * n
print(Y)
#Matrice Z
Z = [0] * n
for i in range (n):
Z[i] = [0] * n
#print(Z)
#Remplisage matrice X
for k in range (0,len(LP2),2):
if k+1 < (len(LP2)) :
i=LP.index(LP2[k])
j=LP.index(LP2[k+1])
X[i][j] = 1
#print(X)
#normVec = face.normalAt(face.Surface.parameter(face.CenterOfMass)[0], face.Surface.parameter(face.CenterOfMass)[1])
#print(normVec)