Визуальная идентификация объектов с определенными расширенными данными

Автор Тема: Визуальная идентификация объектов с определенными расширенными данными  (Прочитано 12308 раз)

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

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Александр Пекшев aka Modis, в строке 37 падает во время перетаскивания объекта... без фатала, но все таки...
Хотя вот тут http://www.arch-pub.com/Fatal-error-override-WorldDraw_10652461.html пишут, что может и с фаталом упасть..

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

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

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Александр Ривилис,  а как можно узнать, что объект в данный момент редактируется, скажем растягивается за ручку (Jig) и соответственно в строке extents = ent.GeometricExtents; обойти ошибку? try-catch как то не очень нравиться.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
try-catch как то не очень нравиться.
Ставь try/catch - дешевле будет. Исключение может возникнуть и по другим причинам, а не только потому что растягивают объект. Вообще же при Jig обычно участвуют не сами объекты, а их клоны, т.е. их свойство ObjectId == ObjectId.Null
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Ставь try/catch - дешевле будет. Исключение может возникнуть и по другим причинам, а не только потому что растягивают объект. Вообще же при Jig обычно участвуют не сами объекты, а их клоны, т.е. их свойство ObjectId == ObjectId.Null
Спасибо. понял почему падало. Я убрал фильтрацию по объектам ModPlus (if (ent.IsModPlusProduct()) и рисовал значок для всех объектов, а при растягивании, при включенном динамическом вводе, создаются временные размеры, у которых запрос свойства GeometricExtents и вызывает ошибку. и да, у них ObjectId == ObjectId.Null .

Александр Пекшев aka Modis,  еще заметил, что вот эта строка:
var pt = extents.MaxPoint.TransformBy(ucs.Inverse());
не очень хорошее решение, так как может получаться вот так:

Наверное стоит для наследников Curve, брать просто EndPoint ...
И вот это не очень
points.Add(new Gem.Point3d(pt.X + (offset + 00) * scale, pt.Y + (offset + 00) * scale, plane.PointOnPlane.Z));
наверное стоит задавать векторами, в соответствии с направлением линии на конце которой строится иконка...

Уронить автокад в фатал при сохранении пока не удалось.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Спасибо за ответы. С кодом пока не занимался, но учту все, что было описано. У меня как раз есть файл (от пользователя), который точно не открывается при включенном Overrule. Падает с фаталом
var pt = extents.MaxPoint.TransformBy(ucs.Inverse());
не очень хорошее решение, так как может получаться вот так:
Я знаю об этом варианте поворота, но пока ничего не придумал. Брать EndPoint не вариант, т.к. я и обычный блок могу повернуть в "такое состояние"
И вот это не очень
points.Add(new Gem.Point3d(pt.X + (offset + 00) * scale, pt.Y + (offset + 00) * scale, plane.PointOnPlane.Z));
наверное стоит задавать векторами, в соответствии с направлением линии на конце которой строится иконка...
Пока что не вижу причин, чтобы переживать в этом месте )

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Пока что не вижу причин, чтобы переживать в этом месте )
Причина может быть в том, что поддерживать такой код сложно - он трудночитаемый. И ещё, если нужно будет внести какие-то правки, то это придётся делать одновременно в нескольких строчках. Есть риск, что где-то забудешь изменить.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Наконец-то дошли руки. Внес изменения с учётом замечаний. Тестовый файл, который точно падал, теперь не падает. Всем спасибо за советы! Надеюсь больше проблем не вылезет

Извините, вам запрещён просмотр содержимого спойлеров.