示例#1
0
        /// <summary>
        /// Execute a calculation using the specified optional input variables and return only
        /// the output variables XML. Omitting the RTF output when it is not needed will improve performance.
        /// </summary>
        /// <returns>Returns all the calculated variables in the Tedds variables XML file format.</returns>
        public void CalculateNoOutputRtf(string userName, string password, ref CalculationData data)
        {
            //Create calculator instance and initialize with input
            Calculator calculator = new Calculator();

            User32Native.SetForegroundWindow((IntPtr)calculator.WindowHandle);

            //If on-line license login is required then login
            if (!(string.IsNullOrEmpty(userName) && string.IsNullOrEmpty(password)))
            {
                calculator.Login(userName, password);
            }

            try
            {
                ConnectEvents(ref calculator, data);

                DisableUI();

                calculator.Initialize(null, data.InputVariablesXml);

                //Apply additional settings/variables
                calculator.Functions.SetVar("_CalcUI", data.ShowUserInterface ? 1 : 0);

                //Calculate calculation
                calculator.Functions.Eval($"EvalCalcItem( \"{data.CalcFileName}\", \"{data.CalcItemName}\" )");

                //Get output variables
                data.OutputVariablesXml = calculator.GetVariables();
            }
            finally
            {
                EnableUI();
            }
        }
示例#2
0
        /// <summary>
        /// Execute a calculation using the specified optional input variables and return both
        /// the output variables XML and the output document RTF.
        /// </summary>
        /// <param name="userName">If a Tekla on-line license is being used then this is the login user name for the Trimble Identity account to use.</param>
        /// <param name="password">If a Tekla on-line license is being used then this is the login password for the Trimble Identity account to use.</param>
        /// <param name="data">Calculation data.</param>
        public void CalculateOutputRtf(string userName, string password, ref CalculationData data)
        {
            //Initialize output
            data.OutputVariablesXml = data.OutputRtf = data.OutputPdf = null;

            if (!data.ShowUserInterface)
            {
                //Create first calculator instance which is only required for retrieving input variables
                Calculator calculator = new Calculator();
                User32Native.SetForegroundWindow((IntPtr)calculator.WindowHandle);

                //If on-line license login is required then login
                if (!(string.IsNullOrEmpty(userName) && string.IsNullOrEmpty(password)))
                {
                    calculator.Login(userName, password);
                }

                //Apply additional settings/variables to existing input
                calculator.Initialize(null, data.InputVariablesXml);
                calculator.Functions.SetVar("_CalcUI", 0);
                data.InputVariablesXml = calculator.GetVariables();
            }

            //Initialize second calculator but this time with input variables
            Calculator calculator2 = new Calculator();

            User32Native.SetForegroundWindow((IntPtr)calculator2.WindowHandle);

            //If on-line license login is required then login
            if (!(string.IsNullOrEmpty(userName) && string.IsNullOrEmpty(password)))
            {
                calculator2.Login(userName, password);
            }

            ConnectEvents(ref calculator2, data);

            try
            {
                DisableUI();
                calculator2.InitializeCalc(data.CalcFileName, data.CalcItemName, data.InputVariablesXml);

                if (calculator2.Status == CalcStatus.Ok ||
                    calculator2.Status == CalcStatus.Interrupted)
                {
                    //Retrieve output
                    data.OutputRtf          = calculator2.GetOutput(OutputFormat.Rtf);
                    data.OutputVariablesXml = calculator2.GetVariables();
                    data.OutputPdf          = calculator2.GetOutput(OutputFormat.Pdf);
                }
            }
            finally
            {
                EnableUI();
            }
        }