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
Atenuar iModel como 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. no = 2
sec.Name = "sección de superficie"
sec.Plane = GlobalPlaneInPositiveX
sec.ShowValuesInIsolines = Verdadero
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 independiente "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 "Continuous within Surfaces" mediante "ContinuousDistributionWithinObjects":
'obtener resultados
Atenuar iCalc como 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, encontrará la macro de Excel y el archivo de prueba para comprender el programa.