|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
15.10.2008, 12:40 | #1 | |
Lisp- файлы, созданные в версиях Autocad до 2000
Регистрация: 24.10.2007
Сообщений: 108
|
||
Просмотров: 2999
|
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
По-моему, никакой конвертации не требуется. У меня полно Lisp-файлов, написанных еще для AutoCAD 13 и 14 и они нормально работают в 2009.
Другое дело, если программы писались в DOS, тогда надо сконвертировать тексты из DOS 866 в ANSI 1251. Последний раз редактировалось Profan, 15.10.2008 в 12:51. |
|||
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,835
|
Цитата:
В остальном полностью согласен с Profan Вы опубликуйте здесь какой-то небольшой текст (или кусок оттуда, чтобы не раскрыть секретов ), особенно там где есть COMMAND и всё определиться довольно быстро.
__________________
По теории майский жук летать не может. Но он этого не знает. И летает... |
|||
|
||||
Регистрация: 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) |
|||
|
||||
Инженер-строитель Регистрация: 15.08.2007
Киров
Сообщений: 2,204
|
От версии к версии могет меняться логика работы некоторых команд Автокада, а также их опций. Поэтому, ИМХО, в большинстве случаев вся адаптация сводится к корректировке конструкций Command. А это делается весьма быстро.
Добавлено: Пока это писал, код уже выложили. Будем смотреть... |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
"Небольшая программка для примера" написана некорректно и для Автокада любой ранней версии. Хотя бы (command "text" "c" PT H "0" $XY).
Она просто обязана не работать, а работать может только случайно. При сочетании положения небесных тел. Дело не в конвертировании. Правильные программы работают во всех версиях. Это обратной совместимости может не быть. Но, если непременно хочется испытать процесс, начиная с 2000 поставлялась специальная утилита для конвертирования LISP. Суть её работы заключалась в простановке дополнительных комментарияев в подозрительных местах. Толку от этого мало было, сейчас, наверное и нет такой. |
|||
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
Цитата:
Цитата:
__________________
Лень - великий двигатель прогресса! |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Он писал программы для мальчишей-кибальчишей, но писал правильно. Специальные варианты программ, с использованием именно русских имен команд в функции command надо было делать только в Автокад-10. Там были два разных ядра - в аглийской и локализованной версии. Начиная с R12 следует использовать "родное" имя команды (английское) с префиксом "_". То же относится к опциям команд.
Грешить на AutoCAD можно при использовании пиратски "русифицированных" версий, когда уроды, занимающиеся русификацией правили dll. При этом, были случаи, когда русифицировали и опции SSGET. Вот это делало Автокад непригодным для программирования. Напомню самые распространённые "детские" ошибки, при которых кажется, что "виноват Автокад": 1. Неотключение объектной привязки при рисовании через command. Программа может "всегда работала", но перестанет, если у какого-то пользователя включена постоянная привязка. 2. Использование постоянного количества ответов при рисвовании текста. Если программа была заточена на текст с фиксированной высотой (или наоборот), она не будет работать при других параметрах текущего стиля. 3. Использование русских имен команд и опций. Конечно, бывают и сотни других ошибок, но эти - "болезнь немытых рук". |
|||
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Так речь и шла именно об AutoCAD 10. Как раз у нас использовался русский вариант и программировать приходилось на русском языке. Но я имел в виду не только названия команд, но и запросы и сообщения в коде. Видимо, до сих пор еще существуют индивиды, которые предпочитают в лиспах все писать на английском языке, черт бы их побрал. Крутые, блин.
|
|||
|
||||
геологоразведка, строительство Регистрация: 14.10.2003
Магадан
Сообщений: 311
|
А вы знаете, существуют! И даже стараются, чтобы английский не мешал русскому (конечно Великому и Mогучему). Слава богу Acad предусмотрел эту ситуацию (см. в командах и опциях "_.").
__________________
Лень - великий двигатель прогресса! |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,833
|
Мне кажется, имелись в виду выводимые сообщения (в ком.строку и в диалоги)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
запуск программы из 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 |