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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Как получить таблицу через идентификатор таблицы?

VBA. Как получить таблицу через идентификатор таблицы?

Ответ
Поиск в этой теме
Непрочитано 25.02.2025, 09:28 #1
VBA. Как получить таблицу через идентификатор таблицы?
МишаИнженер
 
Регистрация: 14.12.2008
Сообщений: 1,134

Получил IDТабл = Объект.OwnerID
Как получить объект таблицы через IDТабл?
Метод HandleToObject не работает:
Set ТаблОб = objAcadDoc.HandleToObject(IDТабл)
Просмотров: 992
 
Непрочитано 25.02.2025, 09:46
#2
Кулик Алексей aka kpblc
Moderator

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


HandleToObject должен работать, если ему подсунуть нормальные данные.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.02.2025, 09:51
1 | #3
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


ручками через командную строку получите хэндл таблицы и сравните с тем значением, что получаете из Объект.OwnerID
Сергей812 вне форума  
 
Непрочитано 25.02.2025, 09:54
#4
Кулик Алексей aka kpblc
Moderator

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


А еще лучше документацию посмотреть Там по идее и примеры должны быть.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 25.02.2025, 09:59
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


ну чтение документации не заменяет отладчик) надо учиться проверять элементарные вещи - чтобы часами не биться лбом в закрытую дверь...
Сергей812 вне форума  
 
Автор темы   Непрочитано 25.02.2025, 10:29
#6
МишаИнженер


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


Нашел в документации метод ObjectIdToObject:
Set ТаблОб = objAcadDoc.Database.ObjectIdToObject(IDТабл)
Но этот метод возращает "Пространство_Модели" вместо таблицы (хотя должен возвращать "Таблицу" по идее).
Получается все вручную надо делать, путем перебора всех объектов чертежа?
МишаИнженер вне форума  
 
Непрочитано 25.02.2025, 10:36
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


даже не видя код, просто из названия свойства OwnerID - скорее всего, это ссылка на владельца объекта. Значение ID не проверяли, естественно..
Сергей812 вне форума  
 
Непрочитано 25.02.2025, 10:49
#8
Кулик Алексей aka kpblc
Moderator

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


Вопрос - для какого объекта получается OwnerId. И кто на самом деле владелец объекта.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.02.2025, 11:54
#9
МишаИнженер


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


Действительно! Для разных таблиц возвращается одно ID, это наверное ID "Пространства модели".
А как получить ID таблицы?
МишаИнженер вне форума  
 
Непрочитано 25.02.2025, 12:13
1 | #10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
А как получить ID таблицы?
вы у кого это спрашиваете?) У объекта AcadTable есть свойство Handle, но оно вам не нужно - так как в этом случае уже имеете ссылку на сам объект таблицы. А как еще собираетесь получать ссылку на таблицу, по каким критериям - откуда другим знать то?
Сергей812 вне форума  
 
Автор темы   Непрочитано 25.02.2025, 13:22
#11
МишаИнженер


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


Нашел свойство ObjectID через которое получается нужная ссылка:
IDТабл = Объект.ObjectID
Set ТаблОб = objAcadDoc.ObjectIdToObject(IDТабл)
То что нужно было получить. Всем спасибо!
МишаИнженер вне форума  
 
Непрочитано 25.02.2025, 13:58
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
IDТабл = Объект.ObjectID
Set ТаблОб = objAcadDoc.ObjectIdToObject(IDТабл)
из этого кода вытекает, что Объект = ТаблОб и метод ObjectIdToObject лишний
Сергей812 вне форума  
 
Автор темы   Непрочитано 27.02.2025, 05:39
#13
МишаИнженер


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


Смысл был в том, чтобы показать что можно сначала получить текстовый "IDТаблицы", а затем по этому ID получить сам объект таблицы "ТаблОб".
При этом не надо вручную перебирать все объекты чертежа чтобы получить объект таблицы "ТаблОб".
Все сделано чтобы использовать короткие и простые команды.
МишаИнженер вне форума  
 
Непрочитано 27.02.2025, 07:23
#14
name02


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


А как можно получить текстовый конкретной "IDТаблицы" - если ты выбираешь ее на экране, то уже получаешь объект таблицу?
name02 вне форума  
 
Непрочитано 27.02.2025, 09:26
| 1 #15
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от МишаИнженер Посмотреть сообщение
Все сделано чтобы использовать короткие и простые команды.
главное, таблицу случайно не снести или не переключиться в другой файл при вызове команды)
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Как получить таблицу через идентификатор таблицы?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не создает таблицу при помощи скрипта для автокада COT_Convert_Old_TableV1.6a при создании и экспорте таблицы в Excel. Подскажите в чем может быть причина? Limo LISP 5 18.09.2024 14:58
СПДС 10 VBA. Как из ячейки таблицы с отчетом получить число, а не формулу.. AlexV ПО от CSoft 1 29.08.2017 20:39
Почему при вставке новой строки в таблицу в кторой есть ссылки на другую таблицу эти ссылки начинают ссылаться на другие ячейки? МишаИнженер AutoCAD 8 09.11.2010 20:24
Как получить цвет фона модели ACAD через LISP? EfremenkoDO LISP 3 24.03.2010 12:09