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

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

Проверка сохранения файла

Ответ
Поиск в этой теме
Непрочитано 17.11.2022, 08:34 #1
Проверка сохранения файла
olga87
 
Регистрация: 28.05.2007
Сообщений: 208

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

Есть код lisp (см. ниже) для NanoCAD, который создает новое сообщение (E-Mail) и вкладывает в сообщение открытый текущий файл dwg как вложение в письмо.

Подскажите пожалуйста как исправить код, добавив проверку сохранения файла dwg. Т.е. если в файле были изменения, то нужно попросить пользователя сохранить файл.

Заранее Спасибо!

Код:
[Выделить все]
(defun c:eMail ( / txt)
  (defun rjp-OutlookMessage
         (To Subject AttachmentList Body Send / objMail objOL)
    (if (and (setq objOL (vlax-get-or-create-object "Outlook.Application"))
	     (setq objMail (vlax-invoke-method objOL 'CreateItem 0)))
      (progn
        (vlax-put objMail 'To To)
        (vlax-put objMail 'Subject Subject)
        (vlax-put objMail 'Body Body)
        (foreach file AttachmentList
  	  (vl-catch-all-apply 'vlax-invoke
			      (list (vlax-get objMail 'Attachments) 'Add file))
        );foreach
        (if send
 	  (vlax-invoke objMail 'Send)
	  (vlax-invoke objMail 'Display :vlax-true)
        );if
        (vlax-release-object objOL)
        (vlax-release-object objMail)
      );progn
    );if
  );defun
  
(if (= 1 (getvar 'DWGTITLED))
  (progn 
    (rjp-outlookmessage
      ""
      ""
      (list (strcat (getvar 'dwgprefix) (getvar 'dwgname)))
      (strcat "Пожалуйста посмотрите вложенный чертеж: " (getvar 'dwgname))
      nil
    )
    (prompt "\nEmail создан.")
  );progn
;else
  (progn
    (setq txt "Чертеж не был сохранен. Пожалуйста сохраните чертеж и попробуйте снова.")
    (prompt (strcat "\n" txt)) (alert txt)
  );progn
);if
(princ)
);defun
Просмотров: 3987
 
Непрочитано 17.11.2022, 08:47
#2
Кулик Алексей aka kpblc
Moderator

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


Попробуй рядом с проверкой dwgtitled поставить
(equal (vla-get-saved (vla-get-activedocument (vlax-get-acad-object))) :vlax-true)
Правда, сработает ли в nanoCAD, без понятия
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.11.2022, 10:04
#3
olga87


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


Добавила:

Код:
[Выделить все]
(if (and (equal (vla-get-saved (vla-get-activedocument (vlax-get-acad-object))) :vlax-true)
         (= 1 (getvar 'DWGTITLED)))
Но если после сохранения чертежа вновь запускаю код, то чертеж переходит в статус несохраненный. Т.е. после сохранения чертежа пользователем, код все равно считает что чертеж не сохранен?


*если выполнить в коде:
Код:
[Выделить все]
(command "_.SAVE")
а затем
Код:
[Выделить все]
(if (and (equal (vla-get-saved (vla-get-activedocument (vlax-get-acad-object))) :vlax-true)
         (= 1 (getvar 'DWGTITLED)))
то работает!

Мне же нужно, чтобы пользователь сам сохранил, но при этом не работает!
olga87 вне форума  
 
Непрочитано 17.11.2022, 10:18
#4
Кулик Алексей aka kpblc
Moderator

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


Значит, пользователь (или какое-то дополнение) после сохранения вносит какие-то изменения. К примеру, зум или панорамирование тоже будут считаться изменением чертежа.

----- добавлено через 43 сек. -----
Как вариант - если файл не сохранен, вывалить запрос "Сохранить файл?". Если да - выполнить сохранение и дальше действовать по плану. Если нет - гудбай.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.11.2022, 10:22
#5
koMon


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


Цитата:
Сообщение от olga87 Посмотреть сообщение
Т.е. если в файле были изменения, то нужно попросить пользователя сохранить файл.
В этом случае может помочь переменная DBMOD.
Миниатюры
Нажмите на изображение для увеличения
Название: Dbmod.png
Просмотров: 21
Размер:	9.2 Кб
ID:	251296  
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 17.11.2022, 10:36
#6
olga87


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


Код работает в Автокаде.

Но в Нанокаде видимо даже при сохранении и сразу повторном запуске кода, не работает, считая что чертеж снова не сохранен.
olga87 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Проверка сохранения файла

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Самопроизвольная подмена букв в словах разными шрифтами в тексте при открытии файла A III AutoCAD 18 15.06.2021 20:06
Нужна функция импорта блока из файла Krieger Программирование 20 18.01.2017 07:19
Не вывдится меню сохранения файла Glad AutoCAD 3 23.06.2010 14:12
программа для сохранения чертежей с зашифрованной в названии файла инфой и дальнейшего удобного поиска Алексей_ИС Программирование 1 24.05.2010 13:21
Проблемма с окнами сохранения и отрытия файлов в AutoCAD 2008 Armalite AutoCAD 2 13.05.2010 15:28