Réponse:
Une coupe est généralement un élément (une barre, par exemple) et est créée comme telle. Il est nécessaire de disposer d'une interface avec les objets concernés. Il s'agit d'IModelData pour les barres et d'ISections pour les coupes. Cette interface se trouve dans 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()
Toutes les coupes créées précédemment sont d'abord supprimées, puis deux coupes sont créées.
La première coupe doit être solide avec une aire de section visible (voir la Figure 01). Les données sont entrées de la même manière que dans RFEM. Une fois le type « SectionOnSectionalArea » sélectionné, les points d'angle de la coupe sont définis à l'aide de la commande « EdgePoint » et le paramètre « Vector » définit sa direction :
' 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
La nouvelle coupe est finalement transférée dans un bloc Prepare-/FinishModification. La seconde coupe créée doit être une coupe de surface (voir la Figure 02). Pour ce faire, le type « SectionViaSurfacePlane » doit être utilisé. Outre le vecteur de direction, vous devez sélectionner le plan d'affichage des résultats de la coupe de surface. Dans l'exemple ci-dessous, le plan xy est sélectionné en définissant « GlobalPlaneInPositiveX » :
' 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
Il est également possible d'obtenir les résultats à l'aide de la méthode « GetResultsInSection » de l'interface « IResults2 ». Il faut ensuite obtenir les efforts tranchants sur la coupe de surface. La distribution des efforts internes est définie sur « Continue dans les surfaces » dans « 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)
La macro Excel et le fichier de test associés sont disponibles au téléchargement ci-dessous.
Foire aux questions (FAQ)