Автоматично зареждане и изпълнение на AutoLISP процедури
Заредете рутинните процедури на AutoLISP, когато стартирате програма на AutoCAD и изпълнявате команди или функции, докато работите върху чертеж.
AutoCAD автоматично зарежда съдържанието на три дефинирани от потребителя файла, acad.lsp, acaddoc.lsp и MNL файл, свързани с текущия файл за персонализиране.
По подразбиране файлът acad.lsp се зарежда веднъж в началото на нова сесия на AutoCAD, докато файлът acaddoc.lsp се зарежда за всеки документ (или чертеж). Това ви позволява да свържете зареждането на файла acad.lsp със стартирането на приложението, а зареждането на файла acaddoc.lsp с отварянето на документ (или чертеж). Описаният метод на зареждане може да бъде променен чрез модифициране на стойността на системната променлива ACADLSPASDOC.
Ако специалната функция S::STARTUP е дефинирана в един от тези файлове, тя се изпълнява автоматично веднага след инициализиране на чертежа. В допълнение, списък с приложения за автоматично изтегляне може да бъде избран чрез опцията ПРИЛОЖЕНИЕ. В последния случай не е необходимо редактиране на файловете.
Стартовите файлове acad.lsp и acaddoc.lsp не се доставят с AutoCAD. Ако е необходимо, потребителят трябва да ги създаде сам.
Когато зареждате AutoLISP файл, дефинициите на командите във файла заемат определено количество памет, дори ако командите не се използват. Функцията за автоматично зареждане на AutoLISP ви позволява да направите дадена команда достъпна, без да зареждате нейния код в паметта. Добавянето на следните изрази към файла acaddoc.lsp води до автоматично зареждане на командите COMMAND1, COMMAND2 и COMMAND3 от файла cmds.lsp и командата NEWYAKOM от файла newcmd.lsp.
Първият път, когато въведете името на автоматично заредена команда в командния ред, AutoLISP зарежда пълната дефиниция на тази команда от съответния файл. AutoLISP също има функция autoarxload заObjectARX приложения. Вижте разделите за автоматично зареждане и autoarxload на AutoLISP Reference.
Потребителят може да създаде файл acad.lsp за редовна употреба на програми AutoLISP. Когато AutoCAD стартира, той търси файла за поддръжка acad.lsp. Ако бъде намерен файл acad.lsp, той се зарежда в паметта.
Това е така, защото файлът acad.lsp е проектиран да зарежда автоматично специални приложения. Следователно всички променливи и функции, дефинирани във файла acad.lsp, са достъпни само за първия чертеж. Ако искате някои процедури да са налични за всички документи, които отваряте, те трябва да бъдат поставени във файла acaddoc.lsp.
Режимът на зареждане на файловете acad.lsp и acaddoc.lsp може да се контролира с помощта на системната променлива ACADLSPASDOC. Когато системната променлива ACADLSPASDOC е настроена на 0 (стойността по подразбиране), файлът acad.lsp се зарежда само веднъж: при стартиране на приложението. Ако е равно на 1, файлът acad.lsp се зарежда при всяко отваряне или създаване на чертеж.
Файлът acad.lsp може да съдържа AutoLISP код за една или повече процедури или просто поредица от извиквания на функцията за зареждане. Последният метод е по-предпочитан, тъй като опростява възможната промяна на списъка със заредени процедури и приложения. Ако кодът по-долу е записан като файл acad.lsp, файловете mysessionapp1.lsp, databasesynch.lsp и drawingmanager.lsp ще се зареждат при всяко стартиране на AutoCAD.
Файлът acaddoc.lsp е предназначен да инициализира всеки документ (чертеж). Този файл е полезен за автоматично зареждане на библиотеки от AutoLISP процедури при създаване на нов чертеж или отваряне на съществуващ.
Всеки път, когато отворите чертеж, AutoCAD търси файла acaddoc.lsp, използвайки библиотекатаначин. Когато се намери такъв файл, той се зарежда в паметта. Файлът acaddoc.lsp винаги се зарежда с всеки чертеж, независимо от стойността на ACADLSPASDOC.
В повечето случаи е достатъчно потребителят да има един файл acaddoc.lsp за всички AutoLISP процедури, които работят директно върху документи. AutoCAD търси файла acaddoc.lsp в реда, посочен в пътищата на стандартната библиотека. Следователно, когато работите с различни типове чертежи, можете да съхранявате различен файл acaddoc.lsp във всяка папка с чертежи, за да заредите необходимия набор от AutoLISP процедури.
Файлът acaddoc.lsp може да съдържа код за една или повече процедури или поредица от заявки за функция за зареждане. Последният метод е по-предпочитан, тъй като опростява възможната промяна на списъка със заредени процедури и приложения. Ако следната програма е записана във файла acaddoc.lsp, файловете mydocumentapp1.lsp, build.lsp и counter.lsp ще се зареждат при всяко отваряне на нов документ.
Адаптиране на MNL файлове и AutoLISP менюта
Когато се зареди файл за персонализиране, AutoCAD търси MNL файл със същото име. Когато желаният файл бъде намерен, той се зарежда в паметта. Този механизъм ви позволява да гарантирате, че функциите на AutoLISP в програмата AutoCAD са заредени, които са необходими за работата на менюто.
Този механизъм ви позволява да гарантирате, че функциите на AutoLISP в програмата AutoCAD са заредени, които са необходими за работата на менюто. Например, файлът за персонализиране по подразбиране acad.cui зависи от съдържанието на файла acad.mnl, който съдържа дефиниции за функциите на AutoLISP, извиквани в макросите на менюто. Файлът MNL се зарежда след файла acaddoc.lsp.
В този пример функцията princ се използва за издаване на съобщение. Първият път, когато функцията princ се извика от командния ред, тя се показваследния текст:
Помощни програми "ново меню"... заредени.
Второто извикване на princ се използва за прекратяване на функцията AutoLISP. Без второ извикване на princ съобщението на командния ред ще се появи два пъти. Както споменахме по-рано, можете да използвате аргумента on_error, когато извиквате функцията за зареждане, за да подобрите надеждността на процедурите.
Функция S::STARTUP: Изпълнява се след инициализиране на чертежа
Можете да напишете функцията S::STARTUP за извършване на операции по настройка след инициализиране на чертежа.
Всички автоматично заредени LISP файлове (acad.lsp, acaddoc.lsp и MNL) се поставят в паметта, докато чертежът бъде напълно инициализиран. Това обикновено не е проблем, освен когато използвате командната функция; надеждното изпълнение на тази функция е възможно само след завършване на инициализацията на чертежа.
Ако дефинираната от потребителя функция S::STARTUP се съдържа във файловете acad.lsp, acaddoc.lsp или MNL, тогава тя се изпълнява всеки път, когато се създава нов чертеж или се отваря съществуващ чертеж. По този начин, за да извършите операции по настройка, можете да създадете S::STARTUP функция и да я поставите в автоматично зареден AutoLISP файл.
Нека, например, се изисква да се предефинира стандартната команда HATCH по такъв начин, че когато се въведе нейното име, да се извика командата HATCH и да се покаже съответното съобщение. За да направите това, добавете следния код към файла acaddoc.lsp:
Преди чертежът да бъде инициализиран, функцията defun дефинира нови описания за командите HATCH и HATCH. След инициализиране на чертежа се извиква функцията S::STARTUP, която дезактивира стандартното описание на командата HATCH.
Тъй като функцията с име S::STARTUP може да бъде дефинирана в различни файлове (acad.lsp, acaddoc.lsp, MNL файлове или всякакви другиAutoLISP файлове), предварително дефинираната функция S::STARTUP може да бъде заменена.
Следващият пример предоставя начин за дефиниране на тази функция, за да се избегнат подобни ситуации.
. автоматична функция.
В резултат на тази дефиниция кодът на предварително заредената функция S::STARTUP се добавя към кода на новата функция S::STARTUP. Тази дефиниция може да се използва независимо от предишната съществуваща функция S::STARTUP.