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

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

Длина списка последних файлов.

Ответ
Поиск в этой теме
Непрочитано 11.09.2003, 14:06 #1
Длина списка последних файлов.
Pilot
 
Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,267

Акад хранит список из четырех последних открывавшихся в нем файлов.
Есть ли возможность сделать этот список длиннее? Если да то как?
Просмотров: 8333
 
Непрочитано 11.09.2003, 14:26
#2
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Tools -> Options -> Open and Save -> File Open укажи скока надо от 0 до 9
vk вне форума  
 
Автор темы   Непрочитано 11.09.2003, 14:54
#3
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,267


Где? Нету!
Может потому что Акад-2000 а не выше?
[ATTACH]1063277674.jpg[/ATTACH]
Pilot на форуме  
 
Непрочитано 11.09.2003, 15:38
#4
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


Не знаю, может в 2000 это где то в другом месте упрятано....
Или переходи на версию посвежее, в 2002 сервис получше
vk вне форума  
 
Автор темы   Непрочитано 11.09.2003, 16:49
#5
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,267


2 vk
Вот потому и спрашиваю, что не нашел где :cry:

2 Admin
Чегой-то картинка в поем предыдущем постинге не открывается. Была меньше чем на 50 кил.
Pilot на форуме  
 
Непрочитано 11.09.2003, 17:04
#6
Startrek

AutoCAD/AutoLISP
 
Регистрация: 27.08.2003
Seattle/USA
Сообщений: 1,133


v AutoCAD R200-2002 command _TODAY istorija otkritih chertezhey v neskol'ko dney. V R2004 neskol'ko po drugomu.
Startrek вне форума  
 
Непрочитано 12.09.2003, 00:29
#7
Shtirlitz

Работаю, знаете-ли.
 
Регистрация: 21.08.2003
Ukranian
Сообщений: 28


И, все-таки, можно ли увеличить список из последних открывавшихся файлов в Акад-2000 ? :roll:
:roll: Спасибо. :wink:
__________________
Самая низкоколорийная пища - ГРАНИТ НАУКИ...
Shtirlitz вне форума  
 
Непрочитано 12.09.2003, 09:41
#8
leha


 
Сообщений: 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.
 
 
Непрочитано 12.09.2003, 14:22
#9
leha


 
Сообщений: 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)
 
 
Непрочитано 12.09.2003, 23:25
#10
Perezz!!
Moderator

архитектор
 
Регистрация: 21.08.2003
Москва
Сообщений: 3,587


:shock: Монстры !
Perezz!! вне форума  
 
Непрочитано 13.09.2003, 02:57
#11
Shtirlitz

Работаю, знаете-ли.
 
Регистрация: 21.08.2003
Ukranian
Сообщений: 28


>>>>>Perezz!!
Согласен на все 100%.
А начиналось-то все с простенького вроде бы вопросика!
Shtirlitz вне форума  
 
Автор темы   Непрочитано 13.09.2003, 15:36
#12
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,267


Да, действительно круто!
Pilot на форуме  
 
Непрочитано 15.09.2003, 11:26
#13
Lucky_Luck


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


test
Lucky_Luck вне форума  
 
Непрочитано 15.09.2003, 12:02
#14
Lucky_Luck


 
Регистрация: 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'овского окна со списком - диалога "Установка и удаление программ" - который просматривает аналогичный список в другом разделе реестра).
Lucky_Luck вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Длина списка последних файлов.

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структурированный список 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