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

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

как закрыть файл из лиспа

Ответ
Поиск в этой теме
Непрочитано 16.03.2004, 14:18
как закрыть файл из лиспа
Apelsinov
 
Проектировщик ВК. LISP-любитель.
 
Москва
Регистрация: 15.12.2003
Сообщений: 1,189

подскажите, как програмно в лиспе можно закрыть открытый в акаде файл (без сохранения).
Просмотров: 9252
 
Автор темы   Непрочитано 18.03.2004, 09:48
#21
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,189
<phrase 1=


>leha, Вот оно! то что доктор прописал!
Огромное человеческое спасибо!
Apelsinov вне форума  
 
Непрочитано 18.03.2004, 17:02
#22
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Как и обещал, отчитываюсь.

1. С использованием ActiveX и LISP можно закрыть все рисунки, кроме текущего.
2. То, что предложил leha, работает. Это из той же оперы, что и открытие рисунка. (command "_.OPEN") не работает, а при помощи VBA работает.

Пункты 1 и 2 связаны с тем, что LISP'ы грузятся в пространства имен рисунка. Именно поэтому объектная модель не поддерживается LISP'ом на 100%. А вот VBA поддерживается.

3. Конструкция (command "_.CLOSE") (command "_Yes") у меня работает из командной строки. А если из функции (программы), то ругается теми же самыми словами: "_yes Unknown command "YES". Press F1 for help."
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 18.04.2010, 12:28
#23
ViktorM

инженер-проектировщик
 
Регистрация: 07.04.2010
Сообщений: 4
<phrase 1=


У меня английская версия Акад 2007. Использовал для закрытия активного документа без сохранения изменений (изменения всегда есть"МАСШТАБ И Т.П.")
(command "_close" "Y")
Всё работает.
ViktorM вне форума  
 
Непрочитано 13.08.2019, 13:34
#24
allar8


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


Нужен лиспик для закрытия сразу всех чертежей без сохранения и без "общения" с диалоговым окном подтверждения.
В лиспе пока не очень силен, по ентому и спрашиваю.
Т.е. например закрытие всех чертежей с сохранением всех чертежей просто - ^C^Csaveall ^C^C_closeall
А вот закрытие без сохранения на подобии ^C^C(command "_closeall" "Д") (у меня 2017 русский акад) - "заcтавляет общаться" с диалоговым окном подтверждения.
нужно я так понимаю цикл организовать с щетчиком равным кол-ву открытых чертежей
А может все и проще - но я пока не знаю)

Последний раз редактировалось allar8, 13.08.2019 в 13:42.
allar8 вне форума  
 
Непрочитано 13.08.2019, 13:47
1 | #25
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,991


allar8,
Код:
[Выделить все]
 (defun c:close-all-no-save (/ acapp curdoc);close without saving changes
  (vl-load-com)
  (setvar "sdi" 0)
  (setq acapp (vlax-get-acad-object))
  (setq cnt (vla-get-count
      (vla-get-documents acapp))
  num cnt
  )
  
  (repeat num
    (setq curdoc (vla-item (vla-get-documents acapp) (1- cnt)))
    (vl-catch-all-apply
      (function (lambda()
      (vla-close curdoc :vlax-false fname))))
    (vlax-release-object curdoc)
    (setq cnt (1- cnt))
  )
(vla-put-windowstate (vla-get-activedocument acapp) acmax)
  (vla-put-windowstate (vlax-get-acad-object) acmin)
    (command "_.vbastmt" "activedocument.close false")
  (command "_.vbastmt" "application.quit ")

  (princ)
)
Nike вне форума  
 
Непрочитано 13.08.2019, 15:06
#26
allar8


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


Цитата:
Сообщение от Nike Посмотреть сообщение
Код:

[Выделить все]
view sourceprint?01(defun c:close-all-no-save (/ acapp curdoc);close without saving changes02 (vl-load-com)03 (setvar "sdi" 0)04 (setq acapp (vlax-get-acad-object))05 (setq cnt (vla-get-count06 (vla-get-documents acapp))07 num cnt08 )09 10 (repeat num11 (setq curdoc (vla-item (vla-get-documents acapp) (1- cnt)))12 (vl-catch-all-apply13 (function (lambda()14 (vla-close curdoc :vlax-false fname))))15 (vlax-release-object curdoc)16 (setq cnt (1- cnt))17 )18(vla-put-windowstate (vla-get-activedocument acapp) acmax)19 (vla-put-windowstate (vlax-get-acad-object) acmin)20 (command "_.vbastmt" "activedocument.close false")21 (command "_.vbastmt" "application.quit ")22 23 (princ)24)
Большое спасибо!

----- добавлено через ~9 ч. -----
Цитата:
Сообщение от Nike Посмотреть сообщение
01
(defun c:close-all-no-save (/ acapp curdoc);close without saving changes
02
**(vl-load-com)
03
**(setvar "sdi" 0)
04
**(setq acapp (vlax-get-acad-object))
05
**(setq cnt (vla-get-count
06
******(vla-get-documents acapp))
07
**num cnt
08
**)
09
***
10
**(repeat num
11
****(setq curdoc (vla-item (vla-get-documents acapp) (1- cnt)))
12
****(vl-catch-all-apply
13
******(function (lambda()
14
******(vla-close curdoc :vlax-false fname))))
15
****(vlax-release-object curdoc)
16
****(setq cnt (1- cnt))
17
**)
18
(vla-put-windowstate (vla-get-activedocument acapp) acmax)
19
**(vla-put-windowstate (vlax-get-acad-object) acmin)
20
****(command "_.vbastmt" "activedocument.close false")
21
**(command "_.vbastmt" "application.quit ")
22
*
23
**(princ)
24
)
Все гуд но заметил, что вкладки файла после этой команды появляются. Я их не люблю. Можно это как нить исправить?

----- добавлено через ~9 ч. -----
закоментировал
Цитата:
Сообщение от Nike Посмотреть сообщение
(setvar "sdi" 0)
вроде получилось
allar8 вне форума  
 
Непрочитано 14.08.2019, 10:35
#27
allar8


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


Цитата:
Сообщение от Nike Посмотреть сообщение
Код:

[Выделить все]
view sourceprint?01(defun c:close-all-no-save (/ acapp curdoc);close without saving changes02 (vl-load-com)03 (setvar "sdi" 0)04 (setq acapp (vlax-get-acad-object))05 (setq cnt (vla-get-count06 (vla-get-documents acapp))07 num cnt08 )09 10 (repeat num11 (setq curdoc (vla-item (vla-get-documents acapp) (1- cnt)))12 (vl-catch-all-apply13 (function (lambda()14 (vla-close curdoc :vlax-false fname))))15 (vlax-release-object curdoc)16 (setq cnt (1- cnt))17 )18(vla-put-windowstate (vla-get-activedocument acapp) acmax)19 (vla-put-windowstate (vlax-get-acad-object) acmin)20 (command "_.vbastmt" "activedocument.close false")21 (command "_.vbastmt" "application.quit ")22 23 (princ)24)
еще чуть чуть закоментировал в Вашей версии - чтоб не сворачивалось
и еще одну версию приложил чтоб докучи и с закрытием автокада см. вложения
Вложения
Тип файла: lsp Quit_all_no_save.lsp (632 байт, 16 просмотров)
Тип файла: lsp close_all_no_save.lsp (707 байт, 19 просмотров)
allar8 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > как закрыть файл из лиспа

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск