| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: Wie oft ist ein Bauteil in der aktuellen Baugruppe platziert? (2148 mal gelesen)
|
nightmare40 Mitglied Dipl.- Ing. (FH) Verfahrenstechnik

 Beiträge: 21 Registriert: 02.01.2010 DELL Precision Workstation T5500 Win7 Enterprise 64bit RAM: 8GB ATI FirePro V8700 mit 1GB RAM Autodesk Inventor Suite 2011
|
erstellt am: 04. Mrz. 2013 11:51 <-- editieren / zitieren --> Unities abgeben:         
Hallo liebe CAD.DE Gemeinde, ich habe mal wieder ein Problem und hoffe Ihr könnt mir helfen. Ich versuche meinem AddIn beizubringen die Normteile in der aktuell geöffneten Baugruppe zu zählen. Diese Daten werden dann in einem DatagridView dem Anwender angezeigt. Die Normteile liegen in einem bestimmten Ordner (keine Inventor Bibliothek), was es mir leicht macht sie zu finden. Dazu suche ich nur im im FullFileName nach dem Ordner und weiß, ob es ein Normteil ist oder nicht. Aber jetzt kommt das Problem: Wenn ich die geöffnete Baugruppe mit "For Each referencedDoc In ....ActiveDocument.ReferencedDocuments" durchgehe findet er jedes Dokument nur einmal, egal wie oft es verbaut ist. Welche Möglichkeiten gibt es, herauszufinden wie oft ein Bauteil in einer Baugruppe verbaut ist? Ich verzweifel mitlerweile , weil mich die Suchmaschinen und die API Hilfe der DIVA im Stich lassen. Vielen Dank im Voraus für Eure Hilfe...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 04. Mrz. 2013 12:52 <-- editieren / zitieren --> Unities abgeben:          Nur für nightmare40
Hallo Geh in die Stückliste (BOM), Ansicht (BOMView) "nur Bauteile" und hol die dort aus jeder Zeile den FullFileName (so wie jetzt aus den ReferencedDocuments) und wenn's ein Normteil ist die ItemQuantity in der Zeile. ------------------ MfG Ralf  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nightmare40 Mitglied Dipl.- Ing. (FH) Verfahrenstechnik

 Beiträge: 21 Registriert: 02.01.2010 DELL Precision Workstation T5500 Win7 Enterprise 64bit RAM: 8GB ATI FirePro V8700 mit 1GB RAM Autodesk Inventor Suite 2011
|
erstellt am: 04. Mrz. 2013 13:02 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ralf, vielen Dank für die schnelle Antwort. Ich hatte schon mal im Ansatz die BOM probiert, jedoch war es dann immer so, dass die Baugruppe danach gespeichert werden musste. Liegt das daran, dass man die Ansicht verändert (z.B. auf "strukturiert" oder "nur Bauteile")? Wenn ja, kann man das umgehen? Ich ändere ja nichts an der Baugruppe und wenn dann der Speichern Dialog kommt wird der Anwender nur verwirrt. Gruß Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 04. Mrz. 2013 19:41 <-- editieren / zitieren --> Unities abgeben:          Nur für nightmare40
Hallo Hast du in deinem Versuch damals eventuell die Stücklistenansicht erst aktivieren müssen? Also das "Aktivieren" was man im Inventor mit rechter Maustaste auf die Stücklistenansicht im Kontextmenü wählen kann. Das wäre eine Änderung an der Baugruppe, die zum Speichern führen würde. Eventuell, da bin ich mir nicht sicher, aktiviert Inventor die Ansicht selbst, wenn man über die API auf die Ansicht umschaltet. Wenn du dem Anwender nur die Info geben willst, ohne das weiter mit den Daten gearbeitet wird, probier mal das Auslesen in eine Transaktion zu packen und diese am Ende abzubrechen. Die ins Datagrid übertragenen Infos sollten dabei erhalten bleiben. ------------------ MfG Ralf  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nightmare40 Mitglied Dipl.- Ing. (FH) Verfahrenstechnik

 Beiträge: 21 Registriert: 02.01.2010 DELL Precision Workstation T5500 Win7 Enterprise 64bit RAM: 8GB ATI FirePro V8700 mit 1GB RAM Autodesk Inventor Suite 2011
|
erstellt am: 05. Mrz. 2013 07:05 <-- editieren / zitieren --> Unities abgeben:         
Moin moin, also wenn ich "manuell" in die Stückliste gehe ist ja die Modellansicht standardmäßig gewählt. Ich habe nur Probleme diese per API anzusprechen. Gestern habe ich es erfolglos so probiert: Code: Dim oBOM As BOM = m_inventorApplication.ActiveDocument.ComponentDefinition.BOM Dim oBOMView As BOMView = oBOM.BOMViews.Item(2)
Leider habe ich da immer folgenden Fehler erhalten: "System.ArgumentException" wurde aufgefangen. Message=Falscher Parameter. (Ausnahme von HRESULT: 0x80070057 (E_INVALIDARG)) Source="" StackTrace: bei System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) bei Inventor.BOMViews.get_Item(Object Index) bei ...m_standardpartcount_OnExecute(NameValueMap Context)... Bei ... .Item(2) habe ich auch "Strukturiert" probiert, wie es in der Programmierungshilfe gemacht wird, jedoch auch ohne Erfolg. Ich bräuchte ja nur die Möglichkeit die Stückliste in der aktiven Ansicht zu durchsuchen. Im Anhang ist ein Bild von der Stückliste der Testbaugruppe. Ich möchte ja nur die Modelldaten mit meinem AddIn durchsuchen. Dabei sollte ja keine Änderung entstehen und alle wären zufrieden Gruß Dominik Ich habs gerade noch einmal probiert die Beispiele aus der ApI-Hilfe laufen zu lassen...weder das Export-Beispiel noch das Beispiel "Using the BOM APIs" funktionieren. Bei
Code: oStructuredBOMView = oBOM.BOMViews.Item("Structured")
kommt immer wieder die Fehlermeldung
[Diese Nachricht wurde von nightmare40 am 05. Mrz. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 05. Mrz. 2013 09:11 <-- editieren / zitieren --> Unities abgeben:          Nur für nightmare40
Moin Das knallt, weil deaktivierte Stücklistenansichten in der API gar nicht vorhanden sind. Deaktiviert man die strukturierte und die Nur Bauteile Ansicht, sieht man in der API nur noch die Ansicht Modelldaten. Die anderen beiden sind verschwunden. Ein Item(2) gibt's dann schlicht nicht. Teste vorneweg, ob die Ansicht aktiviert ist. Code: ' Set a reference to the BOM Dim oBOM As BOM Set oBOM = oDoc.ComponentDefinition.BOM ' Enable structured view If oBOM.StructuredViewEnabled = False Then oBOM.StructuredViewEnabled = True End If 'Enable Parts only view If oBOM.PartsOnlyViewEnabled = False Then oBOM.PartsOnlyViewEnabled = True End If
Das ändert aber deine Baugruppe, so daß Inventor speichern will. Da käme dann die Kapselung als Transaktion die nicht beendet, sondern abgebrochen wird ins Spiel. ------------------ MfG Ralf  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nightmare40 Mitglied Dipl.- Ing. (FH) Verfahrenstechnik

 Beiträge: 21 Registriert: 02.01.2010 DELL Precision Workstation T5500 Win7 Enterprise 64bit RAM: 8GB ATI FirePro V8700 mit 1GB RAM Autodesk Inventor Suite 2011
|
erstellt am: 05. Mrz. 2013 09:20 <-- editieren / zitieren --> Unities abgeben:         
Hi Ralf, ja ich fürchte über die Stückliste kann ich mein Ziel nicht erreichen. Ich probiere es jetzt mal über die "ComponentDefinition" und da über die "Occurences". Dann geh ich eben den Modellbaum durch und zähle wie oft der Name, z.B einer Scheibe, dort auftaucht. Damit sollte es auch gehen...manchmal muss man wohl um die Ecke denken Ich werde es jetzt mal auf diesem Wege versuchen. Vielen Dank für Deine Hilfe und Deine Mühen... Gruß Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer

 Beiträge: 9807 Registriert: 01.12.2003 Inventor 20xx, Visual Studio Express
|
erstellt am: 05. Mrz. 2013 09:51 <-- editieren / zitieren --> Unities abgeben:          Nur für nightmare40
Zitat: Original erstellt von nightmare40: Dann geh ich eben den Modellbaum durch und zähle wie oft der Name, z.B einer Scheibe, dort auftaucht...Dominik
Dann aber die auf Referenz gesetzten Bauteile möglichst nicht mitzählen. Bauteile die zwar unterschiedliche Namen aber gleiche Teilenummern besitzen könne man ggf. zusammenfassen. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 05. Mrz. 2013 09:56 <-- editieren / zitieren --> Unities abgeben:          Nur für nightmare40
Moin Das muß ich jetzt nicht verstehen oder? Wie mein Vorredner schon anmerkt, kommen eine Reihe Prüfungen auf dich zu, die zwingend sind. Die Stückliste erledigt das alles für dich bereits im Vorfeld. Du brauchst nur noch zugreifen. Code: Public Sub BOMToDataGrid()On Error GoTo Ende Dim oTransMgr As TransactionManager Set oTransMgr = ThisApplication.TransactionManager Dim oTrans As Transaction Set oTrans = oTransMgr.StartTransaction(ThisApplication.ActiveDocument, "Normteile auslesen") ' Set a reference to the assembly document. ' This assumes an assembly document is active. Dim oDoc As AssemblyDocument Set oDoc = ThisApplication.ActiveDocument ' Set a reference to the BOM Dim oBOM As BOM Set oBOM = oDoc.ComponentDefinition.BOM 'Enable Parts only view If oBOM.PartsOnlyViewEnabled = False Then oBOM.PartsOnlyViewEnabled = True End If ' Set a reference to the "Parts Only" BOMView Dim oPartsOnlyBOMView As BOMView Set oPartsOnlyBOMView = oBOM.BOMViews.Item("Nur Bauteile") Dim oRow As BOMRow Dim sPath As String For Each oRow In oPartsOnlyBOMView.BOMRows sPath = oRow.ReferencedFileDescriptor.FullFileName If InStr(sPath, "Normteile") Then MsgBox "Ich, " & sPath & " bin ein Normteil und komme " & oRow.ItemQuantity & " mal in der Baugruppe vor.", vbInformation 'Oder man schiebt hier die Daten ins DataGrid. End If Next Ende: oTrans.Abort End Sub
------------------ MfG Ralf  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nightmare40 Mitglied Dipl.- Ing. (FH) Verfahrenstechnik

 Beiträge: 21 Registriert: 02.01.2010 DELL Precision Workstation T5500 Win7 Enterprise 64bit RAM: 8GB ATI FirePro V8700 mit 1GB RAM Autodesk Inventor Suite 2011
|
erstellt am: 05. Mrz. 2013 10:00 <-- editieren / zitieren --> Unities abgeben:         
Hallo Udo, das ist mir auch gerade eingefallen . Die Auf "Referenz" gesetzten Bauteile werde ich ausklammern und nicht mitzählen. Die Bauteilnamen sind bei uns eindeutig, die Teilenummern sind nicht immer ausgefüllt. Daher reicht es wenn ich die Bauteilnamen vergleiche. Aber vielen Dank für die Hinweise...manchmal verliert man ja doch die Übersicht Gruß Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nightmare40 Mitglied Dipl.- Ing. (FH) Verfahrenstechnik

 Beiträge: 21 Registriert: 02.01.2010 DELL Precision Workstation T5500 Win7 Enterprise 64bit RAM: 8GB ATI FirePro V8700 mit 1GB RAM Autodesk Inventor Suite 2011
|
erstellt am: 05. Mrz. 2013 10:48 <-- editieren / zitieren --> Unities abgeben:         
|
nightmare40 Mitglied Dipl.- Ing. (FH) Verfahrenstechnik

 Beiträge: 21 Registriert: 02.01.2010 DELL Precision Workstation T5500 Win7 Enterprise 64bit RAM: 8GB ATI FirePro V8700 mit 1GB RAM Autodesk Inventor Suite 2011
|
erstellt am: 05. Mrz. 2013 12:53 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ralf, hat super funktioniert . Als ich herausgefunden hatte, dass die Stücklistenansicht "Unbenannt" heißt konnte ich das erreichen, was ich wollte. Ich habe den ersten Teil also folgendermaßen veränder:
Code: Dim oTransMgr As TransactionManager oTransMgr = m_inventorApplication.TransactionManager Dim oTrans As Transaction oTrans = oTransMgr.StartTransaction(m_inventorApplication.ActiveDocument, "Normteile auslesen") ' Set a reference to the assembly document. ' This assumes an assembly document is active. Dim oDoc As AssemblyDocument oDoc = m_inventorApplication.ActiveDocument ' Set a reference to the BOM Dim oBOM As BOM oBOM = oDoc.ComponentDefinition.BOM ' Set a reference to the "Unbenannt" BOMView Dim oUnbenanntBOMView As BOMView oUnbenanntBOMView = oBOM.BOMViews.Item("Unbenannt")
Die Baugruppe bekommt davon gar nichts mit und will also auch nicht gespeichert werden. Die Schleife passe ich dann so an, dass die Menge gleich ins DataGrid übernommen wird. Also nochmal vielen Dank für Eure Hilfe, alleine wäre ich da nie drauf gekommen. Gruß Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 05. Mrz. 2013 13:19 <-- editieren / zitieren --> Unities abgeben:          Nur für nightmare40
Dafür sind wir ja da.  Nich immer, aber meistens. Das mit der Stücklistenansicht "unbenannt" finde ich aber seltsam. Die Ansicht "unbenannt" ist die Modelldatenansicht. Da eierst du ja wieder durch die komplette Struktur und mußt die Normteile a) prüfen ob Phantom oder Referenz und b) selber zusammenaddieren. Nimm die Ansicht "Nur Bauteile" oder sind deine Norm"teile" manchmal auch Norm"baugruppen"? ------------------ MfG Ralf  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
nightmare40 Mitglied Dipl.- Ing. (FH) Verfahrenstechnik

 Beiträge: 21 Registriert: 02.01.2010 DELL Precision Workstation T5500 Win7 Enterprise 64bit RAM: 8GB ATI FirePro V8700 mit 1GB RAM Autodesk Inventor Suite 2011
|
erstellt am: 05. Mrz. 2013 13:32 <-- editieren / zitieren --> Unities abgeben:         
Ja es kommt schon mal vor, z.B. ein Schraubensatz nach DIN 7990 ist bei uns eine Baugruppe. Da der Satz eine Artikelnummer hat, brauche ich auch keine weitere Aufschlüsselung nach Schraube und Mutter. Die Modellansicht reicht für meinen Anwendungsfall vollkommen aus, dann bau ich da eben noch noch ein, zwei Prüfungen mit ein. Aber durch die Ansicht bleibt halt die durchsuchte Baugruppe wie sie ist. So konnte ich das AddIn um eine Funktion erweitern...Vielen Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |