idea-statica / iom-examples

Examples of using IDEA StatiCa IOM API
MIT License
8 stars 4 forks source link

[QUESTION] How to create angle connection through API #59

Closed EricDuongED closed 3 years ago

EricDuongED commented 3 years ago

I'm looking to create several different connections that uses angles. For example, a welded-bolted double angle connection as shown below:

image

Is there a way to take the desired angle shape (i.e. L102x102x9.5) and use that to build the angle connection in the connection file? If not, how would one go about creating this in the IOM?

Cheers, Eric (University of Alberta Steel Center Researcher)

vojtech-chalupa commented 3 years ago

Thank you for the question Eric!

Modelling this type of connection using the IOM is certainly possible. However, you can't currently leverage the "complex" operations available in the desktop app.

In this case, instead of a single "Cleat" operation, you need to define: 1) A "Workplane" and a "Cut" operations to cut the connected beam B 2) Two "Stiffening member" operations with the desired cross-section (L102x102x9.5) to model the cleats 3) Two "Bolt grid" operations to connect the angles to the flange of the beam C 4) "Weld" operations to weld the angle legs to the web of the beam B

These resources should help you with defining the abovementioned operations: https://idea-statica.github.io/iom-examples/iom-steel-connections/steel-frame1.html https://idea-statica.github.io/iom/iom-api/latest/html/R_Project_IdeaOpenModel.htm

Feel free to comment if you have further questions. Cheers, Vojtech

EricDuongED commented 3 years ago

Thanks for the response Vojtech!

Can you clarify your second point of using two "Stiffening member" operations to model the cleats? I don't believe the steel-frame example shows this. I'm familiar with modeling a single plate for a stiffener or an end plate/shear tab connection but how can I create a plate with the desired cross-section?

My understanding would be to use the CrossSectionParameter class but does this only apply to creating columns/beams?

vojtech-chalupa commented 3 years ago

Right, I will attach an example of a connection where two angle stiffening members are used (IDs 1807470 and 1807495). What makes a beam a stiffening member is the IsAdded [bool]. You can check the BeamData for

      <IsAdded>true</IsAdded>

Those are the stiffening members. You can also find a definition of a rolled angle through CrossSectionParameter class.

IOM_Example.zip

EricDuongED commented 3 years ago

Hi Vojtech,

For some reason I can't set the angle BeamData to true without the causing an error when trying to generate the IOM. I threw together a quick model to try and figure out how to create an angle as a stiffening member and this is the IOM file and XML file that I've created.

IOM_Angle.zip

I've set the points of the angle so that the legs rest on the web of the beam and flange of the column and then simply applied 2 sets of BoltGrids to bolt the angle. The length of the angle is not correct as I can't control the length of the angle (I'm assuming once it's a stiffening member, it will follow the points that I have set).

Please let me know how I can correct this.

EricDuongED commented 3 years ago

Also, another question that I had was how does the software determine the center of gravity for angles? I wanted to use the RefLineInCenterOfGravity property to adjust the angle positions but when I did a hand calculation to determine the center of gravity, it was slightly off from what I determined.

This is important to me because I'm trying to create a parametric bolted angle connection through the IOM and need to understand how to adjust the angles accordingly.

Thanks for your help so far, I appreciate it!

vojtech-chalupa commented 3 years ago

Eric,

Turns out the IsAdded member boolean isn't quite enough to define a stiffening member in your case, apologies. I've gone through your .xml and added the following:

Definition of a local coordinate system for the LineSegment3D

<LineSegment3D>
  <Id>3</Id>
  <StartPoint>
    <TypeName>Point3D</TypeName>
    <Id>11</Id>
  </StartPoint>
  <EndPoint>
    <TypeName>Point3D</TypeName>
    <Id>12</Id>
  </EndPoint>
  <LocalCoordinateSystem xsi:type="CoordSystemByVector">
    <VecX>
      <X>0</X>
      <Y>0</Y>
      <Z>1</Z>
    </VecX>
    <VecY>
      <X>1</X>
      <Y>0</Y>
      <Z>0</Z>
    </VecY>
    <VecZ>
      <X>0</X>
      <Y>1</Y>
      <Z>0</Z>
    </VecZ>
  </LocalCoordinateSystem>
</LineSegment3D>

AddedMember property in BeamData

    <BeamData>
      <Id>3</Id>
      <Name>Angle</Name>
      <OriginalModelId>3</OriginalModelId>
      <IsAdded>true</IsAdded>
      <IsNegativeObject>false</IsNegativeObject>
      <AddedMember>
        <TypeName>Member1D</TypeName>
        <Id>3</Id>
      </AddedMember>
      <MirrorY>false</MirrorY>
      <RefLineInCenterOfGravity>false</RefLineInCenterOfGravity>
      <IsBearingMember>false</IsBearingMember>
      <AutoAddCutByWorkplane>true</AutoAddCutByWorkplane>
    </BeamData>

IOM_Angle_edited.zip

Defining a coordinate system for line segments is best practice for all beams, not only stiffening members. Make sure that the direction of the local X-axis is in agreement with the start and endpoints (local X direction is start point -> endpoint).

As for the position of a center of gravity of angles, this is calculated from the shape outline and there shouldn't be much difference to the hand calculation. You can check the actual value in the Connection App, in the Materials Tab. For the angle at hand, the center of gravity position is

image

With angles, these values are referenced to the shape centerline, so you need to add a half of the leg thickness (9,53/2) to get the distance to the face. Let me know if this works for you.

EricDuongED commented 3 years ago

Hey Vojtech,

Thank you so much for your help/advice, I got it to work now!

As for the geometric properties of the CISC angles, is it possible to extract the y0 and z0 values in the API? If not, is it possible for you to provide me the data that the software uses for these properties? It's slightly different from the properties that I have from CISC which causes slight differences in the analysis because I can't adjust the angle positions perfectly.

This causes a concern for parametric/generative design since I won't be able to access the connection file for every iteration to adjust the angle position based on the value in the Connection App.

vojtech-chalupa commented 3 years ago

No problem, glad it works now! Also, I'd like to correct what I said earlier, the y0,z0 coordinates in the database are not the centre of gravity, but a shear centre (distance from the centre of gravity to the intersection of the leg centrelines). All shapes in our database have the centre of gravity at 0,0 coordinates. Anyway, I've exported the underlying geometrical data for you into the .xlsx file below. The coordinates of the centre of gravity are calculated analytically, so I guess there are differences in the radii that we use.

Angle_L (CISC STT 9.2)_Exported.xlsx

EricDuongED commented 3 years ago

Hey Vojtech,

Thanks for the spreadsheet, I am able to line up the angle perfectly through the API now.

I have some additional questions regarding the BoltGrid class. I'm having troubles generating bolts in the proper orientation. From the pictures below, we can see that: 1) The nuts of the bolts are attached at the wrong plate for one of the angles (correct orientation circled in blue) 2) The bolt length extends to the further column flange as opposed to the nearer column flange

I've tried changing the LCS of the bolts but it doesn't seem to change the location of the nuts for the bolts. Any advice on how to fix this problem? As for the bolt length, besides the ConnectedPartIds property is there anyway to specify the connected elements for the bolts?

I've attached the connection file and XML file below for reference.

image image image

IOM_Angle.zip

Thanks for all your help so far!

mpospisil commented 3 years ago

There is the new feature in v 20.1. An user can define a local coordinate system for a bolt grid. See the ccm example

https://github.com/idea-statica/ccm-examples

https://github.com/idea-statica/ccm-examples/blob/release-v20.1/FEAppExample_1/CAD_Model_Examples/cleats-beam-to-column.xml