Автокад лог ошибок

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

#1 27 марта 2007г. 10:54:20

  • Wing
  • Восстановленный участник
  • На форуме с 21 марта 2007г.
  • Сообщений: 9
  • Спасибо: 0

Тема: Как получить построчный лог окна команд?

Требуется получать со стороны удаленных пользователей инфу о возникающих ошибках, для отладки. Так как сами они не всегда внятно могут объяснить, что после чего делали, а главное, что автокад им отвечал, эту информацию надо получать программно из окна истории команд. Это удалось сделать путем перебора окон:

CWnd *wTextCmdLine = acedGetAcadDockCmdLine();
CString s1;
acutPrintf("FirstString\n");
acutPrintf("SecondString\n");
if (wTextCmdLine)
  {            
  CWnd *wCmd = wTextCmdLine->GetWindow(GW_CHILD);
  do
    {
    wCmd->GetWindowText(s1);
    if (-1!=s1.Find("FirstString"))
      break;
    }
  while (wCmd = wCmd->GetNextWindow());
  AfxMessageBox(s1);
  }

Проблема осталась в том, что в полученной строке эти строки отображаются без разделителей, «FirstStringSecondString», как будто бы «\n»  в acutPrintf() не передавали. И в отладчике студии все команды тоже в одну строку видны, без разделителей.
С другой стороны, если нажать F2, то лог команд отображается построчно в новом окне, т.е. где-то он хранится в нормальном виде.
Как бы его в этом построчном виде получить?
Попытка привести к CEdit* не удалась.
После цикла пишем:

CEdit *pEdit = (CEdit *) CWnd::FromHandle(wCmd->m_hWnd);
int lineCount = pEdit->GetLineCount();

И получаем, что lineCount равен нулю.
Уважаемые знатоки, надеюсь на вашу помощь, и что миссия выполнима :).
Автокад 2000, студия 2003.

#2 Ответ от Александр Ривилис 27 марта 2007г. 12:26:37

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,661
  • Спасибо: 158

Re: Как получить построчный лог окна команд?

> Wing
А почему просто не влючить стандартный AutoCAD’овский log:
1) переменная LOGFILEMODE в 1 для включения и 0 для выключения.
2) Переменная LOGFILENAME — имя файла лога.
3) Переменная LOGFILEPATH — имя каталога в который пишется log-файл
?

#3 Ответ от Wing 27 марта 2007г. 14:23:35

  • Wing
  • Восстановленный участник
  • На форуме с 21 марта 2007г.
  • Сообщений: 9
  • Спасибо: 0

Re: Как получить построчный лог окна команд?

А почему просто не влючить стандартный AutoCAD’овский log?

В принципе вариант подойдет, если потом этот файл будет открываться на чтение для архивирования при открытом автокаде. Единственное, что у меня не получается задать переменную LOGFILENAME, или же она игнорируется (справка говорит, что она сохраняется на каждый чертеж своя), и в результате у меня целая куча лог-файлов образуется, хоть и в нужном каталоге, с непонятными названиями типа «Drawing_1_XXXX.log», где XXXX — произвольное число.

resbuf rb;
rb.rbnext = NULL;
rb.restype = RTSTR;
rbvis.resval.rstring = "acadCmdLog.txt";
acedSetVar("LOGFILENAME", &rb);

Что здесь неправильно?

#4 Ответ от Александр Ривилис 27 марта 2007г. 14:42:13

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,661
  • Спасибо: 158

Re: Как получить построчный лог окна команд?

> Wing
Неправильно то, что эта переменная read-only, т.е. имя ты ей поменять не можешь, но если ты отключишь (временно) ведение журнала, то сможешь этот файл прочитать/переименовать/удалить.

#5 Ответ от Wing 27 марта 2007г. 14:55:32

  • Wing
  • Восстановленный участник
  • На форуме с 21 марта 2007г.
  • Сообщений: 9
  • Спасибо: 0

Re: Как получить построчный лог окна команд?

Хорошо, я не могу поменять имя этой перемнной. Допустим, я переименую файл и включу лог. Потом он будет вестись под тем же именем? А если автокад просто свалится, то файл с этим именем будет там лежать, засоряя место. И кроме того, получается, при заверешении работы надо его удалять. Код по сути лишний.
Вариант. Есть ощущение, что эти «Drawing_1_XXXX» — имя чего-то (рисунка или чего-то в рисунке) по умолчанию. Может быть, можно в какой-то момент создания этого имени как-то его поменять, чтобы не только имя файла лога было правильным, но и не создавалось ненужных файлов в каталоге?
В принципе вместо работы с перемнными я в программе установки в реестре в HKCU\…\<<Unnamed Profile>>\General записал LogFileOpen=1 и ACADLOGFILE=СвойПуть\СвоеИмяФайла, но вот имя файла почему-то игнорируется. Может есть где-то ключ, чтобы не игнорировалось? Самый подходящий вариант был бы.
Или все-таки из окна построчно лог получать, тоже хорошее решение.
Спасибо.

#6 Ответ от Александр Ривилис 27 марта 2007г. 15:09:44

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,661
  • Спасибо: 158

Re: Как получить построчный лог окна команд?

> Wing
1) Какие именно цифири там используются — не исследовал, да и не в этом суть. Представь себе, что у тебя открыты два dwg-файла в одном AutoCAD. Имя log-файла не может быть одним и тем-же (!!!).
2) Что касается log-файлов, которые останутся при вылете AutoCAD — ну поставь свой реактор на завершение AutoCAD — думаю, что в нем можно будет этот файл удалить (не пробовал).
3) Из окна построчно ты можешь получить что-либо только если субклассируешь это окно и добавишь к к нему свою функцию обработки сообщений. В противном случае ты просто пропустишь сообщения AutoCAD в это окно. Кроме того еще интересный вопрос как ты будешь разделять сообщения в зависимости от того с каким из одновременно загруженных dwg-файлов пользователь работает.

#7 Ответ от Wing 27 марта 2007г. 16:07:37

  • Wing
  • Восстановленный участник
  • На форуме с 21 марта 2007г.
  • Сообщений: 9
  • Спасибо: 0

Re: Как получить построчный лог окна команд?

Уважаемый Александр.
Дело в том, что в моем ARX’е всегда только один документ. Но даже если их было бы несколько, активен всегда один, так устроен MDI. И даже если документы будут что-то писать в лог одновременно, есть средства синхронизации потоков. 6 месяцев назад я писал поиск, к которому одновременно обращались несколько пользователей, и лог этой системы был один на всех пользователей, хотя поиск шел параллельно для всех запросивших данные, так что знаю точно. Самая быстрая идея реализации этого, известная мне — посылка сообщений в логирующий низкоприоритетный поток, который, когда процессор разгружается, соединяет сообщения и записывает их в файл. В случае падения приложения отображается сообщение с извинениями, и пока пользователь читает, текст в файл дописывается нормально. Идентифицировать каждого пользователя или каждый документ можно хоть в каждом лог-ссобщении. Поэтому, одновременно открытые два или более документов — совершенно не проблема.
Жаль, что через реестр решить не удалось.
А вот очень странно что исчезают разделители, ньюлайны. Да и реализовывать окно истории через CEdit-подобный класс, казалось, было бы проще, а там разделители должны сохраняться. При нажатии F2 они ведь отображаются в еще одном окне истории, а значит, где-то хранятся. Было бы здорово добраться до них.
А если же это невозможно, решение видится такое. Создать для логов автокада отдельную папку. При завершении приложения удалять свой лог-файл. При старте приложения проверяем имеющиеся лог-файлы. Если там есть файл, не относящийся к текущему запуску (опознаем с помощью LOGFILENAME), то он считается следом падения автокада, упаковывается в другую папку для анализа и удаляется из этой. После чего останется только свой файл.
И если произошла ошибка, то этот файл аналогично упаковывается для анализа.
С уважением,
Wing

#8 Ответ от Александр Ривилис 27 марта 2007г. 17:43:24

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,661
  • Спасибо: 158

Re: Как получить построчный лог окна команд?

> Wing
1) Как работает MDI мне можно не рассказывать. :) Тем не менее если пользователь сидит за PC и не установлен принудительно режим SDI, то открыто может быть больше одного чертежа и соответственно больше одного log-файла. AutoCAD не в состоянии использовать один log-файл для разных dwg-файлов. И это правильно. Иначе получится каша.
2) Твое решение (которое видится)вполне приемлимо.
3) AutoCAD работает с командным окном не стандартно. Кроме того в это окно попадает не вся информация, которая пишется в log-файл (например, обрезаются длинные строки) и это может быть для тебя существенно.

#9 Ответ от Wing 27 марта 2007г. 20:00:37

  • Wing
  • Восстановленный участник
  • На форуме с 21 марта 2007г.
  • Сообщений: 9
  • Спасибо: 0

Re: Как получить построчный лог окна команд?

Спасибо!
ЗЫ. Как правильно программно задать SDI?  :)
Или это имеется в виду не средствами ACAD, а ручками?

#10 Ответ от Александр Ривилис 27 марта 2007г. 23:51:17

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,661
  • Спасибо: 158

Re: Как получить построчный лог окна команд?

> Wing
Вариантов на вскидку 3:
1) Установить при помощи acedSetVar() значекие SDI в 1.
2) Воспользоваться функцией acrxRegisterAppNotMDIAware()
3) Прописать соответствующее значение в реестре до запуска AutoCAD.
Но есть несколько НО!
a) Если уже открыто больше одного чертежа, то это сделать нельзя, т.е. AutoCAD не позволит установить переменную SDI в 0 и вызов acrxRegisterAppNotMDIAware() не позволит твоему приложению работать. b) SDI режим — это наследие прошлого и Autodesk давно обещает его убрать.
c) Заставлять пользователя работать в однодокументном режиме — это дурной тон. Только очень (!!!) веские причины могут оправдать это.

#11 Ответ от Wing 28 марта 2007г. 09:32:02

  • Wing
  • Восстановленный участник
  • На форуме с 21 марта 2007г.
  • Сообщений: 9
  • Спасибо: 0

Re: Как получить построчный лог окна команд?

У нас приложение изначально SDI по сути. Это не конструирование, а топология, в пределах одной области. И чтобы отбразить все это, используются уровни отображения: на области видны районы, на районе нас.пункты, в нас.пункте дома, улицы и т.п. Трубы на всех уровнях. Для отображения другого уровня все объекты из чертежа удаляются и загружаются из базы SQL другие. Не предполагается, что пользователю зачем-то понадобится еще один документ.
А вот реализовывалось это без работы с SDI, с помощью своего меню и панели инструментов (где нет пунктов «новый», «открыть» и т.п.), с использованием acrxRegisterAppMDIAware, поэтому такой интерес к теоретической стороне вопроса.
Из предложенных я попробовал 2 варианта (не нашел, что в реестре отвечает за SDI), и получилось, что всего лишь становится серой кнопка закрытия документа. Рисунок можно MDI-сворачивать и MDI-ресайзить, а «настоящего» SDI (как в блокноте) не получается. Что ж, хоть так.
Спасибо, Александр, ваша поддержка рулит :).
С уважением,
Wing

#12 Ответ от Александр Ривилис 28 марта 2007г. 10:24:17

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,661
  • Спасибо: 158

Re: Как получить построчный лог окна команд?

Wing пишет:

не нашел, что в реестре отвечает за SDI

Для каждой версии AutoCAD и каждого профиля эта информация находится своей ветке реестра. Например, для AutoCAD 2006 English:

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.2\ACAD-4001:409\Profiles\<<имя профиля>>\Drawing Window]
"SDIMode"=dword:00000001

Но здесь пользователь имеет возможность ее изменить. А вот второй мой вариант делает невозможным переключится в режим MDI если приложение уже загружено.

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

перейти к содержанию

Проблема: По умолчанию файлы автоматического сохранения помещаются во временную папку (например, … Temp).

Как просмотреть журналы AutoCAD?

Часто задаваемые вопросы: как найти файл журнала?

  1. Если вы не можете найти файл журнала для текущего чертежа, вы можете ввести logfilename↵ в командной строке, и AutoCAD отобразит имя файла, включая полный путь.
  2. Если вы хотите изменить расположение файла журнала по умолчанию, откройте диалоговое окно «Параметры» и щелкните вкладку «Файлы».

Что такое печатный файл журнала?

Распечатка. log создается, когда в AutoCAD возникает одна из ошибок или проблем.

Как восстановить файл резервной копии AutoCAD?

Восстановление чертежа из файла резервной копии

  1. В проводнике Windows или проводнике найдите файл резервной копии с расширением . расширение файла бак.
  2. Щелкните файл правой кнопкой мыши и выберите «Переименовать».
  3. Введите новое имя с помощью . расширение файла DWG.
  4. Откройте файл, как и любой другой файл чертежа.

Как получить доступ к AutoCAD Recovery Manager?

Доступ к восстанавливаемым чертежам после сбоя программы или системы. В AutoCAD наведите указатель мыши на стрелку вниз, чтобы прокрутить меню вниз. Для AutoCAD LT введите DRAWINGRECOVERY в командной строке.

Есть ли у AutoCAD история?

В AutoCAD 2021 мы добавили новую функцию «История чертежей», позволяющую автоматически получать информацию прямо в чертеже, чтобы увидеть эволюцию вашей работы.

Autodesk Installation Logs

Issue:

Having trouble installing your Autodesk software? Reviewing the installation log files may help determine what is causing the problem.

Solution:

Autodesk software will create log files during the installation process. Older versions of the software will create the log files in the user Temp folder. Newer versions of the software will also create log files in the ODIS folder.

  1. Log files are created in the Windows user profile Temp folder. The Temp folder, by default, is a hidden folder. The quickest way to access your Temp folder is to use the Windows shortcut %temp% in the Quick Access section of File Explorer.

Open File Explorer.

Graphical user interface, application, Word

Description automatically generated

Type %temp% into the Quick Access section.

Graphical user interface, application, Word

Description automatically generated

Hit Enter and your user Temp folder will open.

Graphical user interface, application, Word

Description automatically generated

If you just tried to install your software, filter the Temp folder by Date Modified and you should find many log files (.log) related to installing your Autodesk software. If you do not see the extension .log then turn on File Extensions in the View tab.

Graphical user interface, text, application

Description automatically generated

The image below is an example of the log files that are created after installing AutoCAD Electrical 2023.

Text, application

Description automatically generated

  1. Autodesk introduced a new installer package for version 2022 and 2023 software that uses the Autodesk On-Demand Install Services (AdODIS). This installer creates an additional location for log files in the ODIS folder. This folder is also, by default, a hidden folder. Instead of browsing to the location in File Explorer, copy and paste the path below into the File Explorer Quick Access section.

C:\Users\%username%\AppData\Local\Autodesk\ODIS

Graphical user interface, application, Word

Description automatically generated

Hit Enter and the ODIS folder will open.

Graphical user interface, application, Word

Description automatically generated

The Install.log is often the most helpful to review but the other files provide additional information.

Log files can still be difficult to interpret. If you experiencing installation issues and would like assistance reviewing the log files, then please collect the .log files from your Temp folder and ODIS folder, zip them together, and send them to support@rand.com for assistance.

About the Author

Shawn Heator

Technical Support Specialist

Follow on Linkedin

More Content by Shawn Heator

Понравилась статья? Поделить с друзьями:
  • Автокад команда проверить на ошибки
  • Автокад ошибка 1325
  • Автокад ошибка 1114
  • Автокад исправление ошибок команда
  • Автокад выдает фатальную ошибку при копировании