482x
005058
2021-08-24

Поворот узловой опоры с помощью интерфейса COM

Как можно повернуть узловую опору с помощью интерфейса COM?


Ответ:

Поворот узловой опоры определяется посредством пользовательской системы координат. В следующем примере узловая опора повернута на 45 ° вокруг оси z. Нет необходимости определять новую систему координат через узлы. В этом случае достаточно использовать параметр RotatedSystemType, который позволяет выполнить пространственный поворот опоры с помощью трех поворотов вокруг оси x, y и z. Поворот задается в радианах:


Sub test_nodal_support ()

Dim iApp As RFEM5.Application
Set iApp = GetObject(, "RFEM5.Application")

iApp.LockLicense

Dim iMod As RFEM5.IModel3
Set iMod = iApp.GetActiveModel

On Error GoTo e

' получить интерфейс данных модели
Dim iModData As RFEM5.IModelData2
Set iModData = iMod.GetModelData

' получить интерфейс узловой опоры
Размеры как в RFEM5.INodalSupport
Установите iNs = iModData.GetNodalSupport (1, AtNo)

' получить данные узловой опоры
Размеры как в RFEM5.NodalSupport
ns = iNs.GetData

' изменить данные
ns.ReferenceSystem = UserDefinedSystemType
ns.UserDefinedReferenceSystem.Axis1 = AxisX
ns.UserDefinedReferenceSystem.Axis2 = AxisY
ns.UserDefinedReferenceSystem.Type = RotatedSystemType
ns.UserDefinedReferenceSystem.RotationAngles.X = 0
ns.UserDefinedReferenceSystem.RotationAngles.Y = 0
ns.UserDefinedReferenceSystem.RotationAngles.Z = 45 * 3,14159265359/180

' задать данные узловой опоры
iModData.PrepareModification
iNs.SetData ns
iModData.FinishModification

e:

If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.Source

iMod.GetApplication.UnlockLicense
Set iMod = Nothing

End Sub


Программа берет существующую узловую опору из текущей открытой модели и модифицирует ее. Поскольку пользовательская система координат не является прямой частью интерфейса INodalSupport узловой опоры, то поворот, конечно же, можно передать при создании узловой опоры.