Как я уже ранее писал - в AutoCAD 2013 SP1.1 появилась возможность включать\отключать автоматическую загрузку файлов acad*.lsp и acad*.fas. Однако, при желании, реализовать это можно и в более ранних версиях AutoCAD.
Изучая последовательность и содержимое событий, происходящих в процессе открытия документа в AutoCAD, я наткнулся на один любопытный момент, воспользовавшись которым смог программно отключить автоматическую загрузку файлов acad*.lsp и acad*.fas, которая обычно происходит при открытии чертежей.
Ниже приведённый код был протестирован мною в AutoCAD 2009 SP3 x64 Enu и в AutoCAD 2013 SP1.1 x64 ENU. В обоих случаях тестирование прошло успешно.
Для решения обозначенной выше задачи, указанный код следует помещать в автозагрузку AutoCAD, зарегистрировав его, к примеру, в реестре. Т.о. он будет приступать к работе ДО того, как будет произведена попытка загрузки указанных LISP файлов.
1: using cad = Autodesk.AutoCAD.ApplicationServices.Application;
2: using App = Autodesk.AutoCAD.ApplicationServices;
3: using Rtm = Autodesk.AutoCAD.Runtime;
4:
5: [assembly: Rtm.ExtensionApplication(typeof(AndreyBushman.CAD.Security.Sample))]
6:
7: namespace AndreyBushman.CAD.Security {
8:
9: public class Sample : Rtm.IExtensionApplication {
10:
11: public void Initialize() {
12: cad.DocumentManager.DocumentLockModeChanged += DocMng_DocumentLockModeChanged;
13: }
14:
15: void DocMng_DocumentLockModeChanged(object sender, App.DocumentLockModeChangedEventArgs e) {
16: if (e.GlobalCommandName.ToLower().Contains("s::startup"))
17: e.Veto();
18: }
19:
20: public void Terminate() { }
21: }
22: }
Данной возможностью я воспользовался при написании CAD Recovery.
3 комментария:
А по процедуре регистрации кода в системе можно подробней описать?
Можно подробней описать как использовать код. Стандартный компилятор ругается.
Это .NET код. О том, как создавать .NET библиотеки и запускать их в AutoCAD, написано здесь: https://sites.google.com/site/bushmansnetlaboratory/translate-manual/vvedenie
Отправить комментарий