Если в контексте приложения попытаться закрыть не текущий документСудя по коду ты пытаешься закрыть как раз текущий документ.
то закрытие пройдёт нормальноНу значит так и придется делать:
Ну значит так и придется делать:Кривоватый способ, не находите? Не плохо было бы сообщить в ADN.
Кривоватый способ, не находите? Не плохо было бы сообщить в ADN.Нахожу. Пока еще экспериментирую. Если не найду лучшего решения - обязательно сообщу.
я тоже сталкивался с этим несколько лет назад в 2009-м акадеСтранно, в 2010-м автокаде у меня код наподобие как из заглавного сообщения работал прекрасно. Т.е. там эта ошибка не наблюдалась
Странно, в 2010-м автокаде у меня код наподобие как из заглавного сообщения работал прекрасно. Т.е. там эта ошибка не наблюдаласьЯ в основном пишу под 2009-й, хотя раньше на вирт. машинке были установлены все от 2009-го и выше (для комиляции и тестирования). Может я не и не в 2009-м это наблюдал - в понедельник проверю в нём. Сейчас под рукой автокада нет.
Я в основном пишу под 2009-й, хотя раньше на вирт. машинке были установлены все от 2009-го и выше (для комиляции и тестирования). Может я не и не в 2009-м это наблюдал - в понедельник проверю в нём. Сейчас под рукой автокада нет.Память меня всё-таки не подвела: код, обозначенный в первом сообщении темы выдаёт ошибку и в AutoCAD 2009 SP3.
А если так попробовать у меня в 2010-м и в 2014-м закрываетЗачем так много и сложно?
не пойму в чем дело, до этого проверял много раз и все былоЧудес не бывает. Скорее всего либо код, "проверяемый много раз", всё же был несколько иным, либо "проверка" была фиктивной...
нормально.
Спасибо :)Олег. У меня это не воспроизводится. Если у тебя есть возможность записать видео с этой ошибкой в AutoCAD 2014 (в другой версии проверять нет смысла) - сделай. Я передам в Autodesk - пусть разбираются. Если нет - увы. Ничем помочь не смогу.
У меня это не воспроизводится.
Если нет - увы.Извини Александр, не хочу ставить никаких программ, временно на
Проверил код из #3 на:
AutoCAD 2014 Rus x64 (без SP)
AutoCAD Civil 3D 2014 Rus SP1 x64
AutoCAD Civil 3D 2014 Rus SP1 x64 as AutoCAD
Никаких ошибок. Текущий закрывает, указанный открывает.
Windows 7 SP1 Professional Rus x64
Кстати, в 2009-м акаде FIBERWORLD нет... :(NEXTFIBERWORLD и FIBERWORLD появились в AutoCAD 2011 и до сих пор недокументированные, так как используются только программистами для отладки программ. Связано это с дефектами отладчика Microsoft Visual Studio, который плохо работает с фиберами и не в состоянии ловить точки останова внутри форм, которые работают внутри фиберов:
NEXTFIBERWORLD и FIBERWORLD появились в AutoCAD 2011 и до сих пор недокументированные, так как используются только программистами для отладки программ. Связано это с дефектами отладчика Microsoft Visual Studio, который плохо работает с фиберами и не в состоянии ловить точки останова внутри форм, которые работают внутри фиберовЭто всё, конечно, здорово, но меня интересует, как решить проблему именно в AutoCAD 2009? Может быть до FIBERWORLD всё же существовали какие-то способы, так же не документированные?
Это всё, конечно, здорово, но меня интересует, как решить проблему именно в AutoCAD 2009? Может быть до FIBERWORLD всё же существовали какие-то способы, так же не документированные?
Как хотя бы узнать, включены они у меня в 2009-м или выключены? А то может в 2009-м и не в них дело (текст сообщения об ошибке ведь другой)...
Автокад 2018. Код из поста №3 не работает. Не зависимо от состояния переменной FIBERWORLD.В AutoCAD 2018 уже нет FIBERWORLD. Точнее она всегда соответствует 0.
В AutoCAD 2018 уже нет FIBERWORLD. Точнее она всегда соответствует 0.А еще точнее nil, который приводится к нулю (прошу прощения за буквоедство). Если попробовать получить значение переменной, которой никогда не существовало, то результат будет тот же.
больше никогда в коде не пытайтесь менять значения этих переменныхИмеется в виду именно этих переменных или основной посыл в том, что в коде менять значения системных переменных чем-либо чревато?
Код работает в контексте приложения или в контексте документа?В контексте документа, если я правильно понимаю (вызов происходит непосредственно в теле выполняемой команды). Пробовал оборачивать вызов в функцию ExecuteInApplicationContext, но результат тот же.
А еще точнее nil, который приводится к нулю (прошу прощения за буквоедство). Если попробовать получить значение переменной, которой никогда не существовало, то результат будет тот же.Именно так. Этой переменной уже нет.
Имеется в виду именно этих переменных или основной посыл в том, что в коде менять значения системных переменных чем-либо чревато?Одну из этих переменных вообще нельзя менять (она "read-only"). Вторая отрабатывает только после перезапуска AutoCAD, так что в коде нет смысла её менять.
В контексте документа, если я правильно понимаю (вызов происходит непосредственно в теле выполняемой команды).В контексте документа работать и не будет. Нужно добавить команде флаг CommandFlags.Session
Имеется в виду именно этих переменных или основной посыл в том, что в коде менять значения системных переменных чем-либо чревато?Именно этих, Александр Наумович выше объяснил почему.
В контексте документа работать и не будет. Нужно добавить команде флаг CommandFlags.SessionС флагом заработало.
как сделано здесь