Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Projektorganisation

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Projektorganisation (882 mal gelesen)
oscarr
Mitglied
CAD-Manager


Sehen Sie sich das Profil von oscarr an!   Senden Sie eine Private Message an oscarr  Schreiben Sie einen Gästebucheintrag für oscarr

Beiträge: 198
Registriert: 02.10.2007

ACA 2012 - English Win 7/x64

erstellt am: 25. Jun. 2012 10:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

in den letzten Jahre ist mein VB.NET AutoCAD/Architecture plugin recht umfangreich geworden. Allmählich fürchte ich dass ich den Überblick verlieren könnte. Es sind 22 AutoCAD Befehle gut versteckt in ca 12.000 Zeilen Code.
Momentan habe ich es so organisiert das ich in einer CommandClass alle meine Befehle (und nur diese) habe, und von dort werden dann die Funktionen in diversen Klassen aufgerufen die einigermassen sinnvoll organisiert sind. Kompiliert wird jedoch nur eine dll.


Ich trage mich nun mit dem Gedanken mehrere dlls zu kompilieren (ich habe VS2010 Pro). Sollte man dazu immer noch eine zentrale BefehlsDll kompilieren oder ist es besser die Befehle direkt in die jeweiligen dlls zu kompilieren?
Kann AutoCAD da was durcheinander bringen?
Wie handhabt ihr etwas grösserer Projekte?
Ist es ratsam das alles in plugins zu packen (ACA2012)?

Grüsse aus dem verregnetem Basel
Holger

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 25. Jun. 2012 11:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für oscarr 10 Unities + Antwort hilfreich

Hallo oscarr,

ich habe in der Vergangenheit meine Projektorgnisation und Projektstrukturen mehrfach neu gestaltet.

Teilst du deine Applikation in verschiedene Projekte auf, dann hast du irgendwann das Problem, dass du Subfunktionen redundant in den verschiedenen Projekten hast. Dies ist aus meiner Sicht das größte Problem, wenn man alle Befehle schön sauber getrennt in verschiednen Projekten vorhält.
Darum habe ich mir folgende Struktur überlegt, mit der ich numehr seit über einem Jahr sehr zufrieden bin:
Es gibt mehrere Basis-Projekte, bei mir Extensions genannt. In diesen sind die immer wiederkehrenden Funktionen objektbezogen abgelegt.
Durch die Einbindung der folgenden Zeilen in jedem ExtensionsProjekt,

Code:

namespace System.Runtime.CompilerServices
{
    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
    public sealed class ExtensionAttribute : Attribute { }
}


Kann man sich Methodenerweiterungen zu jedem Objekttyp schreiben. Zum Beispiel:
Code:

public static Boolean codEqual(this Double _d1, Double _d2, Double _Fuzzy)
        {
            return (Math.Abs(_d1 - _d2) <= _Fuzzy);
        }

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz