получать Class Name объектов

Автор Тема: получать Class Name объектов  (Прочитано 12451 раз)

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

Оффлайн АлексЮстасуАвтор темы

  • ADN Club
  • ***
  • Сообщений: 123
  • Карма: 0
  • odclass-odedit.com
    • odclass-odedit.com
получать Class Name объектов
« : 24-09-2018, 21:35:07 »
Нужно получать Class Name объектов.
Программист сказал, что не знает способа получать Class Name в виде строки.
Я ему показал пример получения Class Name в ArxDbg через Entity info, в т.ч. в DXF Code.
Ему удалось сделать какой-то вариант "с использованием функции записи в файл". Но Автокад стал тормозить.
Какой можно ему посоветовать быстрый "прямой" способ получать Class Name объектов?
я не программист, а технолог. пытаюсь быть постановщиком задач.

Отмечено как Решение АлексЮстасу 25-09-2018, 17:38:42

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: получать Class Name объектов
« Ответ #1 : 24-09-2018, 21:53:18 »
Ему удалось сделать какой-то вариант "с использованием функции записи в файл".
Что за глупость?
Код - C++ [Выбрать]
  1. AcDbObjectId id; // Находим его имя класса и печатаем
  2. acutPrintf(_T("\nClass Name = %s, DXF Name = %s"), id.objectClass()->name(), id.objectClass()->dxfName());
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: получать Class Name объектов
« Ответ #2 : 24-09-2018, 21:54:13 »
Какой можно ему посоветовать быстрый "прямой" способ получать Class Name объектов?
Прийти сюда на форум и задать прямой вопрос.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн АлексЮстасуАвтор темы

  • ADN Club
  • ***
  • Сообщений: 123
  • Карма: 0
  • odclass-odedit.com
    • odclass-odedit.com
Re: получать Class Name объектов
« Ответ #3 : 24-09-2018, 22:10:50 »
Прийти сюда на форум и задать прямой вопрос.
Я его просил, но безуспешно...
Что за глупость?
Вероятнее, я что-то не так запомнил. Главное - найти способ без торможения Автокада.
я не программист, а технолог. пытаюсь быть постановщиком задач.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: получать Class Name объектов
« Ответ #4 : 24-09-2018, 22:12:15 »
Вероятнее, я что-то не так запомнил. Главное - найти способ без торможения Автокада.
Предложенный мной способ работает моментально.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн АлексЮстасуАвтор темы

  • ADN Club
  • ***
  • Сообщений: 123
  • Карма: 0
  • odclass-odedit.com
    • odclass-odedit.com
Re: получать Class Name объектов
« Ответ #5 : 24-09-2018, 22:17:28 »
Предложенный мной способ работает моментально.
Ок!
Завтра испробуем, отпишусь.  :)
я не программист, а технолог. пытаюсь быть постановщиком задач.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: получать Class Name объектов
« Ответ #6 : 24-09-2018, 22:24:21 »
Если вместо AcDbObjectId есть открытый объект, то:
Код - C++ [Выбрать]
  1.     AcDbObject *obj = /* где-то уже инциализирован */;
  2.     acutPrintf(_T("\nClass Name = %s, DXF Name = %s"), obj->isA()->name(), obj->isA()->dxfName());
Если бы этот программист залез в исходники ARXDBG (которые в составе ObjectARX SDK), то нашел бы этот код в файле samples\database\ARXDBG\AcadUtils\ArxDbgUtilsAcadUi.cpp (строки 490...512)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Debalance

  • ADN Club
  • ****
  • Сообщений: 421
  • Карма: 16
    • Advanced software for AutoCAD
  • Skype: Debalance
Re: получать Class Name объектов
« Ответ #7 : 25-09-2018, 13:41:49 »
Ему удалось сделать какой-то вариант "с использованием функции записи в файл".
Интересно было бы взглянуть на этот "чудесный" код. А для чего вообще нужно получать Class Name в виде текстовой строки? Не проще ли производить такие проверочки:
Код - C++ [Выбрать]
  1. if (pEnt->isA() == AcDbLine::desc())
  2. {
  3.  // Что-то делаем...
  4. }
Мне кажется этот код будет работать ещё "моментальнее"...

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: получать Class Name объектов
« Ответ #8 : 25-09-2018, 15:15:30 »
Мне кажется этот код будет работать ещё "моментальнее"...
Это одно и тоже по скорости. Но видимо ему нужно не это.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Debalance

  • ADN Club
  • ****
  • Сообщений: 421
  • Карма: 16
    • Advanced software for AutoCAD
  • Skype: Debalance
Re: получать Class Name объектов
« Ответ #9 : 25-09-2018, 15:29:41 »
Это одно и тоже по скорости
Сравнение строк работает всё же медленнее, если это, конечно, нужно автору.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: получать Class Name объектов
« Ответ #10 : 25-09-2018, 15:34:04 »
Это одно и тоже по скорости
Сравнение строк работает всё же медленнее, если это, конечно, нужно автору.
Там тоже сравнение строк, хотя возможно сравнение хэша - если хранится в виде дерева.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Debalance

  • ADN Club
  • ****
  • Сообщений: 421
  • Карма: 16
    • Advanced software for AutoCAD
  • Skype: Debalance
Re: получать Class Name объектов
« Ответ #11 : 25-09-2018, 15:43:47 »
Там тоже сравнение строк...
Хранить текстовую многобайтную юникод-строку в каждом объекте? Как-то это моветон...

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: получать Class Name объектов
« Ответ #12 : 25-09-2018, 15:45:34 »
Там тоже сравнение строк...
Хранить текстовую многобайтную юникод-строку в каждом объекте? Как-то это моветон...

Не в каждом объекте, а как статическое свойство в AcRxClass.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Debalance

  • ADN Club
  • ****
  • Сообщений: 421
  • Карма: 16
    • Advanced software for AutoCAD
  • Skype: Debalance
Re: получать Class Name объектов
« Ответ #13 : 25-09-2018, 15:56:01 »
Не в каждом объекте, а как статическое свойство в AcRxClass.
Вот-вот - проще сравнить "дескрипторы" этого статического свойства в двух объектах...

Оффлайн АлексЮстасуАвтор темы

  • ADN Club
  • ***
  • Сообщений: 123
  • Карма: 0
  • odclass-odedit.com
    • odclass-odedit.com
Re: получать Class Name объектов
« Ответ #14 : 25-09-2018, 20:14:24 »
Предложенный мной способ работает моментально.
Спасибо! Справились. :)
я не программист, а технолог. пытаюсь быть постановщиком задач.