The Tool

One feature that I like to use in ETABs is the section cut tool, but it is quite cumbersome to utilize in practice:

Notice how you have to enter (4) valid points to define a section cut... a time consuming process. I love to use this tool to analyze my diaphragm forces, but you are only left with snapshots of your total diaphragm moment and shear. Defining lots of these section cuts along the length of a diaphragm is tedious.

This tool allows structural engineers to select their diaphragm in ETABs, define the slicing direction and define the number of sections to generate, plotting shear and moment at each section cut. It yields awesome plots like the following that you can use to determine diaphragm shear force and moments. The example shown below is that of a (3) sided diaphragm, 40ft long, with a 1kip/ft load applied to edge of the diaphragm.

Diaphragm Shear - Total Shear at shear wall is 40 kips

Diaphragm Moment

The shear graph above makes sense 1 kip/ft * 40ft = 40 kips to be resisted by singular shear wall in the line of the applied force; while on the other hand, the moment in the diaphragm is a little counter intuitive. This graph will make me revisit my other three sided diaphragm post at a later date.

The Goods

You can find the code to make this happen on my github as well as the sample ETABs model utilized to generate all of the plots. The code is written in python and utilizes the ETABs API to do the leg work.

A big thanks to CSI for making this possible in ETABs v19 and above. The new API of ETABs allows engineers to programmatically access any of the available tables in the interactive database. This bit of code makes the section cuts for the diaphragm:


def make_quad_etabs(name_sect,point):
    name = str(name_sect)
    final = []
    for i in range(4):
        if i == 0:
            test = [name, 'Quads', 'All', 'Analysis', 'Default', '', '', '', '0','0','0','','Top or Right or Positive3','1', '1', '1', str(point[0][0]), str(point[0][1]), str(point[0][2]), '1']
            final.append(test)
        elif i == 1:
            test = [name, '', '','', '', '', '', '', '','','','','','', '1', '2', str(point[1][0]), str(point[1][1]), str(point[1][2]), '']
            final.append(test)
        elif i == 2:
            test = [name, '', '','', '', '', '', '', '','','','','','', '1', '3', str(point[2][0]), str(point[2][1]), str(point[2][2]), '']
            final.append(test)
        elif i == 3:
            test = [name, '', '','', '', '', '', '', '','','','','','', '1', '4', str(point[3][0]), str(point[3][1]), str(point[3][2]), '']
            final.append(test)
    return final

etabs_data_sect = []
for i,(etabs_quad,sec_name) in enumerate(zip(global_quad,name)):
    etabs_data_sect.append(make_quad_etabs(sec_name, etabs_quad))

flat_etabs_data = []
for point in etabs_data_sect:
    temp = []
    for data in point:
        for sing_data in data:
            temp.append(sing_data)
    flat_etabs_data.append(temp)
mega_data = []
for point in flat_etabs_data:
    for ind_pnt in point:
        mega_data.append(ind_pnt)

TableKey = 'Section Cut Definitions'
TableVersion = 1
FieldsKeysIncluded = ['Name', 'Defined By', 'Group','Result Type', 'Result Location', 'Location X', 'Location Y', 'Location Z', 'Rotation About Z','Rotation About Y', 'Rotation About X', 'Axis Angle', 'Element Side', 'Number of Quads', 'Quad Number', 'Point Number', 'Quad X', 'Quad Y', 'Quad Z', 'GUID']
NumberRecords = len(flat_etabs_data)
     

y = SapModel.DatabaseTables.SetTableForEditingArray(TableKey, TableVersion, FieldsKeysIncluded, NumberRecords,mega_data)              

FillImport = True
z= SapModel.DatabaseTables.ApplyEditedTables(FillImport)
model_has_run = SapModel.Analyze.RunAnalysis()

To use the code, select your floor and change any of the input that I have noted with the #UI note in the python code. 

Typical user input includes:

  • Selecting the diaphragm you want to slice up, this is done in the ETABs model
  • Select the vector direction you want to your diaphragm to be sliced up, (1,1,0) for example is going up and to the right at a 45 degree angle, in the example below, (1,0,0) tells the program to create vertical slices along the length of the diaphragm, moving from left to right.
    • #UI
      vector = [1,0,0]
  • Define the number of slices you want to make
    • # UI Number of slices to make along the diahragm
      n_cuts = 100
  • Set the hieght, in feet, that your diaphragm exists at in ETABs
    • #UI
      height = 10 
  • Set the starting location of you diaphragm
    • #UI
      ref_pnt=[0,0,0]
  • Hit the run button on your favorite IDE

After hitting run, the program will generate the number of section cuts you told it to create and matplotlib is utilized to plot the results.

In my example code, I had the program generate 100 cuts, the 100th cut corresponds to the section cut 0099 noted below.

A nice plot is generated at the beginning as well so you can see how you are slicing your diaphragm to make sure you made your user input correctly. The red dots below correspond to where your diaphragm exists, while the blue lines corresponds to your section cuts.

Overall the tool works well and I look forward to using it on more complicated diaphragms. Test it out and let me know what you think!

UPDATE: A much more stable version of the slicer is shown here, written in C#.

ETABs Diaphragm Design Python

This tool is exactly what I've been looking for. 

I reached out to CSI years ago to ask why they can't simply report the in-plane actions for slab design strips in a similar fashion to defining wall piers. They're reply is this was the first time it has been requested and isn't related to conventional slab design. Then they referred me to the 'powerful' slab section cut tool, which would take an unpalatable amount of time to set up (and even then you don't get nice diagrams). 

Happy to help you test it out. 

That is really slick. How do you like Etabs?
I've been spending a bit of time with Robot lately since it's part of an overall package that includes Revit/CAD, but have yet to get into their API feature set.

ETABs is a pain in the butt to learn, but once you understand it (this took me a long time, I would estimate about 4-5 years of repeated projects), I have started to really enjoy the program. 

Don't get me wrong, it does not beat RAM structural in terms of ease of use and simplicity for a simple steel composite framed building, but that amount of control you have in your model is really unparalleled.

How have you been liking Robot Celt? I have never used it before; it does sound awesome and scary that both your Revit model and structural model are essentially the same thing. We have a license in house, maybe I should take a look at it.

"Revit model and structural model are essentially the same thing" Oh I probably gave this impression unintentionally the models are completely separate. The initial hand off from revit to robot is a bit smoother since they are under the Autodesk umbrella but beyond that totally separate models.

The interface for Robot is complete garbage as in broken dialogs, buttons that do nothing, etc. it can be really really frustrating. Once you wade through the interface BS though the analysis engine is really quite powerful and I have found a few things I like over RAM Elements/RISA 3D.
- You can do graphic based or spreadsheet based modeling

- Filters for object selection work very well once you understand them

- The ability to choose multiple load combinations and have the plots be the envelopes of only those combos is nice.
- The wind tunnel simulation is interesting and I've used it to look at what really occurs with these multi-family resi jobs that have an interior courtyard, you see some vortex action on the interior.

The Revit model and the structural model being essentially the same thing is actually a pre-conceived notion I had in my mind, nothing that you did to give me that idea. I actually like the idea of them being completely separate better. The little that I have explored in the revit structural analysis tab led me to believe that to modify your Robot model, you had to tinker with the revit model.

I might have to explore robot a bit more if you are liking it, we are trying to become less reliant on our RAM overlords.

Looks like it has nice capacity to direct analysis method. Do you know if it has capabilities to do seismic design and detailing?

It has some seismic capabilities but I have not gone to far into any of that. One area it seems it may be a stand out is on footfall analysis they have what looks to be a pretty robust dynamic analysis system. Robot also handles cables as well which if I recall in the CSI apps that feature is left to SAP and not in Etabs.

RAM Structural System is great for those low to mid-rise projects where you more or less already know the answer. The fact that you still can't apply a roof live load and a snow load at the same time let alone apply loads beyond just dead and live is a bit odd in 2022. RAM Concept is king here in North America for concrete plate design RISA's offering here is way below average and Adapt Builder is getting there but not quite as easy to use yet in my opinion. RAM Elements and RISA 3D are pretty much interchangeable in my mind.

I'd put Robot in a class with Etabs, maybe even SAP on the analysis end, where they both can do more advanced things and offer some handy tools for building design over Elements/RISA.

So cool what can be done, I have to admit that I am quite intimidated to dive into this stuff. My goal is to make a CAD interface as I have mentioned before. It will more than likely turn into a 10 year process...

"It will more than likely turn into a 10 year process..."

I don't know dude look how far you've made it already. One thing I've learned up to this point is instead of trying to come up with the perfect method to solve something advance your first idea until it accomplishes want to you wanted and then improve on it, my beam tool sat in limbo for so long as I kept debating with myself the "best" way to capture load combinations and patterning until I just made myself code something that worked.

@Trenno, test away, let me know if you have any trouble with code.

You will likely have to change this line of code to a 6 instead of a 4 to get into the your favorite units, kn and meters.

#sets to kip, ft, farienheit
SapModel.SetPresentUnits(6)

I also have no idea why your comment is at the top of the comments of the post, I thought I had this setup with original on top and newest on bottom...

 

Our Sidebar

You can put any information here you'd like.

  • Latest Comments
  • marcello on RAM API - Cracked -

    Austin

    I’m glad you found the class helpful on learning how to access the RAM API using dynamo.

    Marcello

  • Liz_Larsen on R2R - Update V1.1.0 -

    Great job! We've been wanting a tool like this for so long that I'd considered making it myself. During my research, I stumbled across this blog right around the time you were looking for testers a few months ago. 

    I'll be sure to spread the word about this amazing tool. Thanks …

  • retug on ETABs API - More Examples (Database Tables) -

    Hi rajavardhan, are you not able to delete selected frames and walls based on section properties through the ETABs program itself? Or through the API? I could put together a few quick examples for you with the API if needed.