//------------------------------------------------------------------------------
        //Callback Name: dialogShown_cb
        //This callback is executed just before the dialog launch. Thus any value set
        //here will take precedence and dialog will be launched showing that value.
        //------------------------------------------------------------------------------
        public void dialogShown_cb()
        {
            try
            {
                Logger.Write(Environment.NewLine +
                             "--- PREPARE GUI ---");

                // GET WORKING SIM
                mySIM = (NXOpen.CAE.SimPart)theSession.Parts.BaseWork;

                Logger.Write("Working SIM :  " + mySIM.Name);

                // GET ALL SOLUTION OBJECTS
                mySolutions = mySIM.Simulation.Solutions.ToArray().ToList();

                Logger.Write("# Solutions =  " + mySolutions.Count.ToString());
                foreach (NXOpen.CAE.SimSolution solution in mySolutions)
                {
                    Logger.Write("   " + solution.Name);
                }

                // ADD SOLUTION OBJECTS TO GUI LISTBOX
                LB_Solutions.SetListItems(mySolutions.Select(x => x.Name).ToArray());

                Logger.Write("Added solutions to GUI");
            }
            catch (Exception ex)
            {
                //---- Enter your exception handling code here -----
                theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString());
            }
        }
        // METHODS
        // -------

        /// <summary>
        /// Generates target CPP Result Probe in each Solution, which does not have this Result Probe yet
        /// </summary>
        /// <param name="solutions"></param>
        public void GenerateCPPResultProbes(List <NXOpen.CAE.SimSolution> solutions, NXOpen.CAE.SimPart mySIM)
        {
            Logger.Write(Environment.NewLine +
                         "--- GENERATE CPP RESULT PROBES ---");

            foreach (NXOpen.CAE.SimSolution solution in solutions)
            {
                Logger.Write("   SOLUTION:  " + solution.Name.ToUpper());

                try
                {
                    // CHECK IF RESULT PROBE EXISTS ALREADY
                    NXOpen.CAE.ResultProbe[] existingResultProbes;
                    solution.GetAllResultProbes(out existingResultProbes);

                    if (existingResultProbes.Any(x => x.Name.Contains("True Bolt Shear")))
                    {
                        Logger.Write("      Already contains CPP Result Probe --> SKIPPED");
                        continue;
                    }

                    // MAKE SOLUTION ACTIVE
                    mySIM.Simulation.ActiveSolution = solution;
                    Logger.Write("      Made active solution");

                    // GENERATE CPP RESULT PROBE
                    // Initialize
                    NXOpen.CAE.ResultProbe        _resultProbe       = null;
                    NXOpen.CAE.ResultProbeBuilder resultProbeBuilder = solution.CreateResultProbeBuilder(_resultProbe);

                    // Name
                    resultProbeBuilder.ProbeName = "True Bolt Shear";
                    // Formula
                    resultProbeBuilder.Formula = "sqrt(bxy^2+bxz^2)";
                    // Iteration Definition
                    resultProbeBuilder.Loadcase               = NXOpen.CAE.ResultProbeBuilder.LoadcaseSelection.All;
                    resultProbeBuilder.IterationTypeOption    = NXOpen.CAE.ResultProbeBuilder.IterationType.All;
                    resultProbeBuilder.Iteration              = NXOpen.CAE.ResultProbeBuilder.IterationSelection.First;
                    resultProbeBuilder.CombineAcrossIteration = false;
                    // Selection and Averaging
                    resultProbeBuilder.ModelSelectionType = NXOpen.CAE.ResultProbeBuilder.SelectionType.EntireModel;
                    resultProbeBuilder.CombineAcross      = false;
                    // Output
                    resultProbeBuilder.ErrorHndl           = NXOpen.CAE.ResultProbeBuilder.ErrorHandling.Fillzero;
                    resultProbeBuilder.ResultType          = NXOpen.CAE.Result.Quantity.AppliedForce;
                    resultProbeBuilder.Unit                = (NXOpen.Unit)mySIM.UnitCollection.FindObject("Newton");
                    resultProbeBuilder.ResultReferenceType = NXOpen.CAE.SimResultReference.Type.Structural;

                    // Create target Result Probe
                    resultProbeBuilder.Commit();

                    // Clean up
                    resultProbeBuilder.Destroy();

                    Logger.Write("      CPP Result Probe generated!");
                }
                catch (Exception e)
                {
                    Logger.Write(Environment.NewLine +
                                 "!ERROR occurred: " + Environment.NewLine +
                                 e.ToString() + Environment.NewLine);
                }
            }
        }