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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Имитация нажатия Enter при вводе строкового параметра команды в командной строке.

Имитация нажатия Enter при вводе строкового параметра команды в командной строке.

Ответ
Поиск в этой теме
Непрочитано 17.11.2010, 12:40 #1
Имитация нажатия Enter при вводе строкового параметра команды в командной строке.
smallmazila7
 
Регистрация: 21.09.2009
Сообщений: 32

Доброго времени суток!
У меня такой вопрос: как на языке lisp имитровать нажатие клавиши Enter при задании строкового параметра команды в командной строке?
к примеру:
Команда: _-purge
Тип неиспользуемых объектов
[Блоки/Рзмстили/Слои/типыЛин/мАтериалы/Пстили/Формы/Тстили/Млстили/тблстИли/визУальные стили/Зарегприл/Все]: _r
Имена удаляемых элементов <*>:
И на этом этапе я остановился.
пробовал:
(command "")
(command " ")
не помогает.

lisp код выглядит так:
(setq activeDocument (vla-get-activedocument (vlax-get-acad-object)))
(vla-sendcommand activeDocument "_-purge ")
(vla-sendcommand activeDocument "_r ")
(command "???????")


Решение:
(vla-sendcommand activeDocument "\n")
имитирует нажатие клавиши Enter при задании строкового параметра в командной строке.

если передать "\n" в качестве параметра command,
то такой вариант не проходит
(command "'\n") - не работает
Версия AutoCAD 2008

Последний раз редактировалось smallmazila7, 17.11.2010 в 13:57. Причина: найдено решение
Просмотров: 8066
 
Непрочитано 17.11.2010, 14:14
#2
Лиспер


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


В лиспе: (command "")
(vla-sendcommand "CommandName" + vbCr) - можно и так попробовать
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 17.11.2010, 14:26
#3
smallmazila7


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


2Лиспер
вопрос был
Цитата:
Имитация нажатия Enter при вводе строкового параметра команды в командной строке
под строковым параметром понимается ввод имени файла, либо строки фильтра удаляемых элементов как в
Цитата:
Имена удаляемых элементов <*>:
если здесь прописать просто (command ""), то указанная пустая строка, я так понял, воспринимается не как Enter, а как пустая строка.
smallmazila7 вне форума  
 
Непрочитано 17.11.2010, 14:49
#4
Лиспер


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


Вообще-то полную очистку файла можно делать и некомандными методами:
Код:
[Выделить все]
(vla-purgeall (vla-get-activedocument (vlax-get-acad-object)))
А частичную - через очистку соответствующих таблиц с отловом ошибок. Думаю, это решение будет более качественным.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 17.11.2010, 14:59
#5
Profan


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


(vl-cmdf "_-purge" "_r" "" "_n")
Profan вне форума  
 
Непрочитано 17.11.2010, 15:14
#6
AlphaGeo


 
Сообщений: n/a


Цитата:
Сообщение от Profan Посмотреть сообщение
(vl-cmdf "_-purge" "_r" "" "_n")
 
 
Непрочитано 17.11.2010, 23:17
#7
Кулик Алексей aka kpblc
Moderator

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


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

(defun _dwgru-purge-apps (doc / err)
                         ;|
*    Очищает от зарегистрированных приложений указанный документ
*    Параметры вызова:
	doc		vla-указатель на обрабатываемый документ. nil -> текущий
*    Примеры вызова:
(_dwgru-purge-apps nil)
|;
  (if (not doc)
    (setq doc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of if
  (if (= (type doc) 'vla-object)
    (vlax-for app (vla-get-registeredapplications doc)
      (if (vl-catch-all-error-p (setq err (vl-catch-all-apply
                                            (function
                                              (lambda ()
                                                (vla-delete app)
                                                ) ;_ end of lambda
                                              ) ;_ end of function
                                            ) ;_ end of vl-catch-all-apply
                                      ) ;_ end of setq
                                ) ;_ end of vl-catch-all-error-p
        (princ (strcat "\nВ документе "
                       (vla-get-name doc)
                       " не могу удалить приложение "
                       (vla-get-name app)
                       " : "
                       (vl-catch-all-error-message err)
                       ) ;_ end of strcat
               ) ;_ end of princ
        ) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.11.2010, 06:05
#8
smallmazila7


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


всем спасибо за ответы
smallmazila7 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Имитация нажатия Enter при вводе строкового параметра команды в командной строке.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Почему Команды работают только при наборе в командной строке ask101 AutoCAD 7 04.02.2010 19:54