Decks / Slabs with DataAccess DA

Encountering some serious confusion with reading and writing Decks / Slabs via DataAccess.  For instance, writing slab edges on their own doesn't get you a slab  - it looks like you need to create a SlabPerimeter (and probably more steps after that), which you should be able to do via SlabPerimeters.Add()...  but the input is a SlabPerimeter, and the only methods attached to that class are GetEdges and GetPerimeterVertices.  Is there another route to creating SlabPerimeters that I haven't found?  Is it necessary to create one?  And then, once that is accomplished, how do you somehow link or assign that with a ConcSlabProp ?  They seem to operate completely separately. 

Thanks in advance for your help,

daniel

  • The architecture for decks in RAM DataAccess is similar to RAM Modeler.  There are three basic parts to modeling a deck/slab.  First, there needs to be a deck property defined.  Once a deck property is defined, a deck polygon can be modeled for the deck property type.  Finally, for the deck to be considered by RAM Structural System, it needs to be within a slab edge perimeter.

    First, create the deck property.  Get the collection of concrete, composite, or noncomposite slab properties from the IModel interface.  You specifically mentioned concrete slabs, so you would use IModel.GetConcreteSlabProps.  Then, add a new slab property using IConcSlabProps.Add.

    Second, add the deck polygon.  Get the collection of decks using IFloorType.GetDecks.  Then, add a new deck using IDecks.Add.  This method requires the slab property unique ID and the number of points.  The unique ID is IConcSlabProp.lUID for the property added in step 1.  The number of points should be the number of polygon indices plus one since the first and last point in the collection are the same (e.g. 5 points for a rectangular polygon).  Next, create the points collection using IDeck.GetPoints for the deck that was just added.  Since the IPoints collection already has 5 points in it, I typically delete the point using IPoints.Delete and then add the correct point back into the collection using IPoints.InsertAt2.  Finally, use IDeck.SetPoints to update the interface with the revised points collection.  More often than not, when something goes wrong with adding deck polygons, it is because the points collection is not correct.  Please make sure the points are valid, the first and last point are the same, and that the sequence of points is such that the polygon doesn’t cross over itself.

    Third, add the slab edges.  Get the collection of slab edges using IFloorType.GetAllSlabEdges.  Then, add the new slab edges to the collection using ISlabEdges.Add.  These slab edge segments should form a closed slab edge perimeter.



    Answer Verified By: Daniel Segraves