Реклама i
|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Цитата:
![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Более 20 лет использую загрузку безо всяких if. Это гарантирует, что всегда выполняется именно нужная программа. Никаких торомозов тут нет, даже ещё в AutoCAD R10 (не 2010) даже загрузка очень большой библиотеки происходила очень быстро. Это дает и дополнительное преимущество. Файл всегда можно безболезненно заменить, всегда будет действующая версия.
Более того, много лет использовал для всех программ одно имя команды. В последние годы использую такую методику: 1. Конечным функциям ("командам") присваиваю "цифровые" имена. Команд тысячи, напридумывать для них человечьи имена невозможно, да их и не запомнишь. А цифры человек запоминает очень легко. 2. В CUI команда записана примерно так: Код:
3. Определение команды записано в MNL: Код:
Там, где требуется загрузка кода из файла команда имеет вид наподобие: Код:
|
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Откровенно говоря спорный метод - а тогда как у Вас происходит загрузка програмных подфункций (общие-то наверняка есть), они либо в каждом файле продублированны должны быть (уверен на 100% - у Вас не так), либо загружаться при каждом вызове из внешнего файла (а в автолиспе с этим проблеммы - так как пути надо "жестко" прописывать - то есть инсталятору добавляется "ненужной" работы - изменить пути в каждом файле - ну либо инициализировать некую переменную где эти пути прописанны (способ проще но с надежностью потенциальные проблемы), или заставлять грузить "жестко" из какого-нибудь %appdata%\myprogram - тоже не есть гуд т.к. если придеться .net подмешивать (у меня к "сожалению" его все больше и больше) - проблемы с разными версиями (на одном компьютере) возникнут), либо сразу "при старте" должны быть уже загруженны - тогда вобще смысла никакого нет - проще сразу и все c:xxx тоже загрузить.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
конструктор машиностроитель Регистрация: 14.05.2007
Новосибирск
Сообщений: 893
|
Не рискнул создавать тему, может здесь разъясните?
Встречаю различные способы авто-загрузки lisp файлов - ^C^C(if (null C:<команда>)(load "<файл>"));<команда>; ^C^C:P(if (eq C:<команда>)(load "<файл>"));<команда>; ^C^C(if (not C:<команда>)(load "<файл>"));<команда>; ^C^C(load "<файл>"));<команда>; В чем разница? |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Никакие пути не надо жестко прописывать - все вычисляется на лету, относительно папки с установленной системой. Инсталлятор, разумеется, необходим - чтобы не делать никаких ручных настроек. Часть файлов устанавливается в %Program Files%, осовная - в %Local Application Data%. Все настройки хранятся в INI-файле, расположение которого системе известно. Там может быть записано что угодно, в том числе пути к различным компонентам системы. Могут использоваться и разные версии AutoCAD попеременно. Для каждой версии часть файлов является специфичными, загружаются из своих папок. В настройки самого AutoCAD никаких изменений не вносится, никакие его файлы не затрагиваются. Только добавляется свой профиль - ради включения дополнительных папок в %ACAD%. Файл acaddoc.lsp генерируется на лету из специального шаблона. В шаблоне имеется масса "плейсхолдеров", в которые подставляются значения различных переменных. В результате во время работы будут записаны абсолютные пути. После завершения работы acaddoc.lsp уничтожается и никому не мешает. Цитата:
Цитата:
Хотя уверен, что вопрос и с версиями библиотек .NET можно решить. Если подходить с правильной стороны. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
15000 команд c:xxx? - тут что-то не так с организацией команд - подумайте сами - слов в русском языке меньше, команды типа c:xxx предназначенны для непосредсвенного исполнения пользователем, столько нету нигде ни в автокаде, ни в операционных системах, ни в msoffice со всеми возможными надстройками.
p.s. из кода: Код:
p.p.s - откровенно говоря мне с большим трудом верится, что у Вас все 15000 функций абсолютно "разношерстные" - сильно-ли отличается из Вашего примера "ru_pro_arrange_block" от какого-нибудь "ru_pro_XXX_block"? не повторяется-ли там 90% кода - если так то может логичнее заменить на функцию с аргуметном, а не плодить "клонов" - хотя это только мои предположения.
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 16.06.2011 в 16:09. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
1. Да они появились исторически, когда AutoCAD обладал минимальным интерфейсом и даже не всегда мышка была. Тогда чаще всего команды вводили с клавиатуры. Времена были такие, мерзопакостные. Вот и сделали возможность программистам создавать "команды". Иногда действительно проще команду ввести с клавиатуры, чем лазить по многочисленным элементам интерфейса. Но имя должно быть простым и запоминающимся. Не "КРАНШАРОВЫЙБАБОЧКАШТУЦЕР-РЕЗЬБА_20" или наподобие. Вот и ввел цифровые имена. Легко запоминаются (те, которые надо), труднее ошибиться. И то только для тех, кому удобнее запомнить номер и вводить с клавиатуры. В общем-то удобно. 2. Последнюю выполненную "команду" можно повторить нажатием Enter. Тоже надо. Раньше все команды имели одно и то же имя - ради повтора. Оно было и невидимым (все равно не набирать), и в виде RU. Потом, как написал выше, сделал цифровые имена. 15000 - это не имен команд, и не пунктов в меню. Это полезных конечных действий. Да и то это я когда-то насчитал, сбился и плюнул. Теперь намного больше. Разумеется, нет никаких 15000 файлов. На сей момент их ровно 299. Это таких, в которых что-то индивидуальное. А большинство действий реализуется вызовом библиотечных функций с аргументами. Самые ходовые и оформлены в виде C:XXX. Я приводил пример: Код:
А вот уже в этом меню, в конечных листочках дерева, и сидят выховы функций с аргументами. Пункт такого меню выглядит наподобие Код:
Код:
Например функция ru-3d-pipe-draw-any рисует "что угодно", имеющее начало и конец. В данном случае ей, с помощью функции quote передается имя функции ru-3d-pipe-2-flange-draw-revolved, рисующей в 3D фланцы приварные встык. А если вызвать Код:
Впрочем, мы отвлеклись от темы ветки про "макросами кнопок" ![]() |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. | hwd | Баги и пожелания в Autodesk | 21 | 21.04.2010 20:27 |
Программное управление макросами кнопок | Supermax | Программирование | 2 | 24.12.2007 14:07 |