TheSwamp

CAD Forums => CAD General => Dynamic Blocks => Topic started by: Bryco on May 31, 2007, 01:13:49 AM

Title: I beam imperial, Wf imperial
Post by: Bryco on May 31, 2007, 01:13:49 AM
The ones that come with cad in the sample tool palette Civil/structural,
are they cosher or approximations?
I'm looking for Channels as well, but cant find any decent info on them.
Title: Re: I beam imperial, Wf imperial
Post by: Josh Nieman on May 31, 2007, 08:26:49 AM
The ones that come with cad in the sample tool palette Civil/structural,
are they cosher or approximations?
I'm looking for Channels as well, but cant find any decent info on them.

very un-kosher.  many are simply wrong in size, and plus they don't even have most of the common sizes we use!

I'd do a search on the autodesk newsgroups for this, (possibly here as well, haven't tried it here so I dont know) for a solution.  There are many out there, though not always a dynamic block.  I use a version of Al's Steel Mill for most of my stuff (non-3d) which makes all WF, M, S, C, MC, and all those cool AISC shapes, imperial and metric.  My only beef is that it's pipes doesn't list Schedule sizes, only STD, XL, XXL or whatever... we still use schedule nomenclature.

Anyways... I would strongly advise AGAINST using the supplied dynamic block because it's crap.
Title: Re: I beam imperial, Wf imperial
Post by: CADaver on May 31, 2007, 08:31:57 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
Title: Re: I beam imperial, Wf imperial
Post by: Bryco on May 31, 2007, 09:35:35 AM
Thanks Josh,
Randy, that's an extremely handy list.
I would rather have 2d sections myself and I want to draw them from coordinates,
so this is the GO. The radii is the thing I've never worked out.
1)On a "W" would k-tf give me the actual radius?
Seems the same as k1-1/2tw
2) On the Channels-would you hazard a guess on the inside fillet size say compared to the web thickness.

 
Title: Re: I beam imperial, Wf imperial
Post by: Josh Nieman on May 31, 2007, 09:42:07 AM
Thanks Josh,
Randy, that's an extremely handy list.
I would rather have 2d sections myself and I want to draw them from coordinates,
so this is the GO. The radii is the thing I've never worked out.
1)On a "W" would k-tf give me the actual radius?
Seems the same as k1-1/2tw
2) On the Channels-would you hazard a guess on the inside fillet size say compared to the web thickness.

 

to be quite honest, whenever I implement someone else's blocks/routine for creating the steel, I check all the numbers that are important to me against the black book (AISC steel construction manual 13th edition) and generally the fillet is just anything that fits between the flange thickness and the k value... I think k... someone stole my black book... anyways, the clear-usable-gage of the web minus the flange thickness gives you the fillet range.  Since that's going to vary a bit anyways (check out mill tolerances... there're engineers here that think those values in the table are solid and invariable, heh... apperantly they never worked any job in production or in a shop)

Anyways, what I'm getting at is this: the fillet is pretty unimportant, as far as I know... unless you have a special application.  What -is- important is workable gage, web gage and all that... the amount of web or flange that is USABLE.
Title: Re: I beam imperial, Wf imperial
Post by: Bob Garner on May 31, 2007, 10:24:00 AM
Well said, Josh.

As the rolls that form the shapes wear, the radius etc. changes.  The only thing I can add is to remember that the slope on the inside of the flanges of channels is 1:6.

Bob
Title: Re: I beam imperial, Wf imperial
Post by: Chuck Gabriel on May 31, 2007, 10:39:01 AM
The only thing I can add is to remember that the slope on the inside of the flanges of channels is 1:6.

Thanks for the tip.  I seem to recall having seen that somewhere before.  Where did you pick it up?

Never mind.  I found it on page 1-9 of the green book.
Title: Re: I beam imperial, Wf imperial
Post by: Bryco on May 31, 2007, 10:49:07 AM
We use very little structural steel in the scenery business but we do clad around it sometimes, so sometimes the fillet is important. Thanks.
Title: Re: I beam imperial, Wf imperial
Post by: CADaver on May 31, 2007, 02:49:30 PM
Thanks Josh,
Randy, that's an extremely handy list.
I would rather have 2d sections myself and I want to draw them from coordinates,
so this is the GO. The radii is the thing I've never worked out.
1)On a "W" would k-tf give me the actual radius?
Seems the same as k1-1/2tw
2) On the Channels-would you hazard a guess on the inside fillet size say compared to the web thickness.

The latest AISC manual comes with a CD that contains an excel file of all structural shapes that includes all the dimensions necessary to draw them.  It is an excellent place to start if you wish to build a function (lisp/vba/c#/whatever) for bulding steel shapes.

When building 3D models of structural steel we square off the inside corner, the fillet does little for us except slow us down and make the structure elevations plot funny.
Title: Re: I beam imperial, Wf imperial
Post by: Bob Garner on May 31, 2007, 05:49:29 PM
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
Title: Re: I beam imperial, Wf imperial
Post by: Strucmad on May 31, 2007, 07:42:42 PM
Chuck,
I've always used this routine http://www.draftsperson.net/index.php?title=Wisey%27s_Steel_Shapes_LISP_program , found it accurate, only 2d but, might help.

Paul.
Title: Re: I beam imperial, Wf imperial
Post by: TimSpangler on June 01, 2007, 07:28:50 AM
We use a free lisp called DDShapes  It seems to work fine.  It is a freeware but the lisp leads a little to be desired.  The original didn't localize any variables.  With a little house cleaning I seems to have gotten it to work well.  Just google it.  I'll ask the poweres that be here at work and if they don't have a problem I'll post my version and save you the work.

Just let me know.
Title: Re: I beam imperial, Wf imperial
Post by: Chuck Gabriel on June 01, 2007, 07:54:08 AM
Chuck,
I've always used this routine http://www.draftsperson.net/index.php?title=Wisey%27s_Steel_Shapes_LISP_program , found it accurate, only 2d but, might help.

Paul.

Thanks for that.  I have something for 2D, but I have a pet project, for doing steel in 3D, that I've let fall by the wayside.  I've never been able to figure out how some of the logic in the algorithms I've seen for drawing channels was derived, and knowing the bit about the 2:12 slope is one piece of the puzzle.
Title: Re: I beam imperial, Wf imperial
Post by: Bryco on June 01, 2007, 08:46:41 AM
Ps_port that little prog looks nice.
I may end up doing some of this myself anyway as getting the list was the hard part.
In a channel I've presumed the average thickness is a point half way down the flange -the web thickness.
 
Title: Re: I beam imperial, Wf imperial
Post by: Chuck Gabriel on June 01, 2007, 09:04:39 AM
I don't believe the 2:12 rule necessarily applies to MC shapes (only S and C shapes).  The green book says something to the effect that individual mills should be consulted for the dimensions (and inside flange slopes) of M and MC shapes.

I have an old Bethlehem Steel book, and it doesn't make any mention of the slope.  It is probably fine to assume 2:12 for general drafting purposes, but you might want something more precise for fabrication detailing.
Title: Re: I beam imperial, Wf imperial
Post by: Krushert 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
Title: Re: I beam imperial, Wf imperial
Post by: Chuck Gabriel 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. :-(
Title: Re: I beam imperial, Wf imperial
Post by: CADaver 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.
Title: Re: I beam imperial, Wf imperial
Post by: Krushert 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-)
Title: Re: I beam imperial, Wf imperial
Post by: CADaver on June 01, 2007, 03:46:02 PM
Cool  8-)
thanks, we think so too.
Title: Re: I beam imperial, Wf imperial
Post by: Josh Nieman 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.
Title: Re: I beam imperial, Wf imperial
Post by: Bryco 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
Title: Re: I beam imperial, Wf imperial
Post by: MickD 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;
}
}
}
}

Title: Re: I beam imperial, Wf imperial
Post by: Bryco 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.
Title: Re: I beam imperial, Wf imperial
Post by: MickD 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 ;)