|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
11.09.2003, 14:06 | #1 | |
Длина списка последних файлов.
Проектировщик свиноводство
Регистрация: 21.08.2003
Сообщений: 2,268
|
||
Просмотров: 8336
|
|
||||
Сообщений: n/a
|
В лоб изменить, похоже, не получится. Хотя есть свойство PreferencesOpenSave.MRUNumber, но оно только для чтения и в ACAD2000, и в ACAD2004. Когда в ACAD2002-2004 изменяется Tools -> Options -> Open and Save -> File Open - это всего лишь измененение параметра MRUFilesToList в реестре.
Но при желании сделать можно. Через (vla-Item (vla-get-MenuBar (vlax-get-Acad-Object)) (vlax-make-variant 0)) получить первое падающее меню, пройтись по всем его пунктам, найти с Caption = "Drawing History", и вместо него вставить все что нужно. Хранить свой список файлов в своем разделе реестра (типа MyRecent File List). Если сделать это в каком то автозагрузочном файле, то все открытые чертежи можно будет добавить. Надо будет только проверять DWGTITLED = 1, чтобы не напихать туда несуществующих файлов типа Drawing1...Drawingnnn. |
|||
|
||||
Сообщений: n/a
|
Кому интересно - попробуйте, вроде работает. Под ACAD2004 также позволяет сделать список больше 9. В каком-то из автозагрузочных файлов:
(vl-load-com) ;********************************************************************************* ; Функция exmru_get_recent ; ; Узнает список значений всех параметрв из указанного раздела реестра. ; key = "Recent File List" - список стандартных файлов Истории ; key = "ExtraMRU" - список дополнительных файлов Истории ; ; Возвращает список значений или nil. ;********************************************************************************* (defun exmru_get_recent (key / regkey answer i fl) (setq regkey (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\" key) answer '()) (mapcar (function (lambda (i) (if (setq fl (findfile (vl-registry-read regkey i))) (setq answer (cons (vl-list->string (subst (ascii "/") (ascii "\\") (vl-string->list (vl-string-trim " " fl))) );vl-list->string answer)) );if );lambda );function (vl-registry-descendents regkey "") );mapcar answer );defun ;********************************************************************************* ; Функция exmru_get_mrunumber ; ; Возвращает целое число - максимальное количество файлов в Истории. ; Если параметр в реестре не найден - возвращает 9. ;********************************************************************************* (defun exmru_get_mrunumber ( / answer) (if (setq answer (vl-registry-read (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\ExtraMRU") "ExtraMRUNumber")) (atoi answer) 9 );if );defun ;********************************************************************************* ; Функция exmru_can_open_for_write ; ; Возвращает t, если указанный файл flnm НЕ является "Только чтение". ;********************************************************************************* (defun exmru_can_open_for_write (flnm / f2) (if (setq f2 (open flnm "a")) (progn (close f2) t );progn );if );defun ;********************************************************************************* ; Функция exmru_openfl ; ; Открывает указанный файл flnm. ;********************************************************************************* (defun exmru_openfl (flnm / fl) (if (setq fl (findfile flnm)) (if (if (= (strcase fl) (strcase (strcat (getvar "DWGPREFIX") (getvar "DWGNAME")))) (= (getvar "DWGTITLED") 0) t );if (progn (if (not (exmru_can_open_for_write fl)) (alert (strcat "Файл " fl "\nв данный момент используется !!!\n\nИ будет открыт \"Только для чтения\".")) );if (vl-cmdf "_.vbastmt" (strcat "AcadApplication.Documents.Open \"" fl "\"")) );progn (princ (strcat "\nВы уже находитесь файле " fl)) );if (progn (alert (strcat "Не найден файл:\n" flnm)) (princ) );progn );if );defun ;********************************************************************************* ; Функция c:exmrucnt ; ; Позволяет устанавить максимальное количество файлов в Истории. ;********************************************************************************* (defun c:exmrucnt ( / nmb *error*) (defun *error* (msg / ) (princ) );defun (prompt (strcat "\n\t\t\t\t Текущее значение: " (itoa (exmru_get_mrunumber)))) (initget 4) (if (setq nmb (getint "\nВведите максимальное количество файлов в Истории:")) (if (vl-registry-write (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\ExtraMRU") "ExtraMRUNumber" (itoa nmb)) (progn (exmru_addmenu "") (princ "\nЗначение было изменено !!!") );progn (princ "\nНе удается изменить значение !!! Возможно нет прав записи в реестр.") );if (princ) );if );defun ;********************************************************************************* ; Функция exmru_addmenu ; ; Добавляет указанный файл fladd к списку истории в первое падающее меню. ; ; Если есть стандартный пункт "Drawing History" - он удаляется ; Если не найдены пункты дополнительных файлов Истории - они создаются ; Если fladd уже есть в списке - ничего не происходит ; Если после добавление нового пункта - число файлов превысило максимальное количество, ; то последний файл убирается из истории. ; ;********************************************************************************* (defun exmru_addmenu (fladd / filepop tmp hist_item index exmru_item i tmp_item fl mrunmb ckl nmb newmru regkey separator_item) (if (not (vl-catch-all-error-p (setq filepop (vl-catch-all-apply 'vla-Item (list (vla-get-MenuBar (vlax-get-Acad-Object)) (vlax-make-variant 0)))))) (progn (setq hist_item nil exmru_item nil separator_item nil) (vlax-for tmp filepop (cond ((= "DRAWING HISTORY" (strcase (vla-get-Caption tmp))) (setq hist_item tmp) ) ((= "EXTRAMRU МАКСИМУМ..." (strcase (vla-get-Caption tmp))) (setq exmru_item tmp) ) ((= (vla-get-Type tmp) 1) (setq separator_item tmp) ) );cond );vlax-for (if hist_item (progn (setq index (vla-get-Index hist_item)) (vl-catch-all-apply 'vla-Delete (list hist_item)) (if (not (vl-catch-all-error-p (setq exmru_item (vl-catch-all-apply 'vla-AddMenuItem (list filepop index "ExtraMRU Максимум..." (strcat (chr 27) (chr 27) "exmrucnt ")))))) (vla-put-HelpString exmru_item "Устанавливает максимальное количество файлов в Истории: EXMRUCNT") );if (setq index (1+ index)) (foreach i (append (exmru_get_recent "Recent File List") (cdr (exmru_get_recent "ExtraMRU"))) (if (not (vl-catch-all-error-p (setq tmp_item (vl-catch-all-apply 'vla-AddMenuItem (list filepop index i (strcat (chr 27) (chr 27) "(exmru_openfl \"" i "\") ")))))) (progn (vla-put-HelpString tmp_item (strcat "Открывает файл " i)) (setq index (1+ index)) );progn );if );foreach );progn );if (if (not exmru_item) (progn (if separator_item (setq index (vla-get-Index separator_item)) (vl-catch-all-apply 'vla-AddSeparator (list filepop (setq index (- (vla-get-Count filepop) 2)))) );if (vl-catch-all-apply 'vla-AddSeparator (list filepop (setq index (1+ index)))) (if (not (vl-catch-all-error-p (setq exmru_item (vl-catch-all-apply 'vla-AddMenuItem (list filepop index "ExtraMRU Максимум..." (strcat (chr 27) (chr 27) "exmrucnt ")))))) (vla-put-HelpString exmru_item "Устанавливает максимальное количество файлов в Истории: EXMRUCNT") );if (setq index (1+ index)) (foreach i (append (exmru_get_recent "Recent File List") (cdr (exmru_get_recent "ExtraMRU"))) (if (not (vl-catch-all-error-p (setq tmp_item (vl-catch-all-apply 'vla-AddMenuItem (list filepop index i (strcat (chr 27) (chr 27) "(exmru_openfl \"" i "\") ")))))) (progn (vla-put-HelpString tmp_item (strcat "Открывает файл " i)) (setq index (1+ index)) );progn );if );foreach );progn );if (if exmru_item (progn (setq index (vla-get-Index exmru_item)) (if (and (setq fl (findfile fladd)) (setq fl (vl-list->string (subst (ascii "/") (ascii "\\") (vl-string->list fl)))) (not (vl-catch-all-error-p (setq tmp_item (vl-catch-all-apply 'vla-AddMenuItem (list filepop (1+ index) fl (strcat (chr 27) (chr 27) "(exmru_openfl \"" fl "\") ")))))) );and (vla-put-HelpString tmp_item (strcat "Открывает файл " fl)) );if (setq mrunmb (exmru_get_mrunumber) ckl t nmb 0 newmru '()) (while ckl (if (vl-catch-all-error-p (setq tmp (vl-catch-all-apply 'vla-Item (list filepop (vlax-make-variant (+ index (setq nmb (1+ nmb)))))))) (setq ckl nil) (if (= (vla-get-Type tmp) 0) (if (> nmb mrunmb) (progn (vla-Delete tmp) (setq index (1- index)) );progn (setq newmru (cons (vla-get-Caption tmp) newmru)) );if (setq ckl nil) );if );if );while (vl-registry-delete (setq regkey (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\ExtraMRU"))) (setq nmb 0) (foreach i (reverse newmru) (vl-registry-write regkey (strcat "File" (itoa (setq nmb (1+ nmb)))) i) );foreach (vl-registry-write regkey "ExtraMRUNumber" (itoa mrunmb)) );progn );if );progn );if (princ) );defun ; Файл в данный момент открывается (if (= (getvar "DWGTITLED") 1) (exmru_addmenu (strcat (getvar "DWGPREFIX") (getvar "DWGNAME"))) (exmru_addmenu "") );if ; Реактор на сохранение документа (if (not (equal (type __exmru_reactor_docsave__) 'vlr-dwg-reactor)) (setq __exmru_reactor_docsave__ (vlr-dwg-reactor nil (list '(:vlr-saveComplete . __exmru_callback_function_docsave__)))) (if (not (vlr-added-p __exmru_reactor_docsave__)) (vlr-add __exmru_reactor_docsave__) );if );if ; Функция действия для ректора на сохранение документа (defun __exmru_callback_function_docsave__ (reac param / ) (exmru_addmenu (strcat (getvar "DWGPREFIX") (getvar "DWGNAME"))) );defun (princ) |
|||
|
||||
Регистрация: 15.09.2003
Сообщений: 2
|
К сожалению не смог загрузить картинку (FileHistory.gif ~ 28 Кб) - ругается что файл должен быть формата *.gif, либо *.jpg, *.jpeg (???)
Смотрите раздел реестра (может немного отличаться): HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R15.0\ACAD-1:409\File History - у меня он дает список из порядка 130 последних открывавшихся файлов. Вероятно можно написать утилитку для просмотра этого раздела реестра (наподобие стандартного Windows'овского окна со списком - диалога "Установка и удаление программ" - который просматривает аналогичный список в другом разделе реестра). |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
структурированный список | Holon | Программирование | 22 | 11.09.2007 14:09 |
Исключение элементов одного списка из другого по маске | Кулик Алексей aka kpblc | Программирование | 3 | 18.09.2006 17:31 |
Проблемы с размерами файлов 2 | Гусев Георгий | AutoCAD | 4 | 20.05.2006 22:10 |
чтение данных из файла | Александер | Программирование | 6 | 08.09.2005 10:24 |
Изменение путей для файлов в сборке | MKlimanski | Программирование | 5 | 06.09.2005 23:22 |