/SectionProperties

Excel Express - Section Properties Analysis Tool

Primary LanguageC#MIT LicenseMIT

SectionProperties

Users can build up beam sections using common shapes (rectangles, triangles, angle sections, channel sections, etc).

Sections are constructed using shapes and even other sections.

Tree View Visualization of Section Build up

Materials

Users define materials, and then assign them to a shape prior to building up a section. The following properties can be defined:

  • E: Modulus of Elasticity
  • G: Shear Modulus
  • v: Poisson's ratio
  • MaterialColor_Hex: color for all shapes composed of this color (defined in HEX)

Currently, only isotropic materials can be used. Orthotropic materials have been explored, but haven't been fully implemented yet.

Example:

IsoMaterial mat = new IsoMaterial { Name = "mat1", E = 1, G = 1, v = 0.33, MaterialColor_Hex = "#00FF00" };


Shapes

Positioning: Position shapes by defining a point (specific to each shape type, shown below) and it's location coordinates, xp and yp.

Dimensions: Each shape has a unique set of dimensions that can be defined.

Rotation: Rotate shapes using the ".theta" property

Mirroring: Mirror shapes using the ".mirrorX" and ".mirrorY" properties

Example:


  SectionElements.MachinedAngle MA = new SectionElements.MachinedAngle();
            MA.b1 = 4;
            MA.b2 = 5;
            MA.t1 = 0.50;
            MA.t2 = 0.50;
            MA.r = 0.50;
            MA.theta = 30 * Math.PI / 180;
            MA.point = "a";
            MA.xp = 1.6824;
            MA.yp = -0.1334;
            MA.Material = mat;
            MA.mirrorY = true;

Sections

Add shapes to section:


  Section sec = new Section();

            sec.AddShape(MA);

Calculate Section Properties (EA, EIxx, EIyy, EIxy, Xcg, Ycg, etc)


  SecProp sp = sec.CalculateSecProp();

Draw Section to file:


  EnvelopeCoords env = sec.GetEnvelopeCoord(); //GetEnvelopeCoords will find the x and y min and max of the section (for plotting purposes)

  Bitmap bitmap = new Bitmap(1000, 1000);
  PlotProperties pp = env.GetPlotProperties(1); //adds padding to envelope from above

  sec.Draw(ref bitmap, pp);

  bitmap.Save("Shape2.bmp");

Full Sample


            IsoMaterial mat = new IsoMaterial { Name = "mat1", E = 1, G = 1, v = 0.33, MaterialColor_Hex = "#00FF00" };

            SectionElements.MachinedAngle MA = new SectionElements.MachinedAngle();
            MA.b1 = 4;
            MA.b2 = 5;
            MA.t1 = 0.50;
            MA.t2 = 0.50;
            MA.r = 0.50;
            MA.theta = 30 * Math.PI / 180;
            MA.point = "a";
            MA.xp = 1.6824;
            MA.yp = -0.1334;
            MA.Material = mat;
            MA.mirrorY = true;

            SectionElements.Rectangle rec = new SectionElements.Rectangle();
            rec.b = 6;
            rec.t = 0.375;
            rec.point = "g";
            rec.xp = 2.7359;
            rec.yp = 0.0369;
            rec.theta = MA.theta;
            rec.Material = mat;

            Section sec = new Section();

            sec.AddShape(MA);
            sec.AddShape(rec);
            SecProp sp = sec.CalculateSecProp();

            EnvelopeCoords env = sec.GetEnvelopeCoord();

            Bitmap bitmap = new Bitmap(1000, 1000);
            PlotProperties pp = env.GetPlotProperties(1);

            sec.Draw(ref bitmap, pp);

            bitmap.Save("Shape2.bmp");


sec.Draw(...) output