| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Form im Vordergrund (1535 mal gelesen)
|
Andreas01 Mitglied Dipl.-Ing.(FH) Konstrukteur
Beiträge: 227 Registriert: 05.08.2004 Inventor 2020 i7 32 GB RAM Quatro FX 4000 WIN10-64bit
|
erstellt am: 20. Nov. 2009 07:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, habe ein kleines Problem und zwar, ein vorhandenes Makro habe ich in ein Addin umgeschrieben und es funktioniert auch bis auf eine Kleinigkeit, das die Form immer im Vordergrund ist. Ich möchte aber während des Ausführens z.B. Messen können, dies geht jedoch nicht. Unter VBA habe ich die Eigenschaft „ShowModal“ der Form auf „false“ gesetzt und das funktionierte. Unter VB.net müsste das die Eigenschaft „Modal“ sein, dies Funktioniert leider nicht. Hat jemand eine Idee? Gruß Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 20. Nov. 2009 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas01
|
Andreas01 Mitglied Dipl.-Ing.(FH) Konstrukteur
Beiträge: 227 Registriert: 05.08.2004 Inventor 2020 i7 32 GB RAM Quatro FX 4000 WIN10-64bit
|
erstellt am: 20. Nov. 2009 10:06 <-- editieren / zitieren --> Unities abgeben:
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 20. Nov. 2009 10:33 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas01
|
Andreas01 Mitglied Dipl.-Ing.(FH) Konstrukteur
Beiträge: 227 Registriert: 05.08.2004 Inventor 2020 i7 32 GB RAM Quatro FX 4000 WIN10-64bit
|
erstellt am: 20. Nov. 2009 10:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Igor, ich muss vielleicht vor ab sagen das ich mir vb selber beigebracht habe, bzw. ich bin immer noch dabei (zur Zeit fast keine Zeit dafür), also hier ist der Codeschnipsel: '.... Private Sub Run_Bohrtabelle_OnExecute(ByVal contex As Inventor.NameValueMap) Handles m_Bohrtabelle_MaskeDef.OnExecute Dim m_Bohrtabelle As frm_Bohrtabelle m_Bohrtabelle = New frm_Bohrtabelle m_Bohrtabelle.TopMost = True m_Bohrtabelle.ShowDialog() End Sub '... reicht das? Gruß Andres
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 20. Nov. 2009 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas01
|
Andreas01 Mitglied Dipl.-Ing.(FH) Konstrukteur
Beiträge: 227 Registriert: 05.08.2004 Inventor 2020 i7 32 GB RAM Quatro FX 4000 WIN10-64bit
|
erstellt am: 20. Nov. 2009 11:12 <-- editieren / zitieren --> Unities abgeben:
Danke, Danke, Danke es hat funktioniert. ich hätte da noch eine Frage, vielleicht kannst Du mir da auch weiter Helfen. Problemstellung: ich habe manchmal zwei oder mehr Inventor Sitzungen offen, (sollte man zwar nicht machen aber es geht manchmal nicht anders). Wenn ich jetzt ein Makro oder ein Addin ausführe was ich selbst Programmiert habe bezieht sich das Makro immer auf die erste Instanz von Inventor, wie kann ich das Ändern. Ich müsste wahrscheinlich beim aufruf des Makros dem Makro mitteilen mit welcher Inventor Instanz es "kommunizieren" soll. Nur wie geht so was? Ich hoffe Du weißt was ich meine. Gruß Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 20. Nov. 2009 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas01
|
Andreas01 Mitglied Dipl.-Ing.(FH) Konstrukteur
Beiträge: 227 Registriert: 05.08.2004 Inventor 2020 i7 32 GB RAM Quatro FX 4000 WIN10-64bit
|
erstellt am: 20. Nov. 2009 12:27 <-- editieren / zitieren --> Unities abgeben:
So jetzt wird's für mich kompliziert. Ich habe ein vorhandenes AddIn für mich umgeschrieben und es läuft bis auf die vorhin geschilderte Problematik. Ich stelle den Code einfach rein, wenn Du Lust hast kannst Du da mal reinschauen, ich würde Dir gerne die Frage beantworten kann ich leider nicht. Gruß Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 20. Nov. 2009 12:48 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas01
Ja, wie vermutet wird die Inventor Instanz im AddIn geholt. Du holst dir in der Form aber immer die laufende Instanz mit: Code:
Dim oInventorApp As Object = System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application")
und, da wirst du immer die erste von mehreren Instanzen bekommen. Du sollst dein InventorObject aus dem AddIn (m_InventorApp = AddInSiteObject.Application) überall benutzen.
------------------ Grüße Igor FX64 Software Solutions - Inventor Tools Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas01 Mitglied Dipl.-Ing.(FH) Konstrukteur
Beiträge: 227 Registriert: 05.08.2004 Inventor 2020 i7 32 GB RAM Quatro FX 4000 WIN10-64bit
|
erstellt am: 20. Nov. 2009 13:52 <-- editieren / zitieren --> Unities abgeben:
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 20. Nov. 2009 14:02 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas01
|
Andreas01 Mitglied Dipl.-Ing.(FH) Konstrukteur
Beiträge: 227 Registriert: 05.08.2004 Inventor 2020 i7 32 GB RAM Quatro FX 4000 WIN10-64bit
|
erstellt am: 25. Nov. 2009 13:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Igor, also ich habe folgendes versucht: In der Form habe ich folgende Prozedur eingefügt: Public Sub New(ByVal objInventorApp As Object) oInventorApp = objInventorApp MsgBox(oInventorApp.ActiveDocument.DisplayName.ToString) End Sub das Funktioniert schon, d.h. wenn ich mehrere Instanzen von Inventor offen habe bekomme ich hier als Beispiel den richtigen Namen angezeigt. Jedoch wir dir Form nicht mehr dargestellt, bzw. es wird eine leere Form dargestellt ohne den restlichen Inhalt. Folgendermaßen rufe ich die Form auf: Private Sub Run_Bohrtabelle_OnExecute(ByVal contex As Inventor.NameValueMap) Handles m_Bohrtabelle_MaskeDef.OnExecute Dim m_Bohrtabelle As frm_Bohrtabelle m_Bohrtabelle = New frm_Bohrtabelle(m_InventorApp) m_Bohrtabelle.TopMost = True m_Bohrtabelle.Show() End Sub weiter komme ich leider nicht. Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 25. Nov. 2009 13:21 <-- editieren / zitieren --> Unities abgeben: Nur für Andreas01
Hi Andreas, ja, ist schon mal gut. Was dir noch fehlt ist der Befehl um die Form zu zeichnen (InitializeComponent()). Probier mal das hier: Code:
Public Sub New(ByVal objInventorApp As Object) ' This call is required by the Windows Form Designer. InitializeComponent() oInventorApp = objInventorApp MsgBox(oInventorApp.ActiveDocument.DisplayName.ToString) End Sub
------------------ Grüße Igor FX64 Software Solutions - Inventor Tools Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas01 Mitglied Dipl.-Ing.(FH) Konstrukteur
Beiträge: 227 Registriert: 05.08.2004 Inventor 2020 i7 32 GB RAM Quatro FX 4000 WIN10-64bit
|
erstellt am: 25. Nov. 2009 14:49 <-- editieren / zitieren --> Unities abgeben:
|