/// <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(); } }
/// <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(); } }