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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Команда автокада блокирует выдачу ф-ии princ

Команда автокада блокирует выдачу ф-ии princ

Ответ
Поиск в этой теме
Непрочитано 15.09.2010, 20:24 #1
Команда автокада блокирует выдачу ф-ии princ
batmax
 
Регистрация: 28.08.2010
Сообщений: 10

Вот кусок кода. Почему-то после ввода пользователя сначала в командной строке ничего нет (пока длится команда MOVE на достаточно большом числе примитивов), и только после её окончания появляется никому не нужное уже теперь предупреждение:
Код:
[Выделить все]
(defun urgc_wait_message ( / )
  (princ "\nВаш компьютер не завис. Подождите немного, пожалуйста.")
)
    (if (not (null (setq dx (getreal "\nВведите смещение по X \(ноль, если не нужно\): "))))
      (if (not (null (setq dy (getreal "\nВведите смещение по Y \(ноль, если не нужно\): "))))
        (if (> (distance '(0.0 0.0 0.0) (list dx dy 0.0)) 0.0)
          (progn
            (urgc_wait_message)
            (command "_.MOVE" (ssget "X") "" '(0.0 0.0 0.0) (list dx dy 0.0))
          )
        )
      )
    )
Переменная CMDECHO во время исполнения кода выставлена в нуль, если это имеет значение. Пробовал также с функцией vl-cmdf, результат тот же.
Почему так происходит ?
Просмотров: 2604
 
Непрочитано 15.09.2010, 20:29
#2
Кулик Алексей aka kpblc
Moderator

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


Попробуй использовать не комаду, а vla-move. И не в ком.строку выводи предупреждение, а в modemacro
Или второй вариант - использовать прогресс-бар. ИМХО - самый удобный и информативный вариант будет...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.09.2010, 08:21
#3
Do$

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


А если попробовать prompt вместо princ?
Do$ вне форума  
 
Непрочитано 16.09.2010, 09:51
#4
ShaggyDoc

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


Да это обычное поведение при выводе princ в цикле, начиная с какой-то из 200* версий Автокада. Вот в "старое доброе время" индикатор длительной работы я выводил через (princ ".") в цикле. Теперь и известный "пропеллер" в командной строке не сделать.

Попробуйте посмотреть, что выведено в текстовый экран во время работы.

Попробуйте вставить \n и в конец выводимой строки.

Попробуйте наподобие этого:
Код:
[Выделить все]
(defun ru-msg-term (Txt nAll nCurr / N S S1 nMax)
 ;;;
;|
 (setq ncurr 1) (repeat 1000 (ru-msg-term "Процесс" 1000 (setq ncurr (1+ nCurr)))) 
|;  
  ;; термометр в строке состояния
  (if (= nCurr nAll)
    (progn
      (grtext)
    ) ;_ end of progn
    (progn
      (setq nMax 100)
      (setq n (fix (/ (* nCurr nMax) nAll)))
      (setq s txt)
      (repeat nmax
	(setq s (strcat s "."))
      ) ;_ end of repeat
      (setq s1 txt)
      (repeat n
	(setq s1 (strcat s1 (chr 20)))
      ) ;_ end of repeat
      (setq s (strcat s1 (substr s (1+ (strlen s1)))))
      (grtext -1 s)
    ) ;_ end of progn
  ) ;_ end of if
)
Из-за таких особенностей я давно использую только специальный splash-диалог с информативными сообщениями.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 16.09.2010, 10:27
#5
batmax


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


Спасибо всем!
Получилось вот так:
Код:
[Выделить все]
(defun urgc_wait_message ( / )
  (princ "\nВаш компьютер не завис. Подождите немного, пожалуйста.")
  (princ)
)
То есть добавил ещё один (princ).

to ShaggyDoc:
Вы пишете: "Да это обычное поведение при выводе princ в цикле" - так вот у меня НЕ в цикле, наверное, это и помогло
batmax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Команда автокада блокирует выдачу ф-ии princ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Расчет геметрических характеристик сечений, черчение елипс инерции - не работает лисп Student LISP 14 17.02.2014 10:27
Подсчет и сортировка блоков на текущем слое. Помогите отредактировать. Kortes Программирование 17 26.03.2010 18:46
Преобразование модели стержень/пластина в солидмодель (грубо) cyberkolbasa Программирование 3 14.07.2008 23:33
Подсчтёт моментов инерции любых сечений в Акаде Witalij Программирование 6 15.04.2008 14:05