static void Main(string[] args)
        {
            string MyAppPath = AppDomain.CurrentDomain.BaseDirectory;

            using (SCIA.OpenAPI.Environment env = new SCIA.OpenAPI.Environment(@"c:\Program Files (x86)\SCIA\Engineer19.0\", @".\temp", "1.0.0.0"))
            {
                env.RunSCIAEngineer(SCIA.OpenAPI.Environment.GuiMode.ShowWindowShow);

                SCIA.OpenAPI.EsaProject UpXmlProj = env.OpenProject(System.IO.Path.Combine(MyAppPath, @"..\..\..\res\template.esa"));
                env.UpdateProject(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeXML, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\xml\test.xml"), UpXmlProj.ProjectID);
                UpXmlProj.CloseProject(SaveMode.SaveChangesNo);

                SCIA.OpenAPI.EsaProject UpEsaProj = env.OpenProject(System.IO.Path.Combine(MyAppPath, @"..\..\..\res\template.esa"));
                env.UpdateProject(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeESA, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\esa\test.esa"), UpEsaProj.ProjectID);
                UpEsaProj.CloseProject(SaveMode.SaveChangesNo);

                SCIA.OpenAPI.EsaProject UpIfcProj = env.OpenProject(System.IO.Path.Combine(MyAppPath, @"..\..\..\res\template.esa"));
                env.UpdateProject(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeIFC, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\ifc\test.ifc"), UpIfcProj.ProjectID);
                UpIfcProj.CloseProject(SaveMode.SaveChangesNo);

                SCIA.OpenAPI.EsaProject UpRevitProj = env.OpenProject(System.IO.Path.Combine(MyAppPath, @"..\..\..\res\template.esa"));
                env.UpdateProject(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeRevit, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\revit\test.r2s"), UpRevitProj.ProjectID);
                UpRevitProj.CloseProject(SaveMode.SaveChangesNo);

                SCIA.OpenAPI.EsaProject UpTeklaProj = env.OpenProject(System.IO.Path.Combine(MyAppPath, @"..\..\..\res\template.esa"));
                env.UpdateProject(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeTekla, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\tekla\test.t2s"), UpTeklaProj.ProjectID);
                UpTeklaProj.CloseProject(SaveMode.SaveChangesNo);

                SCIA.OpenAPI.EsaProject UpXlsxProj = env.OpenProject(System.IO.Path.Combine(MyAppPath, @"..\..\..\res\template.esa"));
                env.UpdateProject(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeAEF, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\aef\test.xlsx"), UpXlsxProj.ProjectID);
                UpXlsxProj.CloseProject(SaveMode.SaveChangesNo);

                //==========================================================
                ApiGuid newXmlproject;
                //ApiGuid newEsaproject;
                ApiGuid newIfcproject;
                ApiGuid newRevitproject;
                ApiGuid newTeklaproject;
                ApiGuid newAefproject;

                EsaProject ImXmlpProj = env.ImportProjectFromFile(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeXML, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\xml\test.xml"), out newXmlproject);
                //ESA project cannot be "imported" into SEn...just opened //EsaProject ImpEsaProj = env.ImportProjectFromFile(System.IO.Path.Combine(MyAppPath, @"..\..\..\res\esa\test.esa"), out newEsaproject);
                EsaProject ImpIfcProj   = env.ImportProjectFromFile(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeIFC, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\ifc\test.ifc"), out newIfcproject);
                EsaProject ImpRevitProj = env.ImportProjectFromFile(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeRevit, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\revit\test.r2s"), out newRevitproject);
                EsaProject ImpTeklaProj = env.ImportProjectFromFile(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeTekla, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\tekla\test.t2s"), out newTeklaproject);
                EsaProject ImpAefProj   = env.ImportProjectFromFile(SCIA.OpenAPI.Environment.TypeOfExtProject.TypeAEF, System.IO.Path.Combine(MyAppPath, @"..\..\..\res\aef\test.xlsx"), out newAefproject);

                env.CloseAllProjects(SaveMode.SaveChangesNo);
            }
        }
        /// <summary>
        /// This method represented advance use of OpenAPI, initialization of environment is done on background thanks to Context, EmptyFile is generated on backround and used than follows creation of model, linear calculation and reading results
        /// </summary>
        private static object SCIAOpenAPIWorker(SCIA.OpenAPI.Environment env)
        {
            #region Run SCIA Engineer
            //Run SCIA Engineer application
            bool openedSE = env.RunSCIAEngineer(SCIA.OpenAPI.Environment.GuiMode.ShowWindowShow);
            if (!openedSE)
            {
                throw new InvalidOperationException($"Cannot run SCIA Engineer");
            }
            #endregion
            #region Open Project Template file
            SciaFileGetter fileGetter = new SciaFileGetter();
            var            EsaFile    = fileGetter.PrepareBasicEmptyFile(@"C:/TEMP/");//path where the template file "template.esa" is created
            if (!File.Exists(EsaFile))
            {
                throw new InvalidOperationException($"File from manifest resource is not created ! Temp: {env.AppTempPath}");
            }

            EsaProject proj = env.OpenProject(EsaFile);
            if (proj == null)
            {
                throw new InvalidOperationException($"File from manifest resource is not opened ! Temp: {env.AppTempPath}");
            }
            #endregion

            CreateModel(proj.Model);
            #region  ---------- Calculation----------
            #region Send Model to SCIA Engineer
            //Refresh model in SCIA Engineer from local ADM
            proj.Model.RefreshModel_ToSCIAEngineer();
            #endregion
            #region Calculate

            // Run calculation
            proj.RunCalculation();
            Console.WriteLine($"My model calculate");
            OpenApiE2EResults storage = new OpenApiE2EResults();
            #endregion
            #endregion
            #region  ---------- Results -------------
            //Initialize Results API
            using (ResultsAPI resultsApi = proj.Model.InitializeResultsAPI())
            {
                if (resultsApi == null)
                {
                    return(storage);
                }
                {
                    OpenApiE2EResult beamB1InnerForLc = new OpenApiE2EResult("beamB1InnerForcesLC1")
                    {
                        ResultKey = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Beam,
                            EntityName  = beamName,
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            Dimension   = eDimension.eDim_1D,
                            ResultType  = eResultType.eFemBeamInnerForces,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        }
                    };
                    beamB1InnerForLc.Result = resultsApi.LoadResult(beamB1InnerForLc.ResultKey);
                    storage.SetResult(beamB1InnerForLc);
                }
                {
                    OpenApiE2EResult beamB1IDeformationLc = new OpenApiE2EResult("beamB1DeformationsLC1")
                    {
                        ResultKey = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Beam,
                            EntityName  = beamName,
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            Dimension   = eDimension.eDim_1D,
                            ResultType  = eResultType.eFemBeamDeformation,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        }
                    };
                    beamB1IDeformationLc.Result = resultsApi.LoadResult(beamB1IDeformationLc.ResultKey);
                    storage.SetResult(beamB1IDeformationLc);
                }
                {
                    OpenApiE2EResult beamB1RelIDeformationLc = new OpenApiE2EResult("beamB1RelativeDeformationsLC1")
                    {
                        ResultKey = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Beam,
                            EntityName  = beamName,
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            Dimension   = eDimension.eDim_1D,
                            ResultType  = eResultType.eFemBeamRelativeDeformation,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        }
                    };
                    beamB1RelIDeformationLc.Result = resultsApi.LoadResult(beamB1RelIDeformationLc.ResultKey);
                    storage.SetResult(beamB1RelIDeformationLc);
                }
                {
                    OpenApiE2EResult beamInnerForcesCombi = new OpenApiE2EResult("beamInnerForcesCombi")
                    {
                        ResultKey = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Beam,
                            EntityName  = beamName,
                            CaseType    = eDsElementType.eDsElementType_Combination,
                            CaseId      = C1Id,
                            Dimension   = eDimension.eDim_1D,
                            ResultType  = eResultType.eFemBeamInnerForces,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        }
                    };
                    beamInnerForcesCombi.Result = resultsApi.LoadResult(beamInnerForcesCombi.ResultKey);
                    storage.SetResult(beamInnerForcesCombi);
                }


                {
                    OpenApiE2EResult slabInnerForces = new OpenApiE2EResult("slabInnerForces")
                    {
                        ResultKey = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Slab,
                            EntityName  = SlabName,
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            Dimension   = eDimension.eDim_2D,
                            ResultType  = eResultType.eFemInnerForces,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        }
                    };
                    slabInnerForces.Result = resultsApi.LoadResult(slabInnerForces.ResultKey);
                    storage.SetResult(slabInnerForces);
                }
                {
                    OpenApiE2EResult slabDeformations = new OpenApiE2EResult("slabDeformations")
                    {
                        ResultKey = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Slab,
                            EntityName  = SlabName,
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            Dimension   = eDimension.eDim_2D,
                            ResultType  = eResultType.eFemDeformations,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        }
                    };
                    slabDeformations.Result = resultsApi.LoadResult(slabDeformations.ResultKey);
                    storage.SetResult(slabDeformations);
                }
                {
                    OpenApiE2EResult slabStresses = new OpenApiE2EResult("slabStresses")
                    {
                        ResultKey = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Slab,
                            EntityName  = SlabName,
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            Dimension   = eDimension.eDim_2D,
                            ResultType  = eResultType.eFemStress,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        }
                    };
                    slabStresses.Result = resultsApi.LoadResult(slabStresses.ResultKey);
                    storage.SetResult(slabStresses);
                }
                {
                    OpenApiE2EResult slabStrains = new OpenApiE2EResult("slabStrains")
                    {
                        ResultKey = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Slab,
                            EntityName  = SlabName,
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            Dimension   = eDimension.eDim_2D,
                            ResultType  = eResultType.eFemStrains,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        }
                    };
                    slabStrains.Result = resultsApi.LoadResult(slabStrains.ResultKey);
                    storage.SetResult(slabStrains);
                }
                {
                    OpenApiE2EResult slabInnerForcesExtended = new OpenApiE2EResult("slabInnerForcesExtended")
                    {
                        ResultKey = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Slab,
                            EntityName  = SlabName,
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            Dimension   = eDimension.eDim_2D,
                            ResultType  = eResultType.eFemInnerForces_Extended,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        }
                    };
                    slabInnerForcesExtended.Result = resultsApi.LoadResult(slabInnerForcesExtended.ResultKey);
                    storage.SetResult(slabInnerForcesExtended);
                }

                //{
                //    OpenApiE2EResult reactions = new OpenApiE2EResult("ReactionsN1")
                //    {
                //        ResultKey = new ResultKey
                //        {
                //            CaseType = eDsElementType.eDsElementType_LoadCase,
                //            CaseId = Lc1Id,
                //            EntityType = eDsElementType.eDsElementType_Node,
                //            EntityName = "n1",
                //            Dimension = eDimension.eDim_reactionsPoint,
                //            ResultType = eResultType.eReactionsNodes,
                //            CoordSystem = eCoordSystem.eCoordSys_Global
                //        }
                //    };
                //    reactions.Result = resultsApi.LoadResult(reactions.ResultKey);
                //    storage.SetResult(reactions);
                //}
                //{
                //    OpenApiE2EResult reactions = new OpenApiE2EResult("ReactionsSu1")
                //    {
                //        ResultKey = new ResultKey
                //        {
                //            CaseType = eDsElementType.eDsElementType_LoadCase,
                //            CaseId = Lc1Id,
                //            EntityType = eDsElementType.eDsElementType_PointSupportPoint,
                //            EntityName = "Su1",
                //            Dimension = eDimension.eDim_reactionsPoint,
                //            ResultType = eResultType.eResultTypeReactionsSupport0D,
                //            CoordSystem = eCoordSystem.eCoordSys_Global,

                //        }
                //    };
                //    reactions.Result = resultsApi.LoadResult(reactions.ResultKey);
                //    storage.SetResult(reactions);
                //}
                //{
                //    OpenApiE2EResult ReactionslinSupBeam = new OpenApiE2EResult("ReactionslinSupBeam")
                //    {
                //        ResultKey = new ResultKey
                //        {
                //            EntityType = eDsElementType.eDsElementType_LineSupportLine,
                //            EntityName = "linSupBeam",
                //            Dimension = eDimension.eDim_reactionsLine,
                //            CoordSystem = eCoordSystem.eCoordSys_Global,
                //            CaseType = eDsElementType.eDsElementType_LoadCase,
                //            CaseId = Lc1Id,
                //            ResultType = eResultType.eResultTypeReactionsSupport1D,

                //        }
                //    };
                //    ReactionslinSupBeam.Result = resultsApi.LoadResult(ReactionslinSupBeam.ResultKey);
                //    storage.SetResult(ReactionslinSupBeam);
                //}

                return(storage);
            }
            #endregion
        }
        /// <summary>
        /// This method represented simple use of OpenAPI, initialization of environment, creation of model, linear calculation and reading results
        /// </summary>
        static private void RunSCIAOpenAPI_simple()
        {
            //Initialization of OpenAPI environment
            using (SCIA.OpenAPI.Environment env = new SCIA.OpenAPI.Environment(SciaEngineerFullPath, AppLogPath, "1.0.0.0"))// path to the location of your installation and temp path for logs)
            {
                //Run SCIA Engineer application
                bool openedSE = env.RunSCIAEngineer(SCIA.OpenAPI.Environment.GuiMode.ShowWindowShow);
                if (!openedSE)
                {
                    throw new InvalidOperationException($"Cannot run SCIA Engineer");
                }
                //Open project
                SCIA.OpenAPI.EsaProject proj = env.OpenProject(SciaEngineerProjecTemplate);
                if (proj == null)
                {
                    throw new InvalidOperationException($"Cannot open project");
                }

                //method which create model
                CreateModel(proj.Model);
                #region  ---------- Calculation----------
                #region Send Model to SCIA Engineer
                //Refresh model in SCIA Engineer from local ADM
                proj.Model.RefreshModel_ToSCIAEngineer();
                #endregion
                #region Calculate
                // Run calculation
                proj.RunCalculation();

                #endregion
                #endregion
                #region  ---------- Results -------------

                //Initialize Results API
                using (ResultsAPI rapi = proj.Model.InitializeResultsAPI())
                {
                    if (rapi != null)
                    {
                        //Create container for 1D results
                        Result IntFor1Db1 = new Result();
                        //Results key for internal forces on beam 1
                        ResultKey keyIntFor1Db1 = new ResultKey
                        {
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            EntityType  = eDsElementType.eDsElementType_Beam,
                            EntityName  = beamName,
                            Dimension   = eDimension.eDim_1D,
                            ResultType  = eResultType.eFemBeamInnerForces,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        };
                        //Load 1D results based on results key
                        IntFor1Db1 = rapi.LoadResult(keyIntFor1Db1);
                        if (IntFor1Db1 != null)
                        {
                            Console.WriteLine(IntFor1Db1.GetTextOutput());
                        }
                        //combination
                        //Create container for 1D results
                        Result IntFor1Db1Combi = new Result();
                        //Results key for internal forces on beam 1
                        ResultKey keyIntFor1Db1Combi = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Beam,
                            EntityName  = beamName,
                            CaseType    = eDsElementType.eDsElementType_Combination,
                            CaseId      = C1Id,
                            Dimension   = eDimension.eDim_1D,
                            ResultType  = eResultType.eFemBeamInnerForces,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        };
                        // Load 1D results based on results key
                        IntFor1Db1Combi = rapi.LoadResult(keyIntFor1Db1Combi);
                        if (IntFor1Db1Combi != null)
                        {
                            Console.WriteLine(IntFor1Db1Combi.GetTextOutput());
                        }
                        ResultKey keyReactionsSu1 = new ResultKey
                        {
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            EntityType  = eDsElementType.eDsElementType_Node,
                            EntityName  = "n1",
                            Dimension   = eDimension.eDim_reactionsPoint,
                            ResultType  = eResultType.eReactionsNodes,
                            CoordSystem = eCoordSystem.eCoordSys_Global
                        };
                        Result reactionsSu1 = new Result();
                        reactionsSu1 = rapi.LoadResult(keyReactionsSu1);
                        if (reactionsSu1 != null)
                        {
                            Console.WriteLine(reactionsSu1.GetTextOutput());
                        }


                        Result Def2Ds1 = new Result();
                        //Results key for internal forces on slab
                        ResultKey keySlab = new ResultKey
                        {
                            EntityType  = eDsElementType.eDsElementType_Slab,
                            EntityName  = SlabName,
                            CaseType    = eDsElementType.eDsElementType_LoadCase,
                            CaseId      = Lc1Id,
                            Dimension   = eDimension.eDim_2D,
                            ResultType  = eResultType.eFemDeformations,
                            CoordSystem = eCoordSystem.eCoordSys_Local
                        };


                        Def2Ds1 = rapi.LoadResult(keySlab);
                        if (Def2Ds1 != null)
                        {
                            Console.WriteLine(Def2Ds1.GetTextOutput());

                            double maxvalue = 0;
                            double pivot;
                            for (int i = 0; i < Def2Ds1.GetMeshElementCount(); i++)
                            {
                                pivot = Def2Ds1.GetValue(2, i);
                                if (System.Math.Abs(pivot) > System.Math.Abs(maxvalue))
                                {
                                    maxvalue = pivot;
                                }
                                ;
                            }
                            ;
                            Console.WriteLine("Maximum deformation on slab:");
                            Console.WriteLine(maxvalue);
                        }
                    }
                    else
                    {
                        throw new Exception("No results accessible");
                    }

                    Console.WriteLine($"Press key to exit");
                    Console.ReadKey();
                }
                #endregion
                proj.CloseProject(SCIA.OpenAPI.SaveMode.SaveChangesNo);
                env.Dispose();
            }
        }