ActiveX bietet weitere Möglichkeiten das AutoCAD zu verbessern. ActiveX greift direkt in die AutoCAD-Struktur ein und
ermöglicht so das Ändern von Layers, Blockdefinitionen, Optionen und Einstellungen bzw. Objekte.
Wenn wir mit ActiveX arbeiten wollen muss zuerst, (vl-load-com), aufgerufen werden um die ActiveX-Funktionen zu laden.
Es gibt Funktionen die mit vl- beginnen, diese sind VisualLisp-Funktionen die nur die normalen Lisp-Funktioen erweitern.
Die ActiveX-funktionen beginnen mit vla- vlax- vlr-. Wobei dei vlax- Funktionen die wichtigen ActiveX-Funktionen sind und vla- meist Abkürzungen sind und die vlr- sind Reactoren die auf gewisse Zustände oder Befehle reagieren.
Zuerste muss das Objekt , (car (entsel)), zu einem ActiveX-Objekt konvertierte werden, die dafür benötigte Funktion lautet:
(vlax-ename->vla-obj [Objekt])
Um Eigenschaften von Objekt abzufragen gitb es die Funktion:
(vlax-get-property [vla-Objekt] [Eigenschaft])
Um Eigenschaften zu setzen benötigen wir die Funktion:
(vlax-put-property [vla-Objekt] [Eigenschaft] [Wert])
Z.B.: Um die Farbe eines Objekts, Linie, zu ermitteln:
(vlax-get-property (vlax-ename->vla-object (car (entsel))) "Color")
oder die vla- variante
(vla-get-color (vlax-ename->vla-object (car (entsel))))
Um die Farbe eines Objekt zu ändern:
(vlax-put-property (vlax-ename->vla-object (car (entsel))) "Color" 1)
Ändern die Farbe eines Objekts auf 1, Rot, 0 ist VONBLOCK und 256 ist VONLAYER
Die vla- Variante:
(vla-put-color (vlax-ename->vla-object (car (entsel)) 1)
Es muss nicht nur Farbe sein, es kann auch:
Layer
Angle
Length
Linetype
Linetypescale
Lineweight
Startpoint
Endpoint
Name (Bei Blöcken)
...
Um zu ermittel welche Eigenschaften ein Objekt hat gibt es auch einen Befehl.
(vla-dump-object [vla-objekt])
Rechts sieht man die Struktur an die amn sich halten muss.
Der Ausgangspunkt ist
(vlax-get-acad-object)
Als nächsters wird die Einstellungen, Perferences, oder ein Dokument gewählt. Wir wählen das aktuelle Dokument, Zeichnung.
(vlax-get-property
(vlax-get-acad-object)
"ActiveDocument"
)
vla- Variante:
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
=> #<VLA-OBJECT IAcadDocument 000000000ea9b6a0>
Jetzt können sogenannte Collection gewählt werden.
Wie zum Beispiel die Layer:
(vlax-get-propert
(vlax-get-property
(vlax-get-acad-object)
"ActiveDocument"
)
"Layers"
)
vla- Variante:
(vla-get-layers
(vla-get-ActiveDocument
(vlax-get-acad-object)
)
)
Um jetzt gezielt einen Layer aus dem Collection zu piken benötigen wir die Method-Funktion mit Item:
(vlax-invoke-method
(vlax-get-property
(vlax-get-property
(vlax-get-acad-object)
"ActiveDocument"
)
"Layers"
)
"item"
[Layernamen/Zahl]
)
Jetzt können wir die Eigenschaften wieder von diesen Objekten abfragen bzw. setzen.
Um die Farbe der Layers 0 abzufragen:
(vlax-get-property
(vlax-invoke-method
(vlax-get-property
(vlax-get-property
(vlax-get-acad-object)
"ActiveDocument"
)
"Layers"
)
"item"
"0"
)
"Color"
)
=> 7