| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: .NET oder COM? (505 mal gelesen)
|
Benny4 Mitglied Softwareentwickler
 
 Beiträge: 178 Registriert: 16.02.2006 AutoCAD 2008 WIN XP Pro SP2
|
erstellt am: 27. Mrz. 2009 17:35 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe da mal eine Verständnisfrage: Was ist denn eigentlich der Unterschied zwischen einer .NET - Programmierung in AutoCAD oder der Programmierung mit dem COM - Zugriff von AutoCAD? Also was ich so rausgefunden habe oder wie mir das vorkommt ist folgendes: Wenn ich über COM auf AutoCAD zugreife, kann ich ja eine eigene Instanz von AutoCAD erzeugen. Programmiertechnisch kommt es mir dann irgendwie so vor wie AutoCAD VBA. Also gibt es dann da keinen Transactions-Manager und so. Ebenso muss ich mich nicht darum kümmern dass meine Objekte in die Datenbank und so geschrieben werden. Ich zeichen eine Linie so: ThisDrawing.ModelSpace.AddLine(startPoint, endPoint). Und so ist meine Linie gezeichnet. Bei .NET bin ich ja direkt in AutoCAD integriert. Will ich eine Linie zeichnen muss ich ein Line - Object erzeugen, das dem ModelSpace hinzufügen und der Datenbank bis ich dann eine Linie habe. Kann ich über COM auch so programmieren wie ich das in .NET mache? Danke schon mal für jede Auskungt und Klärung die ich kriegen kann. ------------------ Grüsse Benny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 28. Mrz. 2009 00:04 <-- editieren / zitieren -->
Hi Benny, vorerst: die Unterschiede technisch zu beschreiben bedarf mehr als nur eine kleine Antwort in einem Forum und grenzt eigentlich an Schulung; und da gibt's auch im Internet jede Menge Stoff. Die praktischen Konsequenzen im Umgang mit AutoCAD sind oberflächlich folgende: COM-basierend werden Objektmodifikationen direkt in der Datenbank durchgeführt, dies und vor allem die Prüfung der Modifikationen auf Fehler bedeuten einen wesentlichen Einfluss auf Performance (schlechter) und Programmierzeilen (weniger). ManagedAccess bedeutet, wie Du schon richtig festgestellt hast, dass auf einem TransAction-basierenden Modell gearbeitet wird (es gab zwar mal auch den direkten Modus ohne TransAction, weiss nicht, ob der noch geht, jedenfalls aber nicht empfohlen), damit werden Modifikationen in Objekt-Abbildungen (und nicht direkt an den Originalen) durchgeführt, diese bleiben solange in einem eigenen Speicherbereich bis mittels Commit die Elemente in die Originaldatenbank zurückgeführt werden. Damit steigt die Performance, jedoch auch die Anzahl der Programmierzeilen und man gewinnt den zusätzlichen Vorteil, dass ('fast' sorglos) Geometrieelemente gebaut und zerstört werden können, ohne dass die ursprüngliche Datenbank belastet wird. Du kannst z.B. temporäre Linien erstellen um Schnittpunkte zu ermitteln und diese dann wieder 'zerstören' und bist nicht abhängig (in Bezug auf Performance) von der Datenmenge Deiner ursprünglichen Datenbank. Ebenfalls steigt aber auch die Fehleranfälligkeit, denn während über COM übergebene Objekte relativ genau geprüft werden, bevor 'echt geschrieben' wird, hast Du mit ManagedAccess einen sehr direkten Zugriff in's AutoCAD hinein und kannst damit auch Fehler in die Datenbank einbauen, die ev. erst viel später (durch _audit) im Dwg-File erkennbar werden oder zu unbehandelbaren Fehlern führen und AutoCAD zum Abflug bringen (die ganzen xxxViolation- oder xxxException-Fehler). Ich hoffe dass diese durchaus oberflächlich gehaltene Erklärung eine Hilfe ist, Detailfragen gerne weiter, globale Fragen sind halt ein wenig schwer in einem Forum unterzubringen, sorry. - alfred - ------------------ www.hollaus.at [Diese Nachricht wurde von a.n. am 28. Mrz. 2009 editiert.] |
Benny4 Mitglied Softwareentwickler
 
 Beiträge: 178 Registriert: 16.02.2006 AutoCAD 2008 WIN XP Pro SP2
|
erstellt am: 30. Mrz. 2009 15:40 <-- editieren / zitieren --> Unities abgeben:         
Hallo Alfred, vielen Dank für die sehr ausführliche Antwort. Ich sehe mich in meinen bisherigen Annahmen dadurch auch bestätigt. Eine spezielle Frage hätte ich da noch: Ich habe ja gelesen, dass AutoDesk mit ACAD 2010 VBA sterben lassen will oder das zumindestens nicht mehr standardmäßig mit installieren will. Und da sogar ein "neues" VBA in Planung ist. Was glaubst du, ändert sich dann auch der COM-Zugriff von AutoCAD? Ist mir aus dem Grund wichtig, weil es in diesem Fall für mich jetzt nicht viel Sinn machen würde mit meiner Applikation über COM auf AutoCAD zuzgreifen und dann, in den schon nächsten ACAD-Versionen alles neu machen zu müssen. ------------------ Grüsse Benny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Ex-Mitglied
|
erstellt am: 30. Mrz. 2009 15:55 <-- editieren / zitieren -->
Hi, COM-basierend kann ich mir nicht vorstellen, das ist eine Basis von Windows für die Kommunikation zwischen unterschiedlichen Applikationen, die kann IMHO nicht so schnell abgedreht werden (ich übernehme aber keine Haftung für solche Aussagen , denn ich hätte auch nicht geglaubt, dass ODBC mit 64-bit Windows nicht gehen wird). COM und VBA ist auch nicht gleichzusetzen, VBA ist 'nur' eine Programmiersprache, COM und ActiveX sind applikationsübergreifende Zugriffsmethoden. VBA nutzt zwar COM, aber auch wenn VBA nicht mitinstalliert wird, existiert die ActiveX-Serverkomponente in AutoCAD auch weiterhin. - alfred - ------------------ www.hollaus.at |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |