| |
| 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 (1258 / mal gelesen)
|
PamaCad Mitglied
Beiträge: 8 Registriert: 28.11.2019 ja wirklich, Inventor 2012
|
erstellt am: 02. Apr. 2020 09:18 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 601 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 02. Apr. 2020 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für PamaCad
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
Beiträge: 8 Registriert: 28.11.2019 ja wirklich, Inventor 2012
|
erstellt am: 02. Apr. 2020 14:44 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 1731 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 02. Apr. 2020 16:06 <-- editieren / zitieren --> Unities abgeben: Nur für PamaCad
|
PamaCad Mitglied
Beiträge: 8 Registriert: 28.11.2019 ja wirklich, Inventor 2012
|
erstellt am: 03. Apr. 2020 07:00 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 03. Apr. 2020 09:27 <-- editieren / zitieren --> Unities abgeben: Nur für PamaCad
|
Frank_Schalla Ehrenmitglied CAD_SYSTEMBETREUER
Beiträge: 1731 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 03. Apr. 2020 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für PamaCad
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
Beiträge: 8 Registriert: 28.11.2019 ja wirklich, Inventor 2012
|
erstellt am: 03. Apr. 2020 21:27 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 1731 Registriert: 06.04.2002 DELL M6800 Cad Admin Methodikentwickler 3D
|
erstellt am: 09. Apr. 2020 19:20 <-- editieren / zitieren --> Unities abgeben: Nur für PamaCad
|