Result Monitors (internal forces) - HiStructClient/femcad-doc GitHub Wiki

Its possible to display internal forces in document or image. The forces can be printed out with the help of Result Monitors. Result monitor is defined with Fcs.Analysis.ResultMonitor.New(loadCase, monitoredValue, structureSelector). One monitor can display more values at once - to do that, include more ResultMonitors in the array.

To print out the monitor through ImageRenderer, define Fcs model with gblocks, .fcsdrs and .fcsdrv files, and a string referencing the ResultMonitor.

ShellResultMonitors := loadCase => {
   #                                          lc,              internal force,      selector
   nx   := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.nx,  Fcs.Assembly.All) ],
   ny   := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.ny,  Fcs.Assembly.All) ],
   nxy  := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.nxy, Fcs.Assembly.All) ],
   mx   := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.mx,  Fcs.Assembly.All) ],   
   my   := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.my,  Fcs.Assembly.All) ],
   mxy  := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.mxy, Fcs.Assembly.All) ],
   vx   := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.vxy, Fcs.Assembly.All) ],
   vy   := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.vy,  Fcs.Assembly.All) ],
   # ... and more
}

BeamResultMonitors := loadCase => {
   #                                          lc,              internal force,      selector
   N   := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.Beam.N,  Fcs.Assembly.AllBeams) ],
   Vz  := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.Beam.Vz, Fcs.Assembly.AllBeams) ],
   My  := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.Beam.My, Fcs.Assembly.AllBeams) ],
   Mz  := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.Beam.Mz, Fcs.Assembly.AllBeams) ],   
   Myc := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.Beam.Central.My_mid, Fcs.Assembly.AllBeams) ],
   Mzc := [ Fcs.Analysis.ResultMonitor.New(loadCase, Fcs.Analysis.Result.Beam.Central.Mz_mid, Fcs.Assembly.AllBeams) ],
   # ... and more
}

LiveLoadMonitor := BeamResultMonitors( Fcs.Action.LoadCase{ Name = loadCases.LiveLoad.Name })
SnFlLoadMonitor := BeamResultMonitors( Fcs.Action.LoadCase{ Name = loadCases.SnowFullCase.Name })
SnUnLoadMonitor := BeamResultMonitors( Fcs.Action.LoadCase{ Name = loadCases.SnowUnbalCase.Name })

ImageContent := Fcs.Presentation.ImageRenderer{
     Model := Fcm,
     DrawSettingsFile       := "InternalForces.fcsdrs",
     ProjectionSettingsFile := "InternalForces.fcsdrv",
     AutoZoom := True,
     ResultMonitors := "LiveLoadMonitor.N",
     },

Two rules that need to be adhered are:

  • The referencing string and definition of ResultMonitor must be in one fcs file.
  • .fcsdrs file has to have settings which shows the graph of internal forces (the graph has to have correct orientation).