Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Lis от 25-10-2022, 10:10:21

Название: RXObject.GetClass(someType) возвращает исключение.
Отправлено: Lis от 25-10-2022, 10:10:21
Здравствуйте.
Столкнулся с непонятной проблемой. RXObject.GetClass(someType) возвращает исключение "index was outside the bounds of the array". Это происходит при том, что я точно знаю, что передаю конкретный тип, а именно -- точку Autocad. Или может я не правильно понимаю задумку?
Нужна мне такая процедура для получения DxfName.
Название: Re: RXObject.GetClass(someType) возвращает исключение.
Отправлено: Александр Ривилис от 26-10-2022, 20:18:59
Lis,
Приведи кусок кода, который можно проверить.
В принципе то, что ты написал, если я правильно понял, должно выглядеть так:
Код - C# [Выбрать]
  1. string dxfname = RXObject.GetClass(typeof(DBPoint)).DxfName;
Название: Re: RXObject.GetClass(someType) возвращает исключение.
Отправлено: Lemieux от 26-10-2022, 20:57:46
Я DxfName получаю всегда из ObjectId.
Код - C# [Выбрать]
  1. id.ObjectClass.DxfName;
Название: Re: RXObject.GetClass(someType) возвращает исключение.
Отправлено: Александр Ривилис от 26-10-2022, 22:39:00
Я DxfName получаю всегда из ObjectId.
Код - C# [Выбрать]
  1. id.ObjectClass.DxfName;
Это если нужно получить dxfname для известного объекта/примитива. А если просто по имени класса объекта/примитива, то так как у меня.
Название: Re: RXObject.GetClass(someType) возвращает исключение.
Отправлено: Lis от 27-10-2022, 06:43:12
должно выглядеть так:
Хм, очень интересно. Код, с которым я взаимодействую, имеет некоторый срок службы, потому там используются Point (Autodesk.Civil.DatabaseServices.Point) вместо DBPoint (и в итоге обратная замена решает вылезающее исключение). А есть ли принципиальная разница между этими двумя классами? Мне пока она неочевидна, разве только... Предположу, что о DBPoint хранится информация в базе данных, а о просто Point нет (иначе бы исключение не выпрыгивало)?
Название: Re: RXObject.GetClass(someType) возвращает исключение.
Отправлено: Александр Ривилис от 27-10-2022, 06:50:33
Lis,
Если Autodesk.Civil.DatabaseServices.Point наследник DBObject, то исключения быть не должно. А Autodesk.Civil.DatabaseServices.Point и DBPoint это совершенно разные вещи.
Название: Re: RXObject.GetClass(someType) возвращает исключение.
Отправлено: Александр Ривилис от 27-10-2022, 07:01:17
Кстати, вот тут что-то по этой теме: https://adn-cis.org/forum/index.php?topic=9715.0
Название: Re: RXObject.GetClass(someType) возвращает исключение.
Отправлено: Lis от 27-10-2022, 07:36:25
Кстати, вот тут что-то по этой теме: https://adn-cis.org/forum/index.php?topic=9715.0
Спасибо, в очередной раз выручаете. :)
Что насчёт рефлексии -- как и автор того поста указывал, "ой как не хочется". Надо будет проверить, но на текущий момент решение через DBPoint выглядит удовлетворительным (но надо будет на AutoCAD проверить, однако это уже лирика).
Название: Re: RXObject.GetClass(someType) возвращает исключение.
Отправлено: Александр Ривилис от 27-10-2022, 12:46:41
Надо будет проверить, но на текущий момент решение через DBPoint выглядит удовлетворительным
Тебе нужно будет понять к какому классу (или классам) принадлежат интересующие тебя объекты.