920x
004409
2020-04-27

Создание шаблона посредством интерфейса COM

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


Ответ:

Разрез сам по себе является таким же элементом как, например, стержень, потому он создается таким же образом. Сначала требуется наличия интерфейса к соответствующим объектам. Для стержня это интерфейс IModelData, а для сечений - ISections. Данный интерфейс находится в IModel3:

Sub test_section()
'   get interface from the opened model and lock the licence/program
    Dim iModel As RFEM5.IModel3
    Set iModel = GetObject(, "RFEM5.Model")
    iModel.GetApplication.LockLicense
    
On Error GoTo E
    
    Dim iSecs As RFEM5.ISections
    Set iSecs = iModel.GetSections()

Все ранее созданные разрезы сначала удаляются, а затем создаются два новых разреза.

Первый разрез должен быть разрез через тело с видимой площадью сечения (см. Рисунок 01). Все данные вводятся также как и в программе RFEM. В качестве типа нужно выбрать «SectionOnSectionalArea». Угловые точки разреза затем задаются с помощью «EdgePoint», а направление разреза определяет «Vector»:

   '   first delete all sections
    iSecs.PrepareModification
    iSecs.DeleteObjects ("All")
    iSecs.FinishModification
    
    '   set section on solid
    Dim sec As RFEM5.Section
    sec.EdgePointA.X = 2
    sec.EdgePointA.Y = 5
    sec.EdgePointA.Z = 0
    sec.EdgePointB.X = 2
    sec.EdgePointB.Y = 8
    sec.EdgePointB.Z = 0
    
    sec.no = 1
    sec.Name = "solid section"
    sec.Plane = GlobalPlaneInPositiveX
    sec.ShowValuesInIsolines = False
    sec.Type = SectionOnSolidSectionLine
    sec.ObjectList = "1"
    
    iSecs.PrepareModification
    iSecs.SetSection sec
    iSecs.FinishModification

Так же как и у других элементов, будет новый разрез, наконец, перенесен в блок Prepare-/FinishModification. Als zweiter Schnitt soll ein Flächenschnitt angelegt werden (siehe Bild 02). Для этого разреза требуется использовать тип «SectionViaSurfacePlane». Затем нужно кроме вектора направления разреза, выбрать также плоскость для отображения результатов. В следующем примере была с помощью команды «GlobalPlaneInPositiveX» выбрана плоскость xy.

'   set section on surface
    sec.EdgePointA.X = 2
    sec.EdgePointA.Y = 0
    sec.EdgePointA.Z = 0
    sec.EdgePointB.X = 2
    sec.EdgePointB.Y = 3
    sec.EdgePointB.Z = 0
    
    sec.no = 2
    sec.Name = "surface section"
    sec.Plane = GlobalPlaneInPositiveX
    
    sec.ShowValuesInIsolines = True
    sec.Type = SectionViaSurfacePlane
    sec.ObjectList = "1"
    
    sec.Vector.X = 0
    sec.Vector.Y = 0
    sec.Vector.Z = 1
    
    iSecs.PrepareModification
    iSecs.SetSection sec
    iSecs.FinishModification

Результаты разреза можно получить также с помощью отдельного метода «GetResultsInSection» в интерфейсе «IResults2». Далее будут получены поперечные силы на разрезе через поверхность. Распределение внутренних сил затем с помощью команды «ContinuousDistributionWithinObjects» определяется как «Непрерывно внутри поверхности»:

 '   get results
    Dim iCalc As ICalculation2
    Set iCalc = iModel.GetCalculation
    
    Dim iRes As IResults2
    Set iRes = iCalc.GetResultsInFeNodes(LoadCaseType, 1)
    
    Dim secRes() As RFEM5.SectionResult
    secRes = iRes.GetResultsInSection(2, AtNo,
      ShearForceVy,ContinuousDistributionWithinObjects, False)

В разделе «Загрузки» затем можно скачать макрос для Excel и тестовый файл для сравнения с программой.


Автор

Г-н Гюнтель осуществляет техническую поддержку пользователей Dlubal Software.

Скачивания


;