les matrice de l'assemblage

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
Gandouzi Ghayth
Posts: 41
Joined: Wed May 13, 2020 2:45 am

les matrice de l'assemblage

Post by Gandouzi Ghayth »

La phase de l’extraction des données depuis les systèmes CAO est très importante car elle est
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)
ensuite comment je peut trouvé le normale d'une face sans selection pour conaitre avec q'elle matrice (x ou y ou z ) je peut travailler
Attachments
za.PNG
za.PNG (2.94 KiB) Viewed 963 times
548.PNG
548.PNG (6.18 KiB) Viewed 963 times
Post Reply