MOBIL IN DER STADT UNTERSUCHUNG DER OBJECTARX-PROGRAMMIERUMGEBUNG ZUR ERSTELLUNG EINES AUTOCAD PLUGIN

Die Seite wird erstellt Hermine Martin
 
WEITER LESEN
MOBIL IN DER STADT UNTERSUCHUNG DER OBJECTARX-PROGRAMMIERUMGEBUNG ZUR ERSTELLUNG EINES AUTOCAD PLUGIN
AIIPS

                           Interdisziplinäre Projektarbeit

                                  WS 2010/2011

 Gruppe: Agnes Werner, Stefan Herbert, Wolfgang Kubisch, Jürgen Meß, Christian Peil

                     Mobil in der Stadt
   Untersuchung der ObjectARX-
Programmierumgebung zur Erstellung
       eines AutoCAD Plugin
MOBIL IN DER STADT UNTERSUCHUNG DER OBJECTARX-PROGRAMMIERUMGEBUNG ZUR ERSTELLUNG EINES AUTOCAD PLUGIN
AIIPS: Mobil in der Stadt/Barrierefrei Messen SS 2011

Inhalt

I.          Einleitung ......................................................................................................................................... 3
II.         Vorgehensweise ............................................................................................................................... 3
III.           Die ObjectARX-Programmierumgebung ........................................................................................ 4
       1.      Grundlegendes ............................................................................................................................. 4
       2.      Datenbankaufbau ......................................................................................................................... 4
       3.      Kommandostruktur ...................................................................................................................... 5
       4.      Beispielimplementierung einer Linie............................................................................................. 6
       5.      Klassen ......................................................................................................................................... 7
IV.            Diskussion .................................................................................................................................... 8
V.          Anhang ............................................................................................................................................ 9
VI.            Quellen ...................................................................................................................................... 10

                2    Agnes Werner, Stefan Herbert, Wolfgang Kubisch, Jürgen Meß, Christian Peil
AIIPS: Mobil in der Stadt/Barrierefrei Messen SS 2011

  I.   Einleitung

Das Ziel dieser Ausarbeitung ist eine Untersuchung, ob die von der Firma Autodesk angebotene
ObjectARX-Programmierumgebung zur Erstellung spezifischer Programmerweiterungen (Plugin) für
AutoCAD hilfreich für die Analyse vorhandener CAD-Zeichnungen sein könnte.

ObjectARX wird von der Firma Autodesk so beschrieben:

ObjectARX® (AutoCAD-Laufzeiterweiterung) ist eine Kompiliersprachen-Programmierumgebung zur
Entwicklung von AutoCAD-Anwendungen. Die ObjectARX-Programmierumgebung umfasst eine Reihe
von Dynamic Link Libraries (DLLs), die im gleichen Adressraum ausgeführt werden wie AutoCAD und
direkt mit Kern-Datenstrukturen und -Code von AutoCAD zusammenarbeiten. Diese DLLs nutzen die
offene Architektur von AutoCAD und stellen einen direkten Zugriff auf die Datenbankstrukturen von
AutoCAD, das Grafiksystem und die Geometrie-Engine von AutoCAD zur Verfügung, um die AutoCAD-
Klassen und -Möglichkeiten zur Laufzeit zu erweitern. Darüber hinaus können Sie DLLs verwenden, um
neue Befehle zu erstellen, die genauso funktionieren wie die systemeigenen AutoCAD-Befehle. [AuDe1]

Beim ersten Kontakt mit ObjectARX ist auffällig, dass es unterschiedliche Versionen gibt, die mit den
jeweiligen AutoCAD-Versionen korrelieren und eine zugehörige definierte Entwicklungsumgebung
(Microsoft Visual Studio) benötigen, um Plugins zu entwickeln. Plugins für die heute aktuelle AutoCAD-
Version 2012 müssen zwingend mit ObjectARX Version 2012 erstellt sein, um sie auszuführen. Sie laufen
nicht auf der Version 2011. [AuDe5]

Die mit ObjectARX erstellten Plugins benötigen immer die zugehörige AutoCAD Version und sind somit
eine spezifische Erweiterung von AutoCAD.

Eine Untervariante von ObjectARX ist die ObjectDBX (siehe Anhang a), die unter einer REALDWG-Lizenz
eigenständige Applikationsentwicklungen ermöglicht. Hier können DWG/DXF-Dateien direkt gelesen und
geschrieben werden, allerdings stehen die AutoCAD- Anzeige- und Geometriefunktionen nicht zur
Verfügung. [AuDe5]

Eine ähnliche Entwicklung wird bei der Teigha-Programmierumgebung der Open Design Alliance verfolgt,
die gegen Zahlung einer Mitgliedsgebühr verfügbar ist. Teigha ist eine C++-Multiplatform-
Programmierumgebung zur Erstellung von CAD- und technischer Grafikapplikationen. [ODA1]

 II.   Vorgehensweise

Eine Studentenversion von Autodesk’s AutoCAD 2011 wurde installiert und die nötigen Registrierungen
zum Erhalt der ObjectARX Version 2011 wurden durchgeführt. Nach dem Download der ObjectARX
Version galt es zunächst sich die Entwicklungsumgebung aufzusetzen. Zum Einsatz musste das Microsoft

       3   Agnes Werner, Stefan Herbert, Wolfgang Kubisch, Jürgen Meß, Christian Peil
AIIPS: Mobil in der Stadt/Barrierefrei Messen SS 2011

Visual Studio 2008 kommen, um kompatibel zur Entwicklerumgebung von AutoCAD 2011 zu sein.
Ärgerlich, denn alle anderen Entwicklungen im Semester liefen bereits auf dem aktuellen Visual Studio
2010.

Die Suche nach Literatur gestaltete sich als mühevoll, da es für die ObjectARX-Entwicklungsumgebung
keine unabhängigen Publikationen gibt. Man war auf die wenigen Unterlagen der Firma Autodesk
angewiesen.

Die Analyse der ObjectARX-Programmierumgebung beschränkte sich auf die Verwendung der
enthaltenen Beispielsoftware und das Verstehen des Konzeptes hinter ObjectARX, um zu beurteilen, ob
die Entwicklung eines Plugins für AutoCAD nützlich sein könnte.

III.   Die ObjectARX-Programmierumgebung

           1. Grundlegendes

Die ObjectARX-Programmierungsumgebung ist eine Schnittstelle, die auf die AutoCAD-Datenbanken
(Zeichnungen), das Grafiksystem und die Geometrie zugreift. Weiterhin können eigene Befehle,
Userinterfaces und Funktionen in AutoCAD integriert werden. Auch eigene Objekttypen können
definiert werden.

Eine Zeichnung (DWG-Datei), die in der aktuellen bzw. früheren AutoCAD-Versionen erstellt wurde, kann
unter Nutzung der integrierten Importfilter geöffnet und mittels der selbstentwickelten Software
beliebig bearbeitet werden. Somit ist auch eine DXF-Datei lesbar und zu verarbeiten.

Jede .ARX-Erweiterung muss vor der Nutzung in AutoCAD geladen werden. Hierzu steht die Konsole in
AutoCAD zur Verfügung (z.B. APPLOAD). Ferner kann eine .ARX-Erweiterung dauerhaft installiert werden.
Die neu eingeführten Befehle können z.B. mittels der AutoCAD-Konsole aufgerufen werden.

           2. Datenbankaufbau

Eine Datenbank enthält alle Informationen einer Zeichnung und hat einen objektorientierten Aufbau. Die
Datenbank kann mit Lese-Schreib-Attributen geöffnet werden bzw. mit Lese-Attributen, falls nur
ausgelesen wird. Ein Strukturschaubild zeigt die folgende Abbildung.

       4   Agnes Werner, Stefan Herbert, Wolfgang Kubisch, Jürgen Meß, Christian Peil
AIIPS: Mobil in der Stadt/Barrierefrei Messen SS
                                              S 2011

[AuDe3]

            3. Kommandostruktur

Die Einbindung von .ARX-Funktionen
                         Funktionen erfolgt über vorgegebene Interfaces. Innerhalb der .ARX-Funktion
                                                                                       .ARX
werden ein oder mehrere Kommandos definiert,
                                      definiert die nach Laden der .ARX-Funktion
                                                                        Funktion in der AutoCAD-
Applikation verfügbar sind.

   1.   Zunächst definiert die geladene .ARX-Erweiterung
                                        .ARX             z.B. ein Kommando LINIENZEICHNER
   2.   Das Kommando   o LINIENZEICHNER wird der internen Kommandostruktur zugefügt und
   3.   parametrisiert.
   4.   Ruft der Benutzer das Kommando LINIENZEICH
                                           LINIENZEICHNER über die Konsole auf
   5.   wird das Kommando übermittelt und
   6.   die definierte Funktion ausgeführt.
                                ausgeführt                                                [AuDe2]

        5   Agnes Werner, Stefan Herbert, Wolfgang Kubisch, Jürgen Meß, Christian Peil
AIIPS: Mobil in der Stadt/Barrierefrei Messen SS 2011

             4. Beispielimplementierung einer Linie

Beispielhaft findet sich hier ein Programmschnipsel, der in der aktuellen Zeichnung eine Linie zeichnet.

01        // create two points and the line

02        AcGePoint3d startPt (1.0, 1.0, 0.0);

03        AcGePoint3d endPt (10.0, 10.0, 0.0);

04        AcDbLine* pLine = new AcDbLine (startPt, endPt);

05        // open the proper entity container

06        AcDbBlockTable* pBlock = NULL;

07        AcDbDatabase* pDB = acdbHostApplicationServices()->workingDatabase();

08        pDB->getSymbolTable(pBlock,AcDb::kForRead);

09        AcDbBlockTableRecord* pBTR = NULL;

10        pBlock->getAt(ACDB_MODEL_SPACE, pBTR, AcDb::kForWrite);

11        pBlock->close();

12        // now, add the entity to container

13        AcDbObjectId Id;

14        pBTR->appendAcDbEntity(Id, pLine);

15        pBTR->close();

16        pLine->close();

[AuDe3]

       6    Agnes Werner, Stefan Herbert, Wolfgang Kubisch, Jürgen Meß, Christian Peil
AIIPS: Mobil in der Stadt/Barrierefrei Messen SS 2011

           5. Klassen

ObjectARX stellt eine Menge an Klassen zur Verfügung, die aufgrund der Namensgebung unterscheidbar
sind. So fangen alle Datenbankklassen mit AcDb an. [AuDe4]

       7   Agnes Werner, Stefan Herbert, Wolfgang Kubisch, Jürgen Meß, Christian Peil
AIIPS: Mobil in der Stadt/Barrierefrei Messen SS 2011

IV.        Diskussion

Die ObjectARX-Programmierumgebung stellt einen Lösungsansatz dar, um auf definierte Art und Weise
an die Zeichnungsdaten im DWG- und DXF-Format zu gelangen. Weiterhin könnte in der ObjectARX-Basis
eine Online-Prüfung/Simulation als Plugin realisiert werden, um Barrieren zu messen.

Ein deutlicher Nachteil dieses Ansatzes ist der erhebliche Entwicklungsaufwand für die Autodesk
AutoCAD-Reihe, aufgrund häufiger Versionsänderungen. Auch ist nach den bisherigen Erfahrungen
fraglich, ob die DXF-Dateien von Fremdanbietern überhaupt in der gleichen Form nutzbar sind. Unter
Umständen würde man alle anderen CAD-Softwareanbieter von der Lösung ausschließen oder müsste
Plugins für alle anderen CAD-Softwareanbieter erstellen.

Vorteile

    •      Standardisierter Zugriff auf DWG- und DXF-Dateien
    •      Weiterentwicklung durch Autodesk
    •      Arbeitet mit allen AutoCAD-Varianten, wie z.B. AutoCAD-Maps

Nachteile

    •      Benötigt die aktuelle AutoCAD-Version
    •      Häufige Änderungen an den Versionen
    •      Einarbeitung
    •      Hoher technischer Aufwand (Speicherintensiv - Debug lädt Visual Studio und AutoCAD)
    •      DXF-Qualität anderer Anbieter

Fazit:

Die Erstellung einer Anwendung auf Basis der AutoCAD-Produkte erscheint an dieser Stelle nicht als
sinnvoll. Eine generische Lösung wäre vorzuziehen, die Zeichnungsdateien unterschiedlicher Anbieter
lesen kann. Sicherlich könnte man auf Basis von Teigha (Open Design Alliance) aufbauen.

Aufgrund der begrenzten zeitlichen Ressourcen unserer Projektgruppe soll die Arbeit an dieser Stelle
nicht fortgesetzt werden.

         8   Agnes Werner, Stefan Herbert, Wolfgang Kubisch, Jürgen Meß, Christian Peil
AIIPS: Mobil in der Stadt/Barrierefrei Messen SS 2011

 V.        Anhang

   a) Unterschiede zwischen ObjectARX und ObjectDBX/REALDWG [AuDe2]

       9    Agnes Werner, Stefan Herbert, Wolfgang Kubisch, Jürgen Meß, Christian Peil
AIIPS: Mobil in der Stadt/Barrierefrei Messen SS 2011

VI.     Quellen

 [ODA1]Open Design Alliance | Open Design Alliance. Online unter:
http://www.opendesign.com/The_ODA_Platform
letztmalige Prüfung 13.07.2011.
[AuDe1] Autodesk, allgemeine Beschreibung von ObjectARX, Online unter:
http://docs.autodesk.com/ACD/2011/DEU/filesACG/WS73099cc142f4875513fb5cd10c4aa30d6b-7f5c.htm
letztmalige Prüfung 13.07.2011
[AuDe2] Autodesk (2009), ObjectARX 2010 Autodesk Developer Technical Services, PPT: ObjectARX 2010
[AuDe3]Autodesk University 2007, Fernando P. Malard – OFCDesk, LLC., The Power of ObjectARX, PDF:
CP401-2
[AuDe4] Autodesk (2010), ObjectARX 2010 SDK Dokumentation
[AuDe5] Autodesk, FAQ’s zu ObjectARX, Online unter:
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=773128
letztmalige Prüfung 13.07.2011

      10   Agnes Werner, Stefan Herbert, Wolfgang Kubisch, Jürgen Meß, Christian Peil
Sie können auch lesen