/*This script is the property of MatWeb.com. This code may not be copied without the express written consent of MatWeb.com. Author: Tiffany Tibbs email: tiffany@matweb.com*/ var unitsM='grams'; var unitsE='pounds'; var unitsMOI='g/cm2'; function CalculateWeight(f,n){ var density var quantity var dims=new Array(5); var Units=new Array(5); var MatlSelect; var Shape; var weightM=new Number(0); var weightE=new Number(0); var pi=new Number(3.141592654); var moiX=new Number(0); var moiY=new Number(0); MatlSelect=f.material.selectedIndex; if(MatlSelect=="0"){ density=f.density.value; Units[0]=f.units0.options[f.units0.selectedIndex].value; } else{ density=f.material.options[f.material.selectedIndex].value; Units[0]=0; } density=DensityConverter(density,Units[0],'/'); if(!CheckVal(density, 'Density', f.density)) return; quantity=f.qty.value; if(!CheckVal(quantity, 'Quantity', f.qty)) return; quantity=UnitConverter(quantity,"cm"); for(var i=1;i<=n;i++){ f.elements['value'+i].value=trim(f.elements['value'+i].value); if(!CheckVal(f.elements['value'+i].value, 'All dimensions', f.elements['value'+i])) return; dims[i]=f.elements['value'+i].value Units[i]=f.elements['units'+i].options[f.elements['units'+i].selectedIndex].text; dims[i]=UnitConverter(dims[i],Units[i]); } Shape=f.shape.selectedIndex; // // // all formulas were taken from // Roark's Formulas for Stress & Strain // pp 62 - 72 // if(Shape=="0"){ //Rectangle weightM=(density * dims[1] * dims[2] * dims[3]); var d=new Number(dims[1]); var b=new Number(dims[2]); moiX=b*Math.pow(d,3)/12; moiY=d*Math.pow(b,3)/12; } if(Shape=="1"){ //Square weightM=(density * dims[1] * dims[1] * dims[2]); var a=new Number(dims[1]); moiX=Math.pow(a,4)/12; moiY=Math.pow(a,4)/12; } if(Shape=="2"){ //Hexagon 1 var A=new Number(0.64952 * dims[1] * dims[1] * dims[2]); weightM=(density * A); var a =new Number(dims[1]/2); // for this shape, a is same as radius var r1=new Number(dims[1]/2); // outer diameter moiX=(A*(6*Math.pow(r1,2)-Math.pow(a,2)))/24; moiY=(A*(6*Math.pow(r1,2)-Math.pow(a,2)))/24; } if(Shape=="3"){ //Hexagon 2 var A=new Number(0.86602 * dims[1] * dims[1] * dims[2]); weightM=(density * A); var r2=new Number(dims[1]/2); var r1=new Number((r2)/Math.cos(30*pi/180)); var a =new Number(r1); // for this shape, a is same as r1 moiX=(A*(6*Math.pow(r1,2)-Math.pow(a,2)))/24; moiY=(A*(6*Math.pow(r1,2)-Math.pow(a,2)))/24; } if(Shape=="4"){ //Octagon 1 var A=new Number(0.707327 * dims[1] * dims[1] * dims[2]); weightM=(density * A); var r1=new Number(dims[1]/2); // outer diameter var a =new Number(2*r1*Math.sin(22.5*pi/180)); moiX=(A*(6*Math.pow(r1,2)-Math.pow(a,2)))/24; moiY=(A*(6*Math.pow(r1,2)-Math.pow(a,2)))/24; } if(Shape=="5"){ //Octagon 2 var A=new Number(0.82842 * dims[1] * dims[1] * dims[2]); weightM=(density * A); var r2=new Number(dims[1]/2); // inner diameter var r1=new Number((r2)/Math.cos(22.5*pi/180)); var a =new Number(2*r1*Math.sin(22.5*pi/180)); moiX=(A*(6*Math.pow(r1,2)-Math.pow(a,2)))/24; moiY=(A*(6*Math.pow(r1,2)-Math.pow(a,2)))/24; } if(Shape=="6"){ //Circle weightM=(density * 0.785398 * dims[1] * dims[1] * dims[2]); var r=new Number(dims[1]/2); moiX=pi/4*Math.pow(r,4); moiY=pi/4*Math.pow(r,4); } if(Shape=="7"){ //Tube weightM=(density * 0.785398 * ((dims[1] * dims[1]) - (dims[2] * dims[2])) * dims[3]); var r1=new Number(dims[1]/2); var r2=new Number(dims[2]/2); moiX=pi/4*(Math.pow(r1,4) - Math.pow(r2,4)); moiY=pi/4*(Math.pow(r1,4) - Math.pow(r2,4)); } if(Shape=="8"){ //I-Beam weightM=(density * (2 * dims[1] * dims[2] + dims[3] * dims[4]) * dims[5]); var b =new Number(dims[1]); var d =new Number(dims[3]); var t1=new Number(dims[2]); var t2=new Number(dims[4]); moiX=b*Math.pow(d+2*t1,3)/12 + (b-t2)*Math.pow(d,3)/12; moiY=Math.pow(b,3)*t1/6 + Math.pow(t2,3)*d/12; } if(Shape=="9"){ //Angle Iron weightM=(density * dims[1] * (2 * dims[2] - dims[1]) * dims[3]); var a=new Number(dims[2]); var t=new Number(dims[1]); var b=new Number(a-t); moiX=(Math.pow(a,4)-Math.pow(b,4))/12 - .5*t*Math.pow(a,2)*Math.pow(b,2)/(a+b); moiY=(Math.pow(a,4)-Math.pow(b,4))/12; } if(Shape=="10"){ //hollow Rectangle weightM=density * ((dims[1] * dims[2]) - (dims[3] * dims[4])) * dims[5]; var d1=new Number(dims[1]); var b1=new Number(dims[2]); var d2=new Number(dims[3]); var b2=new Number(dims[4]); moiX=(b1*Math.pow(d1,3) - b2*Math.pow(d2,3))/12; moiY=(d1*Math.pow(b1,3) - d2*Math.pow(b2,3))/12; } if(Shape=="11"){ //tee section weightM=(density * (dims[1] * dims[2] + dims[3] * dims[4]) * dims[5]); var b =new Number(dims[1]); var t1=new Number(dims[2]); var d =new Number(dims[3]); var t2=new Number(dims[4]); var A =new Number(b*t1+d*t2); var Y1=new Number((b*Math.pow(t1,2)+t2*d*(2*t1+d))/(2*(t1*b+t2*d))); moiX=b/3*Math.pow(d+t1,3) - Math.pow(d,3)*(b-t2)/3 - A*Math.pow(d+t1-Y1,2); moiY=t1+Math.pow(b,3)/12 + d*Math.pow(t2,3)/12 } if(Shape=="12"){ //U channel weightM=(density * (dims[1] * dims[2] + 2 * (dims[3] * dims[4])) * dims[5]); var b =new Number(dims[1]); var t1=new Number(dims[2]); var d =new Number(dims[3]); var t2=new Number(dims[4]); var A =new Number(b*t1+2*(d*t2)); var Y1=new Number((b*Math.pow(t1,2)+2*t2*d*(2*t1+d))/(2*(t1*b+2*t2*d))); moiX=b/3*Math.pow(d+t1,3) - Math.pow(d,3)*(b-2*t2)/3 - A*Math.pow(d+t1-Y1,2); moiY=(d+t1)*Math.pow(b,3)/12 - d*Math.pow(b-2*t2,3)/12 } if(Shape=="13"){ //N sided Polygon var n =new Number(dims[1]); var a =new Number(dims[2]); var an=new Number((360/(n*2))*pi/180); var r1=a/(2*Math.sin(an)); var r2=a/(2*Math.tan(an)); var A =new Number((Math.pow(a,2)*n)/(4*Math.tan(an))); weightM=density * A * dims[3]; moiX=(A*(6*Math.pow(r1,2)-Math.pow(a,2)))/24; moiY=(A*(6*Math.pow(r1,2)-Math.pow(a,2)))/24; } //alert('r1='+r1+'\nr2='+r2+'\na='+a); //Converting weightM to weightE(pounds) weightE=weightM*0.002205; f.weightM.value=roundIt(weightM*quantity,'M')+' '+unitsM; f.weightE.value=roundIt(weightE*quantity,'E')+' '+unitsE; //alert(moiX); //alert(moiY); if(f.moiX!=null){ f.moiX.value=roundIt(moiX,'M')+' '+unitsMOI; f.moiY.value=roundIt(moiY,'M')+' '+unitsMOI; } } function roundIt(v,units){ unitsM='grams'; unitsE='pounds'; unitsMOI='cm4'; //alert(v); if(v>=1000){ //convert to Kg & round if(units=='M'){ unitsM='kilograms'; unitsMOI='m4'; return Math.round(v/1000*10000)/10000; } else return Math.round(v*1000)/1000; } if((v<1000)&&(v>=0.0001)){ //Rounding value return Math.round(v*10000)/10000; } if(v<0.0001){ //Rounding small value return Math.round(v*100000000)/100000000; } } function CheckVal(v, t, ctl){ if((v=="" || isNaN(v) || v<0)){ alert(t+" must have a positive numeric value to calculate total weight."); ctl.focus(); ctl.select(); return false; } return true; } function Default(f,dims){ f.material.selectedIndex="0"; f.density.value=""; f.units0.selectedIndex="0"; f.qty.value="1"; for(var i=1;i<=dims;i++){ f.elements['value'+i].value=""; f.elements['units'+i].selectedIndex=1; } f.weightM.value=''; f.weightE.value=''; } function setDensity(f){ f.density.value=f.material.options[f.material.selectedIndex].value; f.units0.selectedIndex="0"; } function DensityConverter(value,unit,oper){ if(unit==0) value=eval('value'+oper+'1'); if(unit==1) value=eval('value'+oper+'0.03613'); if(unit==2) value=eval('value'+oper+'62.42797'); if(unit==3) value=eval('value'+oper+'1000'); return value; } function UnitChange(f){ var MatlSelect; var Units; var Density; var Converted; MatlSelect=f.material.selectedIndex; if(MatlSelect!="0"){ Units=f.units0.selectedIndex; Density=f.material.options[f.material.selectedIndex].value; Converted=DensityConverter(Density,Units,'*'); f.density.value=Converted; } } function UnitConverter(value,unit){ if(unit=="mm") value=value/10; if(unit=="m") value=value*100; if(unit=="in") value=value*2.54; if(unit=="ft") value=(value*2.54)*12; if(unit=="yd") value=(value*2.54)*36; return value; } function trim(s) { return ltrim(rtrim(s)) } function ltrim(s) { return s.replace(/^\s+/g, "") } function rtrim(s) { return s.replace(/\s+$/g, "") }