836x
004409
2020-04-27

Pregunta

¿Cómo puedo crear una sección a través de la interfaz COM?


Respuesta:
En principio, una sección es un elemento, como una barra, y también se crea de la misma manera. Primero, se requiere la interfaz con los objetos. Para un miembro, esto sería IModelData y para las secciones, ISections. Esta interfaz se puede encontrar en IModel3:

Subprueba_sección ()
' get interface from the opened model and lock the licence/program
Dim iModel As RFEM5.IModel3
Set iModel = GetObject(, "RFEM5.Model")
iModel.GetApplication.LockLicense
    
En caso de error, vaya a E
    
Dim iSecs como RFEM5.ISections
Establecer iSecs = iModel.GetSections ()

Todas las secciones creadas previamente se eliminan primero y luego se crean dos nuevas secciones.
La primera sección debe ser una sección sólida con un área de la sección visible (ver figura 01). Los datos se introducen de forma similar a RFEM. Como tipo, se selecciona "SectionOnSectionalArea", los puntos de las esquinas de la sección se establecen utilizando "EdgePoint" y un "Vector" define la dirección de la sección:

' primero elimina todas las secciones
iSecs.PrepareModification
iSecs.DeleteObjects ("Todos")
iSecs.FinishModification
    
' establecer sección en sólido
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
    
seg. = 1
sec.Name = "sección sólida"
sec.Plane = GlobalPlaneInPositiveX
sec.ShowValuesInIsolines = False
sec.Type = SectionOnSolidSectionLine
sec.ObjectList = "1"
    
iSecs.PrepareModification
iSecs.SetSection sec
iSecs.FinishModification

Como ya se sabe por otros elementos, la nueva sección finalmente se transfiere en un bloque Prepare-/FinishModification. Como segunda sección, se debe crear una sección de superficie (ver figura 02). Para esto, es necesario utilizar el tipo "SectionViaSurfacePlane". Además del vector de la dirección de la sección, debe seleccionar el plano de visualización de los resultados para la sección de la superficie. En el siguiente ejemplo, el plano xy se selecciona configurando "GlobalPlaneInPositiveX".

' establecer sección en la superficie
sec.EdgePointA.X = 2
sec.EdgePointA.Y = 0
sec.EdgePointA.Z = 0
sec.EdgePointB.X = 2
sec.EdgePointB.Y = 3
sec.EdgePointB.Z = 0
    
seg. = 2
sec.Name = "sección de superficie"
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

También es posible obtener los resultados de una sección utilizando el método separado "GetResultsInSection" de la interfaz "IResults2". A continuación, se obtienen los esfuerzos cortantes en la sección de la superficie. La distribución de los esfuerzos internos se establece en "Continua dentro de las superficies" por medio de "ContinuousDistributionWithinObjects":

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

En Descargas, puede encontrar la macro de Excel y el archivo de prueba para comprender el programa.