| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Optimiertes Einkaufserlebnis dank interaktiver 3D-Modelle im Webshop , ein Anwenderbericht
|
Autor
|
Thema: Abfragen ob Positionsnummer gesetzt wurde (mittels VBA) (2211 / mal gelesen)
|
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 02. Jun. 2017 14:12 <-- editieren / zitieren --> Unities abgeben:
Hallo ihr lieben, weiß einer von euch, ob man mittels vba die Werte der Stücklistenspalte abfragen kann, in der merkiert wird, ob die Position bereits in der Zeichnung angezogen wird? Vielen Dank euch schon mal. Liebe Grüße
Zeichnerschlumpf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
Beiträge: 559 Registriert: 07.01.2005 i7-9700k 32GB DDR4-RAM Nvidia RTX 2060 SSD 970 m.2 Win10-64 (21H2) AIP 2020.3 Dell U3417W
|
erstellt am: 02. Jun. 2017 18:06 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Hallo Zeichnerschlumpf, das geht z.B. so: Das Makro gibt eine MsgBox mit allen Pos ohne Pos-Nr. aus Code: Sub Balloon_Check() 'überprüfen: alle Bauteile positioniert? (Ballooned) Dim oDoc As Inventor.Document Set oDoc = ThisApplication.ActiveDocument If Not oDoc.DocumentType = kDrawingDocumentObject Then Exit Sub If oDoc.ReferencedDocuments.Count > 1 Then MsgBox ("Mehr als eine IAM in der IDW dargestellt" & vbLf & vbLf & "keine Auswertung möglich!") Exit Sub End If Dim oSheet As Sheet Dim oPartsList As PartsList Dim i As Integer Dim s As String s = "" Dim PosFehlt As Boolean PosFehlt = False Dim PL_Anz As Integer PL_Anz = 0 For Each oSheet In oDoc.Sheets PL_Anz = PL_Anz + oSheet.PartsLists.Count Next 'oSheet If PL_Anz = 0 Then 'keine SL vorhanden MsgBox ("ok - keine Stückliste vorhanden (IPT ?)") Exit Sub End If 'PL_anz = 0 Dim MaxAnz As Integer MaxAnz = oDoc.ReferencedDocuments.Item(1).ReferencedDocuments.Count 'Dim PL As PartsList Dim BlattNr As Integer Dim RefName As String RefName = "" Dim PosArray(100) As Boolean 'max 100 SL-Zeilen auswerten 'Balloone prüfen For Each oSheet In oDoc.Sheets For Each oPartsList In oSheet.PartsLists Call PartsListSort 'SL sortieren, dass die Nr. richtig angezeigt wird For i = 1 To oPartsList.PartsListRows.Count If oPartsList.PartsListRows.Item(i).Ballooned Then '= False PosArray(i) = True 's = s & vbLf & i End If Next i Next 'oPartsList Next 'oSheet 'erste Partslist auf allen Blättern suchen For i = 1 To oDoc.Sheets.Count If oDoc.Sheets.Item(i).PartsLists.Count > 0 Then 'PL = oDoc.Sheets.Item(i).PartsLists.Item(1) BlattNr = i Exit For End If Next i Dim fehlende As Integer fehlende = 0 Dim oColl As ObjectCollection Set oColl = ThisApplication.TransientObjects.CreateObjectCollection 'Pos-Nr. und Zei-Nr. anzeigen For i = 1 To oDoc.Sheets.Item(BlattNr).PartsLists.Item(1).PartsListRows.Count If PosArray(i) = False Then fehlende = fehlende + 1 RefName = oDoc.Sheets.Item(BlattNr).PartsLists.Item(1).PartsListRows.Item(i).ReferencedFiles.Item(1).DisplayName s = s & vbLf & i & vbTab & RefName 'RefDoc.DisplayName 'Teil in allen Views highliten, wenn es keinen Balloon hat (funktioniert noch nicht) 'Call oColl.Add(oDoc.Sheets.Item(BlattNr).PartsLists.Item(1).PartsListRows.Item(i).ReferencedFiles.Item(1).FullFileName) End If Next i If s <> "" Then PosFehlt = True MsgBox (fehlende & " Teile ohne Pos-Nr.: " & s) Else MsgBox ("ok - alle Teile mit Pos-Nr.") End If 'fehlende Balloons anbringen If PosFehlt Then '*** Hier wäre super, wenn das Makro alle Teile ohne Balloon selektieren könnte '*** und danach die Pos-Nr. ergänzen könnte, End If 'PosFehlt End Sub 'Balloon_Check
Vielleict kannst du mir ja bei dem letzten Punkt - fehlende Teile selektieren - helfen ------------------ Gruß Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Zeichnerschlumpf Mitglied Technischer Zeichner
Beiträge: 79 Registriert: 26.01.2010 AutoCAD 2005-2018 LT AutoCAD 2009-2018 Mechanical Inventor Professional 8-2018 + Space Pilot pro Pault Professional 2016
|
erstellt am: 06. Jun. 2017 16:32 <-- editieren / zitieren --> Unities abgeben:
|
Knut78 Mitglied Konstruktionsingenieur
Beiträge: 61 Registriert: 26.04.2007 Windows Inventor 2017
|
erstellt am: 06. Feb. 2019 10:36 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Hallo, habe mir Freude dieses Makro gefunden, aber bei mir läuft das leider nicht. Leider habe ich auch 0,0 Ahnung von VBA, daher die Frage ob da jemand eine einfache Lösung kennt. Ich habe mir das Makro einfach kopiert und ausgeführt, und dann kam die Fehlermeldung, siehe angehangenes Bild. Danke im Voraus!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
Beiträge: 559 Registriert: 07.01.2005 i7-9700k 32GB DDR4-RAM Nvidia RTX 2060 SSD 970 m.2 Win10-64 (21H2) AIP 2020.3 Dell U3417W
|
erstellt am: 06. Feb. 2019 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Du kannst das Sortieren einfach weglassen: Code: For Each oPartsList In oSheet.PartsLists 'Call PartsListSort 'SL sortieren, dass die Nr. richtig angezeigt wird For i = 1 To oPartsList.PartsListRows.Count If oPartsList.PartsListRows.Item(i).Ballooned Then '= False PosArray(i) = True 's = s & vbLf & i End If Next i Next 'oPartsList
Seit IV-2017 kann Inventor die Stückliste immer selbst automatisch sortieren, da braucht es die Sortierung nicht mehr. Dazu musst du nur den Haken bei Sortieren in der Stückliste setzen. ------------------ Gruß Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Knut78 Mitglied Konstruktionsingenieur
Beiträge: 61 Registriert: 26.04.2007 Windows Inventor 2017
|
erstellt am: 06. Feb. 2019 11:08 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Hallo Roland, vielen Dank für die schnelle Antwort. Ich sortiere die Stückliste im 3D schon immer zuerst nach Norm und dann nach Benennung. Dann Nummeriere ich die Positionen neu durch. Hat das einen Einfluß darauf? Kann ich das dann nicht mehr machen? Danke im Voraus, Karsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Knut78 Mitglied Konstruktionsingenieur
Beiträge: 61 Registriert: 26.04.2007 Windows Inventor 2017
|
erstellt am: 06. Feb. 2019 11:08 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
|
Knut78 Mitglied Konstruktionsingenieur
Beiträge: 61 Registriert: 26.04.2007 Windows Inventor 2017
|
erstellt am: 06. Feb. 2019 11:34 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Hallo nochmal, ich habe das jetzt erst mal an einer kleinen Baugruppe getestet. Im Bild sieht man, daß ich einen Stücklistenballon weg gelassen habe. Da würde ich dann bei der Message Box erwarten, daß nur Bauteil 1 angegeben wird, aber es werden alle drei Bauteile aufgelistet. Mache ich da grundlegend was falsch? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
Beiträge: 559 Registriert: 07.01.2005 i7-9700k 32GB DDR4-RAM Nvidia RTX 2060 SSD 970 m.2 Win10-64 (21H2) AIP 2020.3 Dell U3417W
|
erstellt am: 06. Feb. 2019 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Hast du mehrere Bauteillisten in der IDW? Was zeigt deine Bauteilliste in der linken Spalte bei Doppelkick an? Ich habe gerade nochmals geprüft: Die Meldung zeigt genau das Teil ohne Ballon an.
------------------ Gruß Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Knut78 Mitglied Konstruktionsingenieur
Beiträge: 61 Registriert: 26.04.2007 Windows Inventor 2017
|
erstellt am: 06. Feb. 2019 13:01 <-- editieren / zitieren --> Unities abgeben: Nur für Zeichnerschlumpf
Die Fehlermeldung, wenn ich mehrere iam in der Zeichnung habe, funktioniert. Das hatte ich schon getestet. Wenn ich mir die Bauteilliste anschaue wird in der ersten Spalte der fehlende Stücklisten-Ballon angezeigt, siehe Bild. Ich muß gesehen, ich kannte diese Funktion nicht und damit kann man schon gute schauen, welche Stücklisten-Ballons noch fehlen. Schön wäre natürlich, wenn das Makro funktioniert und man eine Liste der fehlenden Ballons bekommt, aber so geht das natürlich auch. Danke für die Hilfe! Gruß, Karsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |