Новости Энциклопедия переводчика Блоги Авторский дневник Форум Работа

Декларация Поиск О нас пишут Награды Читальня Конкурсы Опросы








ГП-цитатник

Autocad -> Text -> TM -> Autocad

Autocad -> Text -> TM -> Autocad

Сообщение mikegor » Пт ноя 03, 2006 18:12

Я уже писал здесь об утилитке TRANS.VLX, которая конвертирует все текстовые блоки в текстовый файл (Хотел добавить в ту тему, да что-то не сумел ее отыскать). Файл можно потом перевести в любимой TM и импортировать обратно. Было бы это очень удобно, если бы не одно "но": текстовые блоки длиной более 231 символа экспортруются не полностью. Скажем, если блок имеет длину 241 символ, то длина блока вычисляется по модулю 231 и становится 241-231=10. В файл записываются только последние 10 символов блока. Можно проделывать некоторые манипуляции руками, чтобы это ограничение обойти. Понять причину такого поведения утилитки трудно за отсутствием исходника.
Сейчас я скачал еще одну аналогичную утилитку ТXTOUT, на сей раз в виде исходника. Проблема со "слишком длинными" блоками у нее точно такая же. Вот фрагмент исходника на Автолиспе, ответственный за сбор запись текстовых строк в файл:

Код: Выделить всё
   (prompt "\nPick text objects to export: ")             ;prompt to select text
;select only TEXT & MTEXT
   (setq SS2 (ssget '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")...)
         CTR2 0                                 ;initialize counter CTR2 to zero
         SSQTY2 (sslength SS2)                       ;find size of selection set
   )
   (repeat SSQTY2                                        ;repeat for each object
    (setq OBJD2 (entget (ssname SS2 CTR2))                  ;extract object data
          OBTXT2 (cdr (assoc 1 OBJD2))                     ;extract string value
          CTR2 (1+ CTR2)                                      ;increment counter
    )
    (write-line OBTXT2 FD2)                                ;write string to file
   )                                                                 ;end REPEAT


(Многоточием я заменил кусоче кода со знаком "больше". Тут уже у форумного скрипта проблемы. Он тогда превращает фрагмент кода от знака "меньше" до знака "больше" в <OR>)

Все, на первый взгляд, просто и понятно: выбрали TEXT и MTEXT, получили размер функцией sslength, записали размер в переменную SS2, извлекаем каждый такой объект в OBJD2, вытаскиваем из объекта текст в OBTXT2 и пишем в файл. Ну, и где же, спрашивается, сидит тут ограничение на длину? Вроде бы в ЛИСПе целые числа не однобайтовые. Кто знает?
An Arbeitsplätzen kann es laut zugehen. Verlassen Sie sich nicht auf verbale Kommunikation!
Аватара пользователя
mikegor

 
Сообщения: 2333
Зарегистрирован: Пт дек 02, 2005 20:47
Откуда: Moscow
Язык(-и): нем-рус,дат-рус





Сообщение mikegor » Сб ноя 04, 2006 19:46

А в ответ - тишина...
Тем временем уже сам разобрался, так что продолжаю свои монологи об Autocad-е. Если просто заглянуть в файл, сохраненный в DXF-формате, то все становится понятно. Вот как выглядит там блок MTEXT:
Код: Выделить всё
AcDbMText
10
339.1489258212072
20
170.6206351972266
30
0.0
40
2.7
41
0.0
71
     1
72
     5
  3
\Fisocp.shx|c0;\C3;Seitliches Mannloch mit 2 Schaugl\U+00e4ser\P\P\C2;zur Beobachtung der Schichtentrennung\Pvon Sand und Hydroanthrazit H bei der \PFiltersp\U+00fclung. \PSowie insbesondere zur Beobachtung der \PAusdehnung der unteren Filterschicht
  1
(Sand) \Pum mindestesns 10 % nach DIN 19643.
  7
ISO8

Блок разбит на части. С разбивкой на строки это никак не связано, а, видимо, просто внутренняя фишка программы. 3 перед текстовым фрагментом означает, что он не последний, а 1 - последний (или единственный). Вот именно последний кусок, в данном случае "(Sand) \Pum mindestesns 10 % nach DIN 19643." (\P - это знак параграфа) и экспортируют TRANS.VLX и TXTOUT. Я посмотрел разные форумы по Лиспу, но удивительным образом эта проблема нигде не всплыла (по крайней мере, мне найти ее упоминание не удалось).
Если два (в данном примере) текстовых фрагмента объединить в одну строку и поставить перед ней 1, то Autocad правильно прочитает этот файл, но, прочитав, все равно упрямо разделит эту строку на свои фрагменты по 231 символу. Поэтому, вопреки моим надеждам, такая коррекция файла DXF не решает проблему. Однако, несложно написать свой собственный парсер, который будет, аналогично TRANS.VLX, сбрасывать текстовые объекты в файл, аккуратно собирая все такие фрагменты в одну строку и добавляя перед каждой строкой ее идентификатор. Ничего не стоит также добавить перекодирование всех тэгов \U+XXXX в юникодовские символы (для этого у меня уже и раньше был скрипт).
Так что займусь написанием своей, правильной, утилиты.
An Arbeitsplätzen kann es laut zugehen. Verlassen Sie sich nicht auf verbale Kommunikation!
Аватара пользователя
mikegor

 
Сообщения: 2333
Зарегистрирован: Пт дек 02, 2005 20:47
Откуда: Moscow
Язык(-и): нем-рус,дат-рус

Сообщение mikegor » Вс ноя 05, 2006 20:10

И несколько слов в завершение: написал я свою собственную утилиту, которая читает DXF-файл, выбирает из него все текстовые объекты (TEXT и MTEXT), подставляет юникодовские символы и записывает в файл. И сделал также вторую утилиту, которая делает обратное: читает исходный DXF-файл и текстовой файл, в котором строки все уже переведены, и подставляет переводы строк в текстовые объекты. Проверил на своих чертежах - все работает правильно, полученные DXF-файлы нормально открываются. Получилось даже лучше, чем TRANS.VLX, потому что моя утилитка выбирает все текстовые объекты, а не только с открытой вкладки.
An Arbeitsplätzen kann es laut zugehen. Verlassen Sie sich nicht auf verbale Kommunikation!
Аватара пользователя
mikegor

 
Сообщения: 2333
Зарегистрирован: Пт дек 02, 2005 20:47
Откуда: Moscow
Язык(-и): нем-рус,дат-рус

Сообщение Andrej » Вс ноя 05, 2006 20:17

mikegor, жаль, что раньше я не видел эту тему. Какой вы молодец, однако!
К сожалению, из-за разногласий с администрацией я более не участвую в работе данного форума и сайта и ничем не могу вам помочь. Поэтому прошу не писать мне личных сообщений на форуме, если надо, обращайтесь через эл. почту.
Andrej

 
Сообщения: 6416
Зарегистрирован: Вт авг 05, 2003 14:49

Сообщение mikegor » Вс ноя 05, 2006 20:44

Спасибо, Andrej! Наконец-то, тема нашла отклик, а то я тут все тихо сам с собою беседу вел. Мне довольно часто приходится переводить чертежи Autocad, ради этого я и освоил Транзит, что для меня неудобно, поскольку базы у меня все основные в Традосе. А теперь можно переводить Традосом, по-нормальному в Ворде, а не при помощи T-Window for Clipboard, у которой есть два недостатка: 1) перевод сразу замещает исходный текст, и если потом захочешь что-то поменять (да еще и занести в базу), то надо лезть в оригинальный файл и вытаскивать оттуда исходный текст. 2) перехватывает Ctrl-C, и Лингво по Ctrl-C Ctrl-C не вызвать, и фрагмент по-нормальному не скопировать, например, в поисковик.
An Arbeitsplätzen kann es laut zugehen. Verlassen Sie sich nicht auf verbale Kommunikation!
Аватара пользователя
mikegor

 
Сообщения: 2333
Зарегистрирован: Пт дек 02, 2005 20:47
Откуда: Moscow
Язык(-и): нем-рус,дат-рус

Сообщение Andrej » Вс ноя 05, 2006 20:54

Так а текст вытаскивается со всех слоев, вы проверяли?

А традосные базы без особых проблем перевариваются в транзитные, правда, в транзите и традосе надо будет подумать над правилами сегментации, но 100% совпадения баз все равно не добиться (именно из-за правил). Жаль, конечно. Стандарт обмена правилами сегментации давно есть, да что-то не торопятся разработчики такую фичу ставить в свои программы.
К сожалению, из-за разногласий с администрацией я более не участвую в работе данного форума и сайта и ничем не могу вам помочь. Поэтому прошу не писать мне личных сообщений на форуме, если надо, обращайтесь через эл. почту.
Andrej

 
Сообщения: 6416
Зарегистрирован: Вт авг 05, 2003 14:49

Сообщение mikegor » Вс ноя 05, 2006 21:15

Andrej писал(а):Так а текст вытаскивается со всех слоев, вы проверяли?

В моих тестовых файлах вытащился изо всех. Да и не должно быть причин для проблем со слоями. Впрочем, можно провести независимый тест: если у Вас есть на примете какой-нибудь несекретный файл со сложным оформлением, можете его выложить куда-нибудь, а я его прогоню через свою утилиту и предъявлю результат.
An Arbeitsplätzen kann es laut zugehen. Verlassen Sie sich nicht auf verbale Kommunikation!
Аватара пользователя
mikegor

 
Сообщения: 2333
Зарегистрирован: Пт дек 02, 2005 20:47
Откуда: Moscow
Язык(-и): нем-рус,дат-рус

Сообщение Andrej » Вс ноя 05, 2006 21:24

Не могу :-(. То, что есть, оно под NDA.
К сожалению, из-за разногласий с администрацией я более не участвую в работе данного форума и сайта и ничем не могу вам помочь. Поэтому прошу не писать мне личных сообщений на форуме, если надо, обращайтесь через эл. почту.
Andrej

 
Сообщения: 6416
Зарегистрирован: Вт авг 05, 2003 14:49

Сообщение mikegor » Вс ноя 05, 2006 21:35

Жалко. Но я попробую еще на своих файлах. Текст вытаскивается, кстати, еще и из объектов. Потому что формат текстового блока везде одинаков.
Утилиткой, если кого заинтересовало, могу поделиться (с обычными оговорками: as is). Вот только она на Perl-е, а он не у всякого есть...
Это я просто вплотную сейчас занялся изучением Perl-а. Очень полезная вещь. Вот с помощью Perl-а и несколько словарей для Лингво сконвертировал, и вот эту утилиту написал.
An Arbeitsplätzen kann es laut zugehen. Verlassen Sie sich nicht auf verbale Kommunikation!
Аватара пользователя
mikegor

 
Сообщения: 2333
Зарегистрирован: Пт дек 02, 2005 20:47
Откуда: Moscow
Язык(-и): нем-рус,дат-рус

Сообщение mikegor » Вс ноя 05, 2006 23:16

А впрочем, удалось сейчас разжиться Perl2exe, так что могу и exe-шники делать. В общем, заживем теперь :-)
An Arbeitsplätzen kann es laut zugehen. Verlassen Sie sich nicht auf verbale Kommunikation!
Аватара пользователя
mikegor

 
Сообщения: 2333
Зарегистрирован: Пт дек 02, 2005 20:47
Откуда: Moscow
Язык(-и): нем-рус,дат-рус

Сообщение АлександрC » Пн ноя 06, 2006 13:58

Разве возможно адекватно перевести чертёж не видя самого чертежа?
У меня самого это чуть ли не основное занятие.
Тут не столько перевода, сколько редактирования, чтобы уместить текст. Часто попадаются неоднозначные сокращения.
Держать перед глазами твёрдую копию, то же не выход. Попробуйте на перегруженном геометрией и текстом А0 найти PLC, например (что далеко не всегда ПЛК, особенно на чертеже системы канализации).
АлександрC

 
Сообщения: 518
Зарегистрирован: Вт дек 21, 2004 19:43
Откуда: Эстония

Сообщение АлександрC » Пн ноя 06, 2006 14:01

Очень часто требуется, чтобы чертёж был на двух языках, при одноязычном оригинале.
АлександрC

 
Сообщения: 518
Зарегистрирован: Вт дек 21, 2004 19:43
Откуда: Эстония

Сообщение mikegor » Пн ноя 06, 2006 17:29

АлександрC писал(а):Разве возможно адекватно перевести чертёж не видя самого чертежа?

Разумеется, нельзя. Но что Вам мешает открыть оригинал чертежа в Автокаде и посмотреть? Я обычно при переводе экспортированного файла всегда держу открытым и сам чертеж, а после импорта переведенных строк обязательно привожу чертеж в божеский вид, чтобы выглядел красиво и строки никуда не налезали. Терпеть не могу халтуры.
АлександрC писал(а):Очень часто требуется, чтобы чертёж был на двух языках, при одноязычном оригинале.

У меня такого не требовалось. Но опять же ничто не мешает Вам оставить в текстовых строках и оригинальный текст, и перевод.
An Arbeitsplätzen kann es laut zugehen. Verlassen Sie sich nicht auf verbale Kommunikation!
Аватара пользователя
mikegor

 
Сообщения: 2333
Зарегистрирован: Пт дек 02, 2005 20:47
Откуда: Moscow
Язык(-и): нем-рус,дат-рус

Сообщение Bart » Чт ноя 16, 2006 01:03

mikegor писал(а):А впрочем, удалось сейчас разжиться Perl2exe, так что могу и exe-шники делать. В общем, заживем теперь :-)


Добрый вечер!
Я имею примерно полугодовой опыт общения с утилитой Trans.vlx

Поэтому очень хотел бы посмотреть на exe'шник Вашей утилиты (если он уже есть).

Заранее большое спасибо.
Аватара пользователя
Bart

 
Сообщения: 13
Зарегистрирован: Сб ноя 11, 2006 19:16

Сообщение mikegor » Чт ноя 16, 2006 02:23

В принципе уже есть. Я тогда его подготовлю, кое-что еще подправлю и выложу на какой-нибудь файлообменник.
An Arbeitsplätzen kann es laut zugehen. Verlassen Sie sich nicht auf verbale Kommunikation!
Аватара пользователя
mikegor

 
Сообщения: 2333
Зарегистрирован: Пт дек 02, 2005 20:47
Откуда: Moscow
Язык(-и): нем-рус,дат-рус

Сообщение mikegor » Чт ноя 16, 2006 03:56

http://slil.ru/23413410
файл: DXF.rar
пароль: trworkshop

В файле находятся две утилиты dxf2txt.exe и txt2dxf.exe и описаловка dxf.txt (по-английски, за что просьба сильно не пинать :lol: ).
An Arbeitsplätzen kann es laut zugehen. Verlassen Sie sich nicht auf verbale Kommunikation!
Аватара пользователя
mikegor

 
Сообщения: 2333
Зарегистрирован: Пт дек 02, 2005 20:47
Откуда: Moscow
Язык(-и): нем-рус,дат-рус

Сообщение Bart » Чт ноя 16, 2006 15:10

[quote="mikegor"]http://slil.ru/23413410
файл: DXF.rar
пароль: trworksho

Большое спасибо за оперативный ответ! :-)
Аватара пользователя
Bart

 
Сообщения: 13
Зарегистрирован: Сб ноя 11, 2006 19:16

Сообщение Бродяга » Чт ноя 16, 2006 15:33

Простите, задам глупый вопрос - а кто-нибудь пробовал открывать файлы DXF напрямую в Транзите XV?
А потом уже поздно было редактировать. © bagira:)
Аватара пользователя
Бродяга

 
Сообщения: 4948
Зарегистрирован: Ср дек 07, 2005 13:34

Сообщение Andrej » Чт ноя 16, 2006 15:55

mikegor, а нельзя ли для полного счастья выложить где-нибудь исходники на Перле?
К сожалению, из-за разногласий с администрацией я более не участвую в работе данного форума и сайта и ничем не могу вам помочь. Поэтому прошу не писать мне личных сообщений на форуме, если надо, обращайтесь через эл. почту.
Andrej

 
Сообщения: 6416
Зарегистрирован: Вт авг 05, 2003 14:49

Сообщение Бродяга » Чт ноя 16, 2006 16:03

Ещё раз простите за глупый вопрос - уже нашёл на него ответ выше.

Позвольте задать несколько менее глупый вопрос - ну и как там в Транзите с DXF, можно работать, или есть какие-то тараканы? Кроме, конечно, неудобства работы с базами.
А потом уже поздно было редактировать. © bagira:)
Аватара пользователя
Бродяга

 
Сообщения: 4948
Зарегистрирован: Ср дек 07, 2005 13:34

След.


Словари русского языка

www.gramota.ru
Словарь Мультитран
Язык

Вернуться в Полезное программное обеспечение. Аллея Бродяги

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14