Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Suchen und Markieren im Modellbaum

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:  Suchen und Markieren im Modellbaum (1253 mal gelesen)
PamaCad
Mitglied


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

Beiträge: 8
Registriert: 28.11.2019

ja wirklich, Inventor 2012

erstellt am: 02. Apr. 2020 09:18    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

Guten Tag
Nach Jahren der Enthaltsamkeit versuche ich mich wieder in der VBA-Programmierung.

Als erstes würde ich gerne im Modellbaum (das ist doch die Auflistung der in einer Assembly enthaltenen Occurences) nach dem Displaynamen ein gesuchtes Objekt suchen und markieren.
Suchen in den Occurences geht ja, rekursiv durchlaufen, aber wie kann ich dann im Inventor das gefundene Element markieren?
Ich finde kein "Select", "Activate" oder sonst etwas Hilfreiches.....

Gruss
Roland

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: 601
Registriert: 19.09.2007

Inventor Professional 2020
WinX

erstellt am: 02. Apr. 2020 10:15    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 PamaCad 10 Unities + Antwort hilfreich

evtl. hilfreich, zu finden in der Hilfe: Navigation between browser and data API Sample

das mit dem Markieren: muss das im Modellbrowser sein?
ThisApplication.ActiveDocument.SelectSet.Select (Object)
markiert das Object bzw. fügt es der Auswahl hinzu (falls schon was markiert ist). Siehe ggf. Hilfe zum SelectSet.

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

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

PamaCad
Mitglied


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

Beiträge: 8
Registriert: 28.11.2019

ja wirklich, Inventor 2012

erstellt am: 02. Apr. 2020 14: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

Danke für den Hinweis.
Ich habe es so gelöst.
Aber - ?? bin ich im falschen Forum ??
Kann ich das verschieben?


Code:
        //  Selektiert alle per Name übergebenen Elemente
        public void SelectElement(Application InvApp, string DisplayName = "", string FullFileName = "")
        {
            if (InvApp.ActiveDocumentType == DocumentTypeEnum.kAssemblyDocumentObject)
            {

                AssemblyDocument AssDoc = (Inventor.AssemblyDocument)InvApp.ActiveDocument;
                AssDoc.SelectSet.Clear();

                foreach (ComponentOccurrence Occ in AssDoc.ComponentDefinition.Occurrences)
                {
                    if (Occ.ReferencedDocumentDescriptor.FullDocumentName == FullFileName | | Occ.ReferencedDocumentDescriptor.DisplayName == DisplayName)
                    {
                        AssDoc.SelectSet.Select(Occ);
                    }

                    if (Occ.DefinitionDocumentType == DocumentTypeEnum.kAssemblyDocumentObject)
                    {
                        SelectElementSub(InvApp, ref AssDoc, Occ, DisplayName, FullFileName);
                    }

                }
            }
    }


        // Unterfunktion zum Markieren von Elementen im Browersbaum
        public void SelectElementSub(Inventor.Application InvApp, ref AssemblyDocument AssDoc,
            ComponentOccurrence Cocc, string DisplayName="", string FullFileName = "")
        {

            foreach (ComponentOccurrence Occ in Cocc.SubOccurrences)
            {
                if (Occ.ReferencedDocumentDescriptor.FullDocumentName == FullFileName | | Occ.ReferencedDocumentDescriptor.DisplayName == DisplayName)
                {
                    AssDoc.SelectSet.Select(Occ);
                }
                if (Occ.DefinitionDocumentType == DocumentTypeEnum.kAssemblyDocumentObject)
                {
                    SelectElementSub(InvApp, ref AssDoc, Occ, DisplayName, FullFileName);
                }
            }
        }



Nun kommt aber die nächste Frage:
Im Inventor > Modellbaum kann ich ein markiertes Element im Zusammenbau suchen [In Fenster suchen].
Weiss jemand, wie ich das per Code ausführen kann?

Gruss Roland

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

Frank_Schalla
Ehrenmitglied
CAD_SYSTEMBETREUER


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

Beiträge: 1731
Registriert: 06.04.2002

DELL M6800
Cad Admin
Methodikentwickler 3D

erstellt am: 02. Apr. 2020 16:06    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 PamaCad 10 Unities + Antwort hilfreich

Schaue dir mal den Commandmanager Execute an 

------------------
************************************
 

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

PamaCad
Mitglied


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

Beiträge: 8
Registriert: 28.11.2019

ja wirklich, Inventor 2012

erstellt am: 03. Apr. 2020 07:00    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

Guten Morgen
Zitat:
Original erstellt von Frank_Schalla:
Schaue dir mal den Commandmanager Execute an  

Guten Morgen
Da finde ich keine Lösung für mich, um das Element, welches im SelectSet steht, Zoomen zu können.

Es geht mir um die Umsetzung des Kontextmenübefehls "In Fenster suchen", wenn ich ein Element im Modelbaum markiert habe.
Oder sehe ich wieder den Wald vor lauter Bäumen nicht?

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 03. Apr. 2020 09:27    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 PamaCad 10 Unities + Antwort hilfreich

Hallo

Ich denke es war gemeint:

Code:
ThisApplication.CommandManager.ControlDefinitions.Item("AppZoomSelectCmd").Execute

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

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

Frank_Schalla
Ehrenmitglied
CAD_SYSTEMBETREUER


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

Beiträge: 1731
Registriert: 06.04.2002

DELL M6800
Cad Admin
Methodikentwickler 3D

erstellt am: 03. Apr. 2020 09: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 Nur für PamaCad 10 Unities + Antwort hilfreich

Ok erst mit dem Select den gewünschten Eintrag wählen dann

Run_CMD ("AppZoomSelectCmd")


Function Run_CMD(ByVal cmd As String) As Boolean
    ' Get the CommandManager object.
    Dim oCommandMgr As CommandManager
    Set oCommandMgr = ThisApplication.CommandManager

    ' Get control definition for the line command.
    Dim oControlDef As ControlDefinition
    Set oControlDef = oCommandMgr.ControlDefinitions.Item(cmd)
    ' Execute the command.
    Call oControlDef.Execute
End Function

------------------
************************************
 

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

PamaCad
Mitglied


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

Beiträge: 8
Registriert: 28.11.2019

ja wirklich, Inventor 2012

erstellt am: 03. Apr. 2020 21:27    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

Vielen Dank, es funktioniert.

In C# habe ich folgende Syntax eingesetzt:

Code:

//  Das Element, welches gezoomt werde soll, ist dem SelectSet vorgängig zugeilt worden.
//  InvApp ist die aktuell aktive Inventor Applikation, welche der Funktion übergeben wird.

  ControlDefinition ControlDef = InvApp.CommandManager.ControlDefinitions["AppZoomSelectCmd"];
  ControlDef.Execute();


Somit wird auf das Element gezoomt, wobei es je nach Ansicht natürlich hinter irgend so einem Blech verborgen bleibt.
Aber das Ziel ist erfüllt.
Danke euch.
Gruss Roland

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

Frank_Schalla
Ehrenmitglied
CAD_SYSTEMBETREUER


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

Beiträge: 1731
Registriert: 06.04.2002

DELL M6800
Cad Admin
Methodikentwickler 3D

erstellt am: 09. Apr. 2020 19:20    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 PamaCad 10 Unities + Antwort hilfreich

warum nicht vorher ein
"AssemblyIsolateCmd"

Dann kann man es auch schön sehen 

------------------
************************************
 

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)2023 CAD.de | Impressum | Datenschutz