Версия AutoCAD

Автор Тема: Версия AutoCAD  (Прочитано 9481 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Версия AutoCAD
« : 18-12-2019, 11:56:15 »
Здравствуйте, могу ли я как-то узнать, в какой версии AutoCAD был сохранен DWG - файл ?  Я поискал в справке, но нашёл только св-во Version объекта Application, но это мне ничего не даёт 

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Версия AutoCAD
« Ответ #1 : 18-12-2019, 11:58:21 »
Здравствуйте, могу ли я как-то узнать, в какой версии AutoCAD был сохранен DWG - файл ?
По первым шести байтам dwg-файла: https://en.wikipedia.org/wiki/.dwg
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Версия AutoCAD
« Ответ #2 : 18-12-2019, 11:58:53 »
могу ли я как-то узнать, в какой версии AutoCAD был сохранен DWG - файл ?
В какой версии или в формате какой версии? Это разные вещи.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Версия AutoCAD
« Ответ #3 : 18-12-2019, 12:02:57 »
могу ли я как-то узнать, в какой версии AutoCAD был сохранен DWG - файл ?
В какой версии или в формате какой версии? Это разные вещи.
В формате какой версии

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Версия AutoCAD
« Ответ #4 : 18-12-2019, 12:05:33 »
В формате какой версии
Ну тогда я дал правильную ссылку - не открывая в AutoCAD dwg-файл ты можешь определить в формате какой версии сохранён файл по первым шести байтам файла.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Версия AutoCAD
« Ответ #5 : 18-12-2019, 12:06:36 »
В формате какой версии
Ну тогда я дал правильную ссылку - не открывая в AutoCAD dwg-файл ты можешь определить в формате какой версии сохранён файл по первым шести байтам файла.
Да, я Вас понял, спасибо !

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Версия AutoCAD
« Ответ #6 : 18-12-2019, 14:56:17 »
Здравствуйте, могу ли я как-то узнать, в какой версии AutoCAD был сохранен DWG - файл ?
По первым шести байтам dwg-файла: https://en.wikipedia.org/wiki/.dwg
А точно ли по первым шести байтам ?

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Версия AutoCAD
« Ответ #7 : 18-12-2019, 15:00:54 »
А точно ли по первым шести байтам ?
Точно. Формат первых шести байт: ACNNNN. Будем считать от "AC1001" до "AC1032" на данный момент.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Версия AutoCAD
« Ответ #8 : 18-12-2019, 15:29:50 »
Понять не могу. Таким кодом считываю 6 начальных байт. Здесь FilePath - полное имя файла, а AcadVersion - переменная, в которую сохраняется значение. Некоторые файлы вообще ничего не передают в AcadVersion, точнее передают, но нули :
Код - Visual Basic [Выбрать]
  1.     Open FilePath For Binary Access Read As #1
  2.     Dim AcadVersion As Variant
  3.     AcadVersion = Input(6, #1)
  4.     MsgBox (AcadVersion)

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Версия AutoCAD
« Ответ #9 : 18-12-2019, 15:48:40 »
sangvinik128,
Может не Input. а Get ?
Код - Visual Basic [Выбрать]
  1. Open FilePath For Binary Access Read As #1
  2. Dim AcadVersion(6) As Byte
  3. Get #1,6, AcadVersion
  4. Close #1
(на VBA не пишу)

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

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Версия AutoCAD
« Ответ #10 : 18-12-2019, 15:53:21 »
sangvinik128,
Может не Input. а Get ?
Код - Visual Basic [Выбрать]
  1. Open FilePath For Binary Access Read As #1
  2. Dim AcadVersion(6) As Byte
  3. Get #1,6, AcadVersion
  4. Close #1
(на VBA не пишу)
Это был мой первый вариант, не удаётся, увы

Отмечено как Решение sangvinik128 18-12-2019, 15:59:59

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Версия AutoCAD
« Ответ #11 : 18-12-2019, 15:55:27 »
Нашел вот такую функцию:
Код - Visual Basic [Выбрать]
  1. Public Function GetDwgVersion(ByVal sFileName As String) As String
  2.   Dim hFile As Long
  3.   Dim bt12 As Byte
  4.  
  5.   hFile = FreeFile
  6.   Open sFileName For Binary As #hFile
  7.   Dim i As Integer, strVersion As String
  8.   For i = 1 To 6
  9.     Get #hFile, i, bt12
  10.     strVersion = strVersion & Chr(bt12)
  11.   Next i
  12.   Close #hFile
  13.   GetDwgVersion = strVersion
  14. End Function

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

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Re: Версия AutoCAD
« Ответ #12 : 18-12-2019, 15:59:52 »
Нашел вот такую функцию:
Код - Visual Basic [Выбрать]
  1. Public Function GetDwgVersion(ByVal sFileName As String) As String
  2.   Dim hFile As Long
  3.   Dim bt12 As Byte
  4.  
  5.   hFile = FreeFile
  6.   Open sFileName For Binary As #hFile
  7.   Dim i As Integer, strVersion As String
  8.   For i = 1 To 6
  9.     Get #hFile, i, bt12
  10.     strVersion = strVersion & Chr(bt12)
  11.   Next i
  12.   Close #hFile
  13.   GetDwgVersion = strVersion
  14. End Function

Проверяй.
Работает. Что же я неправильно делал, буду разбираться, спасибо Вам !

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Версия AutoCAD
« Ответ #13 : 18-12-2019, 16:13:41 »
Что же я неправильно делал
Второй параметр Get задаёт не количество байт, а номер байта в файле, с которого начинается чтение. А количество считываемых за один раз байт определяется размером переменной, в которую происходит считывание.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение