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

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

AutoLisp. Реактор открытия.

Ответ
Поиск в этой теме
Непрочитано 02.07.2012, 17:15 #1
AutoLisp. Реактор открытия.
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Друзья. почему не работает реактор на открытие чертежа? Как сделать?

Попробовал все варианты... срабатывает только на сохранения и закрытие. Код стоит в автозагрузке.

Код:
[Выделить все]
(setq cmr (vlr-dwg-reactor "Реактор файлов: "
  (list '(:vlr-dwgfileopened . undel)
	'(:vlr-databaseconstructed . undel)
	'(:vlr-begindwgopen . undel)
	'(:vlr-enddwgopen . undel)
        '(:vlr-savecomplete . undel1)
        '(:vlr-beginclose . undel2)))
);setq
(defun undel (reac cname / _ad)
;(princ (strcat "\n" (vlr-data reac) " контролирую "))
;(princ cname)
(setq _ad (vla-get-ActiveDocument (vlax-get-acad-object)))
; Проверка имени команды
;(if (member (getcname (car cname)) (list "SAVE" "_SAVE" "QSAVE" "_QSAVE" "OPEN" "_OPEN" "QNEW" "_QNEW" "CLOSE" "_CLOSE"))
  ;(progn
    (setq file  (findfile "cc.txt")
          fp    (open file "a")
    );setq
    (setq dat (itoa (fix(getvar "CDATE")))
          time (rtos (fix (* 1000000 (- (getvar "cdate") (fix (getvar "cdate"))))) 2 0)
          nam (getvar "DWGNAME")
          nam (strcat (getvar "DWGPREFIX")(getvar "DWGNAME"))
          tday (substr dat 7 2)
          tmon (substr dat 5 2)
          tyer (substr dat 1 4)
          thh (substr time 1 2)
          tmm (substr time 3 2)
          tss (substr time 5 2) 

          strok1 (strcat "Имя файла:" nam "  Дата:" tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss)

          strok1 (strcat "Имя файла: " nam )
          strok2 (strcat "Дата: " tday "-" tmon "-" tyer "г  " thh ":" tmm ":" tss)
	  strok3 (strcat "Действие: " "Чертеж открыт")
    )
    (write-line strok2 fp)
    (write-line strok1 fp)
    (write-line strok3 fp)
    
    (princ)
    ;(vla-SendCommand _ad "_.UNDO ")
    ;(vla-SendCommand _ad "1 ")
  ;);progn
;);if
);defun undel
Просмотров: 1511
 
Непрочитано 02.07.2012, 17:25
#2
Кулик Алексей aka kpblc
Moderator

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


Может, проще не использовать реакторы на открытие, а просто автоматически выполнять лисп наподобие
Код:
[Выделить все]
 (defun exec-on-start (/ file handle date)
  (setq file   (strcat (vl-string-trim "\\" (getenv "TEMP")) "\\cc.txt")
        handle (open file
                     (cond
                       ((not (findfile file)) "w")
                       ((> (vl-file-size file) 2097152) "w")
                       (t "a")
                       ) ;_ end of cond
                     ) ;_ end of open
        date   (getvar "cdate")
        ) ;_ end of setq
  (write-line (strcat (substr (itoa (fix date)) 7 2)
                      "."
                      (substr (itoa (fix date)) 5 2)
                      "."
                      (substr (itoa (fix date)) 1 4)
                      " "
                      (substr (itoa (setq date (fix (* 1e6 (- date (fix date)))))) 1 2)
                      ":"
                      (substr (itoa date) 3 2)
                      ":"
                      (substr (itoa date) 5 2)
                      "\n\tFile : "
                      (vl-string-right-trim "\\" (getvar "dwgprefix"))
                      "\\"
                      (getvar "dwgname")
                      " opened"
                      ) ;_ end of strcat
              handle
              ) ;_ end of write-line
  (close handle)
  ) ;_ end of defun

(exec-on-start)

P.S. Код писал на бегу и без проверок
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.07.2012, 17:54
#3
Zaghim


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


Да по сути можно и пихнуть в акаддок, наверно там сработает... хотелось бы все в одном месте. Не понимаю почему не срабатывает только.... код срабатывает позже того, как откроется чертеж что ли...

Алексей, код выдает такое - ; error: VLISP: internal: Document application(.VLX) not found

Последний раз редактировалось Zaghim, 03.07.2012 в 11:18.
Zaghim вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > AutoLisp. Реактор открытия.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Литература по AutoLISP на русском языке PeterPeter LISP 43 22.09.2015 10:33
Реактор на удаление объекта Игорь Костюкович Программирование 24 13.10.2010 15:20
Почему срабатывает "табличный" реактор при сохранении рисунка. Дима_ Программирование 23 21.05.2010 21:24
FILEDIA=0 - Причины исчезновения диал. окна открытия файлов Pilot AutoCAD 10 03.11.2006 18:03
Запрет на действия пользователя -- создать реактор или.....? mmax Программирование 8 05.08.2006 14:22