| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > AutoCAD 2009. Управление разбиением таблицы из VBA

AutoCAD 2009. Управление разбиением таблицы из VBA

Ответ
Поиск в этой теме
Непрочитано 13.03.2009, 11:47 #1
AutoCAD 2009. Управление разбиением таблицы из VBA
Piroman
 
проектирование
 
Тула
Регистрация: 12.02.2009
Сообщений: 4

Есть таблица разбитая на части, причем задается размер первой части. Все последующие части по размеру равны первой и расположены на заданном смещении от начальной точки.

Задача такая:
Необходимо программно установить размер каждой части и ее местоположение.

Предположения:
1) Возможно, есть какие-то параметры в таблице, отвечающие за размер и положение КАЖДОЙ части. Есть ли такие параметры?
2) Можно переключить таблицу в ручной режим разбивки, и "ручками" управления указать размер и положение (как сейчас и делаю). Но как получить доступ к "ручкам" из VBA? (или LISP, но я его почти не знаю)

буду рад услышать Ваше мнение
Просмотров: 8047
 
Непрочитано 13.03.2009, 12:13
#2
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Мое мнение писать на лиспе, во-вторых рисовать простыми примитивами типа line и text.
Sleekka вне форума  
 
Автор темы   Непрочитано 13.03.2009, 12:30
#3
Piroman

проектирование
 
Регистрация: 12.02.2009
Тула
Сообщений: 4


Можно и так, но тогда придется многое повторять, что уже реализовано в таблицах (выравнивание текста, регулировка высоты ячеек при многострочном тексте, разбивка на страницы). Кроме того, будет сложно добавлять/удалять строки, и редактировать вручную полученную таблицу будет очень неудобно.

ЗЫ:Вообще планируется автоматизированное заполнение спецификации из txt-файла, с возможностью удобного редактирования вручную.
Piroman вне форума  
 
Непрочитано 13.03.2009, 12:39
#4
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Может, в Excel создавать таблицу? Там на VBA - никаких проблем с форматированием, все довольно просто. А потом вставлять в Автокад.
Может, конечно, и в акадовском VBA можно разобраться, но как-то сложнее там с программным редактированием таблиц.
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 13.03.2009, 12:55
#5
Piroman

проектирование
 
Регистрация: 12.02.2009
Тула
Сообщений: 4


Согласен, в Excel создавать таблицу проще. Но вот как потом ее разбить на листы, да так чтобы там помещались основные надписи (штампы)?
По идее, нужно делать колнтитулами, но сколько я ни пробовал - билиберда получается.

А есть ли вообще способы программного доступа к "ручкам" (для таблиц или дин. блоков)? А то в Object Browser (F2) чё-то их не нахожу. А из LISPа можно?

Последний раз редактировалось Piroman, 13.03.2009 в 13:08.
Piroman вне форума  
 
Непрочитано 13.03.2009, 13:25
#6
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Управлять динамическими параметрами вставленного блока - можно. В VBA, ну а в Лиспе тем более, наверное... Насчет "ручек" таблицы, - не знаю, как-то работа с таблицами в VBA мне кажется заморочной (хотя я не такой уж и знаток).
А насчет оформления листа в экселе.... Может, программно создать таблицу в екселе, сохранить файл, а затем вставить в чертеж dwg? Ну и штамп в автокаде выполнять. Т.е. алгоритм такой: макрос VBA ("из под автокада") читает данные чертежа, сортирует их как вам надо, затем запускает Excel (можно даже в фоновом режиме, с visible = false), создает новый файл, забивает в таблицу данные, форматирует таблицу, сохраняет файл под определенным именем, закрывает Excel. Затем в текущий документ dwg вставляет созданную таблицу...
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 13.03.2009, 14:00
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Piroman, а версию AutoCAD'a уточки. В 2008 такое поведение таблиц, по-моему, прописано на уровне ядра.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.03.2009, 16:40
#8
Piroman

проектирование
 
Регистрация: 12.02.2009
Тула
Сообщений: 4


Кулик Алексей aka kpblc:
Цитата:
В 2008 такое поведение таблиц, по-моему, прописано на уровне ядра.
Именно так! В 2009 таблицы такие же как и в 2008. Вручную задавать расположение и размер каждой части я могу (очень удобно).

Вопрос в том, как это сделать ПРОГРАММНЫМ образом?
Причем, не только первой части (тогда остальные части продолжения таблицы получаются того же размера что и первая). В моем случае, первая страница отличается от остальных (на первом листе большой штамп - короткая таблица, на остальных маленький штамп - длинная таблица)

AlexV:
Цитата:
Т.е. алгоритм такой: ...
В AutoCAD 2009 есть встроенная возможность связать свою таблицу с таблицей Ексель (правда я с этим особенно не разбирался), но даже связанная таблица, по идее, должна разбиваться на части.

По задумке, спецификация делается в txt-файле отдельной программой, а из этого файла экспортируется программой на VBA (возможно+Lisp) в таблицу AutoCAD-a (стить таблицы сделан вручную, и скорее всего, будет в шаблоне). В таком случае, все передачи данных то в Ексель, то обратно - переливание из пустого в порожнее, и ИМХО будет лишним (да и в Екселе я слабоват)
Piroman вне форума  
 
Непрочитано 13.03.2009, 16:48
#9
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Ну, "хозяин - барин!" Просто, можно лепить спецификацию не в txt, а в экселевском файле. Эх, была б возможность в Акаде записи VBA макросов, как в офис-приложениях... Записал макрос, и сразу понятно, где какая собака порылась, можно применять код в своих программах.
В А2009 появилось что-то типа этого, но - не VBA, а какой-то видимо свой формат..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 13.03.2009, 19:54
#10
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Через VBA можно управлять некоторыми свойствами разрывов таблицы:
Код:
[Выделить все]
  'Определение использования разрываов таблицы
  AcadTable.BreaksEnabled = True
  'Направление расположения выравнивания таблиц
  AcadTable.TableBreakFlowDirection = AcTableFlowDirection.acTableFlowRight
  'Повторение верхних заголовков
  AcadTable.RepeatTopLabels = True
  'Повторение нижних заголовков
  AcadTable.RepeatBottomLabels = True
  'Задание положения отдельных таблиц вручную
  AcadTable.AllowManualPositions = True
  'Задание высоты для отдельных таблиц вручную
  AcadTable.AllowManualHeights = True
  'Высота разбиения таблицы
  AcadTable.TableBreakHeight = 200
  'Интервал между таблицами
  AcadTable.BreakSpacing = 25
В справке не описаны, в отладчике есть.
Может еще какие свойства и методы есть, я не применял пока.

Как задавать высоты отдельным таблицам в общей разбиваемой таблице - не знаю. Возможно через ObjectARX

Последний раз редактировалось Baldares, 13.03.2009 в 20:05.
Baldares вне форума  
 
Непрочитано 13.03.2009, 22:18
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Ну вот только не надо, что "не описаны" - все есть (только что специально проверял в справке 2009-го). Высоты отдельных частей автоматически разбитых таблиц, по-моему, регулируются автоматически. Возможно немного "поиграться", меняя высоты строк перед и после разрыва, но не думаю, что овчинка будет стоить выделки.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.03.2009, 15:23
#12
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Я бы не разбивал таблицу, а создавал бы новые, куда переписывал содержимое старой, по частям. Процесс создания таблицы, да хоть в Layout не проблема. Штампы туда вставлять не надо, они там уже будут.
Создавать новые Layout тоже не проблема. Запустил прогу, ткнул в общую таблицу и тебе создалось куча Layout со штампами и нумерацией листов.
Supermax вне форума  
 
Непрочитано 27.12.2010, 10:13
#13
kinklim


 
Регистрация: 21.09.2010
Сообщений: 12


здравстуйте, а не подскажете как при разбиении таблицы связанной с екселем чтобы заголовок таблицы переносился на другую часть таблицы оторванную от основной
я не знаю(((
kinklim вне форума  
 
Непрочитано 24.09.2019, 16:41
#14
Golovin-A


 
Регистрация: 05.08.2015
Сообщений: 1


Из справки:
object.SetBreakHeight nIndex, pHeight

Object - Table. The object this method applies to.

nIndex - Long; Input-only. The index of the table.

height - Double; Input-only. The new height value.
Golovin-A вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > AutoCAD 2009. Управление разбиением таблицы из VBA

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ObjectARX. Расчленение и удаление proxy-объектов Profan Готовые программы 288 19.04.2023 16:05
Таблицы из Excel в AutoCAD вставляются неполностью Nikolay_N AutoCAD 23 07.09.2019 21:12
Импорт настроек AutoCad 2009 sashkalee AutoCAD 6 05.10.2009 15:09
AutoCAD Architecture 2009 стоит ли.. mey Вертикальные решения на базе AutoCAD 25 19.04.2009 19:20
как с помощью vba начертить линию vasyavip Программирование 77 09.10.2008 23:17