# 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.

  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> &parameterNames, const std::vector<float> &parameterValues)

    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.

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Envision for Desktop in your own language, or choose a sample question below to start a conversation:

What is HOOPS Envision for Desktop?
What are the latest release notes for HOOPS Envision for Desktop?
How do I start evaluating HOOPS Envision for Desktop?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...