Журнал ошибок автокад

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

Проблема: По умолчанию файлы автоматического сохранения помещаются во временную папку (например, … 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 мы добавили новую функцию «История чертежей», позволяющую автоматически получать информацию прямо в чертеже, чтобы увидеть эволюцию вашей работы.

Страницы 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

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

Актуальным является вопрос восстановления чертежей после системного сбоя, аварийного завершения работы программы и др. возможных причин. В данной статье уделим особое внимание проверке файлов AutoCAD на наличие ошибок, а также рассмотрим «Диспетчер восстановления чертежей» Автокад.

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

Разработчики AutoCAD предусмотрели возможность программных сбоев. Поэтому при возникновении такой ситуации, в рабочем чертеже стараются сохранить последние внесенные изменения, а сам файл помечается как поврежденный.

Когда программа запускается после неполадки, то автоматически возникает процедура проверки файлов на наличие в них ошибок. Также автоматически происходит их восстановление. Это касается и сохраненной базы изменений.

Бывает, что файл AutoCAD открывается без проблем, однако в нем пропадает часть информации. Или чертеж вообще пустой, хотя вы уверены, что объекты из него не удаляли. Тогда необходимо вручную проверить чертеж. Для этого переходим в «Файл» → «Утилиты» и выбираем команду «Проверить» (см. рис).

Восстановление AutoCAD

На запрос командной строки «Исправить все обнаруженные ошибки?» отвечаем «Да». Далее все выполняется в автоматическом режиме. После завершения данной процедуры нужно обязательно сохранить чертеж.

[banner-art]

Диспетчер восстановления чертежей Автокад

В Автокад восстановление файлов можно выполнять через более мощный инструмент, так называемый «Диспетчер восстановления чертежей». При запуске программы после сбоя он открывается по умолчанию. Однако его можно вызвать принудительно через «Утилиты» (см. рис. выше). Благодаря Диспетчеру, восстановлению подлежит максимально возможное количество изменений, которые были внесены в чертеж с момента последнего сохранения и до «вылета» программы.

Как видно из рис. ниже, Диспетчер содержит файлы архива, которые удалось сохранить до сбоя, а также все подробности. В частности, название файлов, место их хранения и время их последнего сохранения. Давайте более подробно рассмотрим, с какими файлами предстоит работать.

Восстановление чертежа AutoCAD через диспетчер

Восстановление чертежа AutoCAD через диспетчер

Диспетчер восстановления чертежей AutoCAD содержит список файлов в порядке их последнего сохранения,. Т.е. файл автосохранения (.*sv$), стоящий на первом месте, предоставляет больший интерес. Поскольку он имеет последние изменения, которые были внесены в чертеже (см. дату сохранения на рис.).

В Диспетчере файл с расширением *.dwg содержит внесенные в него изменения на тот момент, когда вы вручную сохранили файл AutoCAD. В «Подробностях» эту информацию можно посмотреть.

Что касается файла *.bak, то это резервная копия, которая появляется во время сохранения вами чертежа. Т.е. когда выполняется действие «Меню» – «Сохранить» или Ctrl+S. Важно то, что при каждом сохранении этот файл перезаписывается. Однако при этом в документе хранится версия проекта на момент предыдущего сохранения. Как правило, он бывает полезен, если вы испортили файл. Например, если вы что-то удалили или внесли нежелательные поправки, после чего сохранили файл, а возможности «откатить» последние действия нет.

Для восстановления файла нужно дважды щелкнуть ЛКМ по проекту с расширением (.*sv$), он откроется в AutoCAD. Этот чертеж будет содержать данные, которые были внесены на момент последнего автосохранения, но при этом утеряны изменения, сделанные в интервале автосохранения. После этого перейдите в «Меню» и выберите «Сохранить как…». Задайте новое имя и место сохранения файла. Все, можете продолжать работу!

Теперь вы знаете, что делать, если в AutoCAD файл чертежа испорчен. Ознакомьтесь также с материалом, в котором рассказывается про временные файлы AutoCAD и их отличие от файлов Автосохранения.

Понравилась статья? Поделить с друзьями:
  • Забыл повзрослеть работа над ошибками
  • Журнал ошибок windows server 2016
  • Забудьте про свои печали ошибки неудачные года минус
  • Забота к детям ошибка
  • Заблуждение отличается от ошибки тест