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

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

Создать LISP для копирования фрагмента файла в новый файл

Ответ
Поиск в этой теме
Непрочитано 29.08.2012, 10:23 #1
Создать LISP для копирования фрагмента файла в новый файл
a_tim
 
Архитектор
 
Казахстан, Астана
Регистрация: 21.05.2010
Сообщений: 25

Здравствуйте, часто нужно копировать часть чертежа (например план этажа), скопировать его в новый файл, вставить с оригинальными координатами и отправить по электронной почте через почтовую программу. Возможно ли автоматизировать подобный алгоритм через LISP? Заранее благодарен.
Просмотров: 2830
 
Непрочитано 29.08.2012, 10:37
#2
Кулик Алексей aka kpblc
Moderator

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


_wblock чем не нравится?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.08.2012, 10:54
#3
a_tim

Архитектор
 
Регистрация: 21.05.2010
Казахстан, Астана
Сообщений: 25
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
_wblock чем не нравится?
Только сохраняет в блок. Потом нужно его найти, вложить, отправить.
Хотелось бы автоматизировать все таки. Выделил, задал имя файла и место сохранения,в почтовике ввел получателя и тему и отправил (все вручную).

Последний раз редактировалось a_tim, 29.08.2012 в 11:18. Причина: чтобы было более понятно
a_tim вне форума  
 
Непрочитано 29.08.2012, 11:08
#4
Кулик Алексей aka kpblc
Moderator

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


a_tim, ты команду-то _.wblock потестируй - там есть все, кроме отправки.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.08.2012, 11:12
#5
a_tim

Архитектор
 
Регистрация: 21.05.2010
Казахстан, Астана
Сообщений: 25
<phrase 1=


Команду протестировал сразу же. А вместе с отправкой можно?
a_tim вне форума  
 
Непрочитано 29.08.2012, 15:38
1 | #6
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Можно
Для Outloock
Код:
[Выделить все]
;;Отправка сообщений
;;http://www.theswamp.org/index.php?topic=14646.new#new
;;;(defun send_message (adr tema message Attachment / objOutlook MailItem AddAdresse objAttachment )
;;;  
;;;  (setq objOutlook (vlax-Create-Object "Outlook.Application"))
;;;  (if objOutlook
;;;    (progn
;;;      (setq MailItem (vlax-Invoke-Method objOutlook 'CreateItem 0))
;;;      (setq objMail (vlax-get-property Mailitem 'Recipients))
;;;      (setq AddAdresse (vlax-Invoke-Method objMail 'Add adr))
;;;      (setq objAttachment (vlax-get-property Mailitem 'Attachments))
;;;      (vlax-Invoke-Method objAttachment 'Add Attachment 1 1 Attachment)
;;;      (vlax-put-property Mailitem 'Subject tema)
;;;      (vlax-put-property Mailitem 'Body message)
;;;      (vlax-Invoke-Method MailItem 'Send)
;;;    ); end progn
;;;  ); end if
;;;
;;;  (vlax-invoke-method objOutlook "Quit")
;;;  (mapcar
;;;    (function (lambda (x)
;;;    (if
;;;      (and x (not (vlax-object-released-p x)))
;;;      (vlax-release-object x)
;;;    );end if
;;;  ))
;;;    (list AddAdresse objAttachment objMail MailItem objOutlook)
;;;  )
;;;  (setq objOutlook nil MailItem nil objMail nil objAttachment nil AddAdresse nil)
;;;  (gc)
;;;  (princ)
;;;); end defun

(defun mip:message_send (adr tema message Attachment send / objOutlook MailItem AddAdresse objAttachment )
  ;;;(mip:message_send "[email protected]" "TEST" "Message" "D:\Чертеж1.dwg" t)
  ;;;Подгототавливает письмо для отправки через OUTLOOK
  ;;; adr - адрес или nil
  ;;; tema - тема
  ;;; message - сообщение
  ;;;  Attachment - вложение или nil
  ;;; send t -send nil - not
;;; (setq adr nil tema "Test" message "Отправка на сводный" Attachment "D:\\rom.lsp" send nil)
  (or adr (setq send nil))
  (setq objOutlook (vlax-get-object "Outlook.Application"))
  (if (and (not objOutlook)(setq MailItem (findfile "outlook.vbs")))
    (progn
      (mip:xopen MailItem)
      (mip:WAIT 3)
    )
    )
  (setq MailItem 0.0)
  (while (and (not objOutlook)(not(setq objOutlook (vlax-get-object "Outlook.Application")))
              (< (setq MailItem (1+ MailItem)) 10.0)
              )
    (mip:WAIT 1)
    )
  (if objOutlook
    (progn
      (setq MailItem (vlax-Invoke-Method objOutlook 'CreateItem 0))
      (setq objMail (vlax-get-property Mailitem 'Recipients))
      (if adr (setq AddAdresse (vlax-Invoke-Method objMail 'Add adr)))
      (setq objAttachment (vlax-get-property Mailitem 'Attachments))
      (if Attachment
      (vlax-Invoke-Method objAttachment 'Add Attachment 1 1 Attachment))
      (if tema
      (vlax-put-property Mailitem 'Subject tema))
      (if message
      (vlax-put-property Mailitem 'Body message)
        )
      (if send
      (vlax-Invoke-Method MailItem 'Send)
        )
    ); end progn
  ); end if
 (if (not send)(vlax-Invoke-Method MailItem 'Display :vlax-true))
 ;;; (vlax-invoke-method objOutlook "Quit")
  (mapcar
    (function (lambda (x)
    (if
      (and x (not (vlax-object-released-p x)))
      (vlax-release-object x)
    );end if
  ))
    (list AddAdresse objAttachment objMail MailItem objOutlook)
  )
  (setq objOutlook nil MailItem nil objMail nil objAttachment nil AddAdresse nil)
  (gc)
  (princ)
)
(defun mip:xopen (name / di na sh)
;; Запуск приложений по расширениб  
;; get from Patrick_35
;; http://www.theswamp.org/index.php?topic=29548.0 
;;;Usage 
;;;(setq my_file (vva-xopen "c:/test.txt")) 
;;;(setq my_file (vva-xopen "c:/test.avi")) 
;;;(setq my_file (vva-xopen "c:/test.3gp")) 

  (and   (setq name (findfile name)) 
   (setq sh (vlax-create-object "Shell.Application")) 
   (setq di (vlax-invoke sh 'Namespace (vl-filename-directory name))) 
   (setq na (vlax-invoke di 'parsename (strcat (vl-filename-base name) (vl-filename-extension name)))) 
   (vlax-invoke-method na 'invokeverbex "open") 
  ) 
  (vlax-release-object sh) 
  na 
)

(defun mip:WAIT (Seconds / Stop)
	(setq Stop (+ (getvar "DATE") (/ Seconds 86400.0)))
	(while (> Stop (getvar "DATE"))
		(princ)
	)
)
Пример запуска с отправкой письма
Код:
[Выделить все]
;;;Outloock должен быть запущен
(mip:message_send
  "[email protected]" ;_ Почтовый адрес
   "Заголовок"  ;_Заголовок сообщения
   "Message"    ;_Сообщение
   "D:\Чертеж1.dwg" ;_Аттачмент. Обратить внимание на 2 слэша
    t               ;_Отправить письмо
  )
Если нужно принудительно запустить Outloock используется outlook.vbs.
Файл должен находится в путях поиска
PS
Цитата:
почтовике ввел получателя и тему и отправил (все вручную).
Тогда так
(пример запуска без отправки письма)
Код:
[Выделить все]
(mip:message_send
  nil ;_ Почтовый адрес
   ""  ;_Заголовок сообщения
   "Файл во вложении"    ;_Сообщение
   "D:\Чертеж1.dwg" ;_Аттачмент. Обратить внимание на 2 слэша
    nil               ;_Отправить письмо
  )
Вложения
Тип файла: rar outlook.rar (348 байт, 36 просмотров)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 29.08.2012 в 17:59.
VVA вне форума  
 
Автор темы   Непрочитано 29.08.2012, 15:46
#7
a_tim

Архитектор
 
Регистрация: 21.05.2010
Казахстан, Астана
Сообщений: 25
<phrase 1=


VVA большое спасибо, подскажи пожалуйста какой командой запускать?
a_tim вне форума  
 
Непрочитано 29.08.2012, 18:00
#8
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


a_tim, примеры запуска даны в #6. Выделил красным
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 29.08.2012, 18:52
#9
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Offtop: давно тут муссируется идея чата для автокада, передача фрагмента чертежа через инет непосредственно в другой чертеж могла бы быть одной из его функций
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Создать LISP для копирования фрагмента файла в новый файл

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27
Новый файл с задани обектами и автоматическими параметрами Positron AutoCAD 6 16.11.2009 14:44
Перемещение чертчежа в новый файл с теми же параметрами Billi Bob AutoCAD 13 08.07.2009 09:48
hyperlink открывает новый файл. Как отменить? Grinzaid AutoCAD 1 08.01.2009 14:08
Файл адаптации предприятия Shoorup Программирование 8 14.03.2008 01:28