вторник, 19 февраля 2013 г.

Отключение автоматической загрузки файлов acad*.lsp и acad*.fas.

Как я уже ранее писал - в 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.

2 комментария:

Анонимный комментирует...

А по процедуре регистрации кода в системе можно подробней описать?

Андрей комментирует...

Это .NET код. О том, как создавать .NET библиотеки и запускать их в AutoCAD, написано здесь: https://sites.google.com/site/bushmansnetlaboratory/translate-manual/vvedenie