|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
VBA. Как получить содержимое поля через ID поля?
Регистрация: 14.12.2008
Сообщений: 1,134
|
||
Просмотров: 950
|
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
уже два года назад спрашивали
|
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
Почему данный код ЛИСП возвращает ошибку:
Код:
Вызываю команду так: (get-field-content-by-id 1682059942352) Может быть вместо команды "vla-get-textstring" использовать команду "vla-get-fieldcode"? Последний раз редактировалось МишаИнженер, 05.03.2025 в 05:10. |
|||
![]() |
|
||||
Surveyor Регистрация: 10.04.2023
Krasnoyarsk
Сообщений: 5
|
неверный тип аргумента: stringp 1.68206e+12 указывает на то, что функция handent ожидает строку, а вы передаете ей число.
Для полей нужно использовать vla-get-fieldcode а затем разобрать полученный код чтобы извлечь нужное значение. Код:
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Мне интересно, а кто сказал, что число через itoa будет преобразовано в реальный хендл?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
не надо мешать ТС подбирать работающий код вместо чтения документации) Да и учитывая, что в VBA вроде нельзя вызывать лисп-функции напрямую - все будет идти через командную строку со всеми сопутствующими рисками...
|
|||
![]() |
|
||||
Регистрация: 10.01.2020
Сообщений: 415
|
потому что handle это не ID - посмотри в пятую группу (entget(car(entsel))) - это и есть хендл таблицы, по которому через handent получаем таблицу
Вообще же, лучше делать так, чтобы функции для проверки возвращали T (или объекты) или nil. А уж что делать с этой информацией решишь в вызывающей процедуре: Код:
Последний раз редактировалось name02, 05.03.2025 в 13:51. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
ObjectID - текущее состояние объекта открытого чертежа, и включает в себя хэндл. Это связано с быстродействием и ресурсами - иначе бы пришлось, например, при каждом удалении объекта сдвигать остальные объекты в коллекции - если их (объектов) десятки и сотни тысяч - то это было бы очень затратным. А так помечается объект как удаленный - а физически продолжает существовать, просто акад его игнорирует.
|
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
Цитата:
Как будет выглядеть код для получения поля вместо таблицы? |
|||
![]() |
|
||||
Регистрация: 10.01.2020
Сообщений: 415
|
Почитай тут https://forum.dwg.ru/showpost.php?p=...8&postcount=15
может что-то поможет. Вообще если взять оттуда код (vla-fieldcode (vlax-ename->vla-object (car (nentsel)))) ткнуть в поле в ячейке таблицы, то вернется строка с содержимым ячейки. Из этой строке можно увидеть и ObjectID (и далее уже пихать в vla-ObjectIdToObject) и формулу |
|||
![]() |
|
||||
Регистрация: 10.01.2020
Сообщений: 415
|
Ты куда тыкал - надо тыкать прямо в текст в ячейке.
lentityp - внутренняя проверка языка программирования того, что в какую-то функцию передается entity, т.е. какой-то объект. В лиспе функции, которые проверяют какое-либо свойство имеют имена, заканчивающиеся на p - listp, vl-catch-all-error-p или vl-consp nil говорит о том, что проверка не прошла |
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
Прямо в текст и нажимал. Не работает функция. Выдает ошибку:
Цитата:
Последний раз редактировалось МишаИнженер, 07.03.2025 в 12:57. |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
VBA. Получить из Акада запущенный экземпляр Excel через Getobject | Dinoxromniy | Программирование | 4 | 11.10.2023 12:58 |
Как через FldId получить текст поля с формулой? | МишаИнженер | Программирование | 1 | 20.06.2023 13:48 |
Выход с технического этажа на лестничниую клетку Н-1 через воздушную зону. | W985 | Архитектура | 5 | 24.02.2015 16:26 |
Поля AutoCAD + Windows | vanfil | AutoCAD | 6 | 07.04.2010 10:37 |
Как настроить выход в интернет с комуникатора через блютуз и ПК | KonGo | Разное | 15 | 01.04.2010 18:46 |