Analiza stresului de forfecare într-o piesă de fixare a mobilei

De la YO3ITI
Sari la navigare Sari la căutare

Cu ceva timp în urmă am proiectat un element de fixare din plastic pentru a înlocui mai multe piese similare rupte, care fixau plinta mobilei de bucătărie. Piesa a fost proiectată în Fusion360 și tipărită 3D pe imprimanta mea Prusa. De amuzament și drept exemplu, am folosit fișierul STL generat atunci, pentru a analiza stresul mecanic indus în piesă.

%% exemplu de încărcare a unui STL și generare mesh

close all
clear
clc

model = createpde('structural','static-solid');

[fileName, filePath] = uigetfile('*.stl', 'Alege un fișier STL');

if isequal(fileName, 0)
    disp("Nu ai ales nimic. S-a ales prafu' ")
else
    disp(['S-a ales fișierul ', fileName]);
    importGeometry(model, fullfile(filePath, fileName));

    figure('Name','Analiză de element finit - piesă bucătărie: STL');
    pdegplot(model, ...
        'FaceLabels', 'on', ...
        'FaceAlpha', 0.5)
    view(30,30);
    title(['Plot STL ' fileName ' cu identificarea fețelor'], FontSize=16);

    screen = get(0, 'screensize');
    screenWidth = screen(3);
    screenHeight = screen(4);

    position1 = get(gcf, 'OuterPosition');
    set(gcf, 'Position', [0 screenHeight (screenWidth/2 - 10)  screenHeight/2]);

    generateMesh(model);

    figure('Name','Analiză de element finit - piesă bucătărie: MESH PDE');
    pdemesh(model)
    title('Teselizare tetraedrică pentru calcul PDE', FontSize=16)

    set(gcf, 'Position', [(screenWidth/2 + 10) screenHeight screenWidth/2 screenHeight/2]);

    

end

%% structural properties

structuralProperties(model, ...
    'YoungsModulus', 300e9, ...
    'PoissonsRatio', 0.3);

structuralBC(model,'Face',[14 15],'Constraint','fixed');
structuralBoundaryLoad(model,'Face',[31, 37],'SurfaceTraction',[0;0;-1e4]);

result = solve(model);

% figure
% pdeplot3D(model,'ColorMapData', result.VonMisesStress)
% title('von Mises Stress');
% colormap('jet')

figure('Name','Analiză de element finit - stres forfecare');
pdeplot3D(model, "ColorMapData", result.Strain.xx)
title('Stres forfecare: X-X',FontSize=16)
colormap('jet')
set(gcf, 'Position', [0, 0, screenWidth/3, screenHeight/3]);

figure('Name','Analiză de element finit - stres forfecare');
pdeplot3D(model, "ColorMapData", result.Strain.yy)
title('Stres forfecare: Y-Y',FontSize=16)
colormap('jet')
set(gcf, 'Position', [screenWidth/3, 0, screenWidth/3, screenHeight/3]);

figure('Name','Analiză de element finit - stres forfecare');
pdeplot3D(model, "ColorMapData", result.Strain.zz)
title('Stres forfecare: Z-Z',FontSize=16)
colormap('jet')
set(gcf, 'Position', [2*screenWidth/3, 0, screenWidth/3, screenHeight/3]);