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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp- файлы, созданные в версиях Autocad до 2000

Lisp- файлы, созданные в версиях Autocad до 2000

Ответ
Поиск в этой теме
Непрочитано 15.10.2008, 12:40 #1
Lisp- файлы, созданные в версиях Autocad до 2000
Borikv
 
Регистрация: 24.10.2007
Сообщений: 108

Помогите, пожалуйста, найти темы на форуме, где обсуждались переделки Lisp- файлов, созданных в версиях до 2000. Конвертация и т.п
Просмотров: 2816
 
Непрочитано 15.10.2008, 12:45
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


По-моему, никакой конвертации не требуется. У меня полно Lisp-файлов, написанных еще для AutoCAD 13 и 14 и они нормально работают в 2009.
Другое дело, если программы писались в DOS, тогда надо сконвертировать тексты из DOS 866 в ANSI 1251.

Последний раз редактировалось Profan, 15.10.2008 в 12:51.
Profan вне форума  
 
Непрочитано 15.10.2008, 12:59
#3
Alan

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


Цитата:
Сообщение от Borikv Посмотреть сообщение
Помогите, пожалуйста, найти темы на форуме, где обсуждались переделки Lisp- файлов, созданных в версиях до 2000. Конвертация и т.п
Чаще возникала проблема работы в локализованной версии. Например, в русской.
В остальном полностью согласен с Profan
Вы опубликуйте здесь какой-то небольшой текст (или кусок оттуда, чтобы не раскрыть секретов ), особенно там где есть COMMAND и всё определиться довольно быстро.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 15.10.2008, 13:17
#4
Borikv


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


Не всё так просто. Некоторые команды и переменные аннулированы и не поддерживаются новыми версиями.
Для примера небольшая программка


(defun C:LW (/ POLY S P X Y $XY PT H)
;Write LENGTH x WIDTH of Polyline
(setq *ERROR* STOP)
(princ "\nSelect Polylines for Length x Width: ")
(setq SS (ssget)
N 0
L (sslength SS)
)
(initget 1)
(setvar "cmdecho" 0)
(if (tblsearch "LAYER" "TXT")
(command "layer" "s" "txt" "")
(command "layer" "m" "txt" "c" "14" "txt" "")
)
(if (not (tblsearch "STYLE" "S"))
(command "style" "S" "txt" "" "1" "" "" "" "")
)
(command "text" "style" "S" command)
(setq H (getvar "LTSCALE"))
(repeat L
(setq NAME (ssname SS N)
P1 (cdr (assoc 10 (entget (entnext NAME))))
P2 (cdr (assoc 10 (entget (entnext (entnext (entnext NAME))))))
POLY (list (ssname SS N) P1)
)
(command "area" "e" POLY)
(setq PT (MIDPT P1 P2)
A (getvar "AREA")
P (getvar "PERIMETER")
X (/ ( + P (sqrt (- (* P P) (* 16 A)))) 400)
Y (/ ( - P (sqrt (- (* P P) (* 16 A)))) 400)
$XY (strcat (rtos X 2 2) " x " (rtos Y 2 2))
)
(command "text" "c" PT H "0" $XY)
(setq N (1+ N))
)
(setvar "cmdecho" 1)
(princ)
)
;
(defun MIDPT (PT1 PT2)
(mapcar '(lambda (x y) (/ (+ x y) 2)) PT1 PT2)
)
;
(defun STOP (msg)
(cond
((or (eq msg "console break")
(eq msg "Function cancelled")
(eq msg "quit / exit abort")
)
(terpri)
)
(T
(princ "error: ")
(princ msg)
)
)
(setq *error* nil)
(PrinC)
)
;
(C:LW)

Borikv вне форума  
 
Непрочитано 15.10.2008, 13:17
#5
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,254


От версии к версии могет меняться логика работы некоторых команд Автокада, а также их опций. Поэтому, ИМХО, в большинстве случаев вся адаптация сводится к корректировке конструкций Command. А это делается весьма быстро.

Добавлено:
Пока это писал, код уже выложили. Будем смотреть...
Makswell вне форума  
 
Непрочитано 15.10.2008, 13:20
#6
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,254


По коду:
Borikv, если у тебя Автокад русский, то всё ясно с первого взгляда...
Makswell вне форума  
 
Непрочитано 15.10.2008, 13:23
#7
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Ну, переделку кода нельзя назвать конвертацией.
Profan вне форума  
 
Непрочитано 15.10.2008, 13:27
#8
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Помню, лиспы для AutoCAD 10 рус я писал с написанием команд на русском языке. Потом пришлось переделывать на английский. А вот когда появился подчерк "_" как-то и не помню уже.
Profan вне форума  
 
Автор темы   Непрочитано 15.10.2008, 13:45
#9
Borikv


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


Автокад английский
Borikv вне форума  
 
Непрочитано 15.10.2008, 14:53
#10
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,070


"Небольшая программка для примера" написана некорректно и для Автокада любой ранней версии. Хотя бы (command "text" "c" PT H "0" $XY).

Она просто обязана не работать, а работать может только случайно. При сочетании положения небесных тел. Дело не в конвертировании. Правильные программы работают во всех версиях. Это обратной совместимости может не быть.

Но, если непременно хочется испытать процесс, начиная с 2000 поставлялась специальная утилита для конвертирования LISP. Суть её работы заключалась в простановке дополнительных комментарияев в подозрительных местах. Толку от этого мало было, сейчас, наверное и нет такой.
ShaggyDoc вне форума  
 
Непрочитано 16.10.2008, 04:27
#11
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


Цитата:
Сообщение от Makswell Посмотреть сообщение
От версии к версии могет меняться логика работы некоторых команд Автокада, а также их опций. Поэтому, ИМХО, в большинстве случаев вся адаптация сводится к корректировке конструкций Command. А это делается весьма быстро.
Не нужно забывать и о системных переменных, хоть и весьма редко, но они тоже меняются.
Цитата:
Правильные программы работают во всех версиях.
Это точно! Особенно если программы написаны на языке Lisp. Если мне не изменяет память, для программ, написанным в Acad10, пришлось изменить всего ничего (помню команду Insert, и еще какую-то переменную, забыл какую).
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
 
Непрочитано 16.10.2008, 05:44
#12
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Конечно, если вы писали программ для буржуев (на английском языке).
Profan вне форума  
 
Непрочитано 16.10.2008, 06:25
#13
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,070


Цитата:
Сообщение от Profan Посмотреть сообщение
Конечно, если вы писали программ для буржуев (на английском языке).
Он писал программы для мальчишей-кибальчишей, но писал правильно. Специальные варианты программ, с использованием именно русских имен команд в функции command надо было делать только в Автокад-10. Там были два разных ядра - в аглийской и локализованной версии. Начиная с R12 следует использовать "родное" имя команды (английское) с префиксом "_". То же относится к опциям команд.

Грешить на AutoCAD можно при использовании пиратски "русифицированных" версий, когда уроды, занимающиеся русификацией правили dll. При этом, были случаи, когда русифицировали и опции SSGET. Вот это делало Автокад непригодным для программирования.

Напомню самые распространённые "детские" ошибки, при которых кажется, что "виноват Автокад":

1. Неотключение объектной привязки при рисовании через command. Программа может "всегда работала", но перестанет, если у какого-то пользователя включена постоянная привязка.

2. Использование постоянного количества ответов при рисвовании текста. Если программа была заточена на текст с фиксированной высотой (или наоборот), она не будет работать при других параметрах текущего стиля.

3. Использование русских имен команд и опций.

Конечно, бывают и сотни других ошибок, но эти - "болезнь немытых рук".
ShaggyDoc вне форума  
 
Непрочитано 16.10.2008, 06:39
#14
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,663


Так речь и шла именно об AutoCAD 10. Как раз у нас использовался русский вариант и программировать приходилось на русском языке. Но я имел в виду не только названия команд, но и запросы и сообщения в коде. Видимо, до сих пор еще существуют индивиды, которые предпочитают в лиспах все писать на английском языке, черт бы их побрал. Крутые, блин.
Profan вне форума  
 
Непрочитано 17.10.2008, 02:52
#15
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


Цитата:
Сообщение от Profan Посмотреть сообщение
Видимо, до сих пор еще существуют индивиды, которые предпочитают в лиспах все писать на английском языке, черт бы их побрал. Крутые, блин.
А вы знаете, существуют! И даже стараются, чтобы английский не мешал русскому (конечно Великому и Mогучему). Слава богу Acad предусмотрел эту ситуацию (см. в командах и опциях "_.").
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
 
Непрочитано 17.10.2008, 08:38
#16
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,809


Мне кажется, имелись в виду выводимые сообщения (в ком.строку и в диалоги)
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp- файлы, созданные в версиях Autocad до 2000

Система Техэксперт дает уверенность в правильности и эффективности принимаемых инженерных решений!
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
lisp для англ Autocad не работает для русск autocad Alegzander LISP 7 28.05.2007 14:54
чертежи с Autocad 2006 не копируются в Аutocad 2000 Dima_kr AutoCAD 16 09.02.2007 07:55
AutoCAD 2000 rus и Windows XP Briz06 AutoCAD 12 06.11.2006 10:40
Autocad dbconnect Lisp игорёк LISP 6 12.05.2006 08:57