/// <summary> /// Вставка элемента спецификации в строку таблицы AutoCAD с выбором таблицы и указанием строки /// </summary> /// <param name="specificationItemForTable">Экземпляр вспомогательного элемента для заполнения строительной спецификации</param> public static void AddSpecificationItemToTableRow(SpecificationItemForTable specificationItemForTable) { var doc = AcApp.DocumentManager.MdiActiveDocument; var db = doc.Database; var ed = doc.Editor; using (doc.LockDocument()) { var options = new PromptEntityOptions($"\n{Language.GetItem(LangItem, "msg11")}"); options.SetRejectMessage($"\n{Language.GetItem(LangItem, "msg13")}"); options.AddAllowedClass(typeof(Table), false); var entity = ed.GetEntity(options); if (entity.Status == PromptStatus.OK) { using (var tr = db.TransactionManager.StartTransaction()) { var table = (Table)tr.GetObject(entity.ObjectId, OpenMode.ForWrite); var selectedRow = 2; var ppo = new PromptPointOptions($"\n{Language.GetItem(LangItem, "msg12")}"); var end = false; var vector = new Vector3d(0.0, 0.0, 1.0); while (end == false) { var ppr = ed.GetPoint(ppo); if (ppr.Status != PromptStatus.OK) { return; } try { var tableHitTestInfo = table.HitTest(ppr.Value.TransformBy(ed.CurrentUserCoordinateSystem), vector); if (tableHitTestInfo.Type == TableHitTestType.Cell) { selectedRow = tableHitTestInfo.Row; end = true; } } catch { MessageBox.Show(Language.GetItem(LangItem, "msg14")); } } TableHelpers.AddSpecificationItemToTableRow(table, selectedRow, specificationItemForTable); tr.Commit(); } } } }
/// <summary> /// Вставка элемента спецификации в указанную строку выбранной таблицы AutoCAD /// </summary> /// <param name="specificationItemForTable">Экземпляр вспомогательного элемента для заполнения строительной спецификации</param> /// <param name="table">Таблица AutoCAD</param> /// <param name="rowNumber">Номер строки для вставки элемента спецификации</param> /// <remarks>Метод нужно вызывать внутри открытой транзакции и открытой на запись таблицы</remarks> public static void AddSpecificationItemToTableRow( SpecificationItemForTable specificationItemForTable, Table table, int rowNumber) { TableHelpers.AddSpecificationItemToTableRow(table, rowNumber, specificationItemForTable); }