Здравствуйте,
подскажите пожалуйста по коду ниже, как выполнить следующую задачу: Для таблицы-NanoCAD задать всем ячейкам отступы=0, сжатие=1
Код (проба):
using System;
using System.Runtime.Serialization;
using Multicad;
using Multicad.DatabaseServices;
using Multicad.Symbols.Tables;
using Multicad.AplicationServices;
using Multicad.Runtime;
using Multicad.Geometry;
using Multicad.DatabaseServices.StandardObjects;
using Teigha.DatabaseServices;
using Teigha.Runtime;
using HostMgd.ApplicationServices;
using HostMgd.EditorInput;
using HostMgd.PlottingServices;
using OdaX;
using System.Collections.Generic;
using System.Data.Common;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Transactions;
using Teigha.Geometry;
using Teigha.GraphicsInterface;
using Teigha.LayerManager;
using static System.Net.Mime.MediaTypeNames;
namespace TableFormatter
{
public partial class TableFormatting
{
[Teigha.Runtime.CommandMethod(“TableFormatting”)]
public void FormatTableCells()
{
Document doc = HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
// Выбор таблицы
McObjectId tableId = McObjectManager.SelectObject("Выберите таблицу для форматирования");
if (tableId.IsNull)
{
//HostApplication.Services.MessageService.ShowMessage("Таблица не выбрана");
ed.WriteMessage("\nТаблица не выбрана");
return;
}
//McObject tableObj = McObjectManager.GetObject(tableId);
McTable tableObj = McObjectManager.GetObject(tableId);
McTable table = tableObj as McTable;
//if (table == null)
//{
// HostApplication.Services.MessageService.ShowMessage("Выбранный объект не является таблицей");
// return;
//}
// Форматирование всех ячеек таблицы
FormatAllTableCells(table);
//HostApplication.Services.MessageService.ShowMessage(
// $"Таблица отформатирована!\nСтрок: {table.Rows.Count}\nСтолбцов: {table.Columns.Count}");
}
private static void FormatAllTableCells(McTable table)
{
//using (McUndoPoint undo = new McUndoPoint())
//{
//undo.Start();
// Цикл по всем строкам и столбцам
for (int row = 0; row < table.Rows.Count; row++)
{
for (int col = 0; col < table.Columns.Count; col++)
{
FormatTableCell(table, row, col);
}
}
//table.Update();
//undo.Commit();
//}
}
private void FormatTableCell(McTable table, int row, int col)
{
Document doc = HostMgd.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
try
{
// Получаем ячейку
McTableCell cell = table[row, col]; //ошибка?
if (cell == null) return;
// Получаем формат ячейки
McTableCellFormat format = cell.Format; //ошибка?
if (format == null) return;
// Устанавливаем параметры форматирования
format.HorzCellMargin = 0; // Горизонтальный отступ = 0
format.VertCellMargin = 0; // Вертикальный отступ = 0
format.ObliqueAngle = 0; // Наклон = 0
format.HorzFit = 1; // Сжатие по горизонтали = 1
// Дополнительные настройки для лучшего отображения
format.VertFit = 1; // Сжатие по вертикали = 1
format.TextWrap = false; // Без переноса текста
//format.TextStyle = "Standard"; // Стандартный стиль текста
// Обновляем ячейку
cell.Format = format;
}
catch (Teigha.BoundaryRepresentation.Exception ex)
{
//HostApplication.Services.MessageService.ShowMessage(
// $"Ошибка форматирования ячейки [{row},{col}]: {ex.Message}");
ed.WriteMessage("\nError: " + ex.Message);
}
}
}
}



