ACM-2023-03-02

Jahrgang: 2023
Ausgabe: 03
Autor: Markus Hoffmann
Programm: ACMMATCHVPLAYERSETTINGS2.LSP
Funktionalität: Layerstatus übertragen in andere Layouts oder offene DWGs
Format: LISP
Lauffähig ab: AutoCAD 2020
Befehle: ACMMVPLS
Bezug: Online


Beschreibung
============

Layerstatus übertragen

Das bereits im letzten AUTOCAD Magazin vorgestellte LISP-Tool ACMMATCHVPLAYERSETTINGS überträgt einen 
Layerstatus von einem Layoutansichtsfenster auf ein Ansichtsfenster derselben Zeichnungsdatei, jedoch 
in einem anderen Layout.DieseFunktion wird nämlich nicht vom dafür üblichen Befehl EIGENSCHAFTEN 
ÜBERTRAGEN abgedeckt.
Da stellt sich die Frage, ob nicht eine Erweiterung des Programms auf ebenfalls in der aktuellen Session 
geöffneten Zeichnungsdateien möglich ist? Wir wissen ja, dass man AutoLISP-Anwendungen nur in der Datei 
verwenden kann, in der sie geladen sind. Dort arbeiten sie im eigenen Namespace. Es ist also nicht möglich, 
innerhalb einer AutoLISP-Anwendung eine andere Zeichnungsdatei zu öffnen, sie zu aktivieren und 
LISP-Anweisungen dort auszuführen. Für solche Fälle, zum Beispiel das Drucken mehrerer Dateien, wird 
üblicherweise auf Skripte oder Skriptgeneratoren und ähnliche Tools zurückgegriffen.
Allerdings lassen sich auf etwas anderen Wegen – Stichwort ObjectDBX, Blackboard – geöffnete und sogar 
ungeöffnete Zeichnungsdateien eingeschränkt manipulieren. Im Fall von ACMMATCHVPLAYERSETTINGS soll nun der 
Layerstatus eines Layoutansichtsfensters nicht nur in einem anderen Layout verfügbar sein, sondern auch 
in anderen geöffneten Zeichnungsdateien. Die derzeit geöffneten Dateien lassen sich mit 
(vla-get-Documents (vlax-get-acad-object)) ermitteln und darauf aufbauend die Eigenschaften und Methoden 
untersuchen und verändern. Im Fall von ACMMATCHVPLAYERSETTINGS.LSP verbindet sich das Tool auf diesem Weg 
mit der Datenbank des Layerstatemanagers einer geöffneten Datei und stößt dort den Import eines vorher als 
Datei abgelegten Layerstatus an. Aufgrund der oben genannten Einschränkungen, nicht in eine weitere Datei 
springen zu können und dort einen weitere Code ausführen zu lassen, belässt es ACMMATCHVPLAYERSETTINGS2.LSP
dabei, den Layerstatus zu importieren. Die Zuweisung zu einem Layoutansichtsfenster sollte nun wieder von 
Hand oder mithilfe von ACMMATCHVPLAYERSETTINGS2 durchgeführt werden.Für diese neue Funktionwurde neben 
zusätzlichem Code die Abfrage eingebaut, ob der Layerstatus eines Ansichtsfensters in ein anderes Layout 
oder in eine andere geöffnete DWG übertragen werden soll.