499x
001352
2020-04-27

[ES] FAQ 004409 | ¿Cómo puedo crear una sección a través de la interfaz COM?

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.