| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Регистрация: 10.07.2020
Сообщений: 1
|
Возможно, я не совсем по теме данной ветки, но при работе с таблицей автокада есть следующая проблема.
Имеются связанные таблицы в автокаде и экселе. При обновлении связей в автокаде в таблице некоторые ячейки меняют свой размер (в частности высоту ячейки) из-за того что текст ячейки не помешается при данном коэффициенте сжатия текста. Возможно ли сделать так, чтобы при выборе "проблемной" ячейки и нажатии написанного лиспа или макроса, коэффициент сжатия текста подбирался бы таким образом, чтобы он автоматически помещался в ячейку автокада заданной ширины и высоты. Сначала, конечно, нужно разблокировать ячейку...Если у кого есть какие мысли, буду признателен, если подскажите. Спасибо! |
|||
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451
|
Всем привет!
Напомните, плиз, метод, позволяющий установить в ячейке таблицы отступ текста по вертикали и горизонтали. Не тип выравнивания SetCellAlignment, а именно сдвижку текста по ячейке. Собственно, борюсь со сдвижкой текста по вертикали, если в нем попадается прописная "р" (с хвостиком ниже базовой линии).
__________________
Счастливо, Алексей! Последний раз редактировалось ===AAA===, 26.10.2022 в 14:40. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
Кажется, что-то связанное с Margin. Поищи в справке по ActiveX
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 103
|
Можно ли установить выравнивание ячеек во всей таблице? Т.е. без указание конкретного "адреса" ячейки методом vla-SetCellAlignment
UPD: после обновления данных Excel часто слетает выравнивание в таблице (сохранять форматирование excel - не всегда хорошо с точки зрения времени обновления) Хочу к определенным колонкам таблицы применить требуемое выравнивание. Если перебирать ВСЕ ячейки и применять к ним выравнивание, процесс может занять определенное время Т.е. допустим - после обновления связи с данными выравнивание становится рандомным - делаю выравнивание ВСЕХ ячеек таблицы по центру - а далее последовательное производим выравнивание ячеек определенного столбца таблицы "влево по центру" vla-SetCellAlignment (путем перебирания всех строк таблицы) Последний раз редактировалось Sege, 24.03.2023 в 12:41. |
|||
|
||||
Регистрация: 07.12.2010
Уфа
Сообщений: 425
|
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
vla-put-tablesuppressed, кажется.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 07.12.2010
Уфа
Сообщений: 425
|
Не lisp конечно, но vba (хоть что-то)
Sub Sort_table_SKS() Dim sSetObj As AcadSelectionSet If ThisDrawing.SelectionSets.Count > 0 Then 'Удаляем все наборы таблиц For i = 0 To ThisDrawing.SelectionSets.Count - 1 If ThisDrawing.SelectionSets.Item(i).Name = "SSET" Then ThisDrawing.SelectionSets("SSET").Delete End If Next End If Set sSetObj = ThisDrawing.SelectionSets.Add("SSET") 'Создаем новый набор таблиц Dim mode As Integer Dim gpCode(0) As Integer Dim dataValue(0) As Variant Dim groupCode As Variant, dataCode As Variant Dim oTab As AcadTable Dim MyTable As AcadTable Dim Proverka As String Dim j As Integer Dim KCells As Integer Dim k As Integer Dim S2 As String mode = acSelectionSetAll gpCode(0) = 0 dataValue(0) = "Acad_Table" groupCode = gpCode dataCode = dataValue sSetObj.Select mode, , , groupCode, dataCode For Each oTab In sSetObj 'Перебираем все таблицы в Модели Set MyTable = oTab MyTable.RegenerateTableSuppressed = True 'Отключаем регенерацию таблиц для увеличения скорости работы With MyTable 'Форматируем таблицу (начало) .SetColumnWidth 0, 20 .SetColumnWidth 1, 80 .SetColumnWidth 2, 57 .SetColumnWidth 3, 28 .HorzCellMargin = 2 End With For i = 0 To MyTable.Rows - 1 With MyTable .SetCellTextHeight i, 0, 2.5 .SetCellAlignment i, 0, acMiddleCenter .SetCellTextHeight i, 1, 2.5 .SetCellAlignment i, 1, acMiddleCenter .SetCellTextHeight i, 2, 2.5 .SetCellAlignment i, 2, acMiddleCenter .SetCellTextHeight i, 3, 2.5 .SetCellAlignment i, 3, acMiddleCenter End With 'Форматируем таблицу (конец) Next i MyTable.RegenerateTableSuppressed = False Включаем регенерацию таблицы MyTable.RecomputeTableBlock (True) 'Регенерируем таблицу 'Вкл. и выкл. Регенерации необходим, чтобы применились свойства таблицы, такие как высота, чтобы подшлифовать высоту строк чуть ниже. 'Если не регенерировать таблицы, то вот это вот If .GetRowHeight(i) > 10.1 Then работать не будет. MyTable.RegenerateTableSuppressed = True 'Отключаем регенерацию таблиц для увеличения скорости работы For i = 0 To MyTable.Rows - 1 With MyTable If .GetRowHeight(i) > 10.1 Then 'Чтобы было красиво увеличиваем высоту строки до целого числа k = Round(.GetRowHeight(i) + 2, 0) .SetRowHeight i, k Else .SetRowHeight i, 8 End If End With Next i With MyTable .SetRowHeight 0, 10 .SetRowHeight 1, 10 .SetRowHeight 2, 10 End With MyTable.RegenerateTableSuppressed = False 'Включаем регенерацию таблиц MyTable.RecomputeTableBlock (True) 'Регенерируем таблицу Next oTab sSetObj.Delete 'Удаляем набор таблиц End Sub |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Вставка в таблицу поля, соотвествующего площади примитива | Profan | Готовые программы | 272 | 06.06.2021 23:12 |
Lisp. Как в лиспе извлечь размер дин блока. | Corvin | LISP | 6 | 14.09.2014 18:42 |
LISP. Как изменить размер окна Autocad | PDM | LISP | 10 | 26.03.2012 02:52 |
На что влияет высота и размер ячеек георешетки | Ded_M03ay | Прочее. Архитектура и строительство | 2 | 30.08.2011 17:56 |
Lisp, таблицы и символы типа "в квадрате", "в кубе", "градус" | Uduzr | LISP | 12 | 17.03.2010 16:40 |