Выбор содержимого ячейки таблицы

Автор Тема: Выбор содержимого ячейки таблицы  (Прочитано 18736 раз)

0 Пользователей и 7 Гостей просматривают эту тему.

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Столкнулся с такой проблемой. При запуске короткого лиспа в AC-2007 всё работает нормально, содержимое указываемой ячейки получается. При запуске этого же кода в AC-2021 ячейка не читается, выдается сообщение:  ** Error: неверный тип аргумента: lentityp nil **
В чем проблема, не пойму. Что интересно, если в AC-2021 (2020) указать не середину ячейки, а сторону ячейки, иногда значение получается.
Прикладываю два чертежа в разных версиях автокада.


Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор содержимого ячейки таблицы
« Ответ #1 : 14-04-2022, 15:17:51 »
В чем проблема, не пойму.
Тут не нужно ничего понимать - тут нужно просто отладить программу и найти откуда появляется ошибка.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Выбор содержимого ячейки таблицы
« Ответ #2 : 14-04-2022, 17:12:38 »
Вообщем придумал вот это:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun c:11 (/)
  2.  (vl-load-com)
  3.  (setq p_1 (getpoint "\nКлик по числу в таблице >"))
  4.  (setq p_2 (list (- (car p_1) 50) (- (cadr p_1) 20)))
  5.  (setq ent (ssname (ssget "_C" p_1 p_2 '((0 . "ACAD_TABLE"))) 0))
  6.  (setq vla_table (vlax-ename->vla-object ent))
  7.  (vla-HitTest vla_table
  8.               (vlax-3d-point p_1)
  9.               (vlax-3d-point (trans (getvar 'ViewDir) 1 0))
  10.               'row
  11.               'col
  12.  )
  13.  (setq val (vla-gettext vla_table row col))
  14.  (alert (vl-prin1-to-string val))
  15. )
Вроде работает.
« Последнее редактирование: 14-04-2022, 18:33:20 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор содержимого ячейки таблицы
« Ответ #3 : 14-04-2022, 18:35:50 »
1958,
Не забывай про правило форматирования кода на форуме!
Что касается твоего кода, то он конечно же не универсальный. И кроме того нет проверки на то, что вообще что-то выбрано.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор содержимого ячейки таблицы
« Ответ #4 : 14-04-2022, 19:05:49 »
1958,
Проверил код из первого сообщения в AutoCAD 2021. Все нормально работает, если выбираешь текст внутри ячейки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Выбор содержимого ячейки таблицы
« Ответ #5 : 14-04-2022, 19:27:38 »
Проверил код из первого сообщения в AutoCAD 2021. Все нормально работает, если выбираешь текст внутри ячейки.
Ну, не знаю. У меня ни в какую. Кликаю по по тексту и сразу
** Error: неверный тип аргумента: lentityp nil **

Не забывай про правило форматирования кода на форуме!
Прощу прощения в очередной раз!  :(

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор содержимого ячейки таблицы
« Ответ #6 : 14-04-2022, 19:45:06 »
1958,
Ну, не знаю. У меня ни в какую. Кликаю по по тексту и сразу
На всякий случай показываю:
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Выбор содержимого ячейки таблицы
« Ответ #7 : 14-04-2022, 20:11:59 »
Ну не получается у меня выборка значения через entsel, не знаю почему.

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Выбор содержимого ячейки таблицы
« Ответ #8 : 14-04-2022, 20:44:25 »
Вот моя запись.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор содержимого ячейки таблицы
« Ответ #9 : 14-04-2022, 20:49:03 »
1958,
Правило добавления видео к сообщениям на форуме у меня в подписи.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор содержимого ячейки таблицы
« Ответ #10 : 14-04-2022, 21:14:29 »
Похоже выбор не происходит если используется TTF-шрифт и используется визуальный стиль 2D-Wireframe. В других визуальных стилях тексты в таблице нормально выбираются.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн 1958Автор темы

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: Выбор содержимого ячейки таблицы
« Ответ #11 : 15-04-2022, 08:33:17 »
Точно! Сейчас проверил. Если выбрать другой стиль, всё работает. Если заменить текстовый стиль на любой, не использующий TTF-шрифт, то работает и при визуальном стиле 2D-каркас.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Выбор содержимого ячейки таблицы
« Ответ #12 : 15-04-2022, 10:03:39 »
Может, попробовать vla-getcellvalue? А не vla-gettext?
Сейчас проверить не могу :(
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выбор содержимого ячейки таблицы
« Ответ #13 : 15-04-2022, 10:31:05 »
Может, попробовать vla-getcellvalue? А не vla-gettext?
Сейчас проверить не могу :(
Не срабатывает (entsel) - ничего не выбирается.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: Выбор содержимого ячейки таблицы
« Ответ #14 : 15-04-2022, 10:48:37 »
Скорее всего, я что-то не понимаю и не учитываю. Но у меня в ACAD2020 корректно сработал следующий вариант (естественно, без проверок):
Код - Auto/Visual Lisp [Выбрать]
  1. (defun t1 (/ table point row col)
  2.   (setq table (vlax-ename->vla-object (car (entsel "\nSelect table : ")))
  3.         point (getpoint "\nPick point in cell: ")
  4.   ) ;_ end of setq
  5.   (vla-hittest table (vlax-3d-point point) (vlax-3d-point (trans (getvar 'viewdir) 1 0)) 'row 'col)
  6.   (list (cons "cellvalue" (vla-getcellvalue table row col))
  7.         (cons "text" (vla-gettext table row col))
  8.   ) ;_ end of list
  9. ) ;_ end of defun
Одно "но": в ячейке у меня находятся именно обычные тексты, не содержащие поля. Ну и вариант вхождения блока в ячейку тоже не предусмотрен.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!