Поиск русских букв в чертежах на английском языке.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Поиск русских букв в чертежах на английском языке.

Поиск русских букв в чертежах на английском языке.

Ответ
Поиск в этой теме
Непрочитано 10.12.2010, 11:54 #1
Поиск русских букв в чертежах на английском языке.
dpmoucpi
 
Киев
Регистрация: 25.11.2010
Сообщений: 29

Добрый день.
Появилась такая проблема:
Чертежи необходимо сдавать на английском языке. У заказчика установлена система которая проверяет чертежи (вплоть до толщины линии) и если на чертеже есть буквы на русском языке она их не принимает.
То-ли в силу своей не внимательности или по другой причине но проектировщики иногда вводят русские буквы вместо английских.
Кто может подсказать как бы так находить русские буквы на чертежах?
Просмотров: 22542
 
Непрочитано 10.12.2010, 12:08
#2
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


_.find ?
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 10.12.2010, 12:25
#3
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


а что искать тогда?
dpmoucpi вне форума  
 
Непрочитано 10.12.2010, 12:28
#4
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


Русские буквы, что ж еще...
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 10.12.2010, 12:32
#5
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


пример...
dpmoucpi вне форума  
 
Непрочитано 10.12.2010, 12:35
#6
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


_find а, б, в .... и так 33 раза
а ещё можно весь алфавит ввести абвгд....эюя
Хмурый вне форума  
 
Непрочитано 10.12.2010, 12:38
#7
Солидворкер
Moderator

Конструктор (машиностроение)
 
Регистрация: 23.10.2006
Россия
Сообщений: 23,267
<phrase 1=


Цитата:
Сообщение от Лиспер Посмотреть сообщение
или по другой причине
Подрывную деятельность ведут, наверное.
В винде запретить смену раскладки на русскую.
Солидворкер вне форума  
 
Непрочитано 10.12.2010, 12:55
#8
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от dpmoucpi Посмотреть сообщение
Кто может подсказать как бы так находить русские буквы на чертежах?
Наверное можно сделать программную замену русских букв...
В текстах это сравнительно просто.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 10.12.2010, 12:59
#9
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Это неизвестно - в текстах у них буквы, в атрибутах, в выносках или еще в чем...
Do$ вне форума  
 
Непрочитано 10.12.2010, 13:29
#10
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от Do$ Посмотреть сообщение
Это неизвестно - в текстах у них буквы, в атрибутах, в выносках или еще в чем...
Вот и я про то...
Пусть тогда заказывают Александру Ривилису программу типа DWGConvert
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 10.12.2010, 13:33
#11
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Alan Посмотреть сообщение
Пусть тогда заказывают Александру Ривилису программу типа DWGConvert
Запросто. Дорого не возьму - кризис.
Александр Ривилис вне форума  
 
Непрочитано 10.12.2010, 13:52
#12
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


Тогда я даже пытаться не буду Хотя часть кода уже есть
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 10.12.2010, 13:57
#13
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от Лиспер Посмотреть сообщение
Хотя часть кода уже есть
У меня тоже, только программа типа DWGConvert работает лучше.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 10.12.2010, 14:01
#14
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Лиспер Посмотреть сообщение
Тогда я даже пытаться не буду Хотя часть кода уже есть
Ну почему же. Попробуй. И учти несколько нюансов. Кроме текстов в примитивах (про атрибуты, определения атрибутов, размерные тексты и т.д. я не упоминаю), нужно еще залезть во все блоки и ту же процедуру проделать в них. Плюс листы. Плюс проверить/изменить наименования всех именованных объектов (слои, блоки, типы линий, листы...) А еще все "\U+XXXX", "\M+YYYYY". В действительности в общем случае задача не такая уж тривиальная.
Александр Ривилис вне форума  
 
Непрочитано 10.12.2010, 14:02
#15
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


Конечно лучше! А, черт с ним, терзайте.
Код на работу не проверялся вообще.
Блоки не переименовывал. Листы тоже. Про таблицы просто забыл. Некогда
---
Добавлено: навалилась срочная работа, поэтому код не доделан в части вывода списка ошибок.
---
Добавлено 2: хоть бы откомментировали, что ли
Вложения
Тип файла: lsp rus2eng.lsp (10.8 Кб, 88 просмотров)
__________________
(/= RegDate StartReadDate)

Последний раз редактировалось Лиспер, 10.12.2010 в 16:32.
Лиспер вне форума  
 
Автор темы   Непрочитано 10.12.2010, 15:38
#16
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


а как его запускать?))
dpmoucpi вне форума  
 
Непрочитано 10.12.2010, 15:41
#17
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


http://dwg.ru/pub/9
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 10.12.2010, 15:47
#18
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,182


Цитата:
Сообщение от dpmoucpi Посмотреть сообщение
У заказчика установлена система которая проверяет чертежи (вплоть до толщины линии) и если на чертеже есть буквы на русском языке она их не принимает.
А потребовать эту систему себе в рамках договора уже поздно?...или еще нет? Или это обычная проверялка стандартов из базового комплекта Акада?)))
kp+ на форуме  
 
Непрочитано 10.12.2010, 15:48
#19
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


dws не проверяет содержимое текстовых примитивов
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 10.12.2010, 16:31
#20
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Цитата:
Сообщение от kp+ Посмотреть сообщение
А потребовать эту систему себе в рамках договора уже поздно?...или еще нет? Или это обычная проверялка стандартов из базового комплекта Акада?)))
Потребовали, ждём, но чертежи выдавать то надо)))

Файл rus2eng.lsp (10.8 Кб, 2 просмотров)
не работает, пишет: "ошибка: слишком много аргументов"

Последний раз редактировалось dpmoucpi, 10.12.2010 в 17:20. Причина: Добавление информации
dpmoucpi вне форума  
 
Непрочитано 10.12.2010, 20:21
#21
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


А можно поклянчить образец? Я попробую найти время на поковырять код.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 11.12.2010, 13:21
#22
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Цитата:
Сообщение от Лиспер Посмотреть сообщение
А можно поклянчить образец? Я попробую найти время на поковырять код.
Образец вот такой.
Вложения
Тип файла: dwg
DWG 2007
obrazec.dwg (295.2 Кб, 1232 просмотров)
dpmoucpi вне форума  
 
Непрочитано 11.12.2010, 14:58
#23
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Код:
[Выделить все]
  (defun fun_replace (str)
    (foreach item replace
      (setq str (_lsp-conv-list-to-string
                  (_lsp-conv-string-to-list (car item))
                  (cdr item)
                  ) ;_ end of _lsp-conv-list-to-string
            ) ;_ end of setq
      ) ;_ end of foreach
    ) ;_ end of defun
Эт че такое?
gomer вне форума  
 
Автор темы   Непрочитано 11.12.2010, 15:58
#24
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Цитата:
Сообщение от gomer Посмотреть сообщение
Код:
[Выделить все]
  (defun fun_replace (str)
    (foreach item replace
      (setq str (_lsp-conv-list-to-string
                  (_lsp-conv-string-to-list (car item))
                  (cdr item)
                  ) ;_ end of _lsp-conv-list-to-string
            ) ;_ end of setq
      ) ;_ end of foreach
    ) ;_ end of defun
Эт че такое?
Не знаю, а на что похоже?
Может это вирусня автокадовская, за***ла уже!!
dpmoucpi вне форума  
 
Непрочитано 11.12.2010, 18:03
#25
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


gomer, а сам-то как думаешь? Замена символов в строке, что ж еще...
Цитата:
Сообщение от dpmoucpi Посмотреть сообщение
Может это вирусня автокадовская, за***ла уже!
Не нравится - не пользуйся. Как-то желание продолжать решать твои проблемы с отношением "очередной вирус написали, за***ли уже!" пропало напрочь.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 11.12.2010, 18:56
#26
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от dpmoucpi Посмотреть сообщение
Не знаю, а на что похоже?
Это похоже на код, вылетающий по ошибке...
gomer вне форума  
 
Непрочитано 11.12.2010, 19:01
#27
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


Возможно. Разбираться не буду.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 13.12.2010, 10:31
#28
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Цитата:
Сообщение от Лиспер Посмотреть сообщение
gomer, а сам-то как думаешь? Замена символов в строке, что ж еще...

Не нравится - не пользуйся. Как-то желание продолжать решать твои проблемы с отношением "очередной вирус написали, за***ли уже!" пропало напрочь.
Так а чё ты горячишься, если б я разбирался, я бы наверное не спрашивал.
И я не говорил что ты написал вирус, у меня просто на работе гуляет такая вирусня и не знаю что с ней делать. Так что если можешь помоги пожалуйста.
dpmoucpi вне форума  
 
Непрочитано 13.12.2010, 10:52
#29
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


dpmoucpi Ты бы сначала думал, перед тем как писать. Иначе всех помощников разгонишь.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 13.12.2010, 11:09
#30
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Так стояночка. Не хотел никого обидеть, и не надо меня не правильно понимать. Повторюсь есть на работе проблема с автокадовскими так называемыми "вирусами", подменяют функции автокада(проблема с сохранением файлов, внезапное закрытие чертежей и т.д.). В кодах не разбираюсь (надеюсь пока), так что отвечал как мог и как знал, надеясь помочь, направить решение проблемы в правильное русло, отсечь при этом ненужные вопросы.
Я не сразу понял что это код с присланного файла Лиспером, думал что это с чертежа образца который выслал я, сообщение идёт сразу за ним.
Помогите плиз...

Последний раз редактировалось dpmoucpi, 13.12.2010 в 11:15.
dpmoucpi вне форума  
 
Непрочитано 13.12.2010, 18:58
#31
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Так мальчидевочки только не подеритесь...
Я так понимаю, функция fun_replace должна выглядеть как-то так:
Код:
[Выделить все]
(defun fun_replace (str / asc)
  (vl-list->string
    (mapcar
      '(lambda (x)
	 (if (setq asc (assoc x replace))
	   (cdr asc)
	   x
	 )
       )
      (vl-string->list str)
    )
  )
)
Классический случай, когда жаргонность, вычитанная из некой книжицы, абсолютно не помогает
dpmoucpi, Лиспер так спешил вам помочь, что наваял лажу, а вы его еще и ругаете за доброту душевную, гы
gomer вне форума  
 
Непрочитано 13.12.2010, 19:56
1 | #32
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Мой вариант (тестировал на файле, опубликованном в #22)
Измененный вариант см пост #59
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 15.12.2010 в 19:30.
VVA вне форума  
 
Непрочитано 13.12.2010, 20:07
#33
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


В порядке странной идеи:
Сохранить в dxf и напустить хитрых регулярных выражений будет не проще чем писать лисп ищущий во всех закутках?
zamtmn вне форума  
 
Непрочитано 13.12.2010, 23:57
#34
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Ну, очень хитрых получится!
gomer вне форума  
 
Непрочитано 14.12.2010, 08:34
#35
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
...
(setq translit
'(("А" "A")("Б" "B")("В" "V")("Г" "G")("Д" "D")("Е" "E")("Ё" "YO")("Ж" "ZH")("З" "Z")
("И" "I")("Й" "J")("К" "K")("Л" "L")("М" "M")("Н" "N")("О" "O")("П" "P")("Р" "R")("С" "S")
("Т" "T")("У" "U")("Ф" "F")("Х" "X")("Ц" "C")("Ч" "CH")("Ш" "SH")("Щ" "SHH")("Ъ" "#")("Ы" "Y")
("Ь" "'")("Э" "JE")("Ю" "JU")("Я" "JA")("а" "a")("б" "b")("в" "v")("г" "g")("д" "d")("е" "e")
("ё" "yo")("ж" "zh")("з" "z")("и" "i")("й" "j")("к" "k")("л" "l")("м" "m")("н" "n")("о" "o")("п" "p")
("р" "r")("с" "s")("т" "t")("у" "u")("ф" "f")("х" "x")("ц" "c")("ч" "ch")("ш" "sh")("щ" "shh")("ъ" "#")("ы" "y")
("ь" "'")("э" "je")("ю" "ju")("я" "ja")))
...
Мне кажется, что транслит тут не подойдёт. Поскольку если в чертеже имеется буква "Ю" (к примеру), то не факт, что на самом деле должно быть "JU".
Я бы сделал по следующему алгоритму:
В цикле перебрать все объекты базы данных чертежа. Если очередной объект - однострочный или многострочный текст, и при этом содержит в себе русские буквы (это легко проверить, получив числовое значение каждого символа в анализируемой строке и проверив, входит ли этот символ в диапазон числовых значений, определённых для русских символов), то выполняю его анализ, суть которого состоит в том, чтобы обратиться ко внешнему xml-файлу, в котором прописано соответствие букв в формате например таком (для примера даю три записи в теле файла):
Соответствие по внешнему виду:
Код:
[Выделить все]
<Chars>
<Char Ru="А" Enu="A"/>
<Char Ru="О" Enu="O"/>
<Char Ru="P" Enu="Р"/>
<\Chars>
а может файл должен быть таким (соответствие на клавише):
Код:
[Выделить все]
<Chars>
<Char Ru="А" Enu="F"/>
<Char Ru="О" Enu="J"/>
<Char Ru="P" Enu="H"/>
<\Chars>
Тут нужно смотреть, какого рода "очепятки", чтобы понять, какой логикой руководствоваться в процессе формирования xml-файла.

Т.о., как видим - настройки замены не зашиты в коде, а отделены от него (имхо - это правильный подход).

В результате работы программы, должен сформироваться отчёт, представленный в графическом виде (например, в виде таблички из двух столбцов).

В этом отчёте, в первом столбце пользователю должны быть показаны слова, в которых найдены русские буквы. При этом русская буква должна быть выделена др. цветом (например красным). Во втором столбце должна быть показана альтернатива, предлагаемая на основе XML-файла, при этом, содержимое второго столбца, юзер должен иметь возможность редактировать - вбивать свой вариант замены, если его не устраивает предлагаемый по умолчанию.

Кроме того, в каждой строке, перед первым столбцом должен стоять CheckBox - проверив запись и выбрав/задав нужный вариант замены, юзер ставит в чекбоксе галочку (мол проверено). Если юзер не поставил галочку - это слово не должно изменяться после того, как он нажмёт кнопку применения изменений.

Когда будет проверено всё - пользователь жмёт кнопку "Выполнить замену". Вот и всё.
Код, с помощью которого можно выбрать нужные объекты из базы чертежа я взял отсюда, дабы не искать там его вот он:
Код:
[Выделить все]
 142:          /// <summary>
 143:          /// Получить идентификаторы тех примитивов базы данных чертежа, которые удовлетворяют условию, переданному в метод в качестве параметра.
 144:          /// </summary>
 145:          /// <param name="predicate">Лямбда-выражение, которое будет применяться к каждому примитиву базы данных чертежа и возвращать
 146:          /// логическое значение. Если возвращается True - идентификатор объекта будет добавлен в состав результирующей выборки идентификаторов.</param>
 147:          /// <returns>Возвращается массив ObjectId[]</returns>
 148:          public ObjectId[] GetPrimitives(Func<ObjectId, bool> predicate)
 149:          {
 150:              List<ObjectId> primitives = new List<ObjectId>();
 151:   
 152:              using (Transaction t = dwg.TransactionManager.StartTransaction()) // 'dwg' is Document
 153:              {
 154:                  for (long i = db.BlockTableId.Handle.Value; i < db.Handseed.Value; i++)// 'db' is Database
 155:                  {
 156:                      ObjectId id = ObjectId.Null;
 157:                      try
 158:                      {
 159:                          id = db.GetObjectId(false, new Handle(i), 0);
 160:                      }
 161:                      catch (System.Exception)
 162:                      { continue; }
 163:                      if (!id.IsErased && predicate(id)) primitives.Add(id);
 164:                  }
 165:              }
 166:              return primitives.ToArray(); 
 167:          }
Интерфейс, указанный мною выше, сделать не сложно (имхо).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 14.12.2010 в 08:52.
hwd вне форума  
 
Непрочитано 14.12.2010, 10:26
#36
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от hwd Посмотреть сообщение
Т.о., как видим - настройки замены не зашиты в коде, а отделены от него (имхо - это правильный подход).
В случае лиспа это не так - т.к. код не обязательно (и в большинстве случаев не комплируется), а где его "геморойней" редактировать в лиспе или xml еще вопрос. Или вы хотите еще "оболочку" по замене букв создать, тогда уж там надо и правила прописывать (с применением ваших любымых регов, учета где написанно и пр.) и программа разрастается до безобразия (и здесь пожалуй уже xml будет актуальным). А так как русские буквы могут встетится черт знает где, а не только в текстах (в описаниях блоков(динамических), внешних ссылках, доп. данных) - то выход здесь "правильный" только один - заплатить тому-же, например, Ривилису денег - т.к. "по быстрому" не съедешь, а если нет - то и вариант от VVA вполне приемлим.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 14.12.2010, 10:34
#37
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Конечно, все это правильно, то что hwd предлагает, но реализовать это довольно трудоемко и "выходит за рамки бесплатного"
Мне кажется, будет достаточно модифицировать программу таким образом, чтобы она не производила замены, а лишь выдавала отчет где именно обнаружены русские буквы, дабы пользователь уже самостоятельно исправлял.
Do$ вне форума  
 
Автор темы   Непрочитано 14.12.2010, 10:39
#38
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Цитата:
Сообщение от VVA Посмотреть сообщение
Мой вариант (тестировал на файле, опубликованном в #22)
Код:
[Выделить все]
(defun C:R2E (  / *error* Doc)
  ;;;Rus To Eng
  (vl-load-com)  
  (defun *error* (msg)(princ msg)
   (bg:layer-status-restore)
   (vla-endundomark Doc)(princ)
  )
(setq Doc (vla-get-activedocument (vlax-get-acad-object)))
(bg:layer-status-save)(vla-startundomark Doc)
(Translate-All-String-Objects Doc)
(bg:layer-status-restore)(vla-endundomark Doc)
(princ)
)

(defun Translate-All-String-Objects (Doc / txtstr tmp txt count)
  (vlax-for Blk	(vla-get-Blocks Doc)
    (if (= (vla-get-IsXref Blk) :vlax-false)
      (progn
	(setq count 0 txt (strcat "Changed " (vla-get-name Blk)))
	(grtext -1 txt)
      (vlax-for	Obj Blk
	(setq count (1+ count))
	(if (zerop(rem count 10))(grtext -1 (strcat txt " : " (itoa count))))
	(if (and (vlax-write-enabled-p Obj)
		 (vlax-property-available-p Obj 'TextString)
	    ) ;_ end of and
	  (progn
	    (setq txtstr
		   (if (vlax-method-applicable-p Obj 'FieldCode)
		       (vla-FieldCode Obj)
		       (vlax-get-property Obj 'TextString))
                  txtstr (trans-from-rus-to-translit txtstr)
		  )
	    (vla-put-Textstring Obj txtstr)
	    )
	) ;_ end of if
      ) ;_ end of vlax-for
      )
    ) ;_ end of if
  ) ;_ end of vlax-for
 (vl-cmdf "_regenall")
)
(defun trans-from-rus-to-translit   ( str / translit)(vl-load-com)  
   ;;;  http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
   ;;; http://forum.dwg.ru/showthread.php?t=13063
   ;;;  Соответствие символов взято с translit.ru
   ;;;  по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
   ;;;  name - исходная строка 
   ;;;  возвращается преобразованная 
(setq translit 
'(("А" "A")("Б" "B")("В" "V")("Г" "G")("Д" "D")("Е" "E")("Ё" "YO")("Ж" "ZH")("З" "Z") 
  ("И" "I")("Й" "J")("К" "K")("Л" "L")("М" "M")("Н" "N")("О" "O")("П" "P")("Р" "R")("С" "S") 
  ("Т" "T")("У" "U")("Ф" "F")("Х" "X")("Ц" "C")("Ч" "CH")("Ш" "SH")("Щ" "SHH")("Ъ" "#")("Ы" "Y") 
  ("Ь" "'")("Э" "JE")("Ю" "JU")("Я" "JA")("а" "a")("б" "b")("в" "v")("г" "g")("д" "d")("е" "e") 
  ("ё" "yo")("ж" "zh")("з" "z")("и" "i")("й" "j")("к" "k")("л" "l")("м" "m")("н" "n")("о" "o")("п" "p") 
  ("р" "r")("с" "s")("т" "t")("у" "u")("ф" "f")("х" "x")("ц" "c")("ч" "ch")("ш" "sh")("щ" "shh")("ъ" "#")("ы" "y") 
  ("ь" "'")("э" "je")("ю" "ju")("я" "ja"))) 
    
   (apply 'strcat 
        (mapcar '(lambda (x / sym) 
              (if (setq sym (assoc x translit)) 
                (cadr sym) 
                x 
              ) ;_ конец if 
            ) ;_ конец lambda 
           (mapcar 'chr (vl-string->list str)) 
        ) ;_ конец mapcar 
      ) ;_ конец apply
)
(defun bg:layer-status-restore ()
    (foreach item *PD_LAYER_LST*
      (if (not (vlax-erased-p (car item)))
        (vl-catch-all-apply
          '(lambda ()
             (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
             (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
             ) ;_ end of lambda
          ) ;_ end of vl-catch-all-apply
        ) ;_ end of if
      ) ;_ end of foreach
    (setq *PD_LAYER_LST* nil)
    ) ;_ end of defun

  (defun bg:layer-status-save ()
    (setq *PD_LAYER_LST* nil)
    (vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
      (setq *PD_LAYER_LST* (cons (list item
                                  (cons "freeze" (vla-get-freeze item))
                                  (cons "lock" (vla-get-lock item))
                                  ) ;_ end of cons
                            *PD_LAYER_LST*
                            ) ;_ end of cons
            ) ;_ end of setq
      (vla-put-lock item :vlax-false)
      (if (= (vla-get-freeze item) :vlax-true)
      (vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
      ) ;_ end of vlax-for
    ) ;_ end of defun
Спасибо огромное, очень помогло!!!!!
dpmoucpi вне форума  
 
Непрочитано 14.12.2010, 11:23
#39
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
В случае лиспа это не так - т.к. код не обязательно (и в большинстве случаев не комплируется), а где его "геморойней" редактировать в лиспе или xml еще вопрос.
ИМХО удобней - в XML: одно дело, если пользователь откроет файл и увидит то, что я показал выше (т.е. только данные, синтаксис которых не составит большого труда понять), а другое дело - когда ему нужно листать LISP-листинг кода, дабы самому заменять его текст. А если он ещё и ошибётся где-то (случайно внесёт изменение в исходники) - код вообще работать перестанет.
Пользователя следует ограждать от вмешательства в исходный код (имхо).

Если настройки замены вынесены во внешний файл, то таких файлов можно создать сколько угодно - в каждом своя логика замены. Код при этом переписывать не придётся - нужно будет только указать, какой xml-файл (из имеющихся) использовать в данном сеансе работы.

Цитата:
Или вы хотите еще "оболочку" по замене букв создать, тогда уж там надо и правила прописывать (с применением ваших любымых регов, учета где написанно и пр.) и программа разрастается до безобразия (и здесь пожалуй уже xml будет актуальным).
Какая ещё "оболочка по замене букв"(с)? Вы ещё предложИте операционную систему специально разработать под это дело... Регексы вы с какой целью упомянули? Если бы вы знали, что это такое, то данной фразы не было бы. Похоже что в вашем исполнении программа действительно "разрастётся до безобразия"(с).


Думаю тема закрыта, поскольку решение, предложенное VVA подошло пользователю.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 14.12.2010, 11:47
#40
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Если заставлять юзера менять буквы текстовым редактором - то он что код, что xml может запороть - в обоих случаях программа функционировать перестает. Если делать "красиво" (с чего вы изначально и начали - гуишки с галочками и пр.), то надо и "редактор данных" писать - покажите мне хоть одну платную программу где внесение изменения настроек (штатно) подразумевает редактирование xml - я таких не знаю, а если вы ее и найдете - то это только показатель исключения (пробегитесь поиском по своему комьютеру по маске xml и еще не забываем что есть куча форматов "на основе" - много из них "вручную" правили). Знаю я что такое регексы - просто применяю я свои знания из расчета, что под данную задачу актуальней, а не гребу все под тот-же xml (это не Вам в укор - это просто разные "стили" программирования) - зачем я их упомянул - а при помощи них как раз и удобней всего сделать анализ - опечатка это или русское название (по соседним буквам в случае p c и пр.) . Есть еще много прекрасных решений с помощью которых "на ура" решаются задачи быстро и красиво, надо только уметь ими пользоватся, а не "замыкаться" на одной технологии.
p.s. разрастается она "до безобразия" не из-за гуишек и пр. - это стандартные элементы не отнимающие много времени - а из-за огромного количества мест которые нужно проверить - и далеко не всегда для корректной обработки достаточно "простой замены".
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 14.12.2010 в 12:00.
Дима_ вне форума  
 
Непрочитано 14.12.2010, 12:28
#41
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Если заставлять юзера менять буквы текстовым редактором - то он что код, что xml может запороть - в обоих случаях программа функционировать перестает.
Если будет испорчен xml-файл - его можно выбросить. Если будут испорчены исходники и нет копии этого файла - тут пользователь сядет в лужу.
Цитата:
Сообщение от Дима_ Посмотреть сообщение
Если делать "красиво" (с чего вы изначально и начали - гуишки с галочками и пр.), то надо и "редактор данных" писать - покажите мне хоть одну платную программу где внесение изменения настроек (штатно) подразумевает редактирование xml - я таких не знаю
Я разве предлагал анимированные контролы на 3D-интерфейсе? Не стоит путать "красиво" с "удобно" - это не одно и то же. Я писал об удобстве. Если набросать элементарный GUI - сложно для вас, это не означает, что это сложно для всех. На создание такого интерфейса, с распитием чая, уйдёт минут 30.
Какой к чёрту "редактор данных"??? Откройте букварь, почитайте про то, как работают с XML в dotnet.

Цитата:
покажите мне хоть одну платную программу где внесение изменения настроек (штатно) подразумевает редактирование xml - я таких не знаю, а если вы ее и найдете - то это только показатель исключения
Не вздумайте подобное на форумах программистов написать - сразу же будете преданы анафеме... Если ВЫ не знаете таких программ - это как раз-таки не показатель.

Цитата:
пробегитесь поиском по своему комьютеру по маске xml и еще не забываем что есть куча форматов "на основе" - много из них "вручную" правили
А теперь выполните такой же поиск, но с таким условием выборки: "*.config". Что, результат отличается? Не беритесь спорить/давать оценку тому, в чём не разбираетесь! XML - это формат, а не расширение файла. Файл, содержащий в себе данные xml-формата, может иметь любое расширение. Например файлы генератора отчётов StimulSoft имеют расширение mrt, хотя их содержимое - xml.
Цитата:
Знаю я что такое регексы
Очень сильно сомневаюсь в этом, в свете того, что вы пишете. Знания бывают разные. Прочитать в WikiPedia определение того, что такое регекс - это ещё не знание.
Цитата:
Есть еще много прекрасных решений с помощью которых "на ура" решаются задачи быстро и красиво, надо только уметь ими пользоватся, а не "замыкаться" на одной технологии.
Как всё запущено... Походу вы не знаете чем отличается платформа от технологии. Объяснять не буду.
Цитата:
p.s. разрастается она "до безобразия" не из-за гуишек и пр. - это стандартные элементы не отнимающие много времени - а из-за огромного количества мест которые нужно проверить - и далеко не всегда для корректной обработки достаточно "простой замены".
Это я даже комментировать не хочу. Ужос... Читайте буквари.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 14.12.2010, 12:49
#42
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Я изначально хотел ответить на все Ваши посты - но "одумавшись" понял, что это будет пустое сотрясение воздуха. Вы уважаемый не умеете слушать (читать) и недочитав делаете выводы (хотя-бы внимательно прочитали тот текст который цитируете - и посмотрели свои выводы - связи в них нет), что собеседник ни в чем не разберается и ничего не умеет, а повторять (разжевывать) одно и то же по несколько раз, человеку которому толку от этого не будет я не немерен.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 14.12.2010, 12:52
#43
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Я изначально хотел ответить на все Ваши посты - но "одумавшись" понял, что это будет пустое сотрясение воздуха. Вы уважаемый не умеете слушать (читать) и недочитав делаете выводы (хотя-бы внимательно прочитали тот текст который цитируете - и посмотрели свои выводы - связи в них нет), что собеседник ни в чем не разберается и ничего не умеет, а повторять (разжевывать) одно и то же по несколько раз, человеку которому толку от этого не будет я не немерен.
Сдаюсь
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 14.12.2010, 13:04
#44
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 979


Offtop: Вы еще подеритесь, горячие финские парни.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 14.12.2010, 13:28
#45
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от Лиспер Посмотреть сообщение
Offtop: Вы еще подеритесь, горячие финские парни.
Offtop: Надо уточнять весовую категорию - у меня супертяжелая.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 14.12.2010, 13:33
#46
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Offtop: у меня супертяжелая.
Offtop: Это я уже понял
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 14.12.2010, 14:03
#47
alakk

Начальник службы Заказчика
 
Регистрация: 16.02.2008
РФ Пермь
Сообщений: 161
<phrase 1=


Русские буквы, как и все символы национальных шрифтов, располагаются в кодовой странице после 127 символа. Достаточно проверить порядковый номер символа, чтоб все стало ясно. Порядковый номер символа, к примеру, в FoxPro возвращает функция chr(). Нечто подобное есть и в VBA. Что касается встроенной в автокад версии VBA, то просто не знаком с ней. Покопайтесь сами
Достаточно организовать простенький цикл посимвольной проверки каждого слова текстового блока с выдачей результата куда-нибудь во внешний файл. Тут все элементарно

Последний раз редактировалось alakk, 14.12.2010 в 14:11.
alakk вне форума  
 
Непрочитано 14.12.2010, 14:14
#48
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от alakk Посмотреть сообщение
Тут все элементарно
Если бы всё было так...
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 14.12.2010, 14:24
#49
alakk

Начальник службы Заказчика
 
Регистрация: 16.02.2008
РФ Пермь
Сообщений: 161
<phrase 1=


Чего ж тут сложного? Если возвращаемое значение меньше или равно 127, то английская скотинка пропустит символ. Если больше - ну, ты мужик меня понял, короче...
alakk вне форума  
 
Непрочитано 14.12.2010, 15:10
#50
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от alakk Посмотреть сообщение
Чего ж тут сложного? Если возвращаемое значение меньше или равно 127, то английская скотинка пропустит символ. Если больше - ну, ты мужик меня понял, короче...
Сразу возникают как минимум 3 вопроса/замечания:
1. В чем искать? В AutoCAD'е море различных примитивов, символьных таблиц и т.д. и т.п. в которых есть текстовые данные (впольть до имени)...
2. Что делать если код символа > 127? Удалять или заменять? Если заменять, то на что? И не возникнет ли повторения имен в символьных таблицах?
3. И с проверкой кода символа на > 127 не все просто. AutoCAD хранит информацию в UNICODE. Так что такая проверка не поможет. А есть еще строки вида "\U+XXXX" и "\M+YYYYY"
Всё это я уже проходил в DWGCONVERT и смею уверить, что тут далеко не всё так просто. Кстати, в приведенном чертеже есть еще и текстовые стили, содержащие в названии русские буквы...
Александр Ривилис вне форума  
 
Непрочитано 14.12.2010, 16:25
#51
alakk

Начальник службы Заказчика
 
Регистрация: 16.02.2008
РФ Пермь
Сообщений: 161
<phrase 1=


Дружище. Если ты носишь гордое имя "Программист", то... не хочу тебя как-нибудь обидеть.
Я работаю в Архикаде и в ГДЛ, потому такие сложные VBA-материи мне не по плечу... Прошу прощения. Но алгоритм ясен, приступай!
alakk вне форума  
 
Непрочитано 14.12.2010, 16:33
#52
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от alakk Посмотреть сообщение
Дружище. Если ты носишь гордое имя "Программист", то... не хочу тебя как-нибудь обидеть.
Я работаю в Архикаде и в ГДЛ, потому такие сложные VBA-материи мне не по плечу... Прошу прощения. Но алгоритм ясен, приступай!
Ты бы свои пальцы-то с пола поубрал... А то неровен час - оттопчут... Командир млин нашёлся....
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 14.12.2010, 16:42
#53
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от alakk Посмотреть сообщение
Дружище. Если ты носишь гордое имя "Программист", то... не хочу тебя как-нибудь обидеть.
Я лишь написал, что задача в общем случае не настолько тривиальная, как тебе кажется. Остальное не комментирую, ибо это ниже моего достоинства.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 14.12.2010, 17:02
#54
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Цитата:
Сообщение от VVA Посмотреть сообщение
Код:
(defun C:R2E ( / *error* Doc)
;;;Rus To Eng
(vl-load-com)
(defun *error* (msg)(princ msg)
(bg:layer-status-restore)
(vla-endundomark Doc)(princ)
)
(setq Doc (vla-get-activedocument (vlax-get-acad-object)))
(bg:layer-status-save)(vla-startundomark Doc)
(Translate-All-String-Objects Doc)
(bg:layer-status-restore)(vla-endundomark Doc)
(princ)
)

(defun Translate-All-String-Objects (Doc / txtstr tmp txt count)
(vlax-for Blk (vla-get-Blocks Doc)
(if (= (vla-get-IsXref Blk) :vlax-false)
(progn
(setq count 0 txt (strcat "Changed " (vla-get-name Blk)))
(grtext -1 txt)
(vlax-for Obj Blk
(setq count (1+ count))
(if (zerop(rem count 10))(grtext -1 (strcat txt " : " (itoa count))))
(if (and (vlax-write-enabled-p Obj)
(vlax-property-available-p Obj 'TextString)
) ;_ end of and
(progn
(setq txtstr
(if (vlax-method-applicable-p Obj 'FieldCode)
(vla-FieldCode Obj)
(vlax-get-property Obj 'TextString))
txtstr (trans-from-rus-to-translit txtstr)
)
(vla-put-Textstring Obj txtstr)
)
) ;_ end of if
) ;_ end of vlax-for
)
) ;_ end of if
) ;_ end of vlax-for
(vl-cmdf "_regenall")
)
(defun trans-from-rus-to-translit ( str / translit)(vl-load-com)
;;; http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; http://forum.dwg.ru/showthread.php?t=13063
;;; Соответствие символов взято с translit.ru
;;; по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; name - исходная строка
;;; возвращается преобразованная
(setq translit
'(("А" "A")("Б" "B")("В" "V")("Г" "G")("Д" "D")("Е" "E")("Ё" "YO")("Ж" "ZH")("З" "Z")
("И" "I")("Й" "J")("К" "K")("Л" "L")("М" "M")("Н" "N")("О" "O")("П" "P")("Р" "R")("С" "S")
("Т" "T")("У" "U")("Ф" "F")("Х" "X")("Ц" "C")("Ч" "CH")("Ш" "SH")("Щ" "SHH")("Ъ" "#")("Ы" "Y")
("Ь" "'")("Э" "JE")("Ю" "JU")("Я" "JA")("а" "a")("б" "b")("в" "v")("г" "g")("д" "d")("е" "e")
("ё" "yo")("ж" "zh")("з" "z")("и" "i")("й" "j")("к" "k")("л" "l")("м" "m")("н" "n")("о" "o")("п" "p")
("р" "r")("с" "s")("т" "t")("у" "u")("ф" "f")("х" "x")("ц" "c")("ч" "ch")("ш" "sh")("щ" "shh")("ъ" "#")("ы" "y")
("ь" "'")("э" "je")("ю" "ju")("я" "ja")))

(apply 'strcat
(mapcar '(lambda (x / sym)
(if (setq sym (assoc x translit))
(cadr sym)
x
) ;_ конец if
) ;_ конец lambda
(mapcar 'chr (vl-string->list str))
) ;_ конец mapcar
) ;_ конец apply
)
(defun bg:layer-status-restore ()
(foreach item *PD_LAYER_LST*
(if (not (vlax-erased-p (car item)))
(vl-catch-all-apply
'(lambda ()
(vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
(vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
) ;_ end of lambda
) ;_ end of vl-catch-all-apply
) ;_ end of if
) ;_ end of foreach
(setq *PD_LAYER_LST* nil)
) ;_ end of defun

(defun bg:layer-status-save ()
(setq *PD_LAYER_LST* nil)
(vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(setq *PD_LAYER_LST* (cons (list item
(cons "freeze" (vla-get-freeze item))
(cons "lock" (vla-get-lock item))
) ;_ end of cons
*PD_LAYER_LST*
) ;_ end of cons
) ;_ end of setq
(vla-put-lock item :vlax-false)
(if (= (vla-get-freeze item) :vlax-true)
(vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
) ;_ end of vlax-for
) ;_ end of defun
__________________

Нормально заменяет, но не все символы почему то правильно, например такие символы как "," "є" и некоторые другие заменяет на "?". Это можно как то исправить?
Заранее спасибо.
dpmoucpi вне форума  
 
Непрочитано 14.12.2010, 17:18
#55
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Что за символ такой?
Цитата:
"є"
Лучше выложи файл с текстом
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.12.2010, 17:31
#56
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
Что за символ такой?
Украинская буква "е". Что в том чертеже она делает непонятно. Вместо нее напрашивается символ "°", т.к. она стоит в чертеже после символа "N".
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 14.12.2010, 17:37
#57
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Украинская буква "е". Что в том чертеже она делает непонятно. Вместо нее напрашивается символ "°", т.к. она стоит в чертеже после символа "N".
Да всё так но и символ "°", и знак деления, степень всё заменяется на "?".
Вложения
Тип файла: dwg
DWG 2004
e.dwg (929.6 Кб, 1215 просмотров)
dpmoucpi вне форума  
 
Непрочитано 14.12.2010, 18:27
#58
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от dpmoucpi Посмотреть сообщение
Нормально заменяет, но не все символы почему то правильно, например такие символы как "," "є" и некоторые другие заменяет на "?". Это можно как то исправить?
Проблема со шрифтом, установите подходящий и все будет правильно отображаться
gomer вне форума  
 
Непрочитано 14.12.2010, 19:32
#59
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Обнаружился один интересный глюк: Если в тексте есть UNICOD символы (например "\\U+00F7") то entget возвращает правильный результат, а Vla-get-Textstring - вопрос. Пришлось брать значение через entget
В Автокаде
Цитата:
Команда: (vla-get-TextString obj)
"Utility sewage system. Sections 37-37 ? 51-51."

Команда: (cdr(assoc 1 (entget(vlax-vla-object->ename obj))))
"Utility sewage system. Sections 37-37 ч 51-51."
В Visual Lisp редакторе
Цитата:
$ (vla-get-TextString obj)
"Utility sewage system. Sections 37-37 ? 51-51."
_$ (cdr(assoc 1 (entget(vlax-vla-object->ename obj))))
"Utility sewage system. Sections 37-37 \U+00F7 51-51."
_$
2011-01-26 - Добавлена обработка символьных таблиц (Layer Block Dimstyle и т.д)
2011-02-07 - Исправлена ошибка из поста #81
2011-03-17 Добавлен purge и audit
Код:
[Выделить все]
 
(defun C:R2E ( / *error* Doc)
;;;Rus To Eng
(vl-load-com) 
(defun *error* (msg)(princ msg)
(bg:layer-status-restore)
(vla-endundomark Doc)(princ)
)
(setq Doc (vla-get-activedocument (vlax-get-acad-object)))
(vla-auditinfo Doc :vlax-true)  
(repeat 3 (vla-purgeall  Doc))
(bg:layer-status-save)(vla-startundomark Doc)
(Translate-All-String-Objects Doc)
(bg:layer-status-restore)(vla-endundomark Doc)
(princ)
)

(defun Translate-All-String-Objects (Doc / txtstr tmp txt count)
  (foreach item '("LAYER" "LTYPE" "VIEW" "STYLE" "BLOCK" "UCS" "APPID" "DIMSTYLE" "VPORT")
    (foreach item1 (tablelist  item)
      (if (tblobjname item item1)
      (entmod
      (mapcar '(lambda(pair)
	     (cons (car pair)
		   (if (= (type (cdr pair)) 'STR)
		       (trans-from-rus-to-translit (cdr pair))
		      (cdr pair)
		     )
		   )
	     )
	  (entget(tblobjname item item1))
	  )
      )
        )
      )
    )
(vlax-for Blk	(vla-get-Blocks Doc)
(if (= (vla-get-IsXref Blk) :vlax-false)
(progn
(setq count 0 txt (strcat "Changed " (vla-get-name Blk)))
(grtext -1 txt)
(vlax-for	Obj Blk
(setq count (1+ count))
(if (zerop(rem count 10))(grtext -1 (strcat txt " : " (itoa count))))
(if (and (vlax-write-enabled-p Obj)
         (vlax-property-available-p Obj 'TextString)
) ;_ end of and
(progn
  (entmod
  (mapcar '(lambda(pair)
	     (cons (car pair)
		   (if (= (type (cdr pair)) 'STR)
		       (trans-from-rus-to-translit (cdr pair))
		      (cdr pair)
		     )
		   )
	     )
	  (entget (vlax-vla-object->ename Obj))
	  )
  )
)
) ;_ end of if
) ;_ end of vlax-for
)
) ;_ end of if
) ;_ end of vlax-for
(vl-cmdf "_regenall")
)
(defun trans-from-rus-to-translit ( str / translit)(vl-load-com) 
;;; http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; http://forum.dwg.ru/showthread.php?t=13063
;;; Соответствие символов взято с translit.ru
;;; по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; name - исходная строка 
;;; возвращается преобразованная 
(setq translit 
'(("А" "A")("Б" "B")("В" "B")("Г" "G")("Д" "D")("Е" "E")("І" "I")("К" "K")("М" "M")("Н" "H")("О" "O")("Р" "P")("С" "C")("Т" "T")("Х" "X")("а" "a")("б" "b")("е" "e")("к" "k")("м" "m")("о" "o")("р" "p")("т" "t")("х" "x")("у" "y")("Э" "E")("с" "c"))) 

(apply 'strcat 
(mapcar '(lambda (x / sym) 
(if (setq sym (assoc x translit)) 
(cadr sym) 
x 
) ;_ конец if 
) ;_ конец lambda 
(mapcar 'chr (vl-string->list str)) 
) ;_ конец mapcar 
) ;_ конец apply
)
(defun tablelist (s / d r)
 (while (setq d (tblnext s (null d)))
   (setq r (cons (cdr (assoc 2 d)) r))
)
)
(defun bg:layer-status-restore ()
(foreach item *PD_LAYER_LST*
(if (not (vlax-erased-p (car item)))
(vl-catch-all-apply
'(lambda ()
(vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
(vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
) ;_ end of lambda
) ;_ end of vl-catch-all-apply
) ;_ end of if
) ;_ end of foreach
(setq *PD_LAYER_LST* nil)
) ;_ end of defun

(defun bg:layer-status-save ()
(setq *PD_LAYER_LST* nil)
(vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(setq *PD_LAYER_LST* (cons (list item
(cons "freeze" (vla-get-freeze item))
(cons "lock" (vla-get-lock item))
) ;_ end of cons
*PD_LAYER_LST*
) ;_ end of cons
) ;_ end of setq
(vla-put-lock item :vlax-false)
(if (= (vla-get-freeze item) :vlax-true)
(vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
) ;_ end of vlax-for
) ;_ end of defun
Еще одна версия в #84

Последний раз редактировалось VVA, 17.03.2011 в 13:05. Причина: Добавил purge
VVA вне форума  
 
Непрочитано 14.12.2010, 21:59
#60
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
Если в тексте есть UNICOD символы (например "\\U+00F7") то entget возвращает правильный результат, а Vla-get-Textstring - вопрос
Это для однострочного текста или для многострочного тоже? Если и для многострочного, то тогда придется не только группу 1 читать, но и 3. Причем группа 3 может повторятся.
Александр Ривилис вне форума  
 
Непрочитано 15.12.2010, 05:33
#61
alakk

Начальник службы Заказчика
 
Регистрация: 16.02.2008
РФ Пермь
Сообщений: 161
<phrase 1=


Цитата:
Сообщение от hwd Посмотреть сообщение
Ты бы свои пальцы-то с пола поубрал... А то неровен час - оттопчут... Командир млин нашёлся....
Если прочитать текст исходного вопроса, то в нем нет задачи про автозамену найденного неправильного символа на кириллице на правильный на латинице. Это уже творческий порыв ответчиков (не в юридическом смысле - а то о5 питерцы пальцы топтать будут). Зачастую проще врукопашную заменить пару-тройку символов в проекте, чем обсуждать число дьяволов на острие иглы
А вот как организовать ПОИСК таких символов в проекте автокада? Тут уже ваше дело, господа спецы по автокаду.
Мне кажется, что представленный постом выше (54) алгоритм немного нелогичен, т.к. перебирает все подряд и потому работает долго. Потому и предложил некоторое подобие метода Симпсона - последовательных приближений. Тут используется некоторый набор признаков, которым должен удовлетворять некий символ. Если кто не понял и о5 будет топтать пальцы - в школу, в 11 класс.

А самый простой метод - передавать проект в виде рисунка. Тут забугорная буквоедка ничего не поймет. Формат pdf. В этом случае и программить ничего не надо. Как сделать... Подсказать?

Последний раз редактировалось alakk, 15.12.2010 в 06:29.
alakk вне форума  
 
Непрочитано 15.12.2010, 09:29
#62
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от alakk Посмотреть сообщение
А самый простой метод - передавать проект в виде рисунка.
Сомневаюсь, что этот вариант пройдет - если бы он прошел, то и такого вопроса на форуме не было. Все сейчас умные и стараются не отдавать dwg-файлы или хоть как-то их защитить. На форуме уже не один десяток тем этому посвящен.
Цитата:
Сообщение от alakk Посмотреть сообщение
Если прочитать текст исходного вопроса, то в нем нет задачи про автозамену найденного неправильного символа на кириллице на правильный на латинице.
В том то и дело, что показать этот символ в чертеже не так просто, особенно если это не кусок текста, а название блока или слоя. Поэтому и пошли по более простому пути автоматической замены.
Цитата:
Сообщение от alakk Посмотреть сообщение
Мне кажется, что представленный постом выше (54) алгоритм немного нелогичен, т.к. перебирает все подряд и потому работает долго. Потому и предложил некоторое подобие метода Симпсона - последовательных приближений. Тут используется некоторый набор признаков, которым должен удовлетворять некий символ.
Самая длительная процедура не поиск в таблице транслитерации - это самая быстрая операция из описанных в программе, а поиск текстовой строки в чертеже. И кроме того проверка на > 127 могла иметь право на жизнь только в доюникодовский период.

VVA
, есть идея, но нет времени на ее реализацию.
1. Раз уж пришлось завязаться на (entget), то нужно пройтись по всем кодам групп, и для тех, у кого строковое представление выполнять транслитерацию.
2. Используя комбинацию (handent) и (entget) пройтись по всем объектам (не только примитивам, но и таблицам и т.д.) чертежа. Начать нужно с метки таблицы блоков и закончить значением системной переменной HANDSEED. По этому принципу у меня выполняется проход по всем объектам в REMOVEALLPROXY, и работает достаточно быстро.

P.S.: Насчет HANDSEED я погорячился - в VisualLisp его значение не получить. Бегло взглянув на документацию по VisualLisp я не нашел способа получить метку последнего объекта в чертеже его средствами. Нужно что-то более хитрое.

Последний раз редактировалось Александр Ривилис, 15.12.2010 в 09:46. Причина: Уточнение по поводу HANDSEED
Александр Ривилис вне форума  
 
Непрочитано 15.12.2010, 10:05
#63
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Бегло взглянув на документацию по VisualLisp я не нашел способа получить метку последнего объекта в чертеже его средствами
Функция entlast?
Do$ вне форума  
 
Непрочитано 15.12.2010, 10:55
#64
alakk

Начальник службы Заказчика
 
Регистрация: 16.02.2008
РФ Пермь
Сообщений: 161
<phrase 1=


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Самая длительная процедура не поиск в таблице транслитерации - это самая быстрая операция из описанных в программе, а поиск текстовой строки в чертеже.
Именно об этом я и писал.

Что же касается юникода, то это вопрос не программирования, а организации. Достаточно вполне передать заказчику шрифты. Это его никак не обидит, а исполнителя лишит головной боли.

Последний раз редактировалось alakk, 15.12.2010 в 11:03.
alakk вне форума  
 
Автор темы   Непрочитано 15.12.2010, 11:14
#65
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Пользовался этим кодом

Код:
[Выделить все]
(defun C:R2E ( / *error* Doc)
;;;Rus To Eng
(vl-load-com) 
(defun *error* (msg)(princ msg)
(bg:layer-status-restore)
(vla-endundomark Doc)(princ)
)
(setq Doc (vla-get-activedocument (vlax-get-acad-object)))
(bg:layer-status-save)(vla-startundomark Doc)
(Translate-All-String-Objects Doc)
(bg:layer-status-restore)(vla-endundomark Doc)
(princ)
)

(defun Translate-All-String-Objects (Doc / txtstr tmp txt count)
(vlax-for Blk	(vla-get-Blocks Doc)
(if (= (vla-get-IsXref Blk) :vlax-false)
(progn
(setq count 0 txt (strcat "Changed " (vla-get-name Blk)))
(grtext -1 txt)
(vlax-for	Obj Blk
(setq count (1+ count))
(if (zerop(rem count 10))(grtext -1 (strcat txt " : " (itoa count))))
(if (and (vlax-write-enabled-p Obj)
         (vlax-property-available-p Obj 'TextString)
         (= (type (setq txtstr(cdr(assoc 1 (entget(vlax-vla-object->ename Obj)))))) 'STR)
) ;_ end of and
(progn
(vla-put-Textstring Obj txtstr)
)
) ;_ end of if
) ;_ end of vlax-for
)
) ;_ end of if
) ;_ end of vlax-for
(vl-cmdf "_regenall")
)
(defun trans-from-rus-to-translit ( str / translit)(vl-load-com) 
;;; http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; http://forum.dwg.ru/showthread.php?t=13063
;;; Соответствие символов взято с translit.ru
;;; по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; name - исходная строка 
;;; возвращается преобразованная 
(setq translit 
'(("А" "A")("Б" "B")("В" "V")("Г" "G")("Д" "D")("Е" "E")("Ё" "YO")("Ж" "ZH")("З" "Z") 
("И" "I")("Й" "J")("К" "K")("Л" "L")("М" "M")("Н" "N")("О" "O")("П" "P")("Р" "R")("С" "S") 
("Т" "T")("У" "U")("Ф" "F")("Х" "X")("Ц" "C")("Ч" "CH")("Ш" "SH")("Щ" "SHH")("Ъ" "#")("Ы" "Y") 
("Ь" "'")("Э" "JE")("Ю" "JU")("Я" "JA")("а" "a")("б" "b")("в" "v")("г" "g")("д" "d")("е" "e") 
("ё" "yo")("ж" "zh")("з" "z")("и" "i")("й" "j")("к" "k")("л" "l")("м" "m")("н" "n")("о" "o")("п" "p") 
("р" "r")("с" "s")("т" "t")("у" "u")("ф" "f")("х" "x")("ц" "c")("ч" "ch")("ш" "sh")("щ" "shh")("ъ" "#")("ы" "y") 
("ь" "'")("э" "je")("ю" "ju")("я" "ja"))) 

(apply 'strcat 
(mapcar '(lambda (x / sym) 
(if (setq sym (assoc x translit)) 
(cadr sym) 
x 
) ;_ конец if 
) ;_ конец lambda 
(mapcar 'chr (vl-string->list str)) 
) ;_ конец mapcar 
) ;_ конец apply
)
(defun bg:layer-status-restore ()
(foreach item *PD_LAYER_LST*
(if (not (vlax-erased-p (car item)))
(vl-catch-all-apply
'(lambda ()
(vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
(vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
) ;_ end of lambda
) ;_ end of vl-catch-all-apply
) ;_ end of if
) ;_ end of foreach
(setq *PD_LAYER_LST* nil)
) ;_ end of defun

(defun bg:layer-status-save ()
(setq *PD_LAYER_LST* nil)
(vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(setq *PD_LAYER_LST* (cons (list item
(cons "freeze" (vla-get-freeze item))
(cons "lock" (vla-get-lock item))
) ;_ end of cons
*PD_LAYER_LST*
) ;_ end of cons
) ;_ end of setq
(vla-put-lock item :vlax-false)
(if (= (vla-get-freeze item) :vlax-true)
(vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
) ;_ end of vlax-for
) ;_ end of defun
для этого файла, не заменяет русские буквы(
Вложения
Тип файла: dwg
DWG 2007
e.dwg (938.4 Кб, 959 просмотров)
dpmoucpi вне форума  
 
Непрочитано 15.12.2010, 11:24
#66
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Offtop: Удалите русский язык из операционной системы на каждом компьютере
Do$ вне форума  
 
Автор темы   Непрочитано 15.12.2010, 11:29
#67
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Цитата:
Сообщение от Do$ Посмотреть сообщение
Offtop: Удалите русский язык из операционной системы на каждом компьютере
Очень смешно)
dpmoucpi вне форума  
 
Непрочитано 15.12.2010, 11:56
#68
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


dpmoucpi, Мой косяк. Обновил #59
Александр Ривилис, Идея хорошая. При наличии времени можно будет попробовать
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.12.2010, 13:59
#69
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Do$ Посмотреть сообщение
Функция entlast?
Нет. Это последний примитив, но не последний объект. Даже и примитив не последний. Если это вставка блока, то через entnext добираешься до атрибутов, а если полилиния (не LWPOLYLINE), то до ее вершин. К сожалению тут все значительно хитрее.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 15.12.2010, 17:37
#70
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Код использовал:
Код:
[Выделить все]
(defun C:R2E ( / *error* Doc)
;;;Rus To Eng
(vl-load-com) 
(defun *error* (msg)(princ msg)
(bg:layer-status-restore)
(vla-endundomark Doc)(princ)
)
(setq Doc (vla-get-activedocument (vlax-get-acad-object)))
(bg:layer-status-save)(vla-startundomark Doc)
(Translate-All-String-Objects Doc)
(bg:layer-status-restore)(vla-endundomark Doc)
(princ)
)

(defun Translate-All-String-Objects (Doc / txtstr tmp txt count)
(vlax-for Blk	(vla-get-Blocks Doc)
(if (= (vla-get-IsXref Blk) :vlax-false)
(progn
(setq count 0 txt (strcat "Changed " (vla-get-name Blk)))
(grtext -1 txt)
(vlax-for	Obj Blk
(setq count (1+ count))
(if (zerop(rem count 10))(grtext -1 (strcat txt " : " (itoa count))))
(if (and (vlax-write-enabled-p Obj)
         (vlax-property-available-p Obj 'TextString)
         (= (type (setq txtstr(cdr(assoc 1 (entget(vlax-vla-object->ename Obj)))))) 'STR)
) ;_ end of and
(progn
(vla-put-Textstring Obj (trans-from-rus-to-translit txtstr))

)
) ;_ end of if
) ;_ end of vlax-for
)
) ;_ end of if
) ;_ end of vlax-for
(vl-cmdf "_regenall")
)
(defun trans-from-rus-to-translit ( str / translit)(vl-load-com) 
;;; http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; http://forum.dwg.ru/showthread.php?t=13063
;;; Соответствие символов взято с translit.ru
;;; по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; name - исходная строка 
;;; возвращается преобразованная 
(setq translit 
'(("А" "A")("Б" "B")("В" "V")("Г" "G")("Д" "D")("Е" "E")("Ё" "YO")("Ж" "ZH")("З" "Z") 
("И" "I")("Й" "J")("К" "K")("Л" "L")("М" "M")("Н" "N")("О" "O")("П" "P")("Р" "R")("С" "S") 
("Т" "T")("У" "U")("Ф" "F")("Х" "X")("Ц" "C")("Ч" "CH")("Ш" "SH")("Щ" "SHH")("Ъ" "#")("Ы" "Y") 
("Ь" "'")("Э" "JE")("Ю" "JU")("Я" "JA")("а" "a")("б" "b")("в" "v")("г" "g")("д" "d")("е" "e") 
("ё" "yo")("ж" "zh")("з" "z")("и" "i")("й" "j")("к" "k")("л" "l")("м" "m")("н" "n")("о" "o")("п" "p") 
("р" "r")("с" "s")("т" "t")("у" "u")("ф" "f")("х" "x")("ц" "c")("ч" "ch")("ш" "sh")("щ" "shh")("ъ" "#")("ы" "y") 
("ь" "'")("э" "je")("ю" "ju")("я" "ja"))) 

(apply 'strcat 
(mapcar '(lambda (x / sym) 
(if (setq sym (assoc x translit)) 
(cadr sym) 
x 
) ;_ конец if 
) ;_ конец lambda 
(mapcar 'chr (vl-string->list str)) 
) ;_ конец mapcar 
) ;_ конец apply
)
(defun bg:layer-status-restore ()
(foreach item *PD_LAYER_LST*
(if (not (vlax-erased-p (car item)))
(vl-catch-all-apply
'(lambda ()
(vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
(vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
) ;_ end of lambda
) ;_ end of vl-catch-all-apply
) ;_ end of if
) ;_ end of foreach
(setq *PD_LAYER_LST* nil)
) ;_ end of defun

(defun bg:layer-status-save ()
(setq *PD_LAYER_LST* nil)
(vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(setq *PD_LAYER_LST* (cons (list item
(cons "freeze" (vla-get-freeze item))
(cons "lock" (vla-get-lock item))
) ;_ end of cons
*PD_LAYER_LST*
) ;_ end of cons
) ;_ end of setq
(vla-put-lock item :vlax-false)
(if (= (vla-get-freeze item) :vlax-true)
(vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
) ;_ end of vlax-for
) ;_ end of defun
При обработке файла который ниже пропадает кусок текста, странно...
Вложения
Тип файла: dwg
DWG 2000
1.dwg (2.52 Мб, 938 просмотров)
dpmoucpi вне форума  
 
Непрочитано 15.12.2010, 19:33
1 | #71
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Обновил #59 Использовал идею Александра Ривилиса из #62. Реализован п.1 в части объектов, обладающих свойством Textstring
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 26.01.2011, 15:28
#72
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Всем привет. Код работал как часики, но непонятно из-за чего перестал вообще заменять буквы.

код использовал
Код:
[Выделить все]
(defun C:R2E ( / *error* Doc)
;;;Rus To Eng
(vl-load-com) 
(defun *error* (msg)(princ msg)
(bg:layer-status-restore)
(vla-endundomark Doc)(princ)
)
(setq Doc (vla-get-activedocument (vlax-get-acad-object)))
(bg:layer-status-save)(vla-startundomark Doc)
(Translate-All-String-Objects Doc)
(bg:layer-status-restore)(vla-endundomark Doc)
(princ)
)

(defun Translate-All-String-Objects (Doc / txtstr tmp txt count)
(vlax-for Blk	(vla-get-Blocks Doc)
(if (= (vla-get-IsXref Blk) :vlax-false)
(progn
(setq count 0 txt (strcat "Changed " (vla-get-name Blk)))
(grtext -1 txt)
(vlax-for	Obj Blk
(setq count (1+ count))
(if (zerop(rem count 10))(grtext -1 (strcat txt " : " (itoa count))))
(if (and (vlax-write-enabled-p Obj)
         (vlax-property-available-p Obj 'TextString)
) ;_ end of and
(progn
  (entmod
  (mapcar '(lambda(pair)
	     (cons (car pair)
		   (if (= (type (cdr pair)) 'STR)
		       (trans-from-rus-to-translit (cdr pair))
		      (cdr pair)
		     )
		   )
	     )
	  (entget (vlax-vla-object->ename Obj))
	  )
  )
)
) ;_ end of if
) ;_ end of vlax-for
)
) ;_ end of if
) ;_ end of vlax-for
(vl-cmdf "_regenall")
)
(defun trans-from-rus-to-translit ( str / translit)(vl-load-com) 
;;; http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; http://forum.dwg.ru/showthread.php?t=13063
;;; Соответствие символов взято с translit.ru
;;; по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; name - исходная строка 
;;; возвращается преобразованная 
(setq translit 
'(("А" "A")("Б" "B")("В" "V")("Г" "G")("Д" "D")("Е" "E")("Ё" "YO")("Ж" "ZH")("З" "Z") 
("И" "I")("Й" "J")("К" "K")("Л" "L")("М" "M")("Н" "N")("О" "O")("П" "P")("Р" "R")("С" "S") 
("Т" "T")("У" "U")("Ф" "F")("Х" "X")("Ц" "C")("Ч" "CH")("Ш" "SH")("Щ" "SHH")("Ъ" "#")("Ы" "Y") 
("Ь" "'")("Э" "JE")("Ю" "JU")("Я" "JA")("а" "a")("б" "b")("в" "v")("г" "g")("д" "d")("е" "e") 
("ё" "yo")("ж" "zh")("з" "z")("и" "i")("й" "j")("к" "k")("л" "l")("м" "m")("н" "n")("о" "o")("п" "p") 
("р" "r")("с" "s")("т" "t")("у" "u")("ф" "f")("х" "x")("ц" "c")("ч" "ch")("ш" "sh")("щ" "shh")("ъ" "#")("ы" "y") 
("ь" "'")("э" "je")("ю" "ju")("я" "ja"))) 

(apply 'strcat 
(mapcar '(lambda (x / sym) 
(if (setq sym (assoc x translit)) 
(cadr sym) 
x 
) ;_ конец if 
) ;_ конец lambda 
(mapcar 'chr (vl-string->list str)) 
) ;_ конец mapcar 
) ;_ конец apply
)
(defun bg:layer-status-restore ()
(foreach item *PD_LAYER_LST*
(if (not (vlax-erased-p (car item)))
(vl-catch-all-apply
'(lambda ()
(vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
(vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
) ;_ end of lambda
) ;_ end of vl-catch-all-apply
) ;_ end of if
) ;_ end of foreach
(setq *PD_LAYER_LST* nil)
) ;_ end of defun

(defun bg:layer-status-save ()
(setq *PD_LAYER_LST* nil)
(vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(setq *PD_LAYER_LST* (cons (list item
(cons "freeze" (vla-get-freeze item))
(cons "lock" (vla-get-lock item))
) ;_ end of cons
*PD_LAYER_LST*
) ;_ end of cons
) ;_ end of setq
(vla-put-lock item :vlax-false)
(if (= (vla-get-freeze item) :vlax-true)
(vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
) ;_ end of vlax-for
) ;_ end of defun

файл который проверял прилагаю.
Странно как-то.
Вложения
Тип файла: dwg
DWG 2007
14.TS.1101.CV.SS.D.019.00.e.dwg (1.96 Мб, 960 просмотров)
dpmoucpi вне форума  
 
Непрочитано 26.01.2011, 16:24
#73
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


А какие буквы он должен был заменить? При первом взгляде на чертеж русские буквы я не нашел.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 26.01.2011, 16:27
#74
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


букву "м" не заменяет
dpmoucpi вне форума  
 
Непрочитано 26.01.2011, 16:54
#75
lastloch


 
Регистрация: 23.12.2010
Сообщений: 65


А если временно подцепить шрифты, не содержащие кириллицы, то эти буквовки будет видно невооруженным глазом без всякого программирования.
lastloch вне форума  
 
Непрочитано 26.01.2011, 17:11
#76
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Проблема в том, что я посоветовал VVA проверять все строковые данные примитива - среди них попались и имена слоев (это еще ничего) , но и имена текстовых стилей - а вот это плохо. А они у тебя тоже русскими буквами...
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 26.01.2011, 17:57
#77
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Цитата:
Сообщение от lastloch Посмотреть сообщение
А если временно подцепить шрифты, не содержащие кириллицы, то эти буквовки будет видно невооруженным глазом без всякого программирования.
Если чертежей тысячи то это становица проблемма

Александр Ривилис: не смотря на это, всё работало норм, а теперь как отрубило, блин..
dpmoucpi вне форума  
 
Непрочитано 26.01.2011, 18:40
#78
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Замени строку:
Код:
[Выделить все]
(if (= (type (cdr pair)) 'STR)
на
Код:
[Выделить все]
(if (and (member (car pair) '(1 3)) (= (type (cdr pair)) 'STR))
и попробуй.
Александр Ривилис вне форума  
 
Непрочитано 26.01.2011, 18:56
1 | #79
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Обновил #59 Добавил п.2 из #62 (перекодировка символьных таблиц). Должно работать
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 28.01.2011, 10:43
#80
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Спасибо всё заработало с прежней силой)
dpmoucpi вне форума  
 
Автор темы   Непрочитано 07.02.2011, 14:51
#81
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Ошибка в AutoCad: "неверный тип аргумента: lentityp nil"

код:
Код:
[Выделить все]
(defun C:R2E ( / *error* Doc)
;;;Rus To Eng
(vl-load-com) 
(defun *error* (msg)(princ msg)
(bg:layer-status-restore)
(vla-endundomark Doc)(princ)
)
(setq Doc (vla-get-activedocument (vlax-get-acad-object)))
(bg:layer-status-save)(vla-startundomark Doc)
(Translate-All-String-Objects Doc)
(bg:layer-status-restore)(vla-endundomark Doc)
(princ)
)

(defun Translate-All-String-Objects (Doc / txtstr tmp txt count)
  (foreach item '("LAYER" "LTYPE" "VIEW" "STYLE" "BLOCK" "UCS" "APPID" "DIMSTYLE" "VPORT")
    (foreach item1 (tablelist  item)
      (entmod
      (mapcar '(lambda(pair)
	     (cons (car pair)
		   (if (= (type (cdr pair)) 'STR)
		       (trans-from-rus-to-translit (cdr pair))
		      (cdr pair)
		     )
		   )
	     )
	  (entget(tblobjname item item1))
	  )
      )
      )
    )
(vlax-for Blk	(vla-get-Blocks Doc)
(if (= (vla-get-IsXref Blk) :vlax-false)
(progn
(setq count 0 txt (strcat "Changed " (vla-get-name Blk)))
(grtext -1 txt)
(vlax-for	Obj Blk
(setq count (1+ count))
(if (zerop(rem count 10))(grtext -1 (strcat txt " : " (itoa count))))
(if (and (vlax-write-enabled-p Obj)
         (vlax-property-available-p Obj 'TextString)
) ;_ end of and
(progn
  (entmod
  (mapcar '(lambda(pair)
	     (cons (car pair)
		   (if (= (type (cdr pair)) 'STR)
		       (trans-from-rus-to-translit (cdr pair))
		      (cdr pair)
		     )
		   )
	     )
	  (entget (vlax-vla-object->ename Obj))
	  )
  )
)
) ;_ end of if
) ;_ end of vlax-for
)
) ;_ end of if
) ;_ end of vlax-for
(vl-cmdf "_regenall")
)
(defun trans-from-rus-to-translit ( str / translit)(vl-load-com) 
;;; http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; http://forum.dwg.ru/showthread.php?t=13063
;;; Соответствие символов взято с translit.ru
;;; по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; name - исходная строка 
;;; возвращается преобразованная 
(setq translit 
'(("А" "A")("Б" "B")("В" "B")("Г" "G")("Д" "D")("Е" "E")("І" "I")("К" "K")("М" "M")("Н" "H")("О" "O")("Р" "P")("С" "C")("Т" "T")("Х" "X")("а" "a")("б" "b")("е" "e")("к" "k")("м" "m")("о" "o")("р" "p")("т" "t")("х" "x")("у" "y")("Э" "E")("с" "c"))) 

(apply 'strcat 
(mapcar '(lambda (x / sym) 
(if (setq sym (assoc x translit)) 
(cadr sym) 
x 
) ;_ конец if 
) ;_ конец lambda 
(mapcar 'chr (vl-string->list str)) 
) ;_ конец mapcar 
) ;_ конец apply
)
(defun tablelist (s / d r)
 (while (setq d (tblnext s (null d)))
   (setq r (cons (cdr (assoc 2 d)) r))
)
)
(defun bg:layer-status-restore ()
(foreach item *PD_LAYER_LST*
(if (not (vlax-erased-p (car item)))
(vl-catch-all-apply
'(lambda ()
(vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
(vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
) ;_ end of lambda
) ;_ end of vl-catch-all-apply
) ;_ end of if
) ;_ end of foreach
(setq *PD_LAYER_LST* nil)
) ;_ end of defun

(defun bg:layer-status-save ()
(setq *PD_LAYER_LST* nil)
(vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(setq *PD_LAYER_LST* (cons (list item
(cons "freeze" (vla-get-freeze item))
(cons "lock" (vla-get-lock item))
) ;_ end of cons
*PD_LAYER_LST*
) ;_ end of cons
) ;_ end of setq
(vla-put-lock item :vlax-false)
(if (= (vla-get-freeze item) :vlax-true)
(vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
) ;_ end of vlax-for
) ;_ end of defun
Вложения
Тип файла: dwg
DWG 2007
14.TS.1100.CV.CS.D.011.00.e.dwg (1.99 Мб, 874 просмотров)
dpmoucpi вне форума  
 
Непрочитано 07.02.2011, 16:21
1 | #82
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Обновил #59
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 16.03.2011, 14:57
#83
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Код начал менять шрифты и некоторые знаки
Код:
[Выделить все]
(defun C:R2E ( / *error* Doc)
;;;Rus To Eng
(vl-load-com) 
(defun *error* (msg)(princ msg)
(bg:layer-status-restore)
(vla-endundomark Doc)(princ)
)
(setq Doc (vla-get-activedocument (vlax-get-acad-object)))
(bg:layer-status-save)(vla-startundomark Doc)
(Translate-All-String-Objects Doc)
(bg:layer-status-restore)(vla-endundomark Doc)
(princ)
)

(defun Translate-All-String-Objects (Doc / txtstr tmp txt count)
  (foreach item '("LAYER" "LTYPE" "VIEW" "STYLE" "BLOCK" "UCS" "APPID" "DIMSTYLE" "VPORT")
    (foreach item1 (tablelist  item)
      (if (tblobjname item item1)
      (entmod
      (mapcar '(lambda(pair)
	     (cons (car pair)
		   (if (= (type (cdr pair)) 'STR)
		       (trans-from-rus-to-translit (cdr pair))
		      (cdr pair)
		     )
		   )
	     )
	  (entget(tblobjname item item1))
	  )
      )
        )
      )
    )
(vlax-for Blk	(vla-get-Blocks Doc)
(if (= (vla-get-IsXref Blk) :vlax-false)
(progn
(setq count 0 txt (strcat "Changed " (vla-get-name Blk)))
(grtext -1 txt)
(vlax-for	Obj Blk
(setq count (1+ count))
(if (zerop(rem count 10))(grtext -1 (strcat txt " : " (itoa count))))
(if (and (vlax-write-enabled-p Obj)
         (vlax-property-available-p Obj 'TextString)
) ;_ end of and
(progn
  (entmod
  (mapcar '(lambda(pair)
	     (cons (car pair)
		   (if (= (type (cdr pair)) 'STR)
		       (trans-from-rus-to-translit (cdr pair))
		      (cdr pair)
		     )
		   )
	     )
	  (entget (vlax-vla-object->ename Obj))
	  )
  )
)
) ;_ end of if
) ;_ end of vlax-for
)
) ;_ end of if
) ;_ end of vlax-for
(vl-cmdf "_regenall")
)
(defun trans-from-rus-to-translit ( str / translit)(vl-load-com) 
;;; http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; http://forum.dwg.ru/showthread.php?t=13063
;;; Соответствие символов взято с translit.ru
;;; по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; name - исходная строка 
;;; возвращается преобразованная 
(setq translit 
'(("А" "A")("Б" "B")("В" "B")("Г" "G")("Д" "D")("Е" "E")("І" "I")("К" "K")("М" "M")("Н" "H")("О" "O")("Р" "P")("С" "C")("Т" "T")("Х" "X")("а" "a")("б" "b")("е" "e")("к" "k")("м" "m")("о" "o")("р" "p")("т" "t")("х" "x")("у" "y")("Э" "E")("с" "c"))) 

(apply 'strcat 
(mapcar '(lambda (x / sym) 
(if (setq sym (assoc x translit)) 
(cadr sym) 
x 
) ;_ конец if 
) ;_ конец lambda 
(mapcar 'chr (vl-string->list str)) 
) ;_ конец mapcar 
) ;_ конец apply
)
(defun tablelist (s / d r)
 (while (setq d (tblnext s (null d)))
   (setq r (cons (cdr (assoc 2 d)) r))
)
)
(defun bg:layer-status-restore ()
(foreach item *PD_LAYER_LST*
(if (not (vlax-erased-p (car item)))
(vl-catch-all-apply
'(lambda ()
(vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
(vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
) ;_ end of lambda
) ;_ end of vl-catch-all-apply
) ;_ end of if
) ;_ end of foreach
(setq *PD_LAYER_LST* nil)
) ;_ end of defun

(defun bg:layer-status-save ()
(setq *PD_LAYER_LST* nil)
(vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(setq *PD_LAYER_LST* (cons (list item
(cons "freeze" (vla-get-freeze item))
(cons "lock" (vla-get-lock item))
) ;_ end of cons
*PD_LAYER_LST*
) ;_ end of cons
) ;_ end of setq
(vla-put-lock item :vlax-false)
(if (= (vla-get-freeze item) :vlax-true)
(vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
) ;_ end of vlax-for
) ;_ end of defun
Вложения
Тип файла: dwg
DWG 2007
14.CP.0100.HD.SW.D.037.00.e.dwg (2.57 Мб, 876 просмотров)
dpmoucpi вне форума  
 
Непрочитано 16.03.2011, 17:33
#84
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


У меня сейчас времени разбираться нет. Сделал, как посоветовали в #78
Код:
[Выделить все]
(defun C:R2E ( / *error* Doc)
;;;Rus To Eng
(vl-load-com) 
(defun *error* (msg)(princ msg)
(bg:layer-status-restore)
(vla-endundomark Doc)(princ)
)
(setq Doc (vla-get-activedocument (vlax-get-acad-object)))
(bg:layer-status-save)(vla-startundomark Doc)
(Translate-All-String-Objects Doc)
(bg:layer-status-restore)(vla-endundomark Doc)
(princ)
)

(defun Translate-All-String-Objects (Doc / txtstr tmp txt count)
;;;  (foreach item '("LAYER" "LTYPE" "VIEW" "STYLE" "BLOCK" "UCS" "APPID" "DIMSTYLE" "VPORT")
;;;    (foreach item1 (tablelist  item)
;;;      (if (tblobjname item item1)
;;;      (entmod
;;;      (mapcar '(lambda(pair)
;;;	     (cons (car pair)
;;;		   (if (= (type (cdr pair)) 'STR)
;;;		       (trans-from-rus-to-translit (cdr pair))
;;;		      (cdr pair)
;;;		     )
;;;		   )
;;;	     )
;;;	  (entget(tblobjname item item1))
;;;	  )
;;;      )
;;;        )
;;;      )
;;;    )
(vlax-for Blk	(vla-get-Blocks Doc)
(if (= (vla-get-IsXref Blk) :vlax-false)
(progn
(setq count 0 txt (strcat "Changed " (vla-get-name Blk)))
(grtext -1 txt)
(vlax-for	Obj Blk
(setq count (1+ count))
(if (zerop(rem count 10))(grtext -1 (strcat txt " : " (itoa count))))
(if (and (vlax-write-enabled-p Obj)
         (vlax-property-available-p Obj 'TextString)
) ;_ end of and
(progn
  (entmod
  (mapcar '(lambda(pair)
	     (cons (car pair)
                   (if (and (member (car pair) '(1 3)) (= (type (cdr pair)) 'STR))
		       (trans-from-rus-to-translit (cdr pair))
		      (cdr pair)
		     )
		   )
	     )
	  (entget (vlax-vla-object->ename Obj))
	  )
  )
)
) ;_ end of if
) ;_ end of vlax-for
)
) ;_ end of if
) ;_ end of vlax-for
(vl-cmdf "_regenall")
)
(defun trans-from-rus-to-translit ( str / translit)(vl-load-com) 
;;; http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; http://forum.dwg.ru/showthread.php?t=13063
;;; Соответствие символов взято с translit.ru
;;; по мотивам http://www.caduser.ru/cgi-bin/f1/board.cgi?t=28488Sx
;;; name - исходная строка 
;;; возвращается преобразованная 
(setq translit 
'(("А" "A")("Б" "B")("В" "B")("Г" "G")("Д" "D")("Е" "E")("І" "I")("К" "K")("М" "M")("Н" "H")("О" "O")("Р" "P")("С" "C")("Т" "T")("Х" "X")("а" "a")("б" "b")("е" "e")("к" "k")("м" "m")("о" "o")("р" "p")("т" "t")("х" "x")("у" "y")("Э" "E")("с" "c"))) 

(apply 'strcat 
(mapcar '(lambda (x / sym) 
(if (setq sym (assoc x translit)) 
(cadr sym) 
x 
) ;_ конец if 
) ;_ конец lambda 
(mapcar 'chr (vl-string->list str)) 
) ;_ конец mapcar 
) ;_ конец apply
)
(defun tablelist (s / d r)
 (while (setq d (tblnext s (null d)))
   (setq r (cons (cdr (assoc 2 d)) r))
)
)
(defun bg:layer-status-restore ()
(foreach item *PD_LAYER_LST*
(if (not (vlax-erased-p (car item)))
(vl-catch-all-apply
'(lambda ()
(vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
(vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
) ;_ end of lambda
) ;_ end of vl-catch-all-apply
) ;_ end of if
) ;_ end of foreach
(setq *PD_LAYER_LST* nil)
) ;_ end of defun

(defun bg:layer-status-save ()
(setq *PD_LAYER_LST* nil)
(vlax-for item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
(setq *PD_LAYER_LST* (cons (list item
(cons "freeze" (vla-get-freeze item))
(cons "lock" (vla-get-lock item))
) ;_ end of cons
*PD_LAYER_LST*
) ;_ end of cons
) ;_ end of setq
(vla-put-lock item :vlax-false)
(if (= (vla-get-freeze item) :vlax-true)
(vl-catch-all-apply '(lambda () (vla-put-freeze item :vlax-false))))
) ;_ end of vlax-for
) ;_ end of defun
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 16.03.2011, 17:44
#85
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Но это к сожалению не помогло))
dpmoucpi вне форума  
 
Непрочитано 16.03.2011, 18:26
#86
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


dpmoucpi, Из всего чертежа оставь 1 текст, у которого меняет шрифт и 1 текст, у которого меняет знак и выложи этот dwg.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 17.03.2011, 10:29
#87
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Выяснилось, что если чертёж перед запуском лсп почистить утилитой, то код работает нормально.
dpmoucpi вне форума  
 
Непрочитано 17.03.2011, 11:09
#88
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от dpmoucpi Посмотреть сообщение
Выяснилось, что если чертёж перед запуском лсп почистить утилитой, то код работает нормально.
Уточни, какая утилита и какой код (номер поста) работает нормально?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 17.03.2011, 12:49
#89
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


проверял код с поста номера 83 и 84. Утилита стандартная автокадовская "Очистить".
dpmoucpi вне форума  
 
Непрочитано 17.03.2011, 13:06
#90
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Добавил purge и audit в #59
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 18.03.2011, 11:30
#91
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Код меняет шрифт и некоторые элементы текста если шрифт в открытом чертеже ариал кир, если обычный ариал то всё нормально.
dpmoucpi вне форума  
 
Непрочитано 18.03.2011, 12:28
#92
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от dpmoucpi Посмотреть сообщение
Код меняет шрифт и некоторые элементы текста если шрифт в открытом чертеже ариал кир
Открой меню Формат->Тесктовый стиль и найди среди шрифтов Arial Cyr/ (Его нет). Значит, идет подстановка шрифтов (Font Substitution). По умолчанию меняется на simplex. http://forum.dwg.ru/showthread.php?t=59854
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 18.03.2011, 16:49
#93
dpmoucpi


 
Регистрация: 25.11.2010
Киев
Сообщений: 29


Цитата:
Сообщение от VVA Посмотреть сообщение
Открой меню Формат->Тесктовый стиль и найди среди шрифтов Arial Cyr/ (Его нет). Значит, идет подстановка шрифтов (Font Substitution). По умолчанию меняется на simplex. http://forum.dwg.ru/showthread.php?t=59854
Он там есть, и если для него поменять шрифт на ариал и запустить лисп то получается как надо.
dpmoucpi вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Поиск русских букв в чертежах на английском языке.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу СНиП на Английском языке aibek Поиск литературы, чертежей, моделей и прочих материалов 2 09.05.2013 04:51
Журналы на английском языке по проектированию зданий и металлических конструкций nex2hex Поиск литературы, чертежей, моделей и прочих материалов 0 22.09.2010 11:43
Ищу литературу по деревянным конструкциям на английском языке Foksolic Поиск литературы, чертежей, моделей и прочих материалов 9 25.02.2009 17:31
Ищу статью на английском языке 10-12 тысяч слов. Sherry Поиск литературы, чертежей, моделей и прочих материалов 2 10.09.2008 10:41
Надписи на чертежах на Украинском языке sash1222 AutoCAD 1 27.11.2007 12:41