|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как автоматом перезагрузить *.MNU файл?
-
Ухта
Регистрация: 31.07.2005
Сообщений: 381
|
||
Просмотров: 7944
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
Я так полагаю, что надо бы именно код этой команды посмотреть. А так вообще-то (если имя файла меню и имя группы меню известно), то сделать лиспом можно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Проектировщик свиноводство Регистрация: 21.08.2003
Сообщений: 2,291
|
Если разговор о подгружаемом меню, то я делаю так:
Предварительно выполняется проверка, подгружено ли нужное меню, т.к. при подгрузке уже подгруженного меню Акад огрызается. Для чего я выполняю принудительную выгрузку - тут долго объяснять, задача специфическая. Код:
|
|||
![]() |
|
||||
Машиностроение, Проектирование Регистрация: 15.09.2003
Москва
Сообщений: 1,113
![]() |
Если дата обновления файла меню позже чем файлы *.mnc, *.mnr
то АКАД сам перекомпилирует меню Может быть этим сыграть как то. Лучше работать с файлом *.mns, а не *.mnu |
|||
![]() |
|
||||
- Регистрация: 31.07.2005
Ухта
Сообщений: 381
![]() |
Тут как раз вопрос к вам Геннадий aka PG . Вот как раз проблема с вашим программным обеспечиванием CADHLP программки хорошие, но я не знаю как у вас, но у меня вечно после программы “Параметы объекта” (focall) вечно вылетает калькулятор FoCal (focal). Незнаю как их удружить. Может вы с этим уже разобрались?
|
|||
![]() |
|
||||
- Регистрация: 31.07.2005
Ухта
Сообщений: 381
![]() |
Startrek, извини но мне так надоедает перезагружаться. И это не дело, надо это проблему все равно как-то решать. Чувствую внутренние коды этих программ не дружат между собой хорошо бы их исправить, но они компилированы (focall и focal). И это уже проблема.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
> Владимир М : Честно говоря, очень интересно посмотреть, какая команда не работает. А также узнать все-таки имя файла меню и создаваемую им группу меню. А выполнить "перегрузку" меню можно примерно следующим манером:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Проектировщик свиноводство Регистрация: 21.08.2003
Сообщений: 2,291
|
Цитата:
Так я, собственно, все уже показал. Сперва проверяем группу на загруженность и если она загружена - выгружаем. А потом загружаем снова. И вообще, свой вопрос поточнее и поподробнее сформулируй плиз. А то может мы о разном толкуем.[/b] |
|||
![]() |
|
||||
Машиностроение, Проектирование Регистрация: 15.09.2003
Москва
Сообщений: 1,113
![]() |
Цитата:
Строки вызова параметров и калькулятора соотв. такие: ^C^C^P(progn(if (= c:focall nil)(load "focall.vlx")));focall; ^C^C^P(progn(if (= c:focal nil)(load "focal.vlx")));focal; Программы компилированы, так что вмешательство в коды затруднительно, может написать автору, но с такой проблемой я не встречался ранее (работало все в АКАД 2005, 2004...) |
|||
![]() |
|
||||
- Регистрация: 31.07.2005
Ухта
Сообщений: 381
![]() |
Здравия всем еще раз. Геннадий aka PG я создаю на подобие вашего сборника свой, для конструктора-машиностроителя с вашего сайта и других сборников. Пользуюсь чужими программками и своими не нарушая авторских прав для свободного распространения причем бесплатно. И глупо выкладывать на сайт, продукт с глюками и ошибками.
В данном случае в макросе *.mnu файла команды focal пришлось убрать ^P, что бы работала и не вылетала FoCal, после команды focall. Но стоит закрыть и открыть Автокад, как опять глючит. Перезапускаю *.mnu файл – все нормально. Закрою(выключу) Автокад. При включении опять придется перезагружать *.mnu файл. Хочу разобраться. Сборник пока тестируется. ^C^C(progn(load "focal.vlx"));focal; ^C^C^P(progn(load "focall.vlx"));focall; Может они у вас обновлены, вышлите их отдельно от вашего программного продукта на мою почту! Буду очень признателен! |
|||
![]() |
|
||||
- Регистрация: 31.07.2005
Ухта
Сообщений: 381
![]() |
Еще вопросы к kpblc
Что означают переменные: loc:set-file-ext, file-name, ext? Цитата:
Создаваемую им группу меню: designer Нужно ли место этих переменных (menu-file-name, menu-file-group, source-file-name, loc:set-file-ext, file-name, ext) ставить свои имена и пути файлов в кавычки? Или другим образом предать значения переменных menu-file-name, menu-file-group, source-file-name, loc:set-file-ext, file-name, ext. Код:
".mnu" остается или переменовывается? Заранее благодарен! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
> Владмир М :
loc:set-file-ext - Наименование внутренней (локальной) функции, которая для указанного имени устанавливает указанное расширение. У нее два парамета - file-name (полное имя файла, с путем, для которого и надо устанавливать расширение) и ext - собственно устанавливаемое расширение. Поскольку функция локальная, вызывать ее из других лиспов дело глухое. А вот изнутри этого если сделать Код:
Код:
Код:
Остальные меню не трогаются (по крайней мере, не должны). Строка (findfile "acad.mnu") служит фактически только для гарантированного копирования файла mnu пользовательского меню в папку поддержки када и последующую подгрузку его. Насчет Цитата:
Код:
(loc:set-file-ext menu-file-name item) -> "C:\\Documents and Settings\\a.kulik\\Application Data\\Autodesk\\AutoCAD 2005\\R16.1\\enu\\support\\designer.mnu". И полученный файл удаляется. Также удаляются файлы с такими же именами, но расширениями mns, mnr, mnc. Потом туда копируется начальный файл (который "c:\\cad\\mnu\\designer.mnu") и производится его загрузка. В момент загрузки кад автоматически создает mns, mnr, mnc-файлы. Правда, это только для 2005. Для 2006-го как будет работать - не знаю. Думаю, что достаточно в (foreach...) вколотить нечто вроде Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
- Регистрация: 31.07.2005
Ухта
Сообщений: 381
![]() |
Ххммм, даже так, стирается, а я думал, что он только выгружается, очень интересно! Как бы, мне тут лишнего не постирать.
Кстати kpblc к вашему исходному коду как лучше всего присвоить значения данных типа setq <переменная1> <выражение1>(т.е. символ1) и т.д.? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,431
|
Я стираю чтобы уж точно увидеть результат - либо загрузка меню, либо ошибка. Если ошибка, то ее можно уже и под микроскопом рассматривать. Иначе может загрузиться старый файл и я буду в полной уверенности, что все ок. А потом бегай, ищи, где собака порылась.
Лишнее вряд ли сотрется. Кстати, есть одна тонкость, о которой официальная документация умалчивает (по крайней мере, я не нашел): если рисунки меню хранятся в dll, то эту dll из-под када (в том плане, что пока AutoCAD болтается в памяти) удалить невозможно. Так что приходится извращаться. Цитата:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Перечитал ветку несколько раз, так и не понял, в каком месте образуется проблема. По крайней мере, понятно только что сей глюк не локализован, а перезагрузка mnu - не что иное как пока единственный случайно найденный способ "реанимации".
Цитата:
Далее, что еще может быть... Способ загрузки файлов *.vlx - только из меню или они попали в автозагрузку, в .mnl, еще каким то образом? Если программа написана и скомпилирована корректно, то в принципе нет необходимости ее перезагружать каждый раз при вызове. Есть слабое предположение, что обе программы случайным образом используют какую то общую переменную или функцию. И одна из них делает ее непригодной для другой. Можно долго разглядывать, что там торчит наружу, но в этом случае лучше обратиться к автору. Еще, пропадает ли сей глюк только в первом открытом файле (после старта АКАДа и перезагрузки mnu) или же во втором, третьем и т.д. тоже нормально работает? Проверялось ли только на одном экземпляре АКАДа или на разных (включая рус/англ версии)? Нельзя сбрасывать со счетов возможную глючность АКАДа, всякое бывает, особенно на криворусифицированых. И наверно самый "каверзный" вопрос, если перед стартом АКАДа ручками удалить соответствующие mns, mnr и mnc (заставить при старте АКАД скомпилировать их заново), то как оно работает? Если нормально будет, то самый простой костыль будет состоять из батника для прибивки этих файлов и последующего запуска АКАДа. PS что то очень не нравится этот замут с перезагрузкой :roll: |
|||
![]() |