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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > На запускается фунция в автокаде

На запускается фунция в автокаде

Ответ
Поиск в этой теме
Непрочитано 05.04.2013, 14:39 #1
На запускается фунция в автокаде
Юлия611
 
Регистрация: 05.04.2013
Сообщений: 4

Нужно было написать программу калькулятор на lisp. Операции со скобками, гиперболические синус и косинус, перевод величин из метров в футы и обратно.

Написали 2 кода в 2 файла - в Calc.dcl - диалог, в 1.lsp - сам код.
Calc.dcl программный код:
Код:
[Выделить все]
; dialog

CalcMain : dialog {
 label="Калькулятор";
 :edit_box {
 key="input";
 fixed_width_font=true;
 initial_focus=true;
 }
 :button {
 label="1";
 key="num_1";
 fixed_width=true;
 is_tab_stop=true;
 }
 :button {
 label="2";
 key="num_2";
 fixed_width=true;
 is_tab_stop=true;
 }
 :button {
 label="Закрыть";
 key="close";
 fixed_width=true;
 is_tab_stop=true;
 }
 }

1.lsp код:



Код:
[Выделить все]
  (defun MetersToFuts(m)
 (* m 3.281)
 )


 (defun FutsToMeters(f)
 (* f 0.304)
 )


 (defun SINH(x)
 (setq a(- (exp x) (exp (- 0 x))))
 (/ a 2)
 )


 (defun COSH(x)
 (setq a(+ (exp x) (exp (- 0 x))))
 (/ a 2)
 )

(defun c:StartDialog()
 (setq DlgID (load_dialog "C:\Users\Юлия\Desktop\Calc.dcl")) 
 (if (not (new_dialog "CalcMain" DlgID)) (exit))
 (action_tile "close" "(done_dialog)")
 (action_tile "num_1" (setq a 1))
 (action_tile "num_2" (setq a 2))
 (start_dialog)
 (unload_dialog DlgID)
 )
Приложения загрузила, но функция StartDialog не работает, выдает ошибку: ; ошибка: завершить / выйти прервать.

Помогите, пожалуйста

Последний раз редактировалось Юлия611, 05.04.2013 в 15:57.
Просмотров: 5072
 
Непрочитано 05.04.2013, 15:35
1 | #2
Мансур

Инженер САПР
 
Регистрация: 12.11.2004
Тюмень
Сообщений: 36
<phrase 1=


выделил жирным, то чего не хватает
:button {
label="Закрыть";
key="close";
is_default=true;
fixed_width=true;
is_tab_stop=true;
}

надо выражения для action_tile передавать в виде строк:
(action_tile "num_1" "(setq a 1)")
(action_tile "num_2" "(setq a 2)")
Мансур вне форума  
 
Автор темы   Непрочитано 05.04.2013, 16:01
#3
Юлия611


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


Цитата:
Сообщение от Мансур Посмотреть сообщение
выделил жирным, то чего не хватает
:button {
label="Закрыть";
key="close";
is_default=true;
fixed_width=true;
is_tab_stop=true;
}

надо выражения для action_tile передавать в виде строк:
(action_tile "num_1" "(setq a 1)")
(action_tile "num_2" "(setq a 2)")
исправила, но все равно выдает ту же ошибку
Юлия611 вне форума  
 
Непрочитано 05.04.2013, 16:12
1 | #4
Мансур

Инженер САПР
 
Регистрация: 12.11.2004
Тюмень
Сообщений: 36
<phrase 1=


пардон, еще прозевал (load_dialog "C:\Users\Юлия\Desktop\Calc.dcl")
слеши надо либо дублировать "C:\\Users\\..", либо писать "C:/Users/..."
Мансур вне форума  
 
Непрочитано 05.04.2013, 16:23
1 | #5
Do$

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


Еще можно использовать функцию CVUNIT вместо FutsToMeters и т.п.
Do$ вне форума  
 
Автор темы   Непрочитано 05.04.2013, 17:05
#6
Юлия611


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


Цитата:
Сообщение от Мансур Посмотреть сообщение
пардон, еще прозевал (load_dialog "C:\Users\Юлия\Desktop\Calc.dcl")
слеши надо либо дублировать "C:\\Users\\..", либо писать "C:/Users/..."
И все равно не работает(((
Юлия611 вне форума  
 
Непрочитано 05.04.2013, 17:31
#7
gomer

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


Юлия611, солнышко вы мое, весна на дворе, одевайте короткую юбку и бегом гулять, нечего по ночам программировать, если вы даже не знаете как закомментировать код в dcl-файле
gomer вне форума  
 
Автор темы   Непрочитано 05.04.2013, 21:14
#8
Юлия611


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


Цитата:
Сообщение от gomer Посмотреть сообщение
Юлия611, солнышко вы мое, весна на дворе, одевайте короткую юбку и бегом гулять, нечего по ночам программировать, если вы даже не знаете как закомментировать код в dcl-файле
Во-первых, у меня в городе сейчас день, во-вторых, я просила помочь, а не ерничать, в-третьих, если я пойду гулять, то программа не исправится
Юлия611 вне форума  
 
Непрочитано 05.04.2013, 21:47
#9
hwd

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


Offtop: Странно... На работе, из под Windows, в браузере Google Chrome, код в первом сообщении темы был оформлен с подсветкой синтаксиса (если мне не изменяет память). А вот в Linux, в браузере Chromium, никакой подсветки не отображается - всё чёрным цветом.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 05.04.2013, 22:32
#10
Do$

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


Цитата:
Сообщение от gomer Посмотреть сообщение
Юлия611, солнышко вы мое, весна на дворе, одевайте короткую юбку и бегом гулять
В такой снегопад как у нас сейчас - самое то!
Цитата:
Сообщение от hwd Посмотреть сообщение
Offtop: Странно... На работе, из под Windows, в браузере Google Chrome, код в первом сообщении темы был оформлен с подсветкой синтаксиса (если мне не изменяет память). А вот в Linux, в браузере Chromium, никакой подсветки не отображается - всё чёрным цветом.
Первый без подсветки, второй с подсветкой.
Do$ вне форума  
 
Непрочитано 05.04.2013, 22:34
#11
Salt

Josser
 
Регистрация: 09.11.2011
Сообщений: 66


Юлия.
А ничего и не должно работать. У вас никоим образом не задействованы функции MetersToFuts, FutsToMeters, SINH, COSH. При нажатии на кнопки num_1 и num_2 просто присваивается значение глобальной переменной a и всё! Я уж не говорю про "операции со скобками": видимо требуется ещё написать парсер, умеющий разбирать записанные в виде строки арифметические выражения (+ - * / SINH, COSH с учетом скобок) и вычислять результат?
__________________
... пути твои в водах многих, и следы твои не познaются.
Salt вне форума  
 
Непрочитано 05.04.2013, 23:00
#12
gomer

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


Цитата:
Сообщение от Юлия611 Посмотреть сообщение
если я пойду гулять, то программа не исправится
Зато может с мальчиком познакомитесь и завяжется какой-нибудь романтичный
Цитата:
Сообщение от Юлия611 Посмотреть сообщение
; dialog
gomer вне форума  
 
Непрочитано 07.04.2013, 02:14
#13
Александр Ривилис

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


Offtop:
Цитата:
Сообщение от hwd Посмотреть сообщение
Offtop: Странно... На работе, из под Windows, в браузере Google Chrome, код в первом сообщении темы был оформлен с подсветкой синтаксиса (если мне не изменяет память). А вот в Linux, в браузере Chromium, никакой подсветки не отображается - всё чёрным цветом.
Проверь работает ли JavaScript
Александр Ривилис вне форума  
 
Непрочитано 07.04.2013, 02:27
#14
gomer

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


не помню, чтоб dcl когда либо подсвечивался на форуме
gomer вне форума  
 
Непрочитано 07.04.2013, 09:51
#15
hwd

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


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Проверь работает ли JavaScript
Offtop: В настройках Chromium включена опция "Разрешить всем сайтам использовать JavaScript" - значит должен работать.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 09.04.2013, 09:36
#16
VVA

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


Юлия611,
Итог вышесказанного

Цитата:
Сообщение от gomer Посмотреть сообщение
если вы даже не знаете как закомментировать код в dcl-файле
Комментарий в лиспе - ;
Комментарий в dcl файле - \\
В итоге получилось вот что
Код:
[Выделить все]
// dialog
// Save as calc.dcl file
CalcMain : dialog {
 label="Calc";
 :edit_box {
 key="input";
 edit_width = 20;
 fixed_width_font=true;
 initial_focus=true;
 }
 :button {
 label="1";
 key="num_1";
 fixed_width=true;
 is_tab_stop=true;
 }
 :button {
 label="2";
 key="num_2";
 fixed_width=true;
 is_tab_stop=true;
 }
// :button {
// label="Close";
// key="close";
// fixed_width=true;
// is_tab_stop=true;
// }
ok_only;
 }
И код
Код:
[Выделить все]
(defun MetersToFuts(m)(* m 3.281))
(defun FutsToMeters(f)(* f 0.304))
(defun SINH(x)(setq a(- (exp x) (exp (- 0 x))))(/ a 2))
(defun COSH(x)(setq a(+ (exp x) (exp (- 0 x))))(/ a 2))
(defun c:SD ( / a DlgID ret)
(setq DlgID (load_dialog "D:\\Users\\Юлия\\Desktop\\Calc.dcl")) 
(if (not (new_dialog "CalcMain" DlgID)) (exit))
;; (action_tile "close" "(done_dialog)")
 (action_tile "accept" "(progn (setq a 0)(done_dialog a))") 
 (action_tile "num_1" "(progn (setq a 1)(done_dialog a))")
 (action_tile "num_2" "(progn (setq a 2)(done_dialog a))")
 (setq ret (start_dialog))
  (cond
    ((= ret 0)(alert "You press OK button"))
    ((= ret 1)(alert "You press button 1"))
    ((= ret 2)(alert "You press button 2"))
    (t nil)
    )
 (unload_dialog DlgID)
  (princ)
 )
Обрати внимание, я поменял у себя путь с C: на D:
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.04.2013, 10:37
#17
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Небольшие добавления

Код:
[Выделить все]
// Эту строчку добавляй при разработке файла DCL,
// если файл показывается в редакторе без ошибок,
// тогда ее необходимо удалить, если есть окно ошибок,
// тогда ищи в этой же папке файл "acad.dce" открой его
// в блокноте и смотри где исправлять:
dcl_settings : default_dcl_settings { audit_level = 3; }// <-- удалить после теста
CalcMain : dialog {
 label="Calc";
 :edit_box {
 key="input";
 edit_width = 20;
 fixed_width_font=true;
initial_focus=true;//помечен неправильный синтаксис, "true" должно быть в кавычках, исправить
 }
 :button {
 label="1";
 key="num_1";
 fixed_width=true;
 is_tab_stop=true;//строка помечена как избыточная, удалить
 }
 :button {
 label="2";
 key="num_2";
 fixed_width=true;
 is_tab_stop=true;//строка помечена как избыточная, удалить
 }
// :button {
// label="Close";
// key="close";
// fixed_width=true;
// is_tab_stop=true;
// }
ok_only;
 }
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > На запускается фунция в автокаде



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) Red Nova LISP 5022 02.07.2025 07:20
Lisp. Не вставляет значения в базу access. Zaghim LISP 2 11.07.2012 14:29
Умер разработчик языка программирования Lisp andr_g LISP 1 27.10.2011 08:36
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19