Тема: Работа с таблицей через LISP
Как вставлять в существующую таблицу (таблица AutoCad) значения. Как выбирать ячейки? Подскажите пожалуйста.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → LISP → Работа с таблицей через LISP
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как вставлять в существующую таблицу (таблица AutoCad) значения. Как выбирать ячейки? Подскажите пожалуйста.
> Юрий
Я бы советовал открыть эту разделе AutoCAD.
Вопрос не совсем понятен. О каких таблицах идёт речь. Таблицы AutoCAD 2006 или?
Именно они, я так полагаю. На самом деле ничего страшного нет. См.в справке метод (AddTable), некоторые методы:
(vla-setcellgridlineweight table row_counter col_counter (+ acleftmask acrightmask) aclnwt050 ) ;_ end of vla-SetCellGridLineWeight
Это установка весов линий границ ячеек таблицы в 0,5 (слева и справа). Или вот,
(vla-mergecells table min_row max_row min_col max_col)
Объединение ячеек диапазона по строкам и столбцам. Аналогичным образом можно добираться и до текстовых значений в таблицах.
vla-gettext,vla-settext
Ряды и столбцы имеют нумерацию от 0.
Если значения в ячейке нет возвращаемое значение пустая строка то же самое происходит при попытке считать ячейку с несуществующим адресом.(при попытке записать значение в несуществующую ячейку конечно ошибка)
Поэтому при работе необходимо отслеживать количество рядов и столбцов , указанных в свойствах таблицы.
(vla-settext <таблица> 0 0 "proverka")
Уважаемый kpbIc (или кто-нибудь другой)!
Подскажите как в ячейку таблицы (элемент автокада "_-table") вставить блок (элемент автокада "_.block")??
Если это метод
SetBlockTableRecordId
(object.SetBlockTableRecordId(row, col, blkId, bAutoFit)), то что-то такое blkId? Где его взять? И что это за тип данных такой Long_PTR?
Или все-таки каким-то другим методом??
Использую AutoCAD Architecture 2008 (профиль AutoCAD).
(setq ent (vlax-ename->vla-object (car (entsel "\nВыбрать таблицу : "))) blkid (vlax-ename->vla-object (car (entsel "\nУказать блок : "))) ) ;_ end of setq (vla-setblocktablerecordid ent 3 2 (vla-get-objectid (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-name blkid)) ) ;_ end of vla-get-objectid :vlax-false ) ;_ end of vla-SetBlockTableRecordId
Примерно так...
О как все замудрЁнно! Но все получилось! Спасибо.
Command: _appload Копия копия1.lsp successfully loaded.
Command:
Выбрать таблицу : ; error: no function definition: VLAX-ENAME->VLA-OBJECT
т.е по таблице я щелкнула далее сбой ACAD 2010
vla-gettext,vla-settext пишет нет таких функций.
Кто прокомментирует?
Command: _appload Копия копия1.lsp successfully loaded.
Command:
Выбрать таблицу : ; error: no function definition: VLAX-ENAME->VLA-OBJECT
т.е по таблице я щелкнула далее сбой ACAD 2010
vla-gettext,vla-settext пишет нет таких функций.Кто прокомментирует?
Обычно не хватает такой строки в начале программы:
(vl-load-com)
которая подгружает библиотеки ActiveX
позволяющие работать с VLA-функциями
~'J'~
А можно ли программно редактировать атрибуты блока, вставленного в ячейку таблицы?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → LISP → Работа с таблицей через LISP
Форум работает на PunBB, при поддержке Informer Technologies, Inc