| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: DockableWindow (2358 mal gelesen)
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2262 Registriert: 15.11.2006 Windows 10 x64, AIP 2023
|
erstellt am: 01. Sep. 2010 22:26 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich habe ein AddIn (dll) dem ich gern ein dockablewindow hinzufügen möchte. Ich habe meinem Projekt einen Dialog hinzugefügt der später mal iProps anzeigen soll. Das dockablewindow wird erstellt und angezeigt. Aber wie füge ich meinen Dialog in das dockablewindow ein. In der Hilfe steht mittels hwnd, nur wo kommt das her? Kann man einen Dialog überhaupt so einfügen oder muß dafür eine eigene dll erstellt werden? ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 01. Sep. 2010 23:09 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2262 Registriert: 15.11.2006 Windows 10 x64, AIP 2023
|
erstellt am: 01. Sep. 2010 23:29 <-- editieren / zitieren --> Unities abgeben:
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 02. Sep. 2010 09:45 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
Hi, ich war gestern irgendwie auf BrowserPanes, da machen wir immer custom controls und fügen diese ein. Bei DockableWindow scheint das auch mit ganzen Dialogen zu funktionieren. Dazu erstelle einfach eine Instanz von deinem Dialog, und übergebe Handle an die AddChild Methode (myForm.Handle / this.Handle). BTW., du hast PM... ------------------ Grüße Igor FX64 Software Solutions - Inventor Tools Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2262 Registriert: 15.11.2006 Windows 10 x64, AIP 2023
|
erstellt am: 02. Sep. 2010 20:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Hab's hinbekommen. Keine Ahnung warum es jetzt geht, aber mit einem UserForm läuft es. Falls es jemand mal nachbauen will, ich habe es so gemacht: in die StandardAddInServer.vb:
Code: Public Sub UserControl() Dim oUserInterfaceMgr As UserInterfaceManager oUserInterfaceMgr = myInventor.UserInterfaceManager ' Create a new dockable window Dim oWindow As Inventor.DockableWindow oWindow = oUserInterfaceMgr.DockableWindows.Add("Test-ID", "ToolboxInternalName", "Test") 'Create the new UserControl Dim UControl1 As New UControl() ' Add the UserControl as a child to the dockable window oWindow.AddChild(UControl1.Handle) ' Pass the control the Inventor Application object. It does this ' using the InventorApplication property that was implented on the control. UControl1.InventorApp = myInventor ' Don't allow docking to top and bottom oWindow.DisabledDockingStates = Inventor.DockingStateEnum.kDockTop + Inventor.DockingStateEnum.kDockBottom 'Dock left oWindow.DockingState = Inventor.DockingStateEnum.kDockLeft 'Set Window Size oWindow.SetMinimumSize(250, 267) ' Make the window visible oWindow.Visible = True End Sub
Dann ein UserForm "UserControl" mit einem Label "lblMass1" erstellt. In die UserControl.vb: Code: Public Class UControl Private m_ClickCount As Integer = 0 Private m_inventorApp As Inventor.Application Private WithEvents appEvents As Inventor.ApplicationEvents Private m_currentDoc As Inventor.PartDocument Public Property InventorApp() As Inventor.Application Get Return m_inventorApp End Get Set(ByVal value As Inventor.Application) m_inventorApp = value appEvents = m_inventorApp.ApplicationEvents
If m_inventorApp.Documents.Count > 0 Then If m_inventorApp.ActiveEditDocument.DocumentType = Inventor.DocumentTypeEnum.kPartDocumentObject Then m_currentDoc = m_inventorApp.ActiveEditDocument UpdateDocumentInfo() Else m_currentDoc = Nothing UpdateDocumentInfo() End If Else m_currentDoc = Nothing UpdateDocumentInfo() End If End Set End Property Private Sub UpdateDocumentInfo() If m_currentDoc Is Nothing Then Me.lblMass1.Text = "Mass1: " Else Me.lblMass1.Text = "Mass1: " & ReadUserPropertyValue(m_currentDoc, "Mass1") End If End Sub Private Sub appEvents_OnDocumentChange(ByVal DocumentObject As Inventor._Document, ByVal BeforeOrAfter As Inventor.EventTimingEnum, ByVal ReasonsForChange As Inventor.CommandTypesEnum, ByVal Context As Inventor.NameValueMap, ByRef HandlingCode As Inventor.HandlingCodeEnum) Handles appEvents.OnDocumentChange If Not m_currentDoc Is Nothing Then UpdateDocumentInfo() End If End Sub Private Sub appEvents_OnNewEditObject(ByVal EditObject As Object, ByVal BeforeOrAfter As Inventor.EventTimingEnum, ByVal Context As Inventor.NameValueMap, ByRef HandlingCode As Inventor.HandlingCodeEnum) Handles appEvents.OnNewEditObject If m_inventorApp.ActiveEditDocument.DocumentType = Inventor.DocumentTypeEnum.kPartDocumentObject Then If Not m_inventorApp.ActiveEditDocument Is m_currentDoc Then m_currentDoc = m_inventorApp.ActiveEditDocument UpdateDocumentInfo() End If Else m_currentDoc = Nothing UpdateDocumentInfo() End If End Sub ' --- ' Benutzer-Property lesen Public Function ReadUserPropertyValue(ByVal oDoc As Inventor.Document, ByVal sPropertyName As String) As String Try Dim oProperty As Inventor.Property For Each oProperty In oDoc.PropertySets.Item("User Defined Properties") If oProperty.Name.ToUpper = sPropertyName.ToUpper Then Return oProperty.Value End If Next Return "" Catch ex As Exception Return "" End Try End Function End Class
Bitte fügen Sie ihre Kritik hier an...
------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mb-ing Mitglied F&E-Mangement, MB-Ing. (u)
Beiträge: 755 Registriert: 06.09.2012 Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)
|
erstellt am: 01. Jun. 2023 11:02 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2262 Registriert: 15.11.2006 Windows 10 x64, AIP 2023
|
erstellt am: 01. Jun. 2023 12:00 <-- editieren / zitieren --> Unities abgeben:
|
mb-ing Mitglied F&E-Mangement, MB-Ing. (u)
Beiträge: 755 Registriert: 06.09.2012 Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)
|
erstellt am: 01. Jun. 2023 12:56 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
Zitat: Original erstellt von rkauskh: HalloIch glaube du willst kein DockableWindow, sondern ein zusätzliches BrowserPane.
Ralf, danke für Deine Antwort. Ich will in dem Dockable Window anschließend diverse Sachen darstellen. Evtl. I-Properties, sonstige Metadaten. Geht das mit einem BrowserPane? ------------------ Wissen ist Macht. Nichts wissen macht auch nichts Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2262 Registriert: 15.11.2006 Windows 10 x64, AIP 2023
|
erstellt am: 01. Jun. 2023 17:44 <-- editieren / zitieren --> Unities abgeben:
Hallo In einem BrowserPane kann man neben dem bekannten TreeBrowser auch ActiveX-Controls (registriert oder unregistriert) einbinden. Du musst ein Custom ActiceX Control erstellen und das kannst du dann einbinden. Ich habe null Ahnung wie das geht. Vielleicht liest Igor noch mit. ------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mb-ing Mitglied F&E-Mangement, MB-Ing. (u)
Beiträge: 755 Registriert: 06.09.2012 Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)
|
erstellt am: 02. Jun. 2023 08:15 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
Zitat: Original erstellt von rkauskh: HalloIn einem BrowserPane kann man neben dem bekannten TreeBrowser auch ActiveX-Controls (registriert oder unregistriert) einbinden. Du musst ein Custom ActiceX Control erstellen und das kannst du dann einbinden. Ich habe null Ahnung wie das geht. Vielleicht liest Igor noch mit.
Der Kollege wollte anscheinend dasselbe machen und wurde auf ein Dockable Window verwiesen... (https://forums.autodesk.com/t5/inventor-ilogic-and-vb-net-forum/addtreebrowserpane-problem/td-p/9796862) Du meinst eher die Richtung, oder? https://adndevblog.typepad.com/manufacturing/2013/07/add-a-new-custom-pane-and-add-node-from-a-default-browser-pane.html Mein Dockable Window schaut bereits gut aus und macht, was soll Nur die Position klappt noch nicht Ich probiere es mal weiter... Danke und Grüße MB-Ing. ------------------ Wissen ist Macht. Nichts wissen macht auch nichts [Diese Nachricht wurde von mb-ing am 02. Jun. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mb-ing Mitglied F&E-Mangement, MB-Ing. (u)
Beiträge: 755 Registriert: 06.09.2012 Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)
|
erstellt am: 02. Jun. 2023 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
Die Mischung macht es Danke Ralf für Deine Hilfe! Code: Dim app As Inventor.Application = GetObject(, "Inventor.Application") Dim prt As PartDocument = app.ActiveDocument Dim myBrowserPane As BrowserPane = prt.BrowserPanes.Add("iBims", "WMPlayer.OCX") Dim uiManager As UserInterfaceManager = app.UserInterfaceManager Dim dockableWindow As DockableWindow = uiManager.DockableWindows(myBrowserPane.Name) dockableWindow.Visible = True
Danke und Grüße MB-Ing.
------------------ Wissen ist Macht. Nichts wissen macht auch nichts Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2262 Registriert: 15.11.2006 Windows 10 x64, AIP 2023
|
erstellt am: 02. Jun. 2023 12:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Ein OCX ist ja ein ActiveX Control. Das DockableWindow ist nur der Rahmen in den eingebettet wird und mit dem Inventor umgehen kann. Mir ist unklar, erzeugt das Erstellen eines BrowserPanes automatisch auch ein DockableWindow gleichen Namens? ------------------ MfG Ralf RKW Solutions GmbH www.RKW-Solutions.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Praktikum - Berechnung und Konstruktion | Wirtschaftlich, präzise, sicher und energieeffizient: Antriebs- und Steuerungstechnik von Bosch Rexroth bewegt Maschinen und Anlagen jeder Größenordnung. Unter der Marke Rexroth entstehen innovative Komponenten, maßgeschneiderte Systemlösungen und Dienstleistungen für mobile Anwendungen, Anlagenbau und Engineering sowie Fabrikautomation. Die Bosch Rexroth AG freut sich auf Ihre Bewerbung!
| Anzeige ansehen | Konstruktion, Visualisierung |
|
mb-ing Mitglied F&E-Mangement, MB-Ing. (u)
Beiträge: 755 Registriert: 06.09.2012 Inventor 2021 WIN 10 (64bit), Dell Precision T1650, 16GB (Pro.File 8.7)
|
erstellt am: 05. Jun. 2023 06:43 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
Zitat: Original erstellt von rkauskh: HalloEin OCX ist ja ein ActiveX Control. Das DockableWindow ist nur der Rahmen in den eingebettet wird und mit dem Inventor umgehen kann. Mir ist unklar, erzeugt das Erstellen eines BrowserPanes automatisch auch ein DockableWindow gleichen Namens?
Dem Dockable Window kann ich auf jeden Fall eine Windows Form hinzufügen, was mein Ziel ist. Also. Code: Dim myForm as new MyForm() myDockableWindow.Add(myForm.Handle)
------------------ Wissen ist Macht. Nichts wissen macht auch nichts Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |