Automatisch starten
DLL bestanden worden in AutoCAD geladen door het commando NETLOAD. Hierna is de functionaliteit beschikbaar die in deze DLL is geprogrammeerd. De feitelijke commando's die in de DLL zijn gecreëerd, kunnen dan via de commandline worden gestart.
Het is mogelijk om deze DLL's automatisch te laden. Hiervoor dient een Registry sleutel te zijn aangemaakt. Dit wordt nu niet verder beschreven, dat komt later wel.
Het is mogelijk om DLL's te laden via een LISP programma. Als je in één van de support mappen een bestand hebt staan dat acad.lsp of acaddoc.lsp heet, dan wordt deze automatisch geladen door AutoCAD. In dit Lisp-bestand kun je dan je tool laden door middel van de volgende code:
(command "NETLOAD" "C:\\Program Files\\MyTools\\MyTool.dll")
Let hierbij overigens op dat padverwijzingen met dubbele backslashes geschreven worden of met een enkele slash.
Op deze wijze wordt je nieuwe tool direct geladen door AutoCAD. Maar je programma zelf wordt nog niet gestart. Hiervoor duiken we even in de VB.NET code. Als je een DLL maakt, zoals in AutoCAD geladen kan worden, dan wordt deze niet autmatisch gestart. Een uitvoerbaar bestand zou een procedure Sub Main() kunnen bevatten dat zorgt voor het starten. In een Windows Form applicatie wordt het programma gestart door het venster te starten. In een gewone DLL niet. Zie de volgende code:
Imports Autodesk
Imports Autodesk.AutoCAD.Runtime
Namespace MyNameSpace
Public Class MyClass
Private Sub MyTool()
MsgBox("Hier komt code.", vbOK, "Titel")
End Sub
End Class
End Namespace
Door een paar kleine aanpassingen kan deze code geschikt gemaakt worden zodat de procedure MyTool() gestart wordt zodra de DLL geladen wordt. Zie de volgende code:
Imports Autodesk
Imports Autodesk.AutoCAD.Runtime
Namespace MyNameSpace
Public Class MyClass
Implements IExtensionApplication
Sub Initialize() Implements IExtensionApplication.Initialize
Call MyTool()
End Sub
Sub Terminate() Implements IExtensionApplication.Terminate
End Sub
Private Sub MyTool()
MsgBox("Hier komt code.", vbOK, "Titel")
End Sub
End Class
End Namespace
Door gebruik te maken van de Interface IExtensionApplication zul je twee procedures moeten hebben, namelijk Initialize() en Terminate(). Deze worden aangeroepen bij het laden van een DLL waardoor alles wat binnen de procedure Initialize() wordt aangeroepen, zal worden uitgevoerd. Zo ook een Call naar de procedure MyTool().
In plaats van een MessageBox is het ook mogelijk om een Form te laden bijvoorbeeld. Mogelijkheden genoeg!