cee::vtfx::CrossSectionsBlock
-
class
CrossSectionsBlock
: public Block A block for storing cross sections.
A cross sections block is used by the element block to define the cross section representation of the beams (BEAMS and BEAMS_3) in the element block.
The cross sections block contains a number of cross sections definitions which are added using addCrossSection(). Each cross section is defined by a type (CrossSectionType) and a set of parameters (name + value). Each cross section type has a predefined set of parameter names. You need to set a value for ALL parameters for the given cross section type. See table below for full list of cross section types and their parameters.
Creating a cross section block:
// Create cross sections block cee::PtrRef<cee::vtfx::CrossSectionsBlock> csBlock = new cee::vtfx::CrossSectionsBlock(11); // Add cross section of type BAR csBlock->addCrossSection(cee::vtfx::CrossSectionsBlock::BEAM_BAR, { "OffsetY", "OffsetZ", "Height", "WidthTop", "WidthBottom" }, { 0.0f, 0.0f, 2.0f, 2.0f, 1.0f }); // Write the geometry info block database->writeBlock(csBlock.get());
To use a cross section block in an element block, call ElementBlock::setCrossSectionsBlockId() with the id of the cross sections block. When adding the elements to the element block using cross sections expansion, some additional data is required.
- Cross sections mapping: One cross section mapping per element. The mapping is an index into the cross sections block.
- Directions: One direction per element. The direction is the direction of the beam.
- Eccentricities: One eccentricity per element node. The eccentricity is the offset of the node from the center of the cross section.
Set the cross sections mapping, directions and eccentricities using ElementBlock::addElementsWithCrossSections().
Using this cross sections block in an element block:
// Create element block cee::PtrRef<cee::vtfx::ElementBlock> elementBlock = new cee::vtfx::ElementBlock(1, false, false); elementBlock->setNodeBlockId(1); // Use node block with id = 1 elementBlock->setCrossSectionsBlockId(11); // Use cross sections block with id = 11 // Set the element data for 2 elements of type BEAMS std::vector<int> elementNodes = { 0, 1, 2, 3 }; // One cross sections mapping per element. 0 = first cross section in cross sections block std::vector<int> crossSectionsMapping = { 0, 0 }; // One direction per element std::vector<cee::Vec3f> directions = { cee::Vec3f(0.0f, 1.0f, 0.0f)}; // Add the elements and their cross sections mapping, directions and eccentricities elementBlock->addElementsWithCrossSections(cee::vtfx::ElementBlock::BEAMS, elementNodes, crossSectionsMapping, directions)); // Write the element block database->writeBlock(elementBlock.get());
Cross section parameters
Enum Description BEAM_IORH Cross section type I or H beam BEAM_PIPE A pipe beam cross section BEAM_BOX A box beam cross section BEAM_CYLINDER A cylinder beam cross section BEAM_L An L beam cross section BEAM_CHANNEL A beam cross section channel BEAM_BAR A bar beam cross section BEAM_UNSYMMETRIC_I An unsymmetrical I beam cross section BEAM_CONE A cylinder beam cross section with different diameter for each end of the beam See CrossSectionType for a description and illustration of different cross section types and their parameters.
Public Types
-
enum
CrossSectionType
Cross section types for CrossSectionsBlock.
Values:
-
enumerator
BEAM_IORH
Cross Section Type I or H Beam.
Parameters Description OffsetY Y Offset in Y direction from the center of the cross section to the center of the beam OffsetZ Z Offset in Z direction from the center of the cross section to the center of the beam Height HZ Height of beam at current location WidthTop BT Width of top flange ThicknessTop TT Thickness of top flange ThicknessWeb TY Thickness of beam web WidthBottom BB Width of bottom flange ThicknessBottom TB Thickness of bottom flange
-
enumerator
BEAM_PIPE
A pipe beam cross section.
Both outer diameter and thickness can be set
Parameters Description OffsetY Y Offset in Y direction from the center of the cross section to the center of the beam OffsetZ Z Offset in Z direction from the center of the cross section to the center of the beam OuterDiameter DY Outer diameter of pipe Thickness T Thickness of pipe
-
enumerator
BEAM_BOX
A box beam cross section.
Parameters Description OffsetY Y Offset in Y direction from the center of the cross section to the center of the beam OffsetZ Z Offset in Z direction from the center of the cross section to the center of the beam Height HZ Height of beam at current location Width BY Width of box beam ThicknessTop TT Thickness of top flange ThicknessWebs TY Thickness of vertical walls (webs) of box section ThicknessBottom TB Thickness of bottom flange
-
enumerator
BEAM_CYLINDER
A cylinder beam cross section.
Parameters Description OffsetY Offset in Y direction from the center of the cross section to the center of the beam OffsetZ Offset in Z direction from the center of the cross section to the center of the beam OuterDiameter Outer diameter of cylinder
-
enumerator
BEAM_L
An L beam cross section.
Parameters Description OffsetY Y Offset in Y direction from the center of the cross section to the center of the beam OffsetZ Z Offset in Z direction from the center of the cross section to the center of the beam Height HZ Height of beam at current location Width BY Width of flange ThicknessWeb TY Thickness of beam web ThicknessFlange TZ Thickness of flange Orientation K Web orientation of L section. 0 = web located in the negative local y-direction 1 = web located in the positive local y-direction
-
enumerator
BEAM_CHANNEL
A beam cross section channel.
Parameters Description OffsetY Y Offset in Y direction from the center of the cross section to the center of the beam OffsetZ Z Offset in Z direction from the center of the cross section to the center of the beam Height HZ Height of beam at current location Width BY Width of top and bottom flange ThicknessWeb TY Thickness of beam web ThicknessFlange TZ Thickness of top and bottom flange Orientation K Web orientation of channel section. 0 = web located in the negative local y-direction 1 = web located in the positive local y-direction
-
enumerator
BEAM_BAR
A bar beam cross section.
Parameters Description OffsetY Y Offset in Y direction from the center of the cross section to the center of the beam OffsetZ Z Offset in Z direction from the center of the cross section to the center of the beam Height HZ Height of beam WidthTop BT Width of bar at top WidthBottom BB Width of bar at bottom
-
enumerator
BEAM_UNSYMMETRIC_I
An unsymmetrical I beam cross section.
Parameters Description OffsetY Y Offset in Y direction from the center of the cross section to the center of the beam OffsetZ Z Offset in Z direction from the center of the cross section to the center of the beam Height HZ Height of beam at current location ThicknessWeb TY Thickness of beam web WidthTop BT Width of top flange WidthTopPos B1 Width of half top flange in positive local y-direction ThicknessTop TT Thickness of top flange WidthBottom BB Width of bottom flange WidthBottomPos B2 Width of half bottom flange in positive local y- direction ThicknessBottom TB Thickness of bottom flange
-
enumerator
BEAM_CONE
A cylinder beam cross section with different diameter for each end of the beam.
Parameters Description OffsetY Offset in Y direction from the center of the cross section to the center of the beam OffsetZ Offset in Z direction from the center of the cross section to the center of the beam OuterDiameter1 Outer diameter of cylinder at one end of the beam OuterDiameter2 Outer diameter of cylinder at the other end of the beam
-
enumerator
UNKNOWN_CROSS_SECTION
Unknown cross section type.
-
enumerator
Public Functions
-
CrossSectionsBlock
(int blockId) Constructs an empty cross sections block.
blockId must be >= 0 and unique for all cross section blocks within a database.
-
virtual
~CrossSectionsBlock
()
-
int
addCrossSection
(CrossSectionType type, const std::vector<Str> ¶meterNames, const std::vector<float> ¶meterValues) Adds a cross section to the cross sections block.
A cross sections is defined by a type (CrossSectionType) and a set of parameters (name + value).
Only BEAMS and BEAMS_3 element types can have cross sections.
parameterNames and parameterValues must have the same size. All parameters for the given cross section type must be provided along with a corresponding value. See CrossSectionType for a list of cross section types and their parameters.
The cross sections in this block are referenced by the element block when adding elements with cross sections using addElementsWithCrossSections(). The cross sections mappings (crossSectionIndices) are indices into the cross sections block.
If success, returns the index of the newly added cross section, otherwise returns -1. See the log for details if the function returns -1.
-
size_t
crossSectionCount
() const Returns the number of cross sections in the cross sections block.
-
CrossSectionType
crossSectionType
(size_t index) const Returns the cross section type for the cross section at index.
-
std::vector<Str>
crossSectionParameterNames
(size_t index) const Returns the parameter names for the cross section at index.
-
std::vector<float>
crossSectionParameterValues
(size_t index) const Returns the parameter values for the cross section at index.