Bubble für AutoCAD
Der kostenlose Informationsassistent für AutoCAD-Benutzer
| Wie man ein Plug-in schreibt: |
Wie schreibe ich ein Plug-in für Bubble? Es ist ganz einfach, wenn Sie Autolisp kennen. Befolgen Sie einfach diese Schritte. Beachten Sie, dass Plug-ins nur in AutoCAD 2000 und neueren Versionen funktionieren. Nicht in R14. Nicht in LT:
1. Erzeugen Sie eine neue Autolisp-Datei. Fügen Sie eine Überschrift (Kommentar) hinzu:
;; -----------------------------------------------------------------
;; Bubble 2: My Bubble PlugIn 1.0 - (c) 2002 Asuni CAD
;; -----------------------------------------------------------------
|
2. Fügen Sie diese Ladefunktion SO WIE SIE IST hinzu. Sie sollten sie nicht ändern:
;; Dies ist die Ladefunktion
;; NICHT ÄNDERN
(defun ASUNI:BUBBLE:AddPlugIn (PlgInFunction)
(if ASUNI:BUBBLE:GETDATA
(setq ASUNI:BUBBLE:GETDATA
(append ASUNI:BUBBLE:GETDATA
(list
'(setq temp ASUNI:BUBBLE:DATA)
(list (read PlgInFunction) 'handle)
'(setq ASUNI:BUBBLE:DATA
(append temp '("[-]") ASUNI:BUBBLE:DATA)
)
'(princ)
)
)
)
(progn
(defun-q ASUNI:BUBBLE:GETDATA (handle / temp)
(setq ASUNI:BUBBLE:OBJECT nil)
)
(setq ASUNI:BUBBLE:GETDATA
(append ASUNI:BUBBLE:GETDATA
(list
(list (read PlgInFunction) 'handle)
'(princ)
)
)
)
)
)
)
|
3. Als nächstes kommt die Funktion, welche die Arbeit ausführt. "ASUNI:BUBBLE:" sollte wie im Beispiel dem Funktionsnamen vorausgehen. Auf diese Weise wird ein Zusammenstoß mit anderen Autolisp-Funktionen verhindert.
DATEN AN DIE FUNKTION ABGEGEBEN:
Diese Funktion erhält einen Parameter mit Namen "handle", der über die Elementreferenz des Objekts verfügt, das Bubble anzeigen möchte.
DATEN VON DER FUNKTION AN BUBBLE ZURÜCKGEGEBEN:
Diese Funktion gibt Bubble die Information in 2 Variablen zurück:
ASUNI:BUBBLE:DATA - Die Information, die von Bubble angezeigt werden soll, als Liste von Listen bestehend aus Namen und Wert von Eigenschaften.
ASUNI:BUBBLE:OBJECT - Name des Objekts. Wenn Sie dem Objekt einen Namen geben, werden nur Ihre Informationen und die üblichen Eigenschaften für das Objekt angezeigt. Wenn diese Variable Null ist, werden die Daten dem Ende der aktuellen Informationsliste hinzugefügt.
(defun ASUNI:BUBBLE:MyBpiPlugIn (handle / ename eget p1 p2)
(setq ename (handent handle))
(setq ASUNI:BUBBLE:DATA nil)
;; falls es eine Linie ist
(if (and ename (= "LINE" (cdr (assoc 0 (setq eget (entget ename))))))
(progn
(setq p1 (cdr (assoc 10 eget)))
(setq p2 (cdr (assoc 11 eget)))
(setq ASUNI:BUBBLE:OBJECT "MyLine")
(setq ASUNI:BUBBLE:DATA
(list
(if ASUNI:BUBBLE:MyBpi:MyLine:DeltaX
(strcat "DeltaX: " (rtos (abs (- (car p2) (car p1)))))
)
(if ASUNI:BUBBLE:MyBpi:MyLine:DeltaY
(strcat "DeltaY: " (rtos (abs (- (cadr p2) (cadr p1)))))
)
(if ASUNI:BUBBLE:MyBpi:MyLine:DeltaZ
(strcat "DeltaZ: " (rtos (abs (- (caddr p2) (caddr p1)))))
)
)
)
)
)
(princ)
)
|
4. Dann definieren wir die von Bubble benötigte Datenstruktur, um unsere Plug-in-Eigenschaften in einem eigenen Fenster anzuzeigen, so wählt der Benutzer die Informationen aus, die angezeigt werden. Es ist eine Liste mit folgenden Komponenten:
- Eine Referenz des Plug-ins. Bubble verwendet sie, um Autolisp Datenvariablen zu erzeugen. Es muss auch der Ordnername unter dem Ordner Plugins sein.
- Eine Beschreibung (im Eigenschaftenfenster verwendet)
- Der Name des Plug-in-Symbols. (Dieser Parameter ist optional. Wenn er nicht verwendet wird, wird ein Standardsymbol verwendet.)
- Eine Liste für jedes Objekt mit:
- Referenz des Objekts
- Name des Objektsymbols (Datei ICO), der mit dem Objekt im Eigenschaftenfenster in Verbindung steht. (Dieser Parameter ist optional. Wenn er nicht verwendet wird, wird ein Standardsymbol verwendet)
- Eine Liste mit Paaren: Referenz der Eigenschaft und tatsächlicher Wert (T = ist aktiviert, falsch = ist deaktiviert)
Bubble erzeugt Variablen gestützt auf die Referenzen mit folgendem Benennungssystem:
ASUNI:BUBBLE:[PlugInHandle]:[ObjectHandle]:[PropertyHandle]
Der Wert ist T, wenn die Eigenschaft aktiviert ist, oder Null, wenn die Eigenschaft deaktiviert ist.
(setq ASUNI:BUBBLE:PROPS
'(("MyBpi" "My Bubble Plugin"
("MyLine" "MyLine.ico"
("DeltaX" T)
("DeltaY" T)
("DeltaZ" T)
)
))
)
|
In diesem Beispiel macht Bubble folgende Autolisp-Variablen:
- ASUNI:BUBBLE:MyBpi:MyLine:DeltaX
- ASUNI:BUBBLE:MyBpi:MyLine:DeltaY
- ASUNI:BUBBLE:MyBpi:MyLine:DeltaZ
die in der Funktion ASUNI:BUBBLE:MyBpiPlugIn
verwendet werden.
5. Die letzte Funktion ist ausschlaggebend. Sie meldet Bubble die nötige Information zum Plug-in. Als erstes fügen Sie unser Plug-in der getdata-Liste hinzu (so erhalten alle Plugins Informationen ohne die anderen zu stören), unter Verwendung der Funktion ASUNI:BUBBLE:AddPlugIn, die vorher in der Lisp-Datei definiert wurde (Schritt 1). Als nächstes geben Sie "I'm here" in Bubble ein. Dies wird mit ASUNI:BUBBLE:LoadProps gemacht
;; Hier findet das Laden statt:
(if (null ASUNI:BUBBLE:MyBpi:Loaded)
(progn
(princ "\nBubble 2: My Bubble PlugIn 1.0 - (c) 2001 Asuni CAD")
;; Mehrfaches Laden verhindern
(setq ASUNI:BUBBLE:MyBpi:Loaded T)
;; Die Funktion wird der GetData-Datenbasis hinzugefügt:
(ASUNI:BUBBLE:AddPlugIn "ASUNI:BUBBLE:MyBpiPlugIn")
;; Die Eigenschaften in Bubble laden:
(ASUNI:BUBBLE:LoadProps)
)
)
|
|