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

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

Окно в начале кода и его закрытие по окончании кода или по error

Ответ
Поиск в этой теме
Непрочитано 02.07.2024, 10:28 #1
Окно в начале кода и его закрытие по окончании кода или по error
olga87
 
Регистрация: 28.05.2007
Сообщений: 229

Здравствуйте Уважаемые программисты!

Подскажите пожалуйста, как в lisp сделать, чтобы на старте выполнения кода выходило окно типа "Подождите..", которое по завершении или по ошибке пользователя или программы закрывалось.


Код:
[Выделить все]
defun c:test ( / )
(vl-load-com)

(defun *error* (msg)
  (if error-save (setq *error* error-save))
  (if msg (princ "\nВыполнение функции прервано."))
  (princ)
)

(cond
  (

....

)
Заранее спасибо!
Просмотров: 1627
 
Непрочитано 02.07.2024, 10:31
#2
Кулик Алексей aka kpblc
Moderator

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


Если делать окно dcl, то оно будет модальным - и все действия пользователя в ACAD (кроме этого окна) будут блокированы. Может, проще будет использовать какой-нибудь progressbar?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.07.2024, 10:46
#3
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


может, DOSLib умеет немодальные окна? Во всяком случае там в проекте заявлено:
Цитата:
Display Windows message boxes, progress meters, and splash screens.
Сергей812 вне форума  
 
Непрочитано 02.07.2024, 11:29
#4
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 624


Да, DosLib это вполне себе умеет.
Функция (dos_getprogress ...)
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 02.07.2024, 16:00
#5
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,814


если речь идёт об автокаде, то можно использовать функции et (acet-ui-progress "Подождите...") для начала индикации "винта" в статусной строке (старт лиспа) и (acet-ui-progress-done) для окончания индикации (окончание лиспа или ошибка).
__________________
K Lisp
koMon вне форума  
 
Непрочитано 03.07.2024, 06:27
#6
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 624


А к nanoCAD'у библиотеку этих функций (експресс-тулл) "прикрутить" можно?

А то у DOSLIB как раз этот функционал в НК и не идёт. :-(
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 19.07.2024, 16:02
#7
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


Цитата:
Сообщение от koMon Посмотреть сообщение
если речь идёт об автокаде, то можно использовать функции et (acet-ui-progress "Подождите...") для начала индикации "винта" в статусной строке (старт лиспа) и (acet-ui-progress-done) для окончания индикации (окончание лиспа или ошибка).
Интересно. Попробовал.
Неудобство оказалось в том, что этот прогресс появляется справа, а туда в общем-то посматриваешь редко, и его не сразу замечаешь.
Вот если бы он был слева, сразу под комстрокой, то было бы много лучше. Но это место к сожалению уже занято вкладками.

Сам я давно пользуюсь такой функцией, которую надо вставлять непосредственно в тело цикла (а не перед его началом и после окончания).
При ее работе в комстроке появляются циклически бегущие точки. (залоченный вариант - "вертушка").

Код:
[Выделить все]
 
(defun Wait (t1 / t2 time1 l1);global wait0 =(list time1 t2)
(setq l1 (list ".         " "..        " "...       " "....      " ".....     "
               "......    " ".......   " "........  " "......... " "..........")
      ;l1 (list " |" " /" " -" " \\")
)
(if (not wait0)(setq wait0 (list 0 (nth 2 l1))))
(setq t2 (cadr wait0)
      time1 (/ (atoi (menucmd "M=$(edtime,$(getvar,date),MSEC)")) 200))
(if (/= time1 (car  wait0))
   (progn (princ (strcat "\r" t1 t2))
          (setq t2 (TogVar t2 l1))))
(setq wait0 (list time1 t2))
);wait

(defun TogVar (v1 l1)
(if (member v1 l1)
   (if (= (length (member v1 l1)) 1)
      (car l1)
      (cadr (member v1 l1))) v1));TogVar

Последний раз редактировалось Pilot, 22.07.2024 в 11:50.
Pilot вне форума  
 
Непрочитано 18.02.2025, 17:33
#8
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,814


Цитата:
Сообщение от Pilot Посмотреть сообщение
Неудобство оказалось в том, что этот прогресс появляется справа, а туда в общем-то посматриваешь редко, и его не сразу замечаешь.
нвпс.
если сделать так Нажмите на изображение для увеличения
Название: DASB.jpg
Просмотров: 46
Размер:	68.7 Кб
ID:	266823
то прогресс будет появляться ровно слева.
__________________
K Lisp
koMon вне форума  
 
Непрочитано 19.02.2025, 15:40
#9
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,291


Цитата:
Сообщение от koMon Посмотреть сообщение
если сделать так ...
то прогресс будет появляться ровно слева.
Понятно. Но тогда снизу появляется полупустая строка, причем за счет поля чертежа где каждый мм2 на счету.
Но это может оказаться полезным в другом случае - когда вкладок лэйаутов очень много. Спасибо, идея пригодится.
Pilot вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Окно в начале кода и его закрытие по окончании кода или по error



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему функция error не обрабатывает появление ошибки при назначении системной переменной? МишаИнженер LISP 13 08.12.2022 16:26
VBA. Ошибка "run-time error '53': file not found", в чём может быть причина. Jeneva Программирование 17 28.07.2017 19:08
AutoCAD 2012 zenon AutoCAD 168 08.04.2013 16:01
Как восстоновить диалоговое окно "Генератор валов" в AutoCad Mechanikal-е? Армен Грачикович Вертикальные решения на базе AutoCAD 2 11.03.2013 13:49
fatal error при закрытие единственного чертежа в режиме visible=false Naigsa Программирование 9 26.05.2012 23:42