public void Execute(Autodesk.Revit.UI.UIApplication app)
        {
            Log.WriteLog("转换开始");

            int        resultCode = 0;
            string     errorDesc  = string.Empty;
            UIDocument uiDoc      = null;

            try
            {
                if (_dialogMonitor == null)
                {
                    _dialogMonitor = new DialogBoxMonitor(app);
                }
                _dialogMonitor.Start();

                if (Settings == null)
                {
                    resultCode = -1;
                    errorDesc  = "Settings为空";
                    return;
                }

                uiDoc = app.OpenAndActivateDocument(Settings.InputFilePath);
                if (uiDoc == null)
                {
                    resultCode = -2;
                    errorDesc  = "打开文件失败,UIDocument为空";
                    return;
                }
                Log.WriteLog("打开模型成功");

                Document activeDoc = uiDoc.Document;
                if (activeDoc == null)
                {
                    resultCode = -3;
                    errorDesc  = "打开文件失败,Document为空";
                    return;
                }

                if (!ViewHelper.SetFirst3DView(uiDoc))
                {
                    resultCode = -4;
                    errorDesc  = "打开3D视图失败";
                    return;
                }
                Log.WriteLog("切换试图成功,当前视图 : " + uiDoc.ActiveView.Name);

                DocumentExporter           modelExporter = new Exporter.DocumentExporter(app.Application);
                DocumentExporter.ErrorType error         = modelExporter.ExportDocumentWithAcvtiveView(activeDoc);
                if (error != DocumentExporter.ErrorType.Success)
                {
                    resultCode = -5;
                    if (error == DocumentExporter.ErrorType.NoElement)
                    {
                        errorDesc = "当前视图无几何信息";
                        string errorFilePath = Path.Combine(Settings.OutputFolder, "error.js");
                        File.WriteAllText(errorFilePath, "{\"ErrorType\":\"-7\"}");
                    }
                    else if (error == DocumentExporter.ErrorType.UnSupportedGeometry)
                    {
                        errorDesc = "写WebGl文件失败";
                        string errorFilePath = Path.Combine(Settings.OutputFolder, "error.js");
                        File.WriteAllText(errorFilePath, "{\"ErrorType\":\"-8\"}");
                    }
                    else
                    {
                        errorDesc = "其他";
                    }

                    return;
                }
            }
            catch (Exception ex)
            {
                resultCode = -6;
                errorDesc  = ex.GetType().ToString() + "," + ex.Message + "\r\n" + ex.StackTrace;

                Log.WriteLog("转换异常 : " + errorDesc);
            }
            finally
            {
                Log.WriteLog("转换结束 : " + resultCode.ToString());

                if (!WriteResultFile(resultCode.ToString() + "\r\n" + errorDesc))
                {
                    Log.WriteLog("写result.res失败");
                }

                if (uiDoc != null)
                {
                    uiDoc.SaveAndClose();
                }

                _dialogMonitor.Pause();
                Settings = null;

                Log.WriteLog("------------------------------------------------------------------------------------");
            }
        }