Author Topic: I beam imperial, Wf imperial  (Read 16223 times)

0 Members and 1 Guest are viewing this topic.

Krushert

  • Seagull
  • Posts: 13679
  • FREE BEER Tomorrow!!
Re: I beam imperial, Wf imperial
« Reply #15 on: June 01, 2007, 09:07:11 AM »
It's a little old but the data below is still good:

http://www.theswamp.org/screens/index.php?dir=cadaver/&file=Pipe%20Steel%20Book.xls

Randy,
Excelllent spreadsheet.

A couple of questions.
Did you create it or your company?
If not is this used as a part of your Standards?

Last and most important?
How do you maintain the data or keep it current?

This is my concern with lisp routines (or whatever) that supplies the information thru a data base.
I my first main lisp that tore apart and revamp was for steel shapes.  I tore the data base right out it becuase I found it to incorrect or out of date.  I fed the data from the asci manual to the lisp everytime a I wanted a shape.  Slower but accurate. 

Now since we are using a ADT vertical that has the detail component manager, I use the shaped that come with that.  it is base on ACSI manual and it gets updated every version.  2d though not 3D
I + XI = X is true ...  ... if you change your perspective.

I no longer CAD or Model, I just hang out here picking up the empties beer cans

Chuck Gabriel

  • Guest
Re: I beam imperial, Wf imperial
« Reply #16 on: June 01, 2007, 09:40:41 AM »
And, well said Cadaver.

The shapes database is available for free download at the AISC website.  It's called Shapes Database v13.0, in .xls or .html format and you can find it in the free pubs/free e-mail section. 

Bob

http://www.aisc.org/Content/NavigationMenu/ePubs/ePubs_Home/ePubs_Home.htm

Seems to be only available to members. :-(

CADaver

  • Guest
Re: I beam imperial, Wf imperial
« Reply #17 on: June 01, 2007, 03:34:26 PM »
It's a little old but the data below is still good:

http://www.theswamp.org/screens/index.php?dir=cadaver/&file=Pipe%20Steel%20Book.xls

Randy,
Excelllent spreadsheet.

A couple of questions.
Did you create it or your company?
Goes back many years.  I started it back in the mid-eighties in Lotus123 at one company.  Took it with me to another company in the late eighties.  There several folks expanded it over a couple of years and translated it to QuatroPro, then to Excel.  Took it with me I left there in the early ninties and kept it updated on my own.  A couple of years ago I got the updated (and expanded yet again) version from company number two above that you see here. I haven't updated it since.

If not is this used as a part of your Standards?
Most of the data contained in that Excel file I have in an Oracle database and access that data with other tools


Last and most important?
How do you maintain the data or keep it current?
I have a team of design administrators that ensure all data is up to date.  As codes, data, specifications, parameters, and/or policies change we the responsible individusal will make the appropriate changes to the database, then submit the changes to me for review.  I will verify the changes and make sure the end users get a review prior to implementation.


This is my concern with lisp routines (or whatever) that supplies the information thru a data base.
I my first main lisp that tore apart and revamp was for steel shapes.  I tore the data base right out it becuase I found it to incorrect or out of date.  I fed the data from the asci manual to the lisp everytime a I wanted a shape.  Slower but accurate. 

Now since we are using a ADT vertical that has the detail component manager, I use the shaped that come with that.  it is base on ACSI manual and it gets updated every version.  2d though not 3D

Our functions do not contain the data but rather call it from the database as needed.  That way we simply need to change the database to get the application updated.

Krushert

  • Seagull
  • Posts: 13679
  • FREE BEER Tomorrow!!
Re: I beam imperial, Wf imperial
« Reply #18 on: June 01, 2007, 03:42:44 PM »
It's a little old but the data below is still good:

http://www.theswamp.org/screens/index.php?dir=cadaver/&file=Pipe%20Steel%20Book.xls

Randy,
Excelllent spreadsheet.

A couple of questions.
Did you create it or your company?
Goes back many years.  I started it back in the mid-eighties in Lotus123 at one company.  Took it with me to another company in the late eighties.  There several folks expanded it over a couple of years and translated it to QuatroPro, then to Excel.  Took it with me I left there in the early ninties and kept it updated on my own.  A couple of years ago I got the updated (and expanded yet again) version from company number two above that you see here. I haven't updated it since.

If not is this used as a part of your Standards?
Most of the data contained in that Excel file I have in an Oracle database and access that data with other tools


Last and most important?
How do you maintain the data or keep it current?
I have a team of design administrators that ensure all data is up to date.  As codes, data, specifications, parameters, and/or policies change we the responsible individusal will make the appropriate changes to the database, then submit the changes to me for review.  I will verify the changes and make sure the end users get a review prior to implementation.


This is my concern with lisp routines (or whatever) that supplies the information thru a data base.
I my first main lisp that tore apart and revamp was for steel shapes.  I tore the data base right out it becuase I found it to incorrect or out of date.  I fed the data from the asci manual to the lisp everytime a I wanted a shape.  Slower but accurate. 

Now since we are using a ADT vertical that has the detail component manager, I use the shaped that come with that.  it is base on ACSI manual and it gets updated every version.  2d though not 3D

Our functions do not contain the data but rather call it from the database as needed.  That way we simply need to change the database to get the application updated.

Cool  8-)
I + XI = X is true ...  ... if you change your perspective.

I no longer CAD or Model, I just hang out here picking up the empties beer cans

CADaver

  • Guest
Re: I beam imperial, Wf imperial
« Reply #19 on: June 01, 2007, 03:46:02 PM »

Josh Nieman

  • Guest
Re: I beam imperial, Wf imperial
« Reply #20 on: June 01, 2007, 04:32:10 PM »
Cool  8-)
thanks, we think so too.

I'm with KrusherT, as well... very cool, very powerful, and impressive.  Makes me wish we had the constant-work required to hire some IT-savvy guy full time to do some database work like that.

Bryco

  • Water Moccasin
  • Posts: 1883
Re: I beam imperial, Wf imperial
« Reply #21 on: June 03, 2007, 11:39:21 AM »
The drawing here is hopefully an explanation of how to draw objects from a data list.
While drawing a rectangle is not difficult, fillets are a little baffling at first.
I have only included the math rather than making it language specific, but the program suggested by ps_port gives examples of how to use  numbers in a lisp program.
And in vba I make a call like
Sub C15x50()
    Channels "C15x50", 15, 11 / 16, 3.75, 5 / 8, 1.4375
End Sub
with the numbers  coming directly from the file Randy kindly provided

MickD

  • King Gator
  • Posts: 3636
  • (x-in)->[process]->(y-out) ... simples!
Re: I beam imperial, Wf imperial
« Reply #22 on: June 03, 2007, 06:32:56 PM »

While drawing a rectangle is not difficult, fillets are a little baffling at first.

...

Bryco, have a look through here, this was some section stuff I was working on some time ago, there's routined there to draw channel (parallel flanged) and ub (I sections) that may help. For fillets I just set the bulge for the polyline as required.

It's in c# and the c/z purlin shapes need the points adjusted to suit (I didn't get 'round to implementing them :roll: ).

hope it's of some use.
Code: [Select]

using System;
using System.Windows;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;

namespace DCS_3D
{
/// <summary>
/// Summary description for DCS_Section.
/// </summary>
public class DCS_Section
{
public DCS_Section()
{
//
// TODO: Add constructor logic here
//
}
private double _width = 100.0;
private double _height = 100.0;
private double _sectionArea = 0.0;
private string _sectionName = "";
private string _sectionType = "";
//private BulgeVertexCollection _bvc;


/// <summary>
/// Overall width of object when aligned with world coordinate system x axis in section
/// </summary>
public double Width
{
get
{
return _width;
}
}

/// <summary>
/// Overall height of object in world coordinate system (y axis) of section in plan
/// </summary>
public double Height
{
get
{
return _height;
}
}

/// <summary>
/// Cross sectional area of section
/// </summary>
public double SectionArea
{
get
{
return _sectionArea;
}
}

public Polyline CreatePoly(DataRow dr, string sectionName, string sectionType)
{
Polyline poly = null;
_sectionName = sectionName;
_sectionType = sectionType;

try
{
switch(sectionType)
{
case "FMS":
poly = Draw_Flat(dr);
break;
case "UB":
poly = Draw_UB(dr);
break;
case "UC":
goto case "UB";
case "WB":
goto case "UB";
case "WC":
goto case "UB";
case "PFC":
poly = Draw_PFC(dr);
break;
case "SHS":
poly = Draw_SHS(dr);
break;
case "RHS":
goto case "SHS";
case "EA":
poly = Draw_Angle(dr);
break;
case "UA":
goto case "EA";
case "SMS":
goto case "FMS";
case "Z":
poly = Draw_Z(dr);
break;
case "C":
poly = Draw_C(dr);
break;
default:
MessageBox.Show("Error creating Section Polyline!","Section Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
break;
}
}

catch
{
MessageBox.Show("Failed to read data!","Database Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
return poly = null;
}
return poly;
}

private Polyline Draw_Z(DataRow dr)
{
Polyline poly = new Polyline();
_width = Convert.ToDouble(dr["width"]);
_height = Convert.ToDouble(dr["height"]);
double web = Convert.ToDouble(dr["thickness"]);

BulgeVertexCollection bvc = new BulgeVertexCollection();
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//1
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//2
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//3
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//4
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//5
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//6
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//7
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//8
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//9
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//10
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//11
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//12
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//13
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//14
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//15
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//16
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//17
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//18
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//19
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//20

for(int i = 0;i < bvc.Count;i++)
{
poly.AddVertexAt(i,bvc[i].Vertex,bvc[i].Bulge,0.0,0.0);
}
poly.Closed = true;
return poly;
}

private Polyline Draw_C(DataRow dr)
{
Polyline poly = new Polyline();
_width = Convert.ToDouble(dr["width"]);
_height = Convert.ToDouble(dr["height"]);
double web = Convert.ToDouble(dr["thickness"]);

BulgeVertexCollection bvc = new BulgeVertexCollection();
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//1
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//2
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//3
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//4
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//5
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//6
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//7
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//8
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//9
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//10
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//11
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//12
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//13
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//14
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//15
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//16
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//17
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//18
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//19
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//20

for(int i = 0;i < bvc.Count;i++)
{
poly.AddVertexAt(i,bvc[i].Vertex,bvc[i].Bulge,0.0,0.0);
}
poly.Closed = true;
return poly;
}

private Polyline Draw_UB(DataRow dr)
{
double bulge = 0.414213562375;
Polyline poly = new Polyline();
_width = Convert.ToDouble(dr["width"]);
_height = Convert.ToDouble(dr["height"]);
double flange = Convert.ToDouble(dr["flange"]);
double web = Convert.ToDouble(dr["web"]);
double radius = Convert.ToDouble(dr["radius"]);

BulgeVertexCollection bvc = new BulgeVertexCollection();
bvc.Add(new BulgeVertex(new Point2d(-(_width*0.5),0.0),0.0));//1
bvc.Add(new BulgeVertex(new Point2d(_width*0.5,0.0),0.0));//2
bvc.Add(new BulgeVertex(new Point2d(_width*0.5,-flange),0.0));//3
bvc.Add(new BulgeVertex(new Point2d((web*0.5 + radius),-flange),bulge));//4
bvc.Add(new BulgeVertex(new Point2d(web*0.5,-(flange + radius)),0.0));//5
bvc.Add(new BulgeVertex(new Point2d(web*0.5,-(_height - (flange + radius))),bulge));//6
bvc.Add(new BulgeVertex(new Point2d(web*0.5 + radius,-(_height - flange)),0.0));//7
bvc.Add(new BulgeVertex(new Point2d(_width*0.5,-(_height - flange)),0.0));//8
bvc.Add(new BulgeVertex(new Point2d(_width*0.5,-_height),0.0));//9
bvc.Add(new BulgeVertex(new Point2d(-(_width*0.5),-_height),0.0));//10
bvc.Add(new BulgeVertex(new Point2d(-(_width*0.5),-(_height - flange)),0.0));//11
bvc.Add(new BulgeVertex(new Point2d(-(web*0.5 + radius),-(_height - flange)),bulge));//12
bvc.Add(new BulgeVertex(new Point2d(-(web*0.5),-(_height - (flange + radius))),0.0));//13
bvc.Add(new BulgeVertex(new Point2d(-(web*0.5),-(flange + radius)),bulge));//14
bvc.Add(new BulgeVertex(new Point2d(-(web*0.5 + radius),-flange),0.0));//15
bvc.Add(new BulgeVertex(new Point2d(-(_width*0.5),-flange),0.0));//16

for(int i = 0;i < bvc.Count;i++)
{
poly.AddVertexAt(i,bvc[i].Vertex,bvc[i].Bulge,0.0,0.0);
}
poly.Closed = true;
return poly;
}

private Polyline Draw_Flat (DataRow dr)
{
Polyline poly = new Polyline();
_width = Convert.ToDouble(dr["width"]);
_height = Convert.ToDouble(dr["height"]);
BulgeVertexCollection bvc = new BulgeVertexCollection();
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));
bvc.Add(new BulgeVertex(new Point2d(_width,0.0),0.0));
bvc.Add(new BulgeVertex(new Point2d(_width,-_height),0.0));
bvc.Add(new BulgeVertex(new Point2d(0.0,-_height),0.0));

for(int i = 0;i < bvc.Count;i++)
{
poly.AddVertexAt(i,bvc[i].Vertex,bvc[i].Bulge,0.0,0.0);
}
poly.Closed = true;
return poly;
}

private Polyline Draw_PFC(DataRow dr)
{
double bulge = 0.414213562375;
Polyline poly = new Polyline();
_width = Convert.ToDouble(dr["width"]);
_height = Convert.ToDouble(dr["height"]);
double flange = Convert.ToDouble(dr["flange"]);
double web = Convert.ToDouble(dr["web"]);
double rad = Convert.ToDouble(dr["radius"]);
BulgeVertexCollection bvc = new BulgeVertexCollection();
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//1
bvc.Add(new BulgeVertex(new Point2d(0.0,-_height),0.0));//2
bvc.Add(new BulgeVertex(new Point2d(-_width,-_height),0.0));//3
bvc.Add(new BulgeVertex(new Point2d(-_width,-(_height - flange)),0.0));//4
bvc.Add(new BulgeVertex(new Point2d(-(web + rad),-(_height - flange)),bulge));//5
bvc.Add(new BulgeVertex(new Point2d(-web,-(_height - (rad + flange))),0.0));//6
bvc.Add(new BulgeVertex(new Point2d(-web,-(flange + rad)),bulge));//7
bvc.Add(new BulgeVertex(new Point2d(-(web + rad),-flange),0.0));//8
bvc.Add(new BulgeVertex(new Point2d(-_width,-flange),0.0));//9
bvc.Add(new BulgeVertex(new Point2d(-_width,0.0),0.0));//10
for(int i = 0;i < bvc.Count;i++)
{
poly.AddVertexAt(i,bvc[i].Vertex,bvc[i].Bulge,0.0,0.0);
}
poly.Closed = true;
return poly;
}

private Polyline Draw_SHS(DataRow dr)
{
Polyline poly = new Polyline();
_width = Convert.ToDouble(dr["width"]);
_height = Convert.ToDouble(dr["height"]);
BulgeVertexCollection bvc = new BulgeVertexCollection();
bvc.Add(new BulgeVertex(new Point2d(-(_width*0.5),0.0),0.0));
bvc.Add(new BulgeVertex(new Point2d(_width*0.5,0.0),0.0));
bvc.Add(new BulgeVertex(new Point2d(_width*0.5,-_height),0.0));
bvc.Add(new BulgeVertex(new Point2d(-(_width*0.5),-_height),0.0));

for(int i = 0;i < bvc.Count;i++)
{
poly.AddVertexAt(i,bvc[i].Vertex,bvc[i].Bulge,0.0,0.0);
}
poly.Closed = true;
return poly;
}

private Polyline Draw_Angle(DataRow dr)
{
double bulge = 0.414213562375;
Polyline poly = new Polyline();
_width = Convert.ToDouble(dr["width"]);
_height = Convert.ToDouble(dr["height"]);
double web = Convert.ToDouble(dr["flange"]);
double rw = Convert.ToDouble(dr["radiusw"]);
double rt = Convert.ToDouble(dr["radiust"]);

BulgeVertexCollection bvc = new BulgeVertexCollection();
bvc.Add(new BulgeVertex(new Point2d(0.0,0.0),0.0));//1
bvc.Add(new BulgeVertex(new Point2d(0.0,-_height),0.0));//2
bvc.Add(new BulgeVertex(new Point2d(-(web - rt),-_height),-bulge));//3
bvc.Add(new BulgeVertex(new Point2d(-web,-(_height - rt)),0.0));//4
bvc.Add(new BulgeVertex(new Point2d(-web,-(web + rw)),bulge));//5
bvc.Add(new BulgeVertex(new Point2d(-(web + rw),-web),0.0));//6
bvc.Add(new BulgeVertex(new Point2d(-(_width - rt),-web),-bulge));//7
bvc.Add(new BulgeVertex(new Point2d(-_width,-(web - rt)),0.0));//8
bvc.Add(new BulgeVertex(new Point2d(-(_width),0.0),0.0));//9

for(int i = 0;i < bvc.Count;i++)
{
poly.AddVertexAt(i,bvc[i].Vertex,bvc[i].Bulge,0.0,0.0);
}
poly.Closed = true;
return poly;
}

public string SectonName
{
get
{
return _sectionName;
}
}

public string SectionType
{
get
{
return _sectionType;
}
}
}
}

« Last Edit: June 03, 2007, 06:34:58 PM by MickD »
"Programming is really just the mundane aspect of expressing a solution to a problem."
- John Carmack

"Short cuts make long delays,' argued Pippin.”
- J.R.R. Tolkien

Bryco

  • Water Moccasin
  • Posts: 1883
Re: I beam imperial, Wf imperial
« Reply #23 on: June 03, 2007, 10:52:25 PM »
Actually Mick I wasn't asking a question, but trying to share how to do it. I was thinking it may be a waste of time as I was doing it, but  would have liked to have read something on these lines when I was first messing with code. I will check the c# out though cheers.

MickD

  • King Gator
  • Posts: 3636
  • (x-in)->[process]->(y-out) ... simples!
Re: I beam imperial, Wf imperial
« Reply #24 on: June 03, 2007, 11:13:46 PM »
No prob's, thought it might be useful given the topic, it still needs a bit of work but it may save someone some typing at least ;)
"Programming is really just the mundane aspect of expressing a solution to a problem."
- John Carmack

"Short cuts make long delays,' argued Pippin.”
- J.R.R. Tolkien