Непосредсственная замена текста в файле компаса

Автор feron, 02.07.18, 16:26:19

« назад - далее »

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

feron

Приветствую, есть файл Фрагмент.frw версии компаса 5 и в нем есть например тест "%ур" и его хочу заменить программно на "10.01".
открываю сам файл в текстовом редакторе и этот текст виден(только в 5 версии)

далее провожу замену


Dim lines() As String = IO.File.ReadAllLines(С:\test\Фрагмент.frw, System.Text.Encoding.Default)
For i As Integer = 0 To lines.Length - 1
If lines(i).Contains("%ур") Then
lines(i).Replace("%ур", "10.01")
End If
Next
IO.File.WriteAllLines(С:\test\Фрагмент.frw, lines)


после чего выходит ошибка - неверная труктура файла...

раньше я в текстовом редакторе менял - и все работало а сейчас не пойму почему перестало...

feron

установил Notepad++ и провел замену в нем - все работает.
нашел ошибку - после сохранения файла из кода - меняется кодировка на UTF-8 в файле. А в изначальном файле - Notepad++ не смог определить кодировку.

feron

кодировка - mac-cyrillic


Dim macC As System.Text.Encoding = System.Text.Encoding.GetEncoding("x-mac-cyrillic")
        Dim UTF8 As System.Text.Encoding = System.Text.Encoding.UTF8

        Dim utf8Byte() As Byte = UTF8.GetBytes(строка_файла)
        Dim macCByte() As Byte = System.Text.Encoding.Convert(UTF8, macC, utf8Byte)

        Dim msg As String = macC.GetString(macCByte)


не решает вопрос

feron

#3
" НО - исходное значение должна иметь одинаковое кол-во символов с новым значением. "
решается добавлением пробелов из вероятного интервала числа символов в исходном файле

вопрос - закрыт всем спасибо.

Sprinter500

Цитата: feron от 02.07.18, 16:58:52
установил Notepad++ и провел замену в нем - все работает.
нашел ошибку - после сохранения файла из кода - меняется кодировка на UTF-8 в файле. А в изначальном файле - Notepad++ не смог определить кодировку.


Подскажите пожалуйста, а как Вы из под Notepad++ смогли увидеть текст содержащийся в файле фрагмента Компаса? У меня кроме крякозабр ничего не выводит. А так в принципе было бы удобно в некоторых случаях менять текст в чертежах редактируя файл извне.

feron

Цитата: Sprinter500 от 18.08.19, 16:14:11

Подскажите пожалуйста, а как Вы из под Notepad++ смогли увидеть текст содержащийся в файле фрагмента Компаса? У меня кроме крякозабр ничего не выводит. А так в принципе было бы удобно в некоторых случаях менять текст в чертежах редактируя файл извне.

Там не обязательно нужен Notepad++ - достаточно просто в блокноте открыть сам файл компаса - есть одно НО - файл должен быть 5 версии компаса
и еще нужно замену проводить при условии что новое слово по кол-ву символов будет равной или меньше иначе выйдет ошибка.
к примеру я поступал так - писал само слово плюс добавлял пробелы так я резервировал кол-во символов.

еще как удобно))) я раньше часто использовал параметризацию - если чертеж не большой с количеством примитивов менее 100 то чертеж перестраивался а если более 1000 - там одни траблы...
и просто к примеру присваиваю идентификатор размеру и далее заменяю - и чертежи отлично перестраиваются. И текст в местах где средствами АПИ функции не достать да и ...

Sprinter500

Цитата: feron от 18.08.19, 21:24:36
Там не обязательно нужен Notepad++ - достаточно просто в блокноте открыть сам файл компаса - есть одно НО - файл должен быть 5 версии компаса
и еще нужно замену проводить при условии что новое слово по кол-ву символов будет равной или меньше иначе выйдет ошибка.
к примеру я поступал так - писал само слово плюс добавлял пробелы так я резервировал кол-во символов.

еще как удобно))) я раньше часто использовал параметризацию - если чертеж не большой с количеством примитивов менее 100 то чертеж перестраивался а если более 1000 - там одни траблы...
и просто к примеру присваиваю идентификатор размеру и далее заменяю - и чертежи отлично перестраиваются. И текст в местах где средствами АПИ функции не достать да и ...

Эх. жалко что только в 5-й версии. Ведь при сохранении в версию 5.11 многое разрушается.

feron

Цитата: Sprinter500 от 19.08.19, 11:19:29
Эх. жалко что только в 5-й версии. Ведь при сохранении в версию 5.11 многое разрушается.

проверьте, там должно все отображаться