432x
001660
2020-08-04

[EN] FAQ 004585 | Как в модуле RF-COM считать распределение нагрузки на линию из поля со списком ...

Вопрос:
Как можно в модуле RF-COM считать распределение нагрузки на линию из поля со списком?

Ответ:
Распределение линейной нагрузки определяется с помощью атрибута «Распределение». Атрибут «Распределение» относится к типу «LoadDistributionType», а записи списка в поле со списком относятся к типу «Строка», поэтому требуется преобразование типа. Функция «GetLoadDistributionType» преобразует запись списка типа String в LoadDistributionType.

'--------------------------------------------------------------------------------------------------
Функция GetLoadDistributionType (sType As String) As LoadDistributionType
'--------------------------------------------------------------------------------------------------

    Если sType = "Concentrated2x2QType", то
      GetLoadDistributionType = Concentrated2x2QType
    ElseIf sType = "Concentrated2xQType" Тогда
      GetLoadDistributionType = Concentrated2xQType
    ElseIf sType = "ConcentratedNxQType" Тогда
      GetLoadDistributionType = ConcentratedNxQType
    ElseIf sType = "ConcentratedType" Тогда
      GetLoadDistributionType = ConcentratedType
    ElseIf sType = "ConcentratedUserDefinedType" Тогда
      GetLoadDistributionType = "ConcentratedUserDefinedType"
    ElseIf sType = "LinearType" Тогда
      GetLoadDistributionType = LinearType
    ElseIf sType = "LinearXType" Тогда
      GetLoadDistributionType = LinearXType
    ElseIf sType = "LinearYType" Тогда
      GetLoadDistributionType = LinearYType
    ElseIf sType = "LinearZType" Тогда
      GetLoadDistributionType = LinearZType
    ElseIf sType = "ParabolicType" Тогда
      GetLoadDistributionType = ParabolicType
    ElseIf sType = "RadialType" Тогда
      GetLoadDistributionType = RadialType
    ElseIf sType = "TaperedType" Тогда
      GetLoadDistributionType = TaperedType
    ElseIf sType = "TrapezoidalType" Тогда
      GetLoadDistributionType = TrapezoidalType
    ElseIf sType = "UniformType" Тогда
      GetLoadDistributionType = UniformType
    ElseIf sType = "VaryingType" Тогда
      GetLoadDistributionType = VaryingType
    End If

End Function

Процедура «SetLineLoad» создает линейную нагрузку на линии 1. Распределение нагрузки считывается из поля со списком «LoadDistribution» таблицы «LineLoad».

'--------------------------------------------------------------------------------------------------
Sub SetLineLoads ()
'--------------------------------------------------------------------------------------------------
Dim model As RFEM5.model
Расчетная нагрузка Как RFEM5.ILoadCase
Размерные данные (0) Как в RFEM5.LineLoad
    'Get interface for model
    Set model = GetObject(, "RFEM5.Model")

    ' Заблокировать лицензию COM и доступ к программе
    model.GetApplication.LockLicense
    On Error GoTo e
   ' Получить интерфейс для нагрузок
    Задайте load = model.GetLoads.GetLoadCase (0, AtIndex)
    ' Задать параметры для линейной нагрузки
    data (0) .No = 1
    данные (0) .LineList = «1»
    data (0) .Type = ForceType
    ' Распределение нагрузки из поля со списком
    data (0) .Distribution = GetLoadDistributionType (Worksheets («LineLoad»). DropDowns («LoadDistribution»). List (Worksheets («LineLoad»). DropDowns («LoadDistribution»). ListIndex))
    data (0) .Direction = LocalZType
    data (0) .DistanceA = 11
    data (0) .DistanceB = 22
    data (0) .RelativeDistances = True
    data (0) .Magnitude1 = 4000
    data (0) .Magnitude2 = 5000
    data (0) .Magnitude3 = 6000
    data (0) .OverTotalLength = False
    data (0) .Comment = «линейная нагрузка 1»
    ' Перенести линейную нагрузку
    load.PrepareModification
    load.SetLine - загружает данные
    load.FinishModification

e:  If Err.Number 0 Then MsgBox Err.Description, , Err.Source
    Установить нагрузку = ничего
    ' Лицензия COM разблокирована, доступ к программе снова возможен
    model.GetApplication.UnlockLicense
    Set model = Nothing

End Sub

Исходный код затем находится в разделе Загрузки.