RXObject.GetClass(someType) возвращает исключение.

Автор Тема: RXObject.GetClass(someType) возвращает исключение.  (Прочитано 5309 раз)

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

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

  • ADN OPEN
  • Сообщений: 27
  • Карма: 1
Здравствуйте.
Столкнулся с непонятной проблемой. RXObject.GetClass(someType) возвращает исключение "index was outside the bounds of the array". Это происходит при том, что я точно знаю, что передаю конкретный тип, а именно -- точку Autocad. Или может я не правильно понимаю задумку?
Нужна мне такая процедура для получения DxfName.

Отмечено как Решение Lis 27-10-2022, 07:35:00

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Lis,
Приведи кусок кода, который можно проверить.
В принципе то, что ты написал, если я правильно понял, должно выглядеть так:
Код - C# [Выбрать]
  1. string dxfname = RXObject.GetClass(typeof(DBPoint)).DxfName;
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 384
  • Карма: 21
Я DxfName получаю всегда из ObjectId.
Код - C# [Выбрать]
  1. id.ObjectClass.DxfName;

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я DxfName получаю всегда из ObjectId.
Код - C# [Выбрать]
  1. id.ObjectClass.DxfName;
Это если нужно получить dxfname для известного объекта/примитива. А если просто по имени класса объекта/примитива, то так как у меня.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 27
  • Карма: 1
должно выглядеть так:
Хм, очень интересно. Код, с которым я взаимодействую, имеет некоторый срок службы, потому там используются Point (Autodesk.Civil.DatabaseServices.Point) вместо DBPoint (и в итоге обратная замена решает вылезающее исключение). А есть ли принципиальная разница между этими двумя классами? Мне пока она неочевидна, разве только... Предположу, что о DBPoint хранится информация в базе данных, а о просто Point нет (иначе бы исключение не выпрыгивало)?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Lis,
Если Autodesk.Civil.DatabaseServices.Point наследник DBObject, то исключения быть не должно. А Autodesk.Civil.DatabaseServices.Point и DBPoint это совершенно разные вещи.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Кстати, вот тут что-то по этой теме: https://adn-cis.org/forum/index.php?topic=9715.0
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 27
  • Карма: 1
Кстати, вот тут что-то по этой теме: https://adn-cis.org/forum/index.php?topic=9715.0
Спасибо, в очередной раз выручаете. :)
Что насчёт рефлексии -- как и автор того поста указывал, "ой как не хочется". Надо будет проверить, но на текущий момент решение через DBPoint выглядит удовлетворительным (но надо будет на AutoCAD проверить, однако это уже лирика).

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Надо будет проверить, но на текущий момент решение через DBPoint выглядит удовлетворительным
Тебе нужно будет понять к какому классу (или классам) принадлежат интересующие тебя объекты.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение