Последние сообщения

Последние сообщения

Страницы: [1] 2 3 ... 10
1
Civil 3D API / Re: Где найти AeccuDbColParameter?
« Последний ответ от Алексей Терно 21-02-2019, 01:41:01 »
Этот вопрос был решен другим способом.
Тема закрыта.
Всем спасибо!
2
VBA / Re: Обработчик события уровня приложения.
« Последний ответ от DMA 21-02-2019, 00:55:40 »
Событие AcadDocument.LayoutSwitched
Спасибо!
3
Событие AcadDocument.LayoutSwitched
Из документации пример:
Код - Visual Basic [Выбрать]
  1. Private Sub AcadDocument_LayoutSwitched(ByVal LayoutName As String)
  2.     ' This example intercepts a drawing LayoutSwitched event.
  3.    '
  4.    ' This event is triggered when the user switches to a different
  5.    ' drawing layout view.
  6.    '
  7.    ' To trigger this example event: Open a drawing and change its layout view
  8.    '
  9.    ' For example: Switch the drawing from Model view to Layout1 view
  10.  
  11.     ' Use the "LayoutName" variable to determine the which layout view we changed to
  12.    MsgBox "The drawing layout was just changed to: " & LayoutName
  13. End Sub
4
VBA / Обработчик события уровня приложения.
« Последний ответ от DMA 21-02-2019, 00:45:15 »
Подскажите, пожалуйста, есть ли обработчик события "переход на лист с именем"?
Нужно решить задачу компоновки разными наборами кнопок на панели для разных листов.
5
AutoCAD .NET API / Re: Как изменить стиль ячеек таблицы?
« Последний ответ от GrandmaSquid3 20-02-2019, 14:10:52 »
Спасибо, все работает!

Итог:
1) В своем коде я ошибся с границами цикла заполнения ячеек.
2) Необходимо задать table.TableStyle = db.Tablestyle , а то никаких изменений стилей не произойдет.
3) Так же добавил table.UnmergeCells(cell) в цикл, а то почему то три колонки объединялись (возможно потому что работаю не в ACAD).
6
Тогда так:
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.ApplicationServices;
  2. using Autodesk.AutoCAD.DatabaseServices;
  3. using Autodesk.AutoCAD.Geometry;
  4. using Autodesk.AutoCAD.Runtime;
  5. using System.Globalization;
  6. using System.Linq;
  7.  
  8. namespace AcadTest
  9. {
  10.     public class TestCellStyle
  11.     {
  12.         [CommandMethod("TestCellStyle")]
  13.         public void RunCommand()
  14.         {
  15.             int rowsNum = 5;
  16.             int columnsNum = 2;
  17.  
  18.             double rowHeight = 30;
  19.             double columnWidth = 200;
  20.  
  21.             long handle = -1;
  22.  
  23.             Document adoc = Application.DocumentManager.MdiActiveDocument;
  24.             Database db = adoc.Database;
  25.  
  26.             using (Transaction tr = db.TransactionManager.StartTransaction())
  27.             {
  28.                 Table table = new Table();
  29.                 table.SetDatabaseDefaults(); // !
  30.                 table.TableStyle = db.Tablestyle; // !
  31.  
  32.                 TableStyle tableStyle
  33.                     = db.Tablestyle.GetObject(OpenMode.ForRead) as TableStyle;
  34.  
  35.                 string[] cellStyles = tableStyle
  36.                     .CellStyles
  37.                     .Cast<string>()
  38.                     .ToArray();
  39.  
  40.                 string cellStyle = cellStyles
  41.                     .FirstOrDefault(item => item.ToLower
  42.                     (CultureInfo.InvariantCulture).Contains("data"));
  43.  
  44.                 table.InsertRows(0, rowHeight, rowsNum);
  45.                 table.InsertColumns(0, columnWidth, columnsNum);
  46.  
  47.                 for (int i = 0; i < table.Rows.Count; i++)
  48.                 {
  49.                     for (int j = 0; j < table.Columns.Count; j++)
  50.                     {
  51.                         Cell cell = table.Cells[i, j];
  52.                         cell.TextString = $"{i} : {j}";
  53.                         // cell.Alignment = CellAlignment.BottomRight;   // Бесполезное действие т.к. ниже изменяется стиль                  
  54.                     }
  55.                     if (!string.IsNullOrEmpty(cellStyle))
  56.                         table.Rows[i].Style = cellStyle;
  57.                 }
  58.  
  59.                 table.SetRowHeight(rowHeight);
  60.                 table.SetColumnWidth(columnWidth);
  61.                 table.Position = new Point3d(100, 100, 0);
  62.  
  63.                 BlockTableRecord modelSpace
  64.                     = db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord;
  65.                 modelSpace.AppendEntity(table);
  66.                 tr.AddNewlyCreatedDBObject(table, true);
  67.                 handle = table.Handle.Value;
  68.                 tr.Commit();
  69.             }
  70.         }
  71.     }
  72. }
  73.  
7
Вот так это работает:

Стоит обратить внимание, что строчка присвоения имени стилей может быть потенциально слабым местом программы.
Код - C# [Выбрать]
  1. table.Rows[i].Style = "_DATA"; // "_HEADER" or "_TITLE"

натыкался на другие названия стилей в примерах
Код - C# [Выбрать]
  1. tb.Rows[a].Style = "Title"; //"Header" or "Data"
http://adn-cis.org/forum/index.php?topic=32

Также в табличном стиле могут быть созданы стили ячеек со своими названиями и применены к таблице.
Предполагаю, что не стоит надеяться на имена стилей  "_DATA" "_HEADER" "_TITLE" в старых, сторонних чертежах и созданных клонами AutoCAD.
8
Вот так это работает:
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.ApplicationServices;
  2. using Autodesk.AutoCAD.DatabaseServices;
  3. using Autodesk.AutoCAD.Geometry;
  4. using Autodesk.AutoCAD.Runtime;
  5.  
  6. namespace AcadTest
  7. {
  8.     public class TestCellStyle
  9.     {
  10.         [CommandMethod("TestCellStyle")]
  11.         public void RunCommand()
  12.         {
  13.             int rowsNum = 5;
  14.             int columnsNum = 2;
  15.  
  16.             double rowHeight = 30;
  17.             double columnWidth = 200;
  18.  
  19.             long handle = -1;
  20.  
  21.             Document adoc = Application.DocumentManager.MdiActiveDocument;
  22.             Database db = adoc.Database;
  23.  
  24.             using (Transaction tr = db.TransactionManager.StartTransaction())
  25.             {
  26.                 Table table = new Table();
  27.                 table.SetDatabaseDefaults(); // !
  28.                 table.TableStyle = db.Tablestyle; // !
  29.  
  30.                 table.InsertRows(0, rowHeight, rowsNum);
  31.                 table.InsertColumns(0, columnWidth, columnsNum);
  32.  
  33.                 for (int i = 0; i < table.Rows.Count; i++)
  34.                 {
  35.                     for (int j = 0; j < table.Columns.Count; j++)
  36.                     {
  37.                         Cell cell = table.Cells[i, j];
  38.                         cell.TextString = $"{i} : {j}";
  39.                         cell.Alignment = CellAlignment.BottomRight;                        
  40.                     }
  41.                     table.Rows[i].Style = "_DATA"; // "_HEADER" or "_TITLE"
  42.                 }
  43.  
  44.                 table.SetRowHeight(rowHeight);
  45.                 table.SetColumnWidth(columnWidth);
  46.                 table.Position = new Point3d(100, 100, 0);
  47.  
  48.                 BlockTableRecord modelSpace
  49.                     = db.CurrentSpaceId.GetObject(OpenMode.ForWrite) as BlockTableRecord;
  50.                 modelSpace.AppendEntity(table);
  51.                 tr.AddNewlyCreatedDBObject(table, true);
  52.                 handle = table.Handle.Value;
  53.                 tr.Commit();
  54.             }
  55.         }
  56.     }
  57. }
  58.  
9
Дело в том, что я сейчас работаю не в AutoCAD, а в его реплике GstarCAD.
На нашем форуме не обсуждается работа с клонами AutoCAD!
10
AutoCAD .NET API / Re: Как изменить стиль ячеек таблицы?
« Последний ответ от GrandmaSquid3 20-02-2019, 11:58:45 »
Присваивай строкам, а не ячейкам

Присвоение стиля строке (t.Rows.Style = "Data") вызывает исключение. Можете запустить мой код у себя? Дело в том, что я сейчас работаю не в AutoCAD, а в его реплике GstarCAD. Хотелось бы знать где ошибка, в моем коде или их API.

Код - C# [Выбрать]
  1.                                 for (int i = 0; i <= rowsNum + 1; i++)
  2.                                 {
  3.                                     t.Rows[i].Style = "Data"; // Ошибка!
  4.                                     for (int j = 0; j <= columnsNum; j++)
  5.                                     {
  6.                                         t.SetTextString(i, j, i + ":" + j);
  7.                                         t.SetAlignment(i, j, CellAlignment.BottomRight);
  8.                                         //t.SetCellStyle(i, j, "Data");
  9.                                     }
  10.                                 }

Страницы: [1] 2 3 ... 10