| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PRO.FILE 10: So gelingt der Umstieg, eine Pressemitteilung
|
Autor
|
Thema: funktion eines inventor - addin extern auslösen (1173 mal gelesen)
|
TomHvw Mitglied
Beiträge: 17 Registriert: 27.04.2006
|
erstellt am: 27. Apr. 2006 12:49 <-- editieren / zitieren --> Unities abgeben:
ich möchte eine funktion eines inventor addin von einem externen vb6 programm aus ansprechen können....... das addin hab ich erstellt und im inventor registriert, das hat geklappt..... wie kann ich nun aus einem externen vb6 programm aus funktionen des addin(.dll) ansprechen? ------------------ mfg TomHvw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 27. Apr. 2006 14:08 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
Hallo Bozidar und willkommen hier! Ich blicke nicht ganz durch, was du vorhast. Könntest du das bitte mal genauer erklären, denn ich glaube, du hast da etwas missverstanden. Warum willst du auf ein AddIn von außerhalb zugreifen? Was macht das AddIn? Wenn es geheim ist, gerne auch per PM oder Mail.
------------------ Grüße daywa1k3r FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SEHER Mitglied Systemanalytiker
Beiträge: 1203 Registriert: 13.03.2001 Inventor 2 bis 2022 häufig wechselnder Rechnerverkehr
|
erstellt am: 27. Apr. 2006 14:23 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
|
TomHvw Mitglied
Beiträge: 17 Registriert: 27.04.2006
|
erstellt am: 27. Apr. 2006 14:26 <-- editieren / zitieren --> Unities abgeben:
nun danke mal für die nette begrüssung... nun ich möchte die modellparameter auslesen um sie dann in einem postprozessor zu einem nc-programm zu verarbeiten.... nun das geht mit einem externen vb-programmerl recht gut aber verdammt langsam, nun hab ich ein addin gemacht was mir die modellparameter sehr schnell ausliest, weil es ja in der inventorumgebung läuft,... das lesen ist eine function des addin und hat dann als rückgabe die parameternnamen/werte, nur wie start ich die function aus dem externen vb programm aus? ------------------ mfg TomHvw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 27. Apr. 2006 14:41 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
Hi zusammen, auch wenn es nicht das VBA Forum ist ... Mein Vorschlag: RegisterActiveObject - damit kannst du dein VB AddIn in die ROT (Running Object Table) eintragen und somit aus VB (einer anderen Anwendung) ein 'echtes' GetObject auf deine VB dll ausführen. Gruß Micha
------------------ http://classicvb.org/petition/ Zitat: Interpunktion und Orthographie des Postings sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 27. Apr. 2006 14:48 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
Du kannst eine externe DLL in dein Projekt einbinden. Hier eine Implementierung von z.B. shell32.dll: Code:
Private Declare Function SHAppBarMessage Lib "shell32.dll" _ (ByVal dwMessage As Long, pData As APPBARDATA) As _ Long
Aber deine DLL ist ein Inventor AddIn und nutzlos ohne den Inventor. Daher würde ich dir raten, als Schnittstelle eine z.B. Text- oder XML Datei zu benutzen. Die Frage ist dann weiterhin wie du dein Command aus dem AddIn startest. Es könnte funktionieren, wenn du in deiner EXE eine Instanz von laufenden Inventor Prozess erstellst, und über den CommandManager den betreffenden Command aufrufst. Die Funktion liest die Parameter aus, und schreibt eine Textdatei. Die exe wartet bis die Textdatei geschrieben ist, und liest die dann aus. Es ist nicht ohne dein Vorhaben, aber es ist auf jeden Fall lösbar. Zitat:
Mein Vorschlag: RegisterActiveObject - damit kannst du dein VB AddIn in die ROT (Running Object Table) eintragen und somit aus VB (einer anderen Anwendung) ein 'echtes' GetObject auf deine VB dll ausführen.
Das Objekt wäre in dem Fall Inventor Objekt, da die dll ein Inventor AddIn ist. Oder?
------------------ Grüße daywa1k3r FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomHvw Mitglied
Beiträge: 17 Registriert: 27.04.2006
|
erstellt am: 27. Apr. 2006 15:04 <-- editieren / zitieren --> Unities abgeben:
mein addin(dll) hab ich selbst in vb6 erstellt,... RegisterActiveObject kennt vb6 nicht, das würde nur gehn wenn ich die dll in 'C' erstelle,....und das kann ich nicht *ggg*,.... ich kann einen verweis auf die dll machen in meinem externen prg,.... aber dann läufts wieder langsam, hab ich schon probiert, das addin soll in der inventorumgebung laufen wegen der geschwindigkeit.... das mit der textdatei hab ich hinbekommen hab die dll im inventor registriert ohne automatisch laden/starten.... kann dann von meinem exe aus das addin aktivieren und deaktivieren, und die sub zum lesen wird beim aktivieren ausgeführt... nicht ganz so elegant wie ich wollte aber es funkt ....*ggg*.... sag erst mal danke, bin aber trotzdem noch an den verschiedensten lösungsansätzen interresiert ------------------ mfg TomHvw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 27. Apr. 2006 15:12 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
Hi, beim Punkt c dll muss ich widersprechen, Private Const ACTIVEOBJECT_STRONG = 0 Private Const ACTIVEOBJECT_WEAK = 1 Private Declare Function CLSIDFromProgID Lib "ole32.dll" (ByVal ProgID As Long, rclsid As GUIDs) As Long Private Declare Function CoDisconnectObject Lib "ole32.dll" (ByVal pUnk As IUnknown, pvReserved As Long) As Long Private Declare Function RegisterActiveObject Lib "oleaut32.dll" (ByVal pUnk As IUnknown, rclsid As GUIDs, ByVal dwFlags As Long, pdwRegister As Long) As Long Private Declare Function RevokeActiveObject Lib "oleaut32.dll" (ByVal dwRegister As Long, ByVal pvReserved As Long) As Long Private OLEInstance As Long Public myAPP As <deineDLL.KLASSE> Private Type GUIDs Data1 As Long Data2 As Integer Data3 As Integer Data4(0 To 7) As Byte End Type Public Sub AddToROT() Dim mGuid As GUIDs Dim lp As Long OLEInstance = 0 lp = CLSIDFromProgID(StrPtr(<deineDLL.KLASSE> ), mGuid) If lp = 0 Then lp = RegisterActiveObject(myAPP, mGuid, ACTIVEOBJECT_WEAK, OLEInstance) End If End Sub Public Sub RemoveFromROT() If OLEInstance <> 0 Then RevokeActiveObject OLEInstance, 0 End If CoDisconnectObject myAPP, 0 End Sub Gruß Micha ------------------ http://classicvb.org/petition/ Zitat: Interpunktion und Orthographie des Postings sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lbcad Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau und CAD-Trainer
Beiträge: 3833 Registriert: 15.02.2001 DELL Precision 7520 Win10Pro-64 Inventor mit Vault Professional 2024 --------------------- Während man es aufschiebt, verrinnt das Leben. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.)
|
erstellt am: 27. Apr. 2006 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
Zitat: Original erstellt von TomHvw: ... RegisterActiveObject ...
und ich dachte schon, die "Shift-Taste" klemmt - dabei hat es Methode ------------------ Gruß Lothar --------------------------------------------------- Während man es aufschiebt, verrinnt das Leben. —Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
waldi Mitglied Softwerker
Beiträge: 272 Registriert: 07.08.2001
|
erstellt am: 27. Apr. 2006 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
Hi, du kannst dir in deinem Addin ein Automation Interface schreiben, an das kommst du dann von aussen (z.B. VB) über die Addins Collection hin. Doku: ApplicationAddin.Automation. Ich such mal, ich müsste irgenwo in meinem ADN Account ein Beispiel haben. Hört sich kompliziert an, ist es aber nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomHvw Mitglied
Beiträge: 17 Registriert: 27.04.2006
|
erstellt am: 27. Apr. 2006 15:39 <-- editieren / zitieren --> Unities abgeben:
hi micha... irgendwas mach ich falsch.... Dim pRs As AddInSample.Sample Set pRs = GetObject(, "AddinSample.Sample") bei der set anweisung bekomm ich den fehler: 'objekterstellung durch activX-komponente nicht möglich' ne idee an was es liegen könnte? ------------------ mfg TomHvw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomHvw Mitglied
Beiträge: 17 Registriert: 27.04.2006
|
erstellt am: 27. Apr. 2006 15:42 <-- editieren / zitieren --> Unities abgeben:
hallo waldi... ApplicationAddin.Automation hab ich mir in der inventor doku angesehn... werd aber nicht wirklich schlau daraus... wenn du ein beispiel hättest das wäre echt toll ------------------ mfg TomHvw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TomHvw Mitglied
Beiträge: 17 Registriert: 27.04.2006
|
erstellt am: 27. Apr. 2006 15:45 <-- editieren / zitieren --> Unities abgeben:
nochmals hi micha..... kanns daran liegen? das hab ich in der vb-hilfe gefunden: "GetObject kann nicht verwendet werden, um einen Verweis auf eine Klasse abzurufen, die mit Visual Basic erstellt wurde." ------------------ mfg TomHvw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 27. Apr. 2006 15:47 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
Jo, Wenn dein AddIn von IV geladen wird muss dein Addin im class_init die Add2ROT Funktion aufrufen, vorher muss noch das AddIn mit Set MyApp = Me sich selbst Referenziern! wobei myApp im einem Modul als Public zu Deklarieren ist. Dann in einer anderen Anwendung GetObject Gruß Micha ------------------ http://classicvb.org/petition/ Zitat: Interpunktion und Orthographie des Postings sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 27. Apr. 2006 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
Zitat: Original erstellt von TomHvw: nochmals hi micha.....kanns daran liegen? das hab ich in der vb-hilfe gefunden: "GetObject kann nicht verwendet werden, um einen Verweis auf eine Klasse abzurufen, die mit Visual Basic erstellt wurde."
Deswegen der schxxxxx mit RegisterActiveObject (Trick 17).
------------------ http://classicvb.org/petition/ Zitat: Interpunktion und Orthographie des Postings sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
waldi Mitglied Softwerker
Beiträge: 272 Registriert: 07.08.2001
|
erstellt am: 27. Apr. 2006 15:58 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
|
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 27. Apr. 2006 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
|
TomHvw Mitglied
Beiträge: 17 Registriert: 27.04.2006
|
erstellt am: 27. Apr. 2006 16:07 <-- editieren / zitieren --> Unities abgeben:
juhuuuuuuu......ggg das mit dem "RegisterActiveObject (Trick 17)." funkt mit voller inventorgeschwindigkeit..... ich danke euch.... solltest du das beispiel finden waldi, hätt ich es trotzdem gern mal angesehn... danke ------------------ mfg TomHvw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
waldi Mitglied Softwerker
Beiträge: 272 Registriert: 07.08.2001
|
erstellt am: 27. Apr. 2006 16:08 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
|
TomHvw Mitglied
Beiträge: 17 Registriert: 27.04.2006
|
erstellt am: 27. Apr. 2006 16:14 <-- editieren / zitieren --> Unities abgeben:
|
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 27. Apr. 2006 16:20 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
Zitat: Original erstellt von TomHvw: juhuuuuuuu......ggg das mit dem "RegisterActiveObject (Trick 17)." funkt mit voller inventorgeschwindigkeit..... ich danke euch....
am liebsten mit reichlich Üs <g> das sind die Zahlen 1 - 10 gruß Micha ------------------ http://classicvb.org/petition/
Zitat: Interpunktion und Orthographie des Postings sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
[Diese Nachricht wurde von VBSpawn am 27. Apr. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
waldi Mitglied Softwerker
Beiträge: 272 Registriert: 07.08.2001
|
erstellt am: 27. Apr. 2006 16:49 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
|
VBSpawn Mitglied Programmierer
Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 27. Apr. 2006 16:52 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
|
Michael Puschner Moderator Rentner
Beiträge: 13006 Registriert: 29.08.2003 Toshiba Encore mit MS Office Ein Programm sollte nicht nur Hand und Fuß, sondern auch Herz und Hirn haben. (Michael Anton)
|
erstellt am: 27. Apr. 2006 23:01 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
|
Charly Setter Moderator
Beiträge: 11980 Registriert: 28.05.2002 Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.<P>Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw)
|
erstellt am: 27. Apr. 2006 23:07 <-- editieren / zitieren --> Unities abgeben: Nur für TomHvw
Zitat: Original erstellt von Michael Puschner: Schieb' das doch bitte mal einer der Mods in's IV-VBA-Forum. Nicht das es mich hier stört, aber dort interessieren sich vielleicht noch andere für diese geheimnisvollen Dingen.
Erledigt.. ------------------ Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen. Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |