Jako wytrawny użytkownik AutoCAD-a… zapewne nie raz spotkałeś się z sytuacją którą zilustrowałem na poniższym (prostym acz ruchomym) obrazie:
Sytuacja ta związana jest z bezpieczeństwem i ma zapewnić zminimalizowaanie możliwości wczytania złośliwego kodu do AutoCAD-a. W wersji 2014 AutoCAD-a, wprowadzone zostały środki polegające między innymi na określeniu zaufanych lokalizacji. Zapisywane jest to w zmiennej systemowej o nazwie TRUSTEDPATHS.
Wygodnym sposobem na automatyczne ładowanie dowolnych aplikacji jest korzystanie z opcji polecenia APPLOAD (WCZYTAJAPL) zwanej Pakiet uruchomieniowy. Powoduje wczytanie określonych aplikacji przy każdym uruchomieniu AutoCAD-a:
Należy pamiętać o tym, aby aplikacje dodawane w pakiecie uruchomieniowym zawsze znajdowały się w zaufanych lokalizacjach. Tutaj znajdziesz więcej informacji o zmiennej TRUSTEDPATHS, a tu więcej o bezpieczeństwie AutoCAD-a.
Poniżej cztery funkcje LISP-owe, które napisałem aby zautomatyzować kontrolę i umożliwić manipulowanie wartością zmiennej TRUSTEDPATHS w dyskretny sposób z poziomu aplikacji. Pozwalają one odczytywać, porównywać, dodawać i usuwać, określone ścieżki dostępu. Umiejętne korzystanie z nich rozszerza możliwości programującego w sytuacjach automatycznego instalowania czy aktualizowania oprogramowania.
Zdefiniowane funkcje wymagają (rzecz jasna) wcześniejszego załadowania biblioteki CADPL-Pack, a wyglądają tak:
; ---------------------------------------------------------------------------- ;
; zwraca liste sciezek zmiennej TRUSTEDPATHS, jezeli [Mode] zwraca elementy ;
; wielkimi literami ;
; ---------------------------------------------------------------------------- ;
(defun jk:SYS_GetTrustedPathsList (Mode / p r)
(setq p (getvar "TRUSTEDPATHS")
r (cd:STR_Parse p ";" nil)
)
(if Mode
(mapcar 'strcase r)
r
)
)
; ---------------------------------------------------------------------------- ;
; zwraca T jezeli sciezka [Path] jest na liscie zmiennej TRUSTEDPATHS ;
; ---------------------------------------------------------------------------- ;
(defun jk:SYS_TrustedPaths-p (Path / i p)
(setq i (jk:SYS_GetTrustedPathsList t)
p (strcase Path)
)
(not
(zerop
(length
(member p i)
)
)
)
)
; ---------------------------------------------------------------------------- ;
; dodaje sciezke [Path] do zmiennej TRUSTEDPATHS. zwraca T lub nil ;
; ---------------------------------------------------------------------------- ;
(defun jk:SYS_TrustedPaths-Add (Path / p)
(if
(vl-file-directory-p Path)
(progn
(setq p (getvar "TRUSTEDPATHS"))
(if
(not (jk:SYS_TrustedPaths-p Path))
(setvar "TRUSTEDPATHS" (strcat p ";" Path))
)
(jk:SYS_TrustedPaths-p Path)
)
)
)
; ---------------------------------------------------------------------------- ;
; usuwa sciezke [Path] ze zmiennej TRUSTEDPATHS. zwraca T lub nil ;
; ---------------------------------------------------------------------------- ;
(defun jk:SYS_TrustedPaths-Del (Path / p)
(setq p (jk:SYS_GetTrustedPathsList nil))
(if
(jk:SYS_TrustedPaths-p Path)
(progn
(setq p (vl-remove Path p)
p (cd:STR_ReParse p ";")
)
(setvar "TRUSTEDPATHS" p)
(not (jk:SYS_TrustedPaths-p Path))
)
)
)
; ---------------------------------------------------------------------------- ;
Poniżej przykład działania funkcji dodającej określoną ścieżkę do zmiennej TRUSTEDPATHS:
Po wykonaniu powyżej przedstawionego kodu, ostrzegawcze okno pokazane na początku nie pojawi podczas uruchomienia AutoCAD-a, a przykładowy plik zostanie załadowany.
Wpis ten tylko częściowo dotyka tematów związanych z możliwymi sposobami programowej zmiany środowiska AutoCAD-a. Wiedza na ten temat wydaje się być przeznaczona dla bardziej zaawansowanych użytkowników.
( . . . )
To jest 205 wpis…