| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
Autor
|
Thema: Schnittstelle (COM API) - Solidworks (1680 mal gelesen)
|
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 25. Mai. 2005 11:09 <-- editieren / zitieren --> Unities abgeben:         
Moin Jungs, wie sieht das eigentlich aus? Nutze ich bei der Verwendung von Visual Basic (API-Programmierung) die COM-Scnittstelle von Sldworks oder bietet SldWorks eine "seperate" Schnittestelle für VB, C++ und C# usw. für eine Art Direkt-Zugriff an? Hat jemand Informationen über die "Theorie" wie SldWorks die Schnittestelle/Api anbietet?! Gibt es eine Visualisierung darüber? Über Hilfe und Tipps würde ich mich sehr freuen, da ich mich neben der API-progrmmierung auch für den Backround wie Programme mit einander in Verbindung treten interessiere (speziell Sldworks und stelbst programmierte Tools). Gruß an ALLE! JENS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dr Mitglied CAD-/PLM-Entwickler und -Berater

 Beiträge: 87 Registriert: 30.10.2001
|
erstellt am: 25. Mai. 2005 14:16 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
Moin, Jepp - da wird COM benutzt. Ist im Prinzip dieselbe Technologie wie OLE oder ActiveX (verschiedene Namen fuer den gleichen Rotz, um unterschiedliche Marketingaspekte zu betonen). Da die meisten Anwender SolidWorks mit VisualBasic automatisieren ist das auch gar nicht mal vekehrt - VisualBasic 'spricht' ja quasi von Haus aus OLE/COM/etc. Dadurch, dass SolidWorks nicht direkt eine C/C++ Schnittstelle anbietet, ist die Verwendung von C/C++ Code allerdings ein klein wenig umstaendlicher als unbedingt noetig. Kann man aber trotzdem sehr gut mit arbeiten. Zu OLE/COM/DCOM/ActiveX/etc. gibt es eine ganze Menge Buecher und viele interessante Seiten im Internet und im Microsoft Developer Network. Die API-Beispiele zu SolidWorks sind aber ja auch schon huebsch und hilfreich... Wolltest Du irgendetwas speziellen Wissen? Beste Gruesse, Danny
------------------ Danny Reinhold Reinhold Software & Services Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 25. Mai. 2005 14:56 <-- editieren / zitieren --> Unities abgeben:         
Hi, Also ich habe in der API von SldWorks nochmal genau hingesehen. Bei der Verwendung von VB spricht man wohl die OLE-Schnittstelle an. Beweis (Auszug aus der API) Syntax (OLE Automation) retval = PartDoc.FeatureByName ( Name) -> Das ist ja der VB-Code! Im Gegenzug: Syntax (COM) status = PartDoc->IFeatureByName ( Name, &retval ) Das heisst doch, dass wenn ich in VB programiere gehe ich über OLE und wenn ich in C++ prorammiere über die COM?!
Folgende Fragen habe ich dazu: 1. Kann ich nicht mit VB auch über die COM gehen? Dann würden mir doch mehr API-Befehle zur Verfügung stehen, oder? 2. Wie kann man sich das ganze graphisch Vorstellen? Gibt es von Soildworks eine Übersicht? 3. Gibt es eine Prinzip-Skizze über die Schnittstellen-Veröffentlichungen von SldWorks? Gruß JENS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PASCAM Mitglied Diplom Informatiker

 Beiträge: 67 Registriert: 25.11.2002
|
erstellt am: 27. Mai. 2005 07:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
Hallo Jens, OLE-Autoamtion und COM sind das gleiche und dann doch wieder nicht. COM ist eine Basistechnologie basierend auf IUnkwon (und IDispatch). OLE-Autoamtion, auch ActiveX genannt, bietet zusaetzlich eine Infrastruktur an (Infos ueber Datentypen, Hilfe etc.) und ermoeglich, soweit ich weiss, auch das Marshalling an (Datenkonvertierung zwischen Prozesse). Da VB diese Zusatzinfos benoetigt, muss dort ActiveX verwendet werden. Gruss, Ralph ------------------ PASCAM Ralph Müller Softwareentwicklung Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PASCAM Mitglied Diplom Informatiker

 Beiträge: 67 Registriert: 25.11.2002
|
erstellt am: 27. Mai. 2005 07:27 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
Hallo Jens, noch ergaenzend zu Deinen Fragen: 1. Nein, die API ist nahezu gleichwertig. Unterscheide liegen meist darin begruendet, dass die COM-Schnittstelle fuer die statische Speicherverwaltung von C++ angepasst ist, wahrend die OLE-Automation die dynamischen Arrays unterstuetzt 2. Ich habe noch keine gesehen. Wenn Du richtig ins programmieren einsteigen willst, gibt es fuer Partner kostenlose API-Schulungen z.B: bei SWX in Cambridge. Ansonsten ist die Hilfe eigentlich ausreichend 3. Was meinst Du mit Prinzip-Skizze? Beispiele? Auf der HP von SWX gibt es jede Menge Beispiele, auch ein AddIn-Wizzard, der ein gutes Start-Framework erstellt. Und wenn Du dann noch in den Strukturen von SWX denkst (man geht von der Applikaton ueber das Modell zum Entity oder Feature) ist eigentlich alles klar. Gruss, Ralph ------------------ PASCAM Ralph Müller Softwareentwicklung [Diese Nachricht wurde von PASCAM am 27. Mai. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bruggmann Mitglied Konstrukteur (& Nachdiplomstudium Software-Engineering)

 Beiträge: 85 Registriert: 17.03.2004 Workstation: Fujitsu Siemens P4 3.2GHz 2.0 GB RAM Win XP SP1 - SW2005 SP0.1 (PDM: Smarteam)<P>Laptop: Compaq Evo 800w P4 2GHz 500MB RAM WinXP SP2 - SW2005 SP0.1 (PDM: ec-Manager, eigenes Tool..)
|
erstellt am: 27. Mai. 2005 10:15 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
|
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 31. Mai. 2005 10:15 <-- editieren / zitieren --> Unities abgeben:         
Hallo Jungs, vielen Dank für die nützlichen Tipps. Habe nun zumindest Informationsmaterial gefunden, welches Verwendbar ist. Mit Prinzip-Skizze meinte ich, ob es eine Visualiesierung (Bild) von SldWorks gibt mit allen veröffentlichen Schnittstellen und die Anbindung eines externes Moduls an diese? Gruß JENS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 01. Jun. 2005 15:19 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, nach einiger Literaturrecherche stellt sich mir immer noch die Frage, wieso Visual Basic die OLE (Automation) und nicht die COM-Schnittstelle nutzt? Bzw. wieso SldWorks für VB die OLE-Schnittstelle zur Verfügung stellt? Hat da einer eine Antwort drauf? Gruß JENS Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PASCAM Mitglied Diplom Informatiker

 Beiträge: 67 Registriert: 25.11.2002
|
erstellt am: 01. Jun. 2005 16:10 <-- editieren / zitieren --> Unities abgeben:          Nur für Jens S.
Hallo Jens, VB braucht mehr als COM, naemlich mindestens OLE Automation (das ist eine Uebermenge von COM). Und da VB /bzw. VBA) eine Sprache fuer einfache und schnelle zu erstellende Anwendung ist, hat sie SWX anbinden muessen. Von der Performance ist sie aber etwas schlechter als die COM-Schnittstelle, wie sie fuer C++ inplementiert ist (es fehlt z.B. das Marshalling, soweit ich weiss). D.h.: OLE Automation fuer die breite Anwendungsgebiete (VB, Delphi, .NET etc.), COM fuer Performance. Gruss, Ralph ------------------ PASCAM Ralph Müller Softwareentwicklung Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens S. Mitglied Dipl.-Ing.

 Beiträge: 55 Registriert: 23.02.2005
|
erstellt am: 09. Jun. 2005 10:27 <-- editieren / zitieren --> Unities abgeben:         
|