Изменения в например позиции AcDbBlockReference не отображается на чертеже

Автор Тема: Изменения в например позиции AcDbBlockReference не отображается на чертеже  (Прочитано 17806 раз)

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

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

  • ADN OPEN
  • **
  • Сообщений: 79
  • Карма: 0
Поэтому у меня и не применялись изменения к свойствам )))

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Поэтому у меня и не применялись изменения к свойствам )))
Меня больше удивляет другое: почему в твоём коде не возникло исключение:
Цитировать
INTERNAL ERROR: !dbobji.cpp@8743: eNotOpenForWrite
Вызов pBlkRef->setPosition(p3d_2); должен был привести к падению AutoCAD с такой ошибкой, так как метод pBlkRef->upgradeOpen(); не должен был сработать. Кстати, проверять код результата, методов возвращающих Acad::ErrorStatus очень желательно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Открыть объект ForRead можно 256 раз не закрывая, а вот открыть ForWrite можно только один раз, причем если этот объект еще ни разу не открыт ни ForRead, ни ForWrite.
Прошу прощения что вмешиваюсь, но хотелось бы узнать, эти ограничения действуют и для .net платформы? В справке не нашел этого момента.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Прошу прощения что вмешиваюсь, но хотелось бы узнать, эти ограничения действуют и для .net платформы? В справке не нашел этого момента.
Конечно. Ибо .NET платформа по сути это обёртки над ObjectARX. Кстати и в справке ты плохо искал:

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

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

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Кстати и в справке ты плохо искал
Вернее не там искал, я в разделе транзакций смотрел...
Спасибо за разъяснения.

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

  • ADN OPEN
  • **
  • Сообщений: 79
  • Карма: 0
Вызов pBlkRef->setPosition(p3d_2); должен был привести к падению AutoCAD
Все верно падение было. Причем не только тут
        pBlkRef->setPosition(p3d_2);
 а и здесь
        AcGePoint3d p3d2(pBlkRef->position());
        Adesk::UInt16 newColor = pBlkRef->colorIndex();
если их ставить после
       pBlkRef->upgradeOpen();

Но я как то думал что не то чтото делаю, потому спросил про другое. А замет после ваших слов про двойное открытие все встало на свои места )))

А на ошибки я пока никогда не проверяю потом все вставлю проверки, пока что всю суть надо понять.

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 79
  • Карма: 0
Вот как раз суть то и можно понять, если проверять на ошибки. Тем более, что у них достаточно понятные аббревиатуры.

Понял. Воспользуюсь советом ))