示例#1
0
        // Нажатие кнопки закрытия чертежа
        private void BtCloseDwg_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (Drawings.SelectedIndex != -1)
                {
                    var lbi = (ListBoxItem)Drawings.SelectedItem;
                    foreach (var doc in _docs.Cast <Document>().Where(doc => doc.Name == lbi.ToolTip.ToString()))
                    {
                        if (_docs.MdiActiveDocument == doc)
                        {
                            Application.DocumentManager.
                            MdiActiveDocument.SendStringToExecute("_CLOSE ", true, false, false);
                            if (Drawings.Items.Count == 1)
                            {
                                OnMouseLeaving();
                            }
                        }

                        break;
                    }
                }
            }
            catch
            {
                // ignored
            }
        }
        /// <summary>
        /// Чтение именованных настроек печати из указанного файла
        /// </summary>
        /// <param name="templatePath">Путь к файлу с именованными настройками печати</param>
        /// <returns>Коллекция PlotSettingsInfo</returns>
        public static IEnumerable <PlotSettingsInfo> CreatePlotSettingsInfos(string templatePath)
        {
            Database db = null;
            bool     isTemplateOpened = false;

            DocumentCollection docMan = Application.DocumentManager;
            Document           doc    = docMan.Cast <Document>().FirstOrDefault(d => d.Name.Equals(templatePath, StringComparison.InvariantCulture));

            if (doc != null)
            {
                db = doc.Database;
                isTemplateOpened = true;
            }
            else
            {
                db = new Database(false, true);
                db.ReadDwgFile(templatePath, System.IO.FileShare.Read, true, null);
            }

            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                DBDictionary psDict = tr.GetObject(db.PlotSettingsDictionaryId, OpenMode.ForRead) as DBDictionary;
                if (psDict != null)
                {
                    foreach (DBDictionaryEntry entry in psDict)
                    {
                        ObjectId     psId = entry.Value;
                        PlotSettings ps   = tr.GetObject(psId, OpenMode.ForRead) as PlotSettings;
                        // Настройки печати для модели и настройки листов самих по себе
                        // нам не нужны
                        // только именованные настройки печати для листов
                        if (!ps.ModelType && !ps.PlotSettingsName.Contains("*"))
                        {
                            PlotSettings newPS = new PlotSettings(false);
                            newPS.CopyFrom(ps);
                            yield return(new PlotSettingsInfo(newPS));
                        }
                    }
                }
                tr.Commit();
            }
            if (!isTemplateOpened)
            {
                db.Dispose();
            }
        }