|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
03.09.2016, 03:49 | #1 | |
Dataextraction. Изменение ссылки на dwg файл.
ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
Торонто
Регистрация: 23.10.2007
Сообщений: 1,980
|
||
Просмотров: 5934
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Red Nova, поскольку вопрос в "Программировании", показывай свой код.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,053
|
Нефига нет. Один из первых трех результатов поиска на форуме по "dxe"
|
|||
|
||||
Цитата:
То есть если продолжить на примере из первого поста. Как помним там мы уже имеем "Чертеж-1" и "Чертеж-2". (В "Чертеже-2" dataextraction отображает информацию о "Чертеже-1"). Беру любой другой готовый чертеж, переименовываю его в "Чертеж-1". Удаляю старый "Чертеж-1" и вставляю на его место новый. При этом в "Чертеже-2" при обновлении dataextraction данные отображаются о объектах в подмененном "Чертеже-1". Таким образом выясняем, что файлам dataextraction (dxe) безразлично есть о них информация в чертеже или нет. Их интересует только адрес и название чертежа. Разве Dictedit может чем-то в данном вопросе помочь? Или я что-то пропустил? Последний раз редактировалось Red Nova, 04.09.2016 в 00:11. |
||||
|
||||
Экспериментируя с файлами dataextraction обнаружил, что даже если просто открыть dxe файл в блокноте и не изменяя ничего сохранить файл - то таблица в каде перестает распознавать dxe файл. При этом переименование на распознавание не влияет. Получается что при распознавании связи с dxe файлами акад сверяет кроме пути и имени файла также и дату изменения документа.
Копаем дальше Последний раз редактировалось Red Nova, 04.09.2016 в 02:12. |
||||
|
||||
Попробовал после сохранения сжульничать и при помощи BulkFIleCHanger поменять дату сохранения обратно. Не помогло.
Оригинальный и файл dxe и файл описанный в #9 (тот что сохранен блокнотом не изменяя ничего в нем) по содержанию полностью идентичны (проверял). Свойства после редактирования даты сохранения в BulkFIleCHanger также совпадают (разница только в дате создания, но тут нет разницы, ведь скопированный в бекап файл имея новую дату создания после переименования работает нормально). Блокнот++ показывает что система кодирования для обоих ANSI. Кто решит загадку, чем еще могут отличаться два таких файла? Ведь один из них распознается как dataextraction а второй - нет. Прикрепляю их и файл на который они ссылаются. Перед проверкой нужно переименовать нерабочий файл dxe в Таблица-1. |
||||
|
||||
Получилось, спасибо Сергей812 за наводку!
До того я сохранял файл обычным блокнотом. При этом, как оказалось, он заменял все символы NUL на пробел. Не знаю с чем именно это связанно, но факт (наверное все таки кодировка, хотя и Notepad++ выдает для обоих ANSI). Моя проверялка этого не замечала. Но стоит открыть оба файла в Notepad++ как на первом же символе в файле видна подмена. Теперь можно вернуться к первому посту Уже в Notepad++ провел Find and Replace всех упоминаний о Чертеже-1 на Чертеж-2. Notepad++ правда показывает кириллицу кракозядрами, но это не важно. Было: D:\BMP Sep 02\CADA\Чертеж-1.dwg \Чертеж-1.dwg d:\bmp sep 02\cada\чертеж-1.dwg Стало: D:\BMP Sep 02\CADA\Чертеж-2.dwg \Чертеж-2.dwg d:\bmp sep 02\cada\чертеж-2.dwg После этого все заработало. В Чертеже-2 таблица теперь отображает данные о объектах в Чертеже-2, как и требовалось. (и менять дату сохранения не потребовалось) Таким образом вырисовывается необходимый код для обновления всех ссылок dataextraction на текущий чертеж. В папке с чертежом нужно найти все dxe файлы, открыть их, найти в них упоминания об исходном файле и заменить на путь с открытому файлу. Сохранение провести так, чтобы с кодировкой ничего не поменялось. Вопрос программистам. Такое вообще возможно из акада? |
||||
|
||||
Тогда помогайте код настругать
Вот что у меня пока получилось. Код:
|
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,053
|
а удастся ли вообще лиспом корректно прочитать данный файл dxe? У лиспа вижу две команды - прочитать строку и прочитать символ. Попробуйте натравить свой код, изменив просто на чтение строки-вывод в костроку и посмотреть-будет ли что то осмысленное выходить на отдельных строчках.
|
|||
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Цитата:
А так как вариант можно 1. Попробовать заменить текст с помощью соответствующей программы, например UV FilesCorrector 2. Read/Write Binary Files About read and write binary file Read / Write Stream
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Продолжая развитие кода с #17...
Как я понял, одновременно читать и писать в один и тот же файл проблематично. Я сделал код который копирует содержание одного текстового файла в другой (в пустой шаблон) и при этом заменяет искомое текстовое значение (ХХХ в примере) на новое (YYY). Код работает с файлами txt. К сожалению с dxe файлом не прокатило. Обработались только несколько строчек. Код:
VVA Русский в наименованиях файлов dwg и dxe тут не при чем. Первые тесты что я делал были полностью с английскими файлами. И естественно все мои рабочие файлы также будут на инглише. Я использовал русский только для примера на форуме, так сказать из солидарности )). Другой вопрос что я в винде выставил язык русский, иначе все имеющиеся у меня лиспы с кириллицей (и многое другое) отображались кракозябрами. Уж не знаю точно что на что нам влияет. Мои познания в системах кодирования уж больно скромны. По пункту 1. Ранее я пробовал использовать Ecobyte Replace Text для данной цели, и пользы не было (хотя может я и сам напортачил). Сейчас попробовал с UV FilesCorrector и все получилось. Так что можно считать что с применением сторонней отдельной программы вопрос решен. Естественно это не самое удобное решение и хотелось бы иметь функцию в акаде. Но иемя действительно много dxe файлов - это действительно облегчает труд. Кстати, обнаружил, что вместо ранее предполагаемых трех операций find and replace достаточно произвести две, так как адрес файла прописанный в lower case (сорри не помню как по русски) может быть заменен и обычным путем, на результат это не влияет (то есть вместо строки d:\ .....папка-2\чертеж-2.dwg можно записать на D:\ .....Папка-2\Чертеж-2.dwg). По пункту 2. Не пойму пока как использовать функции по ссылке с твоего поста LM:WriteBinaryStream и LM:ReadBinaryStream ? Вот моя нерабочая версия․ Пока эксперименты на файлах txt (txt ведь тоже по сути текставой а не бинарный файл, но ведь это тут не важно?) Код:
Последний раз редактировалось Red Nova, 05.09.2016 в 07:07. |
||||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменение всех стилей текста чертежа, включая внешние ссылки на выбранный? | Strannyk | Программирование | 9 | 19.07.2016 17:28 |
Как записать данные в файл, находящийся на удалённом компьютере? | Makswell | Программирование | 10 | 09.07.2015 09:05 |
Одновременное изменение внешней ссылки в несколиких файлах. | shartal | AutoCAD | 1 | 23.04.2015 15:51 |
Программное переименование внешней ссылки. | Yura Agafonov | Программирование | 2 | 01.09.2014 09:57 |
файл в нанокаде и в автокаде, путаница | E.D. | AutoCAD | 2 | 24.10.2008 09:56 |