Mein tatsächliches Projekt befindet sich in einer Projektmappe, in welcher auch die Extensions-Projekte enthalten sind. Das eigentliche Projekt verweist immer auf die Extensionsprojekte, die in der Projektmappe enthalten sind.
Mit dieser Struktur kann ich, wenn mir irgendeine Basisfunktion fehlt, diese einfach hinzufügen, und mir steht diese dann in allen anderen Projekten ebenfalls zur Verfügung. Das ist aus meiner Sicht ein riesiger Vorteil meiner Struktur, da man auf diesem Weg keine Sub-Routine doppelt schreiben muss.
Kompiliere ich nun ein Projekt, dann gibts im Ergebnis immer die Extensions.dll's und die eigentliche Programm.dll
Es ist nun lediglich darauf zu achten, dass die Extensions.dll in verschiedenen Versionen existieren könnte, wenn diese in verschiedenen Verzeichnissen gespeichert ist bzw aus verschiedenen Verzeichnissen geladen wird. Das gilt es natürlich zu vermeiden.
Fazit: Für jeden Befehl oder Befehlsgruppe gibt's ein einzelnes Projekt und in der Folge eben auch eine einzelne DLL. Die Funktionsbibliotheken werden in verschiedene DLL's kompiliert.
Innerhalb meines Ac-Projektes existieren verschiedene Klassen:
acMain - von der erben alle meine Klassen, da in dieser die immer gebrauchten Zugriffe auf die Database, und Editor-Objekt der aktuellen Zeichnung ermittelt werden.
mInitialize - erbt von Autodesk.AutoCAD.Runtime.IExtensionApplication und setzt beim Laden ein paar immer gebrauchte Programmvariablen wie Application-Location/Name/DateiName. Zusätzlich gibt diese beim Laden die Meldungen im Textfenster aus, welche Befehle zur Verfügung stehen, lädt irgendwelche Menüs, erzeugt Ribbons oder Panels(Andockfenster)
Commands - beinhaltet alle Befehle der Applikationen
cmd_XXX - das sind die Programmcodes zu den einzelnen Befehlen.
Ist schwer zu beschreiben, hoffe aber, dass es auch ohne Upload eines Templates (was ich nicht tun werde) verständlich genug beschrieben ist.
Grüße!
Holger
------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP