|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как редактировать .pc3
что хочу, то и делаю
Регистрация: 30.06.2014
Сообщений: 119
|
||
Просмотров: 5337
|
|
||||
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Вот ссылка: http://www.theswamp.org/index.php?topic=41529.0 , там на F# , но вполне себе переписывается на VB.NET или C#. По крайней мер, я проверял код на VB.net и он работал.
По сути, там просто заголовок и начиная с 60-го байта Zip архив... Вот этот вот файл C:\ProgramData\Autodesk\ACA 2014\enu\Plotters\Default Windows System Printer.pc3 внутри содержит: ![]() Удачи. Последний раз редактировалось Boxa, 10.10.2014 в 15:33. |
|||
![]() |
|
||||
Разобрать и посмотреть - это несложно. А вот изменить, собрать обратно и чтобы AutoCAD это "скушал" потом - задачка весьма неординарная!
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
что хочу, то и делаю Регистрация: 30.06.2014
Сообщений: 119
|
Boxa
Подскажите, как на vba прочитать файл с 60го байта. Вроде Get #1, 60, varname. Но вылетает ошибка, какой должен быть тип у varname? И как его разархивировать на vba? Последний раз редактировалось Linkor, 14.10.2014 в 15:09. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Linkor, Я на VBA очень давно не писал, но думаю алгоритм примерно такой:
1. Читаем файл(http://www.sql.ru/forum/601640/prime...-fayla-v-ciklk) 2. Получаем массив байт 3. Сохраняем во временный файл с 60 байта и до конца 4. Запускаем архиватор командной строкой, где в параметрах указываем временный файл и куда распаковывать (http://www.cyberforum.ru/vba/thread786897.html) 5. Читаем распакованные данные. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Там же была ссылка http://www.cyberforum.ru/cmd-bat/thr...ml#post3685838
|
|||
![]() |
|
||||
что хочу, то и делаю Регистрация: 30.06.2014
Сообщений: 119
|
К сожалению, да не программист я, чтобы вот так прям разобраться
Когда мы делаем временный файл, его надо сохранять как .zip? Вот чито получается Sub readfpc3() Dim fso Dim S As String Set fso = CreateObject("Scripting.FileSystemObject") ' Set objShell = CreateObject("Shell.Application") folder = "C:\Users\ternovykh.MOSTDORPROEKT\AppData\Roaming\Autodesk\C3D 2015\rus\Plotters\" FN = folder + "HP127 2200 x 914.pc3" FN1 = folder + "HP127 2200 x 914.rar" Set ts = fso.OpenTextFile(FN, 1) Set ts1 = fso.OpenTextFile(FN1, 2, True) Open FN For Binary As #1 L = FileLen(FN) S = Space(L) Get #1, 60, S ' Read next record. Dim F As Long For F = 1 To L ts1.write Mid(S, F, 1) Next F Shell "C:\Program Files (x86)\WinRAR\WinRAR.exe -e -o " & FN1 & " " & folder Close #1 ' Close file. End Sub Но распаковать не получается, пишет архивы не найдены ( Последний раз редактировалось Linkor, 14.10.2014 в 17:05. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Разбирайтесь не с наскока, а планомерно. Все получится.
zip, не zip, не принципиально. PS/ Цитата:
Код:
Как это сделать в VBA даже разбираться не буду, если интересно ищите. И еще, как называть файл, zip или rar, не имеет значения, а вот каким архиватором открывать, я думаю это важно. В частности, я пользовался вот этой сборкой http://dotnetzip.codeplex.com/ Удачи. ЗЫЫ. И это проблемки только с чтением этого файла, что там дальше, представить сложновато, но я думаю это для Вас будет очень увлекательно и позволит поднять уровень владения VBA на достаточную высоту. Удачи. Последний раз редактировалось Boxa, 14.10.2014 в 18:29. |
|||
![]() |
|
||||
Схема проста:
Чтение файла - Распаковка - Парсинг - Внесение желаемых изменений - Обратное преобразование - Запаковка - Запись файла Но чтение-распаковка - действительно не самое сложное... Если интересно - Алексей aka bargool показывал чью-то уже готовую дотнетовскую библиотеку для этого, исходники лежат в свободном доступе на GitHub.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic) |
||||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Так для .net проблемы то нет, вполне рабочий код в 4 сообщение, проблема все это на VBA переписать =)
На данном этапе, собственно проблема в том, что отрезаем запакованные данные и нужно каким то образом из них сформировать кондиционный файл архива. Содержащий заголовок, список файлов, контрольную сумму и прочее. а потом все это распаковать. Затем отредактировать текстовый файл и запаковать не проблема. Следующая сложность это выпилить из полученного архива именно запакованные данные без заголовков и прочего мусора. А затем опять просто, дописать заголовок pc3 файла и .... ВСЁ. Дело за малым, открыть стандарт zip архива и изучить... Начать можно от сюда: http://blog2k.ru/archives/3391 По крайней мере, я вижу всю эту историю именно так. ----- добавлено через ~2 ч. ----- Цитата:
Подумалось, что есть другой путь, создать консольную утилитку на .net и вызывать её из любой среды. Попробовал, результаты "изысканий" тут: https://github.com/BoxaShu/unzip_pc3 Работает как то так: Цитата:
Все правильно теперь работает, можно через Shell распаковать pc3, поправить текстовый файлик так, как Вам нужно, затем запаковать его и передать AutoCAD-у. Удачи в работе. Последний раз редактировалось Boxa, 16.10.2014 в 11:28. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопросы по работе системы RuCAD | Олег К. | Прочее. Программное обеспечение | 142 | 17.09.2019 05:06 |
Не могу в Autocad редактировать чертеж, экспортированный из AllPlan | rouble | Прочее. Программное обеспечение | 4 | 30.03.2017 12:39 |
Как редактировать объемные элементы из вида "сверху" . Вопрос начинающего. | fendermax | AutoCAD | 5 | 24.07.2013 13:03 |
Layout. Как редактировать, сохранять? | kozaki | AutoCAD | 5 | 03.06.2013 20:34 |
Файл сохранен тока для просмотра можно ли его редактировать | Анальный пират | AutoCAD | 3 | 17.02.2008 06:01 |