| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| | |
 | SIMULIA Regional User Meeting 2026, eine Veranstaltung am 17.06.2026
|
|
Autor
|
Thema: API: ActiveX und Visual Basic .Net (2139 mal gelesen)
|
Carlhainz Mitglied Student

 Beiträge: 12 Registriert: 18.07.2004
|
erstellt am: 21. Jul. 2004 14:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich versuch zur Zeit ein Add-In für SW zu schreiben, dass einen zusätzlichen TreeView im FeatureManager anzeigen soll. Ich habe angefangen das Add-In mit Hilfe der API  -Doku von SW und etwas Glück ;-) mit Visual Studio 6.0 hinzubekommen. Nun soll ich das Projekt aber mit .Net fortsetzen und da beginnen meine Probleme. Ich habe es bis jetzt noch nicht geschafft das Add-In bei SW anzumelden. Mein nächstes Problem ist das ActiveX-Steuerelement (die oben erwähnte TreeView). Ich weiß gar nicht, ob man ActiveX-Steuerelemente mit .Net programmieren kann, bzw. ob es eine Möglichkeit gibt .Net-Steuerelemente über ein Add-In in SW einzubinden bzw. im FeatureManager anzeigen zu lassen. Für jede noch so kleine Hilfe wäre ich sehr dankbar. Grüße, Benni Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 21. Jul. 2004 16:23 <-- editieren / zitieren --> Unities abgeben:          Nur für Carlhainz
|
Carlhainz Mitglied Student

 Beiträge: 12 Registriert: 18.07.2004
|
erstellt am: 21. Jul. 2004 16:41 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank für die Antwort, leider habe ich mich schon durch die Beispiel gearbeitet. Die meisten basieren aber auf Visual Basic 6.0 Code und können so gut wie gar nicht auf .Net übertragen werden. Trotz eines Beispielcode habe ich es noch nicht geschafft, das .Net Add-In in SolidWorks anzumelden. Wäre diese Hürde überwunden wäre der großte Brocken aus der Welt geschafft. 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: 22. Jul. 2004 09:29 <-- editieren / zitieren --> Unities abgeben:          Nur für Carlhainz
Hallo Carlheinz, Ja, das mit dem .NET ist so eine Sache. Du musst einfach ein paar Kleinigkeiten beachten: Ich habe mal ein kleines Beispiel beigefuegt. Entscheidend ist, daß die Methoden, die SolidWorks aufrufen soll (also die Implementierung des Inertfaces) über COM veröffentlicht werden. Und daß die Dll registriert ist.
------------------ PASCAM Ralph Müller Softwareentwicklung Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carlhainz Mitglied Student

 Beiträge: 12 Registriert: 18.07.2004
|
erstellt am: 22. Jul. 2004 20:20 <-- editieren / zitieren --> Unities abgeben:         
Wunderbar! Vielen Dank Pascam, ich kann es leider heute noch nicht ausprobieren. Aber auf jeden Fall enthält Dein Codebeispiel genau die Fragen, die noch offen waren. Ich schreibe Dir morgen, ob meine Probleme damit gelöst sind. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stucki Mitglied Ingenieur

 Beiträge: 73 Registriert: 30.04.2004
|
erstellt am: 23. Jul. 2004 10:45 <-- editieren / zitieren --> Unities abgeben:          Nur für Carlhainz
|
Carlhainz Mitglied Student

 Beiträge: 12 Registriert: 18.07.2004
|
erstellt am: 23. Jul. 2004 14:21 <-- editieren / zitieren --> Unities abgeben:         
|
Carlhainz Mitglied Student

 Beiträge: 12 Registriert: 18.07.2004
|
erstellt am: 23. Jul. 2004 15:11 <-- editieren / zitieren --> Unities abgeben:         
@PASCAM Ich habe Dein Template benutzt und kompiliert, sowie mit "Regasm MyAdd.dll \codebase" registriert und erhalte immer noch die Meldung von SolidWorks "Zusatzanwendung konnte nicht initialisiert werden". @stucki Ich hab den SwAddIn Wizard entsprechend modifiziert, dh. die Zeile geändert und siehe da VS .NET konnte das Projekt erstellen. Nur beim Kompilieren und anschließendem testen kam. Die selbe Fehlermeldung von SolidWorks: "Zusatzanwendung konnte nicht initialisiert werden". Langsam erinnert mich das schon an "...und täglich grüßt das Murmeltier.". Schade ist auch, dass der Support von SolidWorks mehr als schlecht ist. Der einzige eintrag auf der Supportseite, den ich bis jetzt zum Thema Visual Basic .NET gefunden habe war der Hinweis, das man seine Bibliotheken registrieren muss. Naja, aber das hilft wohl auch nicht wirklich weiter. Ich arbeite übrigens mit der SolidWorks EE (Educational Edition). Das habe ich bis jetzt noch nicht erwähnt, da ja die VB 6.0 Projekt einwandfrei initialsiert werden konnten... 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: 23. Jul. 2004 15:43 <-- editieren / zitieren --> Unities abgeben:          Nur für Carlhainz
Hallo Carlhainz, Also ich habe das alles bei mir nochmals ausprobiert und siehe da, es klappt (.NET 1.1, VS2003, SWX2004SP4.1 auf XPSP1a) Die Meldung sieht so aus, als koennte die KLasse nicht initialisiert werden, weil irgendwelche Dll's fehlen. Ist das .NET korrekt initialisiert? Kannst Du aus VB6 die Klasse initialisieren? Kommst Du in die ConnectToSW-Methode? Hast Du die .Reg-Datei ausgeführt? Ist die Klasse in der Registry enthalten (IM RegEdit überprüfen!). Template: Hast Du das Orginal ausprobiert oder nur mal den Code so uebernommen? ------------------ PASCAM Ralph Müller Softwareentwicklung
[Diese Nachricht wurde von PASCAM am 23. Jul. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carlhainz Mitglied Student

 Beiträge: 12 Registriert: 18.07.2004
|
erstellt am: 23. Jul. 2004 18:59 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von PASCAM: Also ich habe das alles bei mir nochmals ausprobiert und siehe da, es klappt (.NET 1.1, VS2003, SWX2004SP4.1 auf XPSP1a)
Ich benutze auch VS2003, .NET Framework v1.1 SW EE (2003?, das weiß ich grad net so genau, da ich zu Hause bin, auf jeden Fall ist es eine Educational Edition) auf Win2000 (, wenn ich die letzte Angabe richtig verstanden habe) Zitat: Original erstellt von PASCAM: Die Meldung sieht so aus, als koennte die KLasse nicht initialisiert werden, weil irgendwelche Dll's fehlen. Ist das .NET korrekt initialisiert?
Hmmm, diese Frage verstehe ich leider nicht richtig. Meinst Du damit, ob die Runtime-Umgebung korrekt läuft oder ob meine Klasse korrekt läuft? Zitat: Original erstellt von PASCAM: Kannst Du aus VB6 die Klasse initialisieren?
Die VB 6.0 Klasse, bzw. Implementation der SwAddin-Schnittstelle konnte ich ohne Probleme initialsieren. Unter 6.0 konnte ich auch schon ein externes ActiveX-Steuerelement im Feature-Manager in einem neuen Tab anzeigen lassen Zitat: Original erstellt von PASCAM: Kommst Du in die ConnectToSW-Methode?
Definitiv, nein, das habe ich schon mit einer MsgBox "Hallo, hier bin ich"getestet... ;-) Zitat: Original erstellt von PASCAM: Hast Du die .Reg-Datei ausgeführt? Ist die Klasse in der Registry enthalten (IM RegEdit überprüfen!).
Ich habe die Klasse mit regasm MyDll.dll \codebaseregistriert, nachgeprüft hab ich es allerdings noch nicht. Zitat: Original erstellt von PASCAM: Template: Hast Du das Orginal ausprobiert oder nur mal den Code so uebernommen?
Ich habe die entsprechende Zeiel in der .vsz Datei geändert, ein neues Projekt erzeugt und kompiliert, angemeldet und es hat leider nicht funktioniert. Ich komm nur überhaupt nicht dahinter was falsch sein könnte. Bin Dir aber schon sehr dankbar für die Bemühungen. Ich hoffe Du musst jetzt nicht mehr arbeiten und wünsch Dir einen schönes Wochenende - Benjamin Petri IFW - Universität Stuttgart 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: 24. Jul. 2004 13:44 <-- editieren / zitieren --> Unities abgeben:          Nur für Carlhainz
Also Carlhainz, die Sache gestaltet sich schwiereig. Hast Du Dein Problem mal an dem API -Support von SWX berichtet? Kannst Du das Projekt an mich senden? Schau mal bitte mit RegEdit im Schlüssel HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\AddIns nach. Da muesste Dein AddIn unter Deiner GUID vermerkt sein. Probier bitte auch das im Thread vorhandene Beispiel direkt aus um auszuschliessen, dass irgendwelche Probleme mit .NET oder SWX gibt. Ich habe gerade auch gesehn, dass es die volle .NET-Unterstuetzung erst mit 2004 gibt. Aber ich glaube, ich habe das alles auch schon unter 2004 am Laufen gehabt. Der API -Support kann Dir da aber nun am Besten weiterhelfen. ------------------ PASCAM Ralph Müller Softwareentwicklung Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stucki Mitglied Ingenieur

 Beiträge: 73 Registriert: 30.04.2004
|
erstellt am: 24. Jul. 2004 19:14 <-- editieren / zitieren --> Unities abgeben:          Nur für Carlhainz
Hallo alle zusammen, also ich hab leider nicht die Zeit noch mal alle bisherigen Artikel genau zu studieren. Deshalb liege ich vielleicht mit diesem Arikel ein bisschen Quer. Wenn dem so ist dann entschuldigt bitte. Also: 1. Wenn die Änderungen in der entsprechenden Datei(weiter oben beschrieben) gemacht wurde, dann lässt sich im VisualStudio.NET der AddIn-Wizzard korrekt benutzen. (Dies hat scheinbar geklappt) 2. Das Projekt muss kompiliert und gelinkt werden. (Dies hat scheinbar geklappt) 3.Registrierung des AddIns in SolidWorks: Das funktioniert bei mir am einfachsten, wenn ich SolidWorks öffne und den Dateiexplorer öffne und die AddIn-dll per Drag&Drop auf vom Explorer in das SolidWorks ziehe. Alternativ dazu kann auch in SW Datei->Öffnen gewählt und unter dem Dateityp die AddIn-dll gewählt und danach die dll auf diese Weise eingefügt werden. Die dll wird dabei registriert. Ich benutze SolidWorks 2004. Da müsste das mindestens so funktionieren. liebe Grüsse tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |