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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп программа – переводчик терминов.

Лисп программа – переводчик терминов.

Ответ
Поиск в этой теме
Непрочитано 28.10.2008, 17:25 #1
Лисп программа – переводчик терминов.
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,990

VVA написал программу для перевода терминов. Вот она. Суть вот в чем. Выбираем объекты, лисп находит во всех текстовых примитивах нужные термины, и заменяет их соответствующим переводом. Данные о словаре хранятся в том же lsp файле.
Код:
[Выделить все]
(defun transAR ( Kuda / nab lst table str from to)
;; Kuda - t русский - латинский
;; Kuda - nil латинский - русский
;;Таблица соответсвия
;;Соответсвия буквальное !!!!
;; Русская подстрока - латинская (а в твоем случае - армянская
   (setq table '(
               ("Двутавр" "Dvutabr")
               ("Швеллер" "Shveller")
               ("Дюбель-шпилька" "Dubel")
               ("Уголок" "Ugolok")
               ("Труба" "TRUBA")
               ("Болт" "BOLT")
               ("ГОСТ" "Gost")
               ("ГОСт" "Gost")
               )
       )
(if (setq nab (ssget "_:L" '((0 . "*TEXT"))))
  (foreach item (_dwgru-conv-pickset-to-list nab)
    (setq item (_dwgru-conv-ent-to-vla item))
    (setq str (vla-get-TextString item))
    (foreach rul table
      (if Kuda (setq from (car rul) to (cadr rul))
               (setq from (cadr rul) to (car rul))
        )
      (setq str (dwgru-string-replace str from to)))
    (vla-put-TextString item str)
    )
  )
  (princ)
  )
(defun C:EREVAN ()(transAR t))
(defun C:MOSKOW ()(transAR nil))
Проблема в том, что при переводе некоторые специальные символы СПДС на моем компьютере превращаются в вопросы, хотя у VVA работает коректно. В чем дело?
__________________
Блог
Просмотров: 2818
 
Автор темы   Непрочитано 28.10.2008, 19:56
#2
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Вот кстати ролик работы лиспа. Видно как спец символы СПДС становятся вопросами.
Ролик
__________________
Блог
Red Nova вне форума  
 
Непрочитано 28.10.2008, 20:53
#3
VVA

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


Что возвращает этот лисп
Код:
[Выделить все]
(vla-get-textstring (vlax-ename->vla-object(car(entsel "\nУкажи строку"))))
если ткуть в строчку с символами СПДС
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 28.10.2008, 20:55
#4
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Двутавр20 (Двутавр - естественно символ СПДС) возвращяет
"{\\Fcs_gost2304|c186;?}20"
__________________
Блог
Red Nova вне форума  
 
Непрочитано 28.10.2008, 22:57
#5
VVA

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


Нужет текст до выполнения перевода, когда символ нормально отображается
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 29.10.2008, 15:27
#6
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Вот
__________________
Блог
Red Nova вне форума  
 
Непрочитано 29.10.2008, 15:32
#7
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


а что ваш лисп переводит то? непонятно, буквы с кирилицы на латиницу? и кому это надо
Рyslan вне форума  
 
Автор темы   Непрочитано 29.10.2008, 15:40
#8
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


Рyslan, Ну неужели не понятно что это просто пример. Туда можешь засунуть хоть казахские термины вместо латиницы.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 29.10.2008, 15:41
#9
Рyslan


 
Регистрация: 25.07.2007
Сообщений: 2,518


Ладно не кипятись, уж и спросить нельзя
Рyslan вне форума  
 
Непрочитано 29.10.2008, 16:14
#10
gipro

лайсенсед инжиниа
 
Регистрация: 15.04.2006
город-герой Волгоград (Сталинград)
Сообщений: 1,158


Рyslan, частенько нужно, когда работаешь с иностранными заказчиками. Примечания-то уж сам пишешь, а вот такие мелочи автоматом исправлять - очень удобно. Было бы еще удобней, если бы тексты не менялись, о писались на отдельном слое. Мы так делаем (правда вручную). Надо распечатать с русским текстом - пожалуйста, английским - переключил слои и печатай.
gipro вне форума  
 
Непрочитано 29.10.2008, 16:25
#11
VVA

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


Короче дело в том, что для таких Мтекстов LISP и VLISP возвращают разные значения ???
Как говорится почувствуйте разницу
Цитата:
(cdr(assoc 1 (entget(car(entsel)))))
Возвращает
Труба {\\Fcs_gost2304|c186;\\H0.8333x;\U+E712\U+E720\U+E726\\Fcs_gost2304|c204; 85}"
(vla-get-TextString (vlax-ename->vla-object(car(entsel))))
Возвращает
"Труба {\\Fcs_gost2304|c186;\\H0.8333x;???\\Fcs_gost2304|c204; 85}"
Код:
[Выделить все]
(defun transAR ( Kuda / nab lst table str from to)
;; Kuda - t русский - латинский
;; Kuda - nil латинский - русский
;;Таблица соответсвия
;;Соответсвия буквальное !!!!
;; Русская подстрока - латинская (а в твоем случае - армянская
   (setq table '(
               ("Двутавр" "Dvutabr")
               ("Швеллер" "Shveller")
               ("Дюбель-шпилька" "Dubel")
               ("Уголок" "Ugolok")
               ("Труба" "TRUBA")
               ("Болт" "BOLT")
               ("ГОСТ" "Gost")
               ("ГОСт" "Gost")
               )
       )
(if (setq nab (ssget "_:L" '((0 . "*TEXT"))))
  (foreach item (_dwgru-conv-pickset-to-list nab)
    (setq str (cdr(assoc 1 (entget item))))
    (setq item (_dwgru-conv-ent-to-vla item))
    (foreach rul table
      (if Kuda (setq from (car rul) to (cadr rul))
               (setq from (cadr rul) to (car rul))
        )
      (setq str (dwgru-string-replace str from to)))
    (vla-put-TextString item str)
    )
  )
  (princ)
  )
(defun C:EREVAN ()(transAR t))
(defun C:MOSKOW ()(transAR nil))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 29.10.2008, 16:53
#12
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,990
Отправить сообщение для Red Nova с помощью Skype™


VVA, Спасибо, работает
__________________
Блог
Red Nova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп программа – переводчик терминов.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересно где работают ЛИСП программисты? dextron3 LISP 114 17.12.2017 13:53
Лисп для копирования данных нескольких мтекстов по принципу расположения. Red Nova LISP 14 18.06.2008 22:08
Фундамент с динамическими нагрузками в Scad Tlelaxu SCAD 9 31.08.2007 10:44
Есть какая нибудь программа для перевода лисп программ zebs LISP 33 13.03.2005 23:39