MOBIL IN DER STADT UNTERSUCHUNG DER OBJECTARX-PROGRAMMIERUMGEBUNG ZUR ERSTELLUNG EINES AUTOCAD PLUGIN
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
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
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