public static void AutoGenrate(ISmartSession session, string beginSubproduct, CustomVarSetterHandler customVarSetter)
        {
            ICommand cmd = session.CommandEnvironment.Get(9006);

            if (cmd != null)
            {
                cmd.Execute();
            }
            try
            {
                //处理过程中不允许关系系统
                session.CloseActionLocker.Lock("监测产品快速生成操作");
                //
                AutoGeneratorSettings settings = GetAutoGeneratorSettings();
                if (settings == null)
                {
                    return;
                }
                AutoGeneratorSettings.CurrentSettings = settings;
                AutoGeneratorSettings.CurrentSettings.GeneratedFileNames = new List <string>();
                AutoGeneratorSettings.CurrentSettings.GxdFileNames       = new List <string>();
                AutoGeneratorSettings.CurrentSettings.Session            = session;
                //
                DoAutoGenerate(session, beginSubproduct, customVarSetter);
            }
            finally
            {
                if (AutoGeneratorSettings.CurrentSettings != null)
                {
                    AutoGeneratorSettings.CurrentSettings.CopyFileToCopyFolder();
                    AutoGeneratorSettings.CurrentSettings.ExportImageOfGxdFiles();
                }
                AutoGeneratorSettings.CurrentSettings = null;
                //
                session.CloseActionLocker.Unlock();
            }
        }
        private static void DoAutoGenerate(ISmartSession session, string beginSubproduct, CustomVarSetterHandler customVarSetter)
        {
            IContextMessage       msg = session.SmartWindowManager.SmartToolWindowFactory.GetSmartToolWindow(9006) as IContextMessage;
            IAutoGenerateExecutor exe = new AutoGenerateExecutor(new AutoGenerateResultHandler(session),
                                                                 (session.MonitoringSession as IMonitoringSession).ActiveMonitoringProduct,
                                                                 new ThemeGraphGenerator(session), new FileNameGeneratorDefault());

            TrySetContextEnvironment(session, beginSubproduct, exe.ContextEnvironment, customVarSetter);
            DisplayResultClass._contextEnvironment = exe.ContextEnvironment;
            try
            {
                try
                {
                    session.ProgressMonitorManager.DefaultProgressMonitor.Reset(string.Empty, 100);
                    session.ProgressMonitorManager.DefaultProgressMonitor.Start(false);
                    if (string.IsNullOrEmpty(beginSubproduct))
                    {
                        exe.Execute(msg, null, (p, txt) =>
                        {
                            session.ProgressMonitorManager.DefaultProgressMonitor.Boost(p, txt);
                        });
                    }
                    else
                    {
                        exe.Execute(beginSubproduct, msg, null, (p, txt) =>
                        {
                            session.ProgressMonitorManager.DefaultProgressMonitor.Boost(p, txt);
                        });
                    }
                }
                finally
                {
                    session.ProgressMonitorManager.DefaultProgressMonitor.Finish();
                }
            }
            finally
            {
                DisplayResultClass._contextEnvironment = null;
            }
        }
        private static void TrySetContextEnvironment(ISmartSession session, string beginSubprod, IContextEnvironment contextEnv, CustomVarSetterHandler customVarSetter)
        {
            contextEnv.PutContextVar(ContextEnvironment.ENV_VAR_NAME_CURRENT_RASTER_FILE, GetCurrentRasterFile(session));
            IWorkspace ws = (session.MonitoringSession as IMonitoringSession).Workspace;

            if (ws == null)
            {
                return;
            }
            ICatalog catalog = ws.ActiveCatalog;

            if (catalog == null)
            {
                return;
            }
            string[] fnames = catalog.GetSelectedFiles();
            if (fnames == null || fnames.Length == 0)
            {
                return;
            }
            RasterIdentify rst = new RasterIdentify(fnames[0]);

            if (string.IsNullOrEmpty(rst.SubProductIdentify))
            {
                contextEnv.PutContextVar(ContextEnvironment.ENV_VAR_NAME_BINARY_FILE, fnames[0]);
            }
            else
            {
                contextEnv.PutContextVar(rst.SubProductIdentify, fnames[0]);
            }
            //
            if (customVarSetter != null)
            {
                customVarSetter(fnames[0], beginSubprod, contextEnv);
            }
        }