Preview only show first 10 pages with watermark. For full document please download

Relatório Programa Eixo Maker Com Fadiga

Exercício proposto pelo professor Kawano em 2004 - programa que calcula diâmetro de eixo de acordo com o torque aplicado

   EMBED


Share

Transcript

ESCOLA POLITÉCNICA DA UNIVERSIDADE DE SÃO PAULO PMR – 2370 - Elementos de Máquinas 2º Semestre 2004 Projeto de Dimensionamento de Eixo PMR2370 – Elementos de Máquinas OBJETIVO Implementar um programa que, a partir da tensão máxima admissível do material do eixo e das forças decompostas e aplicadas em determinados pontos do eixo, dimensione o diâmetro mínimo do eixo de comprimento desejado. HIPÓTESES 1. 2. 3. 4. 5. Eixo de material homogêneo. Problema Estático. Os pontos que recebem os maiores esforços são pertencentes à superfície. Somente duas forças aplicadas no eixo. O momento causado pela componente Y das forças (momento torçor) deve ser igual por se tratar de um problema estático. 6. O eixo só aumenta de diâmetro entre as polias, sendo este aumento de 10%. 7. A falha por fadiga ocorrerá nas superfícies das secções A e B (Fig. 1), pois é um fenômeno pontual, sendo muito influenciado por fatores de concentração de tensões. 8. Os eixos são orientados de acordo com a figura 2. Fig. 1 – Esboço do eixo z x y Fig. 2 –Orientação dos eixos coordenados ALGORITMO A partir de um eixo inicial de diâmetro zero, o programa calcula as tensões principais do bordo da primeira seção do eixo e, com estes valores, calcula as tensões equivalentes através do Critério de Von Misses para cada ponto do bordo. Adota-se a maior tensão equivalente para calcular o diâmetro desta seção, se tornando este o diâmetro do eixo. Posteriormente é feito o cálculo em uma segunda seção do eixo, obtendo-se um novo diâmetro de eixo, se este for maior que o anterior, se adota este como o novo diâmetro do eixo. Caso contrário, se mantém. E assim sucessivamente, até que ao se “vasculhe” toda a extensão do eixo, teremos assim o diâmetro definitivo do eixo desejado. 2 PMR2370 – Elementos de Máquinas EQUACIONAMENTO Rby Rbz G F1 = ( FX 1 , FY 1 , FZ 1 ) p1 = ( A1, B1, C1) z Ray Raz p2 = ( A2, B 2, C 2) Na y G F2 = ( FX 2 , FY 2 , FZ 2 ) L x Diagramas: ¾ Força normal: ∑F = 0 ⇒ N a + Fx1 + Fx 2 = 0 ⇒ N a = − ( Fx1 + Fx 2 ) x N ( x) = − N a → p / x < A1 N ( x) = − N a + Fx1 → p / A1 ≤ x < A2 N ( x) = − N a + Fx1 + Fx 2 → p / x ≥ A2 ¾ Forças cortantes: -Reações na direção y: ∑F = 0 ⇒Ray + Rby = −Fy1 − Fy2 y ∑M ( A) = 0 ⇒ R z ∑F z ∑M ay = − Fx1.B1 − Fx2 .B2 − Fy1.(L − A1) − Fy2 .(L − A2) L = 0 ⇒Raz + Rbz = −Fz1 − Fz 2 y ( A) = 0 ⇒ Raz = − Fx1.C1 − Fx2 .C2 − Fz1.(L − A1) − Fz 2 .(L − A2) L 3 PMR2370 – Elementos de Máquinas F y ( x ) = − R ay → p / x < A1 F y ( x ) = − R ay + F y 1 → p / A1 ≤ x < A 2 F y ( x ) = − R ay + F y 1 + F y 2 → p / x ≥ A 2 F z ( x ) = − R az → p / x < A1 F z ( x ) = − R az + F z 1 → p / A1 ≤ x < A 2 F z ( x ) = − R az + F z 1 + F z 2 → p / x ≥ A 2 ¾ Momentos fletores: M y ( x ) = − Raz . x → p / x < A1 M y ( x ) = − Raz . x − Fz1.( L − A1) − Fx1.C1 → p / A1 ≤ x < A 2 M y ( x ) = − Raz . x − Fz1.( L − A1) − Fx1.C1 − Fz 2 .( L − A 2 ) − Fx 2 .C 2 → p / x ≥ A 2 M z ( x ) = − Ray . x → p / x < A1 M z ( x ) = − Ray . x − Fy1 .( L − A1) − Fx1 .B1 → p / A1 ≤ x < A 2 M z ( x ) = − Ray . x − Fy1 .( L − A1) − Fx1 .B1 − Fy 2 .( L − A 2 ) − Fx 2 .B 2 → p / x ≥ A 2 ¾ Momento torçor: M t ( x ) = 0 → p / x < A1 M t ( x ) = Fy1 .C1 − Fz1 B1 → p / A1 ≤ x < A 2 M t ( x ) = 0 → p / x ≥ A2 Z Mz Vz Mt X N Vy My Y 4 PMR2370 – Elementos de Máquinas ¾ Tensão causada pela força normal N: σx = N 4.N = As π .d 2 ¾ Tensão causada pelos momentos fletores My e Mz : σx = [ ] −Mz.Y My.Z 64 + = −Mz.Y +My.Z Iz Iy π.d4 ¾ Tensão causada pelo momento torçor Mt : τ xy = 32 − M t .Z [− M t .Z ] = Ip π .d 4 τ xz = M t .Y 32 [M t .Y ] = 4 π .d Ip ¾ Tensão causada pelas forças cortantes Vy e Vz : Vy ⎡ d 2 Y 2 ⎤ 64 ⎡ d 2 Y 2 ⎤ . = . − = Vy . − τ xy = by .I y I y ⎢⎣ 12 3 ⎥⎦ π .d 4 ⎢⎣ 12 3 ⎥⎦ Vy .S y Vz .S z Vz ⎡ d 2 Z 2 ⎤ 64 ⎡ d 2 Z 2 ⎤ = .⎢ − ⎥ = Vz . − ⎥ τ xz = . 4 ⎢ bz .I z I z ⎣ 12 3 ⎦ π .d ⎣ 12 3 ⎦ α α Y b a h 5 PMR2370 – Elementos de Máquinas obs: S = S.h = Ssc .a − St .b = ⎡ d 2 y2 ⎤ α .d 4 d .sen(α ) d .sen(α ).y 2 . . y ⇒ S = d .sen(α ).⎢ − ⎥ − 4 3.α 2 3 ⎣ 12 3 ⎦ b y = d .sen(α ) Ssc = α .d 4 4 d .sen(α ) a= 3α d .sen(α ).y St = 2 2 b= y 3 Montemos agora o tensor através das tensões acima: ⎡σ x τ xy τ xz ⎤ ⎡σ x τ xy τ xz ⎤ [τ ] = ⎢⎢τ xy σ y τ yz ⎥⎥ = ⎢⎢τ xy 0 0 ⎥⎥ ⎢τ xz τ yz σ z ⎥ ⎢⎣τ xz 0 0 ⎥⎦ ⎦ ⎣ Para acharmos as tensões principais, devemos achar as raízes do polinômio característico: ⎡σ x − λ [τ ] − λ [I ] = 0 ⇒ ⎢⎢ τ xy ⎢⎣ τ xz τ xy 0−λ 0 τ xz ⎤ 0 ⎥⎥ = 0 0 − λ ⎥⎦ ⇒ λ2 (σ x − λ ) + λ .τ xy2 + λ .τ xz2 = 0 ( ) ⇒ λ − λ2 + σ x .λ + τ xy2 + τ xz2 = 0 ⇒ λ =0 − λ2 +σ x.λ +τ xy2 +τ xz2 = 0 σ1 = ⇒σ = 2 σx 2 σx 2 + − σ x2 + 4.(τ xy2 +τ xz2 ) 2 σ x2 + 4.(τ xy2 +τ xz2 ) 2 σ3 = 0 6 PMR2370 – Elementos de Máquinas Com as tensões principais, aplicamos o critério de Von Mises, obtendo assim o diâmetro necessário ao eixo: σeq = 1 . (σ1 −σ2)2 + (σ1 −σ3)2 + (σ2 −σ3)2 2 obs: Nos pontos onde há o raio de arredondamento “r”, deve-se aplicar o concentrador de tensão K t N , K t Mt , K t f calculados na análise da falha por fadiga. Análise da falha por fadiga ¾ Análise dos esforços médios: σ médio → decorrente da força normal ( N ) τ médio → decorrente do momento torçor( M t ) xy τ médio → decorrente do momento torçor( M t ) xz ¾ Análise dos esforços alternados: σ alternado → decorrente dos momentos fletores ( M y e M z ) τ alternado → decorrente da força cortante ( V y ) xy τ alternado → decorrente da força cortante ( V z ) xz ¾ Introdução das constantes de concentração de tensão: K F = 1 + ( K t − 1).q • Para esforços decorrentes dos momentos fletores: K F f = 1 + ( K t f − 1).q f , onde: K t f = 69939.x 6 - 74847.x 5 + 31824.x 4 - 6864.x 3 + 801,41.x 2 - 51,897.x + 3,1145 e q f = 0,76 e x = r d obs: K t f foi aproximado pela equação acima através de uma regressão e dos dados retirados de Fundamentals of Machine Component Desing, Robert C. Juvinal; assim como q f , que foi adaptado para uma tensão Su = 900MPa ≅ 130ksi . 7 PMR2370 – Elementos de Máquinas • Para esforços decorrentes da normal: K FN = 1 + ( K t N − 1).qN , onde: K t f = 37358.x 6 - 45798.x 5 + 22456.x 4 - 5605,2.x 3 + 751,96.x 2 - 53,865.x + 3,1826 r d e qN = 0,76 e x = obs: K t N foi aproximado pela equação acima através de uma regressão e dos dados retirados de Fundamentals of Machine Component Desing, Robert C. Juvinal; assim como q N , que foi adaptado para uma tensão Su = 900MPa ≅ 130ksi . • Para esforços decorrentes do momento torçor: K FMt = 1 + ( K t Mt − 1).qMt , onde: K t f = 77160.x 6 - 80750.x 5 + 33422.x 4 - 6962,7.x 3 + 770,74.x 2 - 44,033.x + 2,2003 e qMt = 0,80 e x = r d obs: K t Mt foi aproximado pela equação acima através de uma regressão e dos dados retirados de Fundamentals of Machine Component Desing, Robert C. Juvinal; assim como qMt , que foi adaptado para uma tensão Su = 900MPa ≅ 130ksi . • ∴ Para esforços decorrentes das forças cortantes, será admitido a constante devido ao momento torçor. ´ = σ médio .K F σ médio ´ = σ alternado .K F σ alternado τ τ N ´ médio xy = τ médioxy .K FMt e ´ τ médio = τ médio .K F xz ¾ xz ´ alternado xy f = τ alternadoxy .K FMt ´ τ alternado = τ alternado .K F Mt xz xz Mt Cálculo da tensão equivalente média: σ1 = ´ ⎡ σ médio ´ [σ ] = ⎢⎢τ médio xy ⎢τ ´ ⎣ médioxz ´ τ médio xy ´ ⎤ τ médio xz 0 0 0 0 ´ σ médio 2 ( 2 + 2 ´ + τ médio xz 2 ) 2 ´ médio xy ´ + τ médio xz 2 ) ´ ´ σ médio + 4. τ médio ´ σ σ médio ⎥ σ ⇒ = − 2 ⎥ 2 ⎥ ⎦ 2 ´ médio ( + 4. τ xy 2 2 σ3 = 0 Adotamos como tensão equivalente média : σ médio −eq = σ 1 . 8 PMR2370 – Elementos de Máquinas ¾ Cálculo da tensão equivalente alternada: σ1 = ´ ⎡ σ alternado ´ [σ ] = ⎢⎢τ alternado xy ⎢τ ´ ⎣ alternadoxz ´ τ alternado ´ ⎤ τ alternado xy xz 0 0 0 0 ´ σ alternado 2 ( 2 + 2 ´ + τ alternado xz 2 ) 2 ´ alternado xy ´ + τ alternado xz 2 ) ´ ´ σ alternado + 4. τ alternado ´ σ σ alternado ⎥ σ ⇒ = − 2 ⎥ 2 ⎥ ⎦ 2 ´ alternado ( + 4. τ xy 2 2 σ3 = 0 Achamos a tensão equivalente alternada através de Von Misses: σ alternado −eq = ¾ (σ 1 −σ2 ) 2 + σ 12 + σ 22 2 Tendo as tensões equivalentes, vamos agora analisar o diagrama de Goodman: S 0,9S u .C l Su .Cl .Cs .C g 2 3 6 log(N ) Através do gráfico, podemos tirar uma relação entre a tensão e o número de ciclos (log). E ainda podemos perceber que a partir de 10 6 ciclos obtemos a vida infinita. Portanto, temos: Seja: S n (log N ) = a. log N + b , temos: p/ N = 10 3 , S n = 0,9.S u .C l p/ N = 10 6 , S n = Su .C l .C s .C g 2 9 PMR2370 – Elementos de Máquinas ∴ S n (log N ) = C s .C g ⎛ ⎞ ⎛ C s .C g .⎜⎜ − 0,9 ⎟⎟. log N + S u .C l ⎜⎜1,8 − 2 ⎝ ⎠ ⎝ 2 S u .C l 3 ⎞ ⎟⎟ ,p/ N ≤ 10 6 ⎠ As constantes da equação acima foram retiradas de Fundamentals of Machine Component Desing, Robert C. Juvinal, e estão apresentadas a seguir: Cl = 1 ⎧ 1, p / d ≤ 10mm Cg = ⎨ ⎩0,9, p / d > 10mm C s = 0,72, p / S u = 900 MPa ¾ Analisamos agora o diagrama de tensão alternada x tensão média: σ alternado σy S n − gráfico σy Su σ médio Temos, agora, duas situações à serem analisadas: 1. Seja P/ σ médio −eq + σ alternado −eq ≤ σ y : σ alternado −eq = a.σ médio−eq + b , S n − gráfico = 2. S u .σ alternado −eq S u − σ médio −eq substituindo em alguns pontos do gráfico, obtemos: . P/ σ médio −eq + σ alternado −eq > σ y : ´ Fazemos a seguinte substituição: σ médio − eq = σ y − σ alternado − eq , e σ alternado− eq fica inalterado. Isto tem uma explicação física: a tensão alternada somada à média não pode ultrapassar a tensão de escoamento. Portanto, 10 PMR2370 – Elementos de Máquinas no primeiro ciclo, o material sofre uma pequena deformação plástica, mas a partir daí não ocorre mais deformação. Daí temos: S n − gráfico = S u .σ alternado −eq ´ S u − σ médio − eq . Para encontrarmos o diâmetro ideal, fazemos todos os cálculos das tensões e dos fatores de concentração de tensões; e através deles, calculamos S n e S n − gráfico . Comparamos ambos e realizamos sucessivas iterações, sempre modificando o valor do diâmetro, a fim de encontrarmos o diâmetro que torna S n − gráfico menor ou igual à S n , garantindo assim a resistência à fadiga para N ciclos. Código Fonte ARQUIVO RESOLUCAO import java.lang.*; import java.awt.*; // Classe que pega uma secao do eixo e calcula a tensao de Von-Mises e acha um diametro que atende os esforcos calculados sem fraturar. public class resolucao { static double tensaoequi, d ; public static double resolve (double r,boolean concentrador, double tensaomax, double N, double My, double Mz, double Mt, double Vy, double Vz) { double z, y, teta, tensao, sigma1, sigma2, sigmax, sigmay, talxy, talxz, I, ktf,ktn,ktm; tensaoequi=tensaomax+1; ktf=ktn=ktm=1; if(concentrador==true) { ktf = 69939*(r/d)*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) 74847*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) + 31824*(r/d)*(r/d)*(r/d)*(r/d) 6864*(r/d)*(r/d)*(r/d) + 801.41*(r/d)*(r/d) - 51.897*(r/d) + 3.1145; ktn = 37358*(r/d)*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) 45798*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) + 22456*(r/d)*(r/d)*(r/d)*(r/d) 5605.2*(r/d)*(r/d)*(r/d) + 751.96*(r/d)*(r/d) - 53.865*(r/d) + 3.1826; ktm = 77160*(r/d)*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) 80750*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) + 33422*(r/d)*(r/d)*(r/d)*(r/d) 6962.7*(r/d)*(r/d)*(r/d) + 770.74*(r/d)*(r/d) - 44.033*(r/d) + 2.2003; } N=N*ktn; My=My*ktf; Mz=Mz*ktf; Mt=Mt*ktm; Vy=Vy*ktm; Vz=Vz*ktm; for(d=0.001;tensaoequi>tensaomax;d=d+0.0001) { tensaoequi=0; for(teta=0;teta<2*java.lang.Math.PI;teta=teta+java.lang.Math.PI/16) { z=(d/2)*java.lang.Math.cos(teta); y=(d/2)*java.lang.Math.sin(teta); I = (java.lang.Math.PI*d*d*d*d)/64; sigmax = 4*N/(java.lang.Math.PI*d*d)+(-1*Mz*y+My*z)/I; talxy = (-1*(2*Mt*z)/I)+(Vy*((d*d/12)-(y*y/3))/I); 11 PMR2370 – Elementos de Máquinas talxz = (2*Mt*y)/I+Vz*((d*d/12)-(z*z/3))/I; sigma1 = sigmax/2+(java.lang.Math.sqrt(sigmax*sigmax+4*(talxy*talxy+talxz*talxz)))/2; sigma2 = sigmax/2(java.lang.Math.sqrt(sigmax*sigmax+4*(talxy*talxy+talxz*talxz)))/2; tensao = java.lang.Math.sqrt((sigma1-sigma2)*(sigma1sigma2)+(sigma1*sigma1)+(sigma2*sigma2))/java.lang.Math.sqrt(2); if(tensao>tensaoequi) { tensaoequi=tensao; } } } return(d); } } ARQUIVO GRAFICO import java.io.*; //Pacotes necessarios para a funcionalidade do programa import java.lang.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.applet.*; import javax.swing.*; import javax.swing.table.*; import org.jfree.data.xy.*; import org.jfree.chart.*; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.*; import org.jfree.chart.axis.*; // Classe que gera as janelas dos graficos public class grafico extends Frame { public grafico(ChartPanel a, String b, int c, int d) { setTitle(b); setBounds(c,d,545,440); addWindowListener(new CloseAndExit()); add(a); } public static void main(ChartPanel a, String b, int c, int d) { new grafico(a,b,c,d).show(); } } ARQUIVO CLOSEANDEXIT import java.awt.event.*; // Classe que implementa a opcao de fechar a janela public class CloseAndExit extends WindowAdapter { public void windowClosing(WindowEvent e) { e.getWindow().dispose(); } } ARQUIVO DIAGRAMA import java.io.*; //Pacotes necessarios para a funcionalidade do programa import java.lang.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.applet.*; 12 PMR2370 – Elementos de Máquinas import import import import import import import java.applet.Applet.*; org.jfree.data.xy.*; org.jfree.chart.*; org.jfree.chart.plot.PlotOrientation; org.jfree.chart.plot.*; org.jfree.chart.axis.*; javax.swing.table.*; // Classe que calcula os esforcos solicitantes por todo o comprimento do eixo class diagrama { static void tensoes (boolean escoamento, double fx1d,double fx2d,double fy1d, double fy2d,double fz1d,double fz2d,double a1d,double a2d,double b1d,double b2d, double c1d,double c2d,double tmaxd,double ld, double qn, double qm, double qf, double su, double r, double ciclos, double cs) { double local=0, somaFx, somaFy, somaFz, deltald, delta, dmax, d, p, Ktn, Ktf, Ktm, Ray, Raz; boolean concentrador; XYSeries normal = new XYSeries("Normal"); XYSeries Cortantey = new XYSeries("Cortante Y"); XYSeries Cortantez = new XYSeries("Cortante Z"); XYSeries momentoy = new XYSeries("Momento Y"); XYSeries momentoz = new XYSeries("Momento Z"); XYSeries momentot = new XYSeries("Momento Torçor"); somaFx = fx1d+fx2d; somaFy = fy1d+fy2d; somaFz = fz1d+fz2d; delta = ld/200; dmax=0; d=0; double Rby=0; double Rbz=0; Raz = (-fz1d*(ld - a1d) - fx1d*c1d - fz2d*(ld-a2d) - fx2d*c2d)/ld; Ray = (-fy1d*(ld - a1d) - fx1d*b1d - fy2d*(ld-a2d) - fx2d*b2d)/ld; for(deltald=0; deltald<=ld; deltald=deltald+delta) { concentrador=false; double Normal = somaFx; if(deltald>=a1d) Normal = Normal - fx1d; if(deltald>=a2d) Normal = Normal - fx2d; double cortantey = -1*(Ray); if(deltald>=a1d) cortantey = cortantey - fy1d; if(deltald>=a2d) cortantey = cortantey - fy2d; double cortantez = -1*(Raz); if(deltald>=a1d) 13 PMR2370 – Elementos de Máquinas cortantez = cortantez - fz1d; if(deltald>=a2d) cortantez = cortantez - fz2d; double My = -1*(Raz)*deltald; if(deltald>=a1d) My = My - fz1d*(deltald - a1d) - fx1d*c1d; if(deltald>=a2d) My = My - fz2d*(deltald - a2d) -fx2d*c2d; double Mz = Ray*deltald; if(deltald>=a1d) Mz = Mz + fy1d*(deltald - a1d) + fx1d*b1d; if(deltald>=a2d) Mz = Mz + fy2d*(deltald - a2d) + fx2d*b2d; double Mt; if((deltald>=a1d)&&(deltald<=a2d)) Mt = fy1d*c1d-fz1d*b1d; else Mt=0; p = (deltald/ld)*100; janelainicial.porcentagem.setText(""+p+"%"); if(((deltald>=a1d)&&((deltalddelta)a2d))) { concentrador=true; if(escoamento==false) d = fadiga.calculos(Normal,Mt,My,Mz,cortantey,cortantez,r,qf,qn,qm,su,tmaxd,ciclos,cs ); } else concentrador=false; if(escoamento==true) d = resolucao.resolve(r,concentrador,tmaxd, Normal, My, Mz, Mt, cortantey, cortantez); if((deltald>=a1d)&&(deltald<=a2d)) // verifica se esta na parte em que o eixo tem diametro maior d=d/1.1; if(d>dmax) { dmax=d; local=deltald; } normal.add(deltald,Normal); Cortantey.add(deltald,cortantey); Cortantez.add(deltald,cortantez); momentoy.add(deltald,My); momentoz.add(deltald,Mz); momentot.add(deltald,Mt); Rby=cortantey; Rbz=cortantez; } 14 PMR2370 – Elementos de Máquinas Reacoes.main(local,-somaFx, Ray, Raz, Rby, Rbz); janelainicial.porcentagem.setText("100%"); janelainicial.Diametro.setText(""+dmax); /*******************Força Normal************************************/ XYDataset normalxydata = new XYSeriesCollection(normal); ((XYSeriesCollection)(normalxydata)).setAutoWidth(true); JFreeChart normalchart = ChartFactory.createXYLineChart ("", "L", "Força", normalxydata, PlotOrientation.VERTICAL, true, //legenda true, //tooltips false //urls ); NumberAxis normalna = new NumberAxis(); normalna.setUpperBound(ld); normalna.setLowerBound(0); XYPlot normalplot = (XYPlot)normalchart.getPlot(); normalplot.setDomainAxis(normalna); ChartPanel normalcp = new ChartPanel(normalchart); /*******************Força CortanteZ************************************/ XYDataset cozxydata = new XYSeriesCollection(Cortantez); ((XYSeriesCollection)(cozxydata)).setAutoWidth(true); JFreeChart cozchart = ChartFactory.createXYLineChart ("", "L", "Força", cozxydata, PlotOrientation.VERTICAL, true, //legenda true, //tooltips false //urls ); NumberAxis cozna = new NumberAxis(); cozna.setUpperBound(ld); cozna.setLowerBound(0); XYPlot cozplot = (XYPlot)cozchart.getPlot(); cozplot.setDomainAxis(cozna); ChartPanel cozcp = new ChartPanel(cozchart); /*******************Força CortanteY************************************/ XYDataset coyxydata = new XYSeriesCollection(Cortantey); ((XYSeriesCollection)(coyxydata)).setAutoWidth(true); JFreeChart coychart = ChartFactory.createXYLineChart ("", "L", "Força", coyxydata, PlotOrientation.VERTICAL, true, //legenda true, //tooltips false //urls ); NumberAxis coyna = new NumberAxis(); coyna.setUpperBound(ld); 15 PMR2370 – Elementos de Máquinas coyna.setLowerBound(0); XYPlot coyplot = (XYPlot)coychart.getPlot(); coyplot.setDomainAxis(coyna); ChartPanel coycp = new ChartPanel(coychart); /*******************MomentoY************************************/ XYDataset moyxydata = new XYSeriesCollection(momentoy); ((XYSeriesCollection)(moyxydata)).setAutoWidth(true); JFreeChart moychart = ChartFactory.createXYLineChart ("", "L", "Força", moyxydata, PlotOrientation.VERTICAL, true, //legenda true, //tooltips false //urls ); NumberAxis moyna = new NumberAxis(); moyna.setUpperBound(ld); moyna.setLowerBound(0); XYPlot moyplot = (XYPlot)moychart.getPlot(); moyplot.setDomainAxis(moyna); ChartPanel moycp = new ChartPanel(moychart); /*******************MomentoZ************************************/ XYDataset mozxydata = new XYSeriesCollection(momentoz); ((XYSeriesCollection)(mozxydata)).setAutoWidth(true); JFreeChart mozchart = ChartFactory.createXYLineChart ("", "L", "Força", mozxydata, PlotOrientation.VERTICAL, true, //legenda true, //tooltips false //urls ); NumberAxis mozna = new NumberAxis(); mozna.setUpperBound(ld); mozna.setLowerBound(0); XYPlot mozplot = (XYPlot)mozchart.getPlot(); mozplot.setDomainAxis(mozna); ChartPanel mozcp = new ChartPanel(mozchart); /*******************Momento Torçor*******************************/ XYDataset motxydata = new XYSeriesCollection(momentot); ((XYSeriesCollection)(motxydata)).setAutoWidth(true); JFreeChart motchart = ChartFactory.createXYLineChart ("", "L", "Força", motxydata, PlotOrientation.VERTICAL, true, //legenda true, //tooltips false //urls ); NumberAxis motna = new NumberAxis(); motna.setUpperBound(ld); motna.setLowerBound(0); XYPlot motplot = (XYPlot)motchart.getPlot(); 16 PMR2370 – Elementos de Máquinas motplot.setDomainAxis(motna); ChartPanel motcp = new ChartPanel(motchart); /*-------------------------------------------------------------------*/ grafico.main(normalcp,"Força Normal",50,50); grafico.main(coycp,"Força Cortante Y",70,70); grafico.main(cozcp,"Força CortanteZ",90,90); grafico.main(moycp,"Momento Y",110,110); grafico.main(mozcp,"Momento Z",130,130); grafico.main(motcp,"Momento Torçor",150,150); } } ARQUIVO EIXO import java.io.*; // Classes importadas para funcionamento do programa import java.lang.*; import java.awt.*; // Classe que cria a janela e delimita seu tamanho class eixo { public static void main(String [] args){ CloseableFrame j=new janelainicial(); // Criação da janela j.setBackground(null); // Cor da janela j.setBounds(100,100,590,460); // Dimensionamento j.setTitle ("Programa di faze eixo"); // Titulo j.setResizable(false); j.show(); // Mostra a janela } } ARQUIVO FADIGA import java.io.*; //Pacotes necessarios para a funcionalidade do programa import java.lang.*; import java.lang.Math.*; // Classe que pega uma secao do eixo, e calcula ao seu redor as tensoes e verifica para que tamanho de eixo não ocorre falha por fadiga class fadiga { static double calculos(double N, double Mt, double My, double Mz, double Vy, double Vz, double r, double qf, double qn, double qm, double Su ,double Sy, double Ciclos, double Cs) { double d, Kff, Kfn, Kfm, sigm, siga, talmxy, talmxz, talaxy, talaxz, teta, I, sigmam, sigmaaeq, Sn, Cg, Sngraf, sigmaprovisorio, sigma1ap, sigma2ap, sigmamp; int h=1; Sn=sigmaprovisorio=talmxy=talaxy=talmxz=talaxz=sigma1ap=sigma2ap=sigm=sigmaaeq=si gmam=siga=sigmamp=0; double y=0; double z=0; Sngraf = Sn +1; for(d=0.001;Sngraf>Sn;d=d+0.0001) { if(d<=0.01) Cg=1; else Cg=0.9; Kff = 1 + (69939*(r/d)*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) 74847*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) + 31824*(r/d)*(r/d)*(r/d)*(r/d) 6864*(r/d)*(r/d)*(r/d) + 801.41*(r/d)*(r/d) - 51.897*(r/d) + 3.1145 -1)*qf; 17 PMR2370 – Elementos de Máquinas Kfn = 1 + (37358*(r/d)*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) 45798*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) + 22456*(r/d)*(r/d)*(r/d)*(r/d) 5605.2*(r/d)*(r/d)*(r/d) + 751.96*(r/d)*(r/d) - 53.865*(r/d) + 3.1826 -1)*qn; Kfm = 1 + (77160*(r/d)*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) 80750*(r/d)*(r/d)*(r/d)*(r/d)*(r/d) + 33422*(r/d)*(r/d)*(r/d)*(r/d) 6962.7*(r/d)*(r/d)*(r/d) + 770.74*(r/d)*(r/d) - 44.033*(r/d) + 2.2003 - 1)*qm; sigmaaeq=0; for(teta=0;teta<2*java.lang.Math.PI;teta=teta+java.lang.Math.PI/16) { z=(d/2)*Math.cos(teta); y=(d/2)*Math.sin(teta); I=(java.lang.Math.PI*d*d*d*d)/64; sigm = siga = talmxy talmxz talaxy talaxz ((4*N)/(java.lang.Math.PI*d*d))*Kfn; ((-1*Mz*y+My*z)/I)*Kff; = (-1*(2*Mt*z)/I)*Kfm; = ((2*Mt*y)/I)*Kfm; = (Vy*((d*d/12)-(y*y/3))/I)*Kfm; = (Vz*((d*d/12)-(z*z/3))/I)*Kfm; sigmamp = sigm/2+(Math.sqrt(sigm*sigm+4*(talmxy*talmxy+talmxz*talmxz))/2); sigma1ap = siga/2+(Math.sqrt(siga*siga+4*(talaxy*talaxy+talaxz*talaxz))/2); sigma2ap = siga/2(Math.sqrt(siga*siga+4*(talaxy*talaxy+talaxz*talaxz))/2); sigmaprovisorio = Math.sqrt((sigma1ap-sigma2ap)*(sigma1apsigma2ap)+sigma1ap*sigma1ap+sigma2ap*sigma2ap)/Math.sqrt(2); if((sigmaprovisorio>sigmaaeq)||h==1) { sigmaaeq=sigmaprovisorio; sigmam = sigmamp; } } Sn = (Su/3)*(((Cg*Cs)/(2))-0.9)*(Ciclos) + Su*(1.8 - (Cg*Cs)/2); if((sigmaaeq + sigmam)>Sy) { sigmam = Sy - sigmaaeq; } Sngraf = (Su*sigmaaeq)/(Su-sigmam); h=0; } return(d); } } ARQUIVO CLOSEABLEFRAME import java.awt.*; import java.awt.event.*; // Classe para implementacao da possibilidade de fechar a janela aberta public class CloseableFrame extends Frame implements WindowListener { public CloseableFrame( ) { addWindowListener( this ); } public void windowClosing( WindowEvent event ) { System.exit( 0 ); } 18 PMR2370 – Elementos de Máquinas public void windowClosed( WindowEvent event ) { } public void windowDeiconified( WindowEvent event ) { } public void windowIconified( WindowEvent event ) { } public void windowActivated( WindowEvent event ) { } public void windowDeactivated( WindowEvent event ) { } public void windowOpened( WindowEvent event ) { } } ARQUIVO JANELAINICIAL import java.io.*; //Pacotes necessarios para a funcionalidade do programa import java.lang.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.applet.*; import java.applet.Applet.*; // Esta classe é o que define o conteudo da janela aberta class janelainicial extends CloseableFrame implements ActionListener, ItemListener { Button calcula; Checkbox a,b,c,d; CheckboxGroup escolhe, Ciclos; Image img; Graphics g; Label ciclos,cs, unidades, diametro,l1, forca1, forca2, fx1, fx2, fy1, fy2, fz1, fz2, a1, a2, b1, b2, c1, c2, tmax, l, r, qf, qn, qm, Su; TextField CICLOS, Cs, Qf, Qn, Qm, SU, R, Fx1, Fx2, Fy1, Fy2, Fz1, Fz2, A1, A2, B1, B2, C1, C2, Tmax, L; double csd, ciclosd, rd, fx1d, fx2d, fy1d, fy2d, fz1d, fz2d, a1d, a2d, b1d, b2d, c1d, c2d, tmaxd, ld, qfd, qmd, qnd, sud; static public Label porcentagem; static public TextField Diametro; janelainicial() { // Criação dos objetos dentro da janela setLayout(null); l1 = new Label ("Vamo faze eixooooo"); l1.setFont(new Font("Times New Roman", Font.BOLD, 16)); l1.setForeground(Color.blue); add(l1); l1.setBounds(20,30,400,20); unidades = new Label ("Todas as unidades devem estar em SI"); unidades.setFont(new Font("Times New Roman", Font.BOLD, 22)); unidades.setForeground(Color.red); add(unidades); 19 PMR2370 – Elementos de Máquinas unidades.setBounds(10,350,400,50); forca1 = new Label ("Força 1"); forca1.setFont(new Font("Times New Roman", Font.BOLD, 14)); forca1.setForeground(Color.black); add(forca1); forca1.setBounds(20,60,80,20); forca2 = new Label ("Força 2"); forca2.setFont(new Font("Times New Roman", Font.BOLD, 14)); forca2.setForeground(Color.black); add(forca2); forca2.setBounds(20,140,80,20); fx1 = new Label ("Fx"); fx1.setFont(new Font("Times New Roman", Font.BOLD, 14)); fx1.setForeground(Color.black); add(fx1); fx1.setBounds(120,60,40,20); porcentagem = new Label ("0%"); porcentagem.setFont(new Font("Times New Roman", Font.BOLD, 20)); porcentagem.setForeground(Color.black); add(porcentagem); porcentagem.setBounds(510,400,65,20); fx2 = new Label ("Fx"); fx2.setFont(new Font("Times New Roman", Font.BOLD, 14)); fx2.setForeground(Color.black); add(fx2); fx2.setBounds(120,140,40,20); fy1 = new Label ("Fy"); fy1.setFont(new Font("Times New Roman", Font.BOLD, 14)); fy1.setForeground(Color.black); add(fy1); fy1.setBounds(120,80,40,20); fy2 = new Label ("Fy"); fy2.setFont(new Font("Times New Roman", Font.BOLD, 14)); fy2.setForeground(Color.black); add(fy2); fy2.setBounds(120,160,40,20); fz1 = new Label ("Fz"); fz1.setFont(new Font("Times New Roman", Font.BOLD, 14)); fz1.setForeground(Color.black); add(fz1); fz1.setBounds(120,100,40,20); fz2 = new Label ("Fz"); fz2.setFont(new Font("Times New Roman", Font.BOLD, 14)); fz2.setForeground(Color.black); add(fz2); fz2.setBounds(120,180,40,20); a1 = new Label ("a"); a1.setFont(new Font("Times New Roman", Font.BOLD, 14)); a1.setForeground(Color.black); 20 PMR2370 – Elementos de Máquinas add(a1); a1.setBounds(220,60,30,20); a2 = new Label ("a"); a2.setFont(new Font("Times New Roman", Font.BOLD, 14)); a2.setForeground(Color.black); add(a2); a2.setBounds(220,140,30,20); b1 = new Label ("b"); b1.setFont(new Font("Times New Roman", Font.BOLD, 14)); b1.setForeground(Color.black); add(b1); b1.setBounds(220,80,30,20); b2 = new Label ("b"); b2.setFont(new Font("Times New Roman", Font.BOLD, 14)); b2.setForeground(Color.black); add(b2); b2.setBounds(220,160,30,20); c1 = new Label ("c"); c1.setFont(new Font("Times New Roman", Font.BOLD, 14)); c1.setForeground(Color.black); add(c1); c1.setBounds(220,100,30,20); diametro = new Label ("E o diametro deve ser"); diametro.setFont(new Font("Times New Roman", Font.BOLD, 14)); diametro.setForeground(Color.black); add(diametro); diametro.setBounds(30,410,150,20); c2 = new Label ("c"); c2.setFont(new Font("Times New Roman", Font.BOLD, 14)); c2.setForeground(Color.black); add(c2); c2.setBounds(220,180,30,20); tmax = new Label ("Tensão Máxima de escoamento"); tmax.setFont(new Font("Times New Roman", Font.BOLD, 14)); tmax.setForeground(Color.black); add(tmax); tmax.setBounds(20,220,230,20); Su = new Label ("Tensão Máxima de ruptura"); Su.setFont(new Font("Times New Roman", Font.BOLD, 14)); Su.setForeground(Color.black); add(Su); Su.setBounds(20,240,230,20); r = new Label ("Raio de arredondamento"); r.setFont(new Font("Times New Roman", Font.BOLD, 14)); r.setForeground(Color.black); add(r); r.setBounds(320,60,180,20); qf = new Label ("qf"); qf.setFont(new Font("Times New Roman", Font.BOLD, 14)); 21 PMR2370 – Elementos de Máquinas qf.setForeground(Color.black); add(qf); qf.setBounds(470,80,30,20); qn = new Label ("qn"); qn.setFont(new Font("Times New Roman", Font.BOLD, 14)); qn.setForeground(Color.black); add(qn); qn.setBounds(470,100,30,20); qm = new Label ("qm"); qm.setFont(new Font("Times New Roman", Font.BOLD, 14)); qm.setForeground(Color.black); add(qm); qm.setBounds(470,120,30,20); cs = new Label ("Cs"); cs.setFont(new Font("Times New Roman", Font.BOLD, 14)); cs.setForeground(Color.black); add(cs); cs.setBounds(470,140,30,20); l = new Label ("Comprimento do Eixo"); l.setFont(new Font("Times New Roman", Font.BOLD, 14)); l.setForeground(Color.black); add(l); l.setBounds(20,280,170,20); ciclos = new Label ("Ciclos (potencia de 10)"); ciclos.setFont(new Font("Times New Roman", Font.BOLD, 14)); ciclos.setForeground(Color.black); add(ciclos); ciclos.setBounds(310,280,160,20); Fx1 = new TextField(""); Fx1.setBounds(170,60,40,20); add(Fx1); Fy1 = new TextField(""); Fy1.setBounds(170,80,40,20); add(Fy1); Fz1 = new TextField(""); Fz1.setBounds(170,100,40,20); add(Fz1); A1 = new TextField(""); A1.setBounds(260,60,40,20); add(A1); B1 = new TextField(""); B1.setBounds(260,80,40,20); add(B1); C1 = new TextField(""); C1.setBounds(260,100,40,20); add(C1); Fx2 = new TextField(""); Fx2.setBounds(170,140,40,20); add(Fx2); 22 PMR2370 – Elementos de Máquinas Fy2 = new TextField(""); Fy2.setBounds(170,160,40,20); add(Fy2); Fz2 = new TextField(""); Fz2.setBounds(170,180,40,20); add(Fz2); A2 = new TextField(""); A2.setBounds(260,140,40,20); add(A2); B2 = new TextField(""); B2.setBounds(260,160,40,20); add(B2); C2 = new TextField(""); C2.setBounds(260,180,40,20); add(C2); R = new TextField(""); R.setBounds(500,60,60,20); add(R); Qf = new TextField(""); Qf.setBounds(500,80,60,20); add(Qf); Qn = new TextField(""); Qn.setBounds(500,100,60,20); add(Qn); Qm = new TextField(""); Qm.setBounds(500,120,60,20); add(Qm); Cs = new TextField(""); Cs.setBounds(500,140,60,20); add(Cs); Tmax = new TextField(""); Tmax.setBounds(250,220,90,20); add(Tmax); SU = new TextField(""); SU.setBounds(250,240,90,20); add(SU); L = new TextField(""); L.setBounds(200,280,60,20); add(L); CICLOS = new TextField(); CICLOS.setBounds(500,280,60,20); add(CICLOS); Diametro = new TextField(); Diametro.setBounds(200,410,90,20); add(Diametro); 23 PMR2370 – Elementos de Máquinas calcula = new Button("Calcula o diametro ai rapá"); calcula.setBounds(70,325,220,20); calcula.addActionListener(this); add(calcula); escolhe = new CheckboxGroup(); a = new Checkbox("Fadiga"); b = new Checkbox("Escoamento"); a.setCheckboxGroup(escolhe); b.setCheckboxGroup(escolhe); a.setState(true); a.setBounds(430,240,100,20); b.setBounds(430,220,100,20); add(a); add(b); a.addItemListener(this); b.addItemListener(this); Ciclos = new CheckboxGroup(); c = new Checkbox(); c.setBounds(480,280,20,20); d = new Checkbox(" Vida Infinita"); d.setBounds(480,300,90,20); d.setState(true); c.setCheckboxGroup(Ciclos); d.setCheckboxGroup(Ciclos); add(c); add(d); } public void paint(Graphics g) { img = Toolkit.getDefaultToolkit().getImage("fadiga.jpg"); if (img != null) { Dimension apl = getSize(); int w = img.getWidth(this), h = img.getHeight(this); g.drawImage(img, (apl.width - w)/2, (apl.height - h)/2, this); } super.paint(g); } public void itemStateChanged (ItemEvent e) { if(e.getSource()==b) { Qf.setEditable(false); Qn.setEditable(false); Qm.setEditable(false); SU.setEditable(false); Cs.setEditable(false); CICLOS.setEditable(false); c.setEnabled(false); d.setEnabled(false); } else { Qf.setEditable(true); 24 PMR2370 – Elementos de Máquinas Qn.setEditable(true); Qm.setEditable(true); SU.setEditable(true); Cs.setEditable(true); CICLOS.setEditable(true); c.setEnabled(true); d.setEnabled(true); } } public void actionPerformed (ActionEvent e) { // Método que verifica que botão foi apertado e chama a execução dos calculos if(e.getSource()==calcula){ // if(escolhe.getSelectedCheckbox()==b) { if((Fx1.getText().length()>0)&&(Fx2.getText().length()>0)&&(Fy1.getText().length( )>0)&& (Fy2.getText().length()>0)&&(Fz1.getText().length()>0)&&(Fz2.getText().length()>0 )&& (A1.getText().length()>0)&&(A2.getText().length()>0)&&(B1.getText().length()>0)&& (B2.getText().length()>0)&&(C1.getText().length()>0)&&(C2.getText().length()>0)&& (L.getText().length()>0)&&(Tmax.getText().length()>0)&&(R.getText().length()>0)) { fx1d=Double.parseDouble(Fx1.getText()); fx2d=Double.parseDouble(Fx2.getText()); fy1d=Double.parseDouble(Fy1.getText()); fy2d=Double.parseDouble(Fy2.getText()); fz1d=Double.parseDouble(Fz1.getText()); fz2d=Double.parseDouble(Fz2.getText()); a1d=Double.parseDouble(A1.getText()); a2d=Double.parseDouble(A2.getText()); b1d=Double.parseDouble(B1.getText()); b2d=Double.parseDouble(B2.getText()); c1d=Double.parseDouble(C1.getText()); c2d=Double.parseDouble(C2.getText()); rd=Double.parseDouble(R.getText()); ld=Double.parseDouble(L.getText()); tmaxd=Double.parseDouble(Tmax.getText()); unidades.setText("Todas as unidades devem estar em SI"); unidades.setForeground(Color.red); diagrama.tensoes(true,fx1d,fx2d,fy1d,fy2d,fz1d,fz2d,a1d,a2d,b1d,b2d,c1d,c2d,tmaxd ,ld,0,0,0,0,rd,0,0); } else { unidades.setText("Favor completar todos os parametros"); unidades.setForeground(Color.blue); } } else { if((Ciclos.getSelectedCheckbox()==c&&CICLOS.getText().length()>0)||(Ciclos.getSel ectedCheckbox()==d)) 25 PMR2370 – Elementos de Máquinas if((Fx1.getText().length()>0)&&(Fx2.getText().length()>0)&&(Fy1.getText().length( )>0)&& (Fy2.getText().length()>0)&&(Fz1.getText().length()>0)&&(Fz2.getText().length()>0 )&& (A1.getText().length()>0)&&(A2.getText().length()>0)&&(B1.getText().length()>0)&& (B2.getText().length()>0)&&(C1.getText().length()>0)&&(C2.getText().length()>0)&& (L.getText().length()>0)&&(Tmax.getText().length()>0)&&(SU.getText().length()>0) &&(Qm.getText().length()>0)&&(Qf.getText().length()>0)&&(Qn.getText().length()>0) &&(R.getText().length()>0)) { fx1d=Double.parseDouble(Fx1.getText()); fx2d=Double.parseDouble(Fx2.getText()); fy1d=Double.parseDouble(Fy1.getText()); fy2d=Double.parseDouble(Fy2.getText()); fz1d=Double.parseDouble(Fz1.getText()); fz2d=Double.parseDouble(Fz2.getText()); a1d=Double.parseDouble(A1.getText()); a2d=Double.parseDouble(A2.getText()); b1d=Double.parseDouble(B1.getText()); b2d=Double.parseDouble(B2.getText()); c1d=Double.parseDouble(C1.getText()); c2d=Double.parseDouble(C2.getText()); rd=Double.parseDouble(R.getText()); ld=Double.parseDouble(L.getText()); tmaxd=Double.parseDouble(Tmax.getText()); sud=Double.parseDouble(SU.getText()); qnd=Double.parseDouble(Qn.getText()); qmd=Double.parseDouble(Qm.getText()); qfd=Double.parseDouble(Qf.getText()); csd=Double.parseDouble(Cs.getText()); tmaxd=Double.parseDouble(Tmax.getText()); unidades.setText("Todas as unidades devem estar em SI"); unidades.setForeground(Color.red); if(Ciclos.getSelectedCheckbox()==c) ciclosd=Double.parseDouble(CICLOS.getText()); else ciclosd=6; diagrama.tensoes(false,fx1d,fx2d,fy1d,fy2d,fz1d,fz2d,a1d,a2d,b1d,b2d,c1d,c2d,tmax d,ld,qnd,qmd,qfd,sud,rd, ciclosd, csd); } else { unidades.setText("Favor completar todos os parametros"); unidades.setForeground(Color.blue); } else { unidades.setText("Favor completar todos os parametros"); unidades.setForeground(Color.blue); } } } 26 PMR2370 – Elementos de Máquinas }//actionPerformed }//classe Janelainicial ARQUIVO REACOES import java.io.*; //Pacotes necessarios para a funcionalidade do programa import java.lang.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.applet.*; import java.applet.Applet.*; import java.text.NumberFormat; // Classe que cria uma janela contendo as reacoes nos mancais e o ponto de falha class Reacoes extends Frame{ public Reacoes(double local,double R1x, double R1y, double R1z, double R2y, double R2z) { setTitle("Reações nos mancais"); setBounds(20,20,260,170); setBackground(new Color(217,217,217)); addWindowListener(new CloseAndExit()); Label r1x, r1y, r1z, r2y, r2z, fim, Local; r1x = new Label ("Reação X no mancal 1 = "+R1x); r1x.setFont(new Font("Times New Roman", Font.BOLD, 16)); add(r1x); r1x.setBounds(20,30,240,20); r1y = new Label ("Reação Y no mancal 1 = "+R1y); r1y.setFont(new Font("Times New Roman", Font.BOLD, 16)); add(r1y); r1y.setBounds(20,50,240,20); r1z = new Label ("Reação Z no mancal 1 = "+R1z); r1z.setFont(new Font("Times New Roman", Font.BOLD, 16)); add(r1z); r1z.setBounds(20,70,240,20); r2y = new Label ("Reação Y no mancal 2 = "+R2y); r2y.setFont(new Font("Times New Roman", Font.BOLD, 16)); add(r2y); r2y.setBounds(20,90,240,20); r2z = new Label ("Reação Z no mancal 2 = "+R2z); r2z.setFont(new Font("Times New Roman", Font.BOLD, 16)); add(r2z); r2z.setBounds(20,110,240,20); NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(2); String s = nf.format(local); Local = new Label ("A ponto crítico é em "+s+" metros"); Local.setFont(new Font("Times New Roman", Font.BOLD, 16)); add(Local); Local.setBounds(20,130,240,20); fim = new Label(""); add(fim); fim.setBounds(20,150,100,20); 27 PMR2370 – Elementos de Máquinas } public static void main (double local,double R1x, double R1y, double R1z, double R2y, double R2z) { new Reacoes(local,R1x, R1y, R1z, R2y, R2z).show(); } } 28