Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Bauteile/Baugruppen in Modelbrowser-Ordner verschieben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Bauteile/Baugruppen in Modelbrowser-Ordner verschieben (173 mal gelesen)
Andreas01
Mitglied
Dipl.-Ing.(FH) Konstrukteur


Sehen Sie sich das Profil von Andreas01 an!   Senden Sie eine Private Message an Andreas01  Schreiben Sie einen Gästebucheintrag für Andreas01

Beiträge: 225
Registriert: 05.08.2004

Inventor 2020
i7
32 GB RAM
Quatro FX 4000
WIN10-64bit

erstellt am: 10. Nov. 2022 13:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich möchte mein Modelbrowser etwas "Aufräumen" und bestimmte Bauteile bzw. Baugruppen in verschiedene Ordner verschieben.
Wie ich einen Ordner erstelle und gleichzeiteg die Bauteile/Baugruppen dort hin verschiebe, das habe ich schon herausgefunden und das funktioniert.

  Dim oOcc As ComponentOccurrence
        For Each oOcc In oDef.Occurrences

            Dim oNode As BrowserNode
            oNode = oPane.GetBrowserNodeFromObject(oOcc)

            oCollectionNormteile.Add(oNode)
        Next

        Dim oFolder As BrowserFolder
        oFolder = oPane.AddBrowserFolder("001 - Normteile", oCollectionNormteile)

Ich bekomme es jedoch nicht hinn, wenn der Ordner schon vorhanden ist in diesen die Bauteile/Baugruppen zu verschiebn.

Hat jemand eine Idee?

Gruß
Andreas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2118
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 10. Nov. 2022 14:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andreas01 10 Unities + Antwort hilfreich

Hallo

Ohne das getestet zu haben:

Code:

Dim oFolder As BrowserFolder
For Each oFolder In opane.TopNode.BrowserFolders
    If oFolder.Name = "001 - Normteile" Then Exit For
Next

If oFolder Is Nothing Then
  oFolder = opane.AddBrowserFolder("001 - Normteile")
End If
   
Dim oOcc As ComponentOccurrence
For Each oOcc In oDef.Occurrences
    Dim oNode As BrowserNode
    oNode = opane.GetBrowserNodeFromObject(oOcc)

    Call oFolder.Add(oNode)
Next


------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andreas01
Mitglied
Dipl.-Ing.(FH) Konstrukteur


Sehen Sie sich das Profil von Andreas01 an!   Senden Sie eine Private Message an Andreas01  Schreiben Sie einen Gästebucheintrag für Andreas01

Beiträge: 225
Registriert: 05.08.2004

Inventor 2020
i7
32 GB RAM
Quatro FX 4000
WIN10-64bit

erstellt am: 14. Nov. 2022 14:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Ralf,

danke, mit etewas anpassen hat es funktioniert. Jedoch da ist für mich noch einiges zu tun denn ich muss z.B. die Bauteile die schon in Ordnern sind von der "Sortierung" aussschließen wie ich das hinbekomme dass weiß ich noch nicht.

Gruß
Andreas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2118
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 14. Nov. 2022 15:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andreas01 10 Unities + Antwort hilfreich

Hallo

oNode.Parent.NativeObject.Type = kFolderBrowserObject testen?

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andreas01
Mitglied
Dipl.-Ing.(FH) Konstrukteur


Sehen Sie sich das Profil von Andreas01 an!   Senden Sie eine Private Message an Andreas01  Schreiben Sie einen Gästebucheintrag für Andreas01

Beiträge: 225
Registriert: 05.08.2004

Inventor 2020
i7
32 GB RAM
Quatro FX 4000
WIN10-64bit

erstellt am: 18. Nov. 2022 23:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Browsersortieren.jpg

 
Hallo Ralf,

ich bekomme es Teilweise hin. Ich kann die Ordner erstellen, wenn diese nicht vorhanden sind und die Bauteile in die richtigen Ordner zu verschieben funktioniert auch.
Jedoch weiß ich nicht wie ich es abfragen kann ob ein Bauteil schon in einem Ordner liegt, denn dann würde ich das Bauteil übergehen wollen.
Habe schon vieles versucht und probiert aber leider ohne Erfolg.

Gruß
Andreas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2118
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 19. Nov. 2022 08:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andreas01 10 Unities + Antwort hilfreich

Moin

Sollte eigentlich funktionieren. Bei einer Occurrence die nicht in einem BrowserFolder ist, müsste der Typ kBrowserNodeObject sein.

Code:

Dim oOcc As ComponentOccurrence
For Each oOcc In oDef.Occurrences
    Dim oNode As BrowserNode
    oNode = opane.GetBrowserNodeFromObject(oOcc)
   
    If Not oNode.Parent.NativeObject.Type = kFolderBrowserObject then
        Call oFolder.Add(oNode)
    End If
Next

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andreas01
Mitglied
Dipl.-Ing.(FH) Konstrukteur


Sehen Sie sich das Profil von Andreas01 an!   Senden Sie eine Private Message an Andreas01  Schreiben Sie einen Gästebucheintrag für Andreas01

Beiträge: 225
Registriert: 05.08.2004

Inventor 2020
i7
32 GB RAM
Quatro FX 4000
WIN10-64bit

erstellt am: 19. Nov. 2022 15:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Ralf,

danke für deine Hilfe, das Tool funktioniert jetzt!
Ich wäre auf die Abfrage nie draufgekommen, steht so was in der Inventor API-Hilfe oder beruht dein Wissen auf programmier Erfahrung?

Vielleicht noch eine Frage. Wenn ich die „Occurrences“ der Baugruppe durchlaufe und dann die „CommponentDefinition“ benötige gehe ich immer so vor:

For Each oOcc As ComponentOccurrence In oAssDef.Occurrences
         
            If oOcc.DefinitionDocumentType = DocumentTypeEnum.kPartDocumentObject Then

                Dim oPartDoc As PartDocument = oInventorApp.Documents.Open(oOcc.ReferencedDocumentDescriptor.ReferencedFileDescriptor.FullFileName.ToString, False)

                Dim ocompdef As ComponentDefinition
                ocompdef = oPartDoc.ComponentDefinition
                ...
              oPartDoc.Close()
            End If
Next

Oder gibt es noch einen anderen Weg um auf die "ComponentDefinition" der "ComponentOccurrence" zugreifen zu können?

Gruß
Andreas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KraBBy
Mitglied
Maschinenbau-Ingenieur


Sehen Sie sich das Profil von KraBBy an!   Senden Sie eine Private Message an KraBBy  Schreiben Sie einen Gästebucheintrag für KraBBy

Beiträge: 582
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 19. Nov. 2022 18:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andreas01 10 Unities + Antwort hilfreich

Die occurrence hat auch eine Eigenschaft "definition"
ComponentOccurrence.Definition Property

Dabei handelt es sich dann je nachdem um eine part- oder assembly-def. (oder weitere)

------------------
Gruß KraBBy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2118
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 19. Nov. 2022 18:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andreas01 10 Unities + Antwort hilfreich

Hallo

Also eigentlich sollte es direkt gehen über:

Code:

oOcc.Definition

Das Öffnen des Dokumentes bringt nichts, da es als referenziertes Dokument der Baugruppe eh schon offen ist. Das Schließen funktioniert auch nicht, da Inventor das stillschweigend ignoriert. Das Bauteil ist über die Baugruppe weiterhin offen.

Steht alles in der API Doku. Dazu kommen noch fast 20 Jahre Erfahrung mit dem Kram. Da hat man oft schon ein Gefühl wo man was erwarten darf und wie man dran kommt. Ich empfehle immer wieder im VBA-Editor in einem Miniscript (s.u.) einen Haltepunkt setzen, Überwachung für z.B. oDoc einfügen und in der Überwachung den Objektbaum rauf und runter suchen. Man sieht dort nur Eigenschaften der Objekte, keine Methoden wie Add, Copy, Delete usw. Aber das hilft schon viel weiter und mit der Zeit muss man für die normalen Sachen nicht mehr nachsehen.

Code:

Private Sub Mini()

Dim oApp As Inventor.Application
Set oApp = ThisApplication

Dim oDoc As Document
Set oDoc = oApp.ActiveDocument

End Sub '<--- Haltepunkt hier drauf setzen


------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andreas01
Mitglied
Dipl.-Ing.(FH) Konstrukteur


Sehen Sie sich das Profil von Andreas01 an!   Senden Sie eine Private Message an Andreas01  Schreiben Sie einen Gästebucheintrag für Andreas01

Beiträge: 225
Registriert: 05.08.2004

Inventor 2020
i7
32 GB RAM
Quatro FX 4000
WIN10-64bit

erstellt am: 19. Nov. 2022 20:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

danke KraBBy und dir Ralf für die Hilfe.

@Ralf
Ich selber programmiere meine Tools mit VB.Net und dass mit den Haltepunkt mache ich sehr oft aber wie du schon schreibst ich kenne halt nicht die Methoden usw.
Habe mir ja alles selbst beigebracht (natürlich auch mit Hilfe des Forums hier).

Gruß
Andreas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2022 CAD.de | Impressum | Datenschutz