| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: zwischen Teilelisten wechseln (3509 mal gelesen)
|
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 21. Jan. 2012 16:56 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen Ich habe mir im Stileditor unter Teileliste 2 Listen erstellt, einmal "Teileliste Bauteil" und einmal "Teileliste Baugruppe". Wie die Namen schon sagen, werden diese Listen den jeweiligen Zeichnungen zugeordnet. Momentan mache ich das händisch (Teileliste einfügen - aussuchen welche - Ableitung anklicken -Teileliste plazieren - fertig). Nun habe ich hier unter Thema "Teileliste Stil" von muelb einen fast-brauchbaren Cote gefunden, bei dem aber der Wechsel zwischen den beiden Listen nicht funktioniert (item(Zahl???)). Wie muss der Cote aussehen damit "Teileliste Bauteil" auf einer IPT-referenzierten Zeichnung erscheint und "Teileliste Baugruppe" auf einer IAM-referenzierten Zeichnung? Ich freue mich auf Eure Hilfe. Gruß ------------------ Didi 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: 24. Jan. 2012 07:37 <-- editieren / zitieren --> Unities abgeben: Nur für Didikalle
Hi Wenn ich mir die Screenshots im anderen Thread ansehe, hast du auf der IDW die die Teileliste Bauteil haben soll auch Ansichten einer Baugruppe mit drauf. Vermutlich referenziert deine Teileliste auf eine dieser BG's, statt auf ein Bauteil. Was steht denn in der "falschen" Teileliste im Fenstertitel, wenn du auf "Teileliste bearbeiten" klickst? ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 24. Jan. 2012 08:29 <-- editieren / zitieren --> Unities abgeben:
Hi, das Bild "wieessoll" zeigt eine Baugruppe mit der Liste, wie ich sie dafür vorgesehen habe. Das Bild "wieeskommt" zeigt die gleiche Baugruppe mit der Liste, die nach benutzen des Codes kommt (Teileliste Bauteil) was aber falsch ist. Das Bild "wieesoll_BT" zeigt ein Bauteil (hier ist keine Baugruppe drauf) mit der richtigen Liste nach benutzen des Codes. Im Fenstertitel steht bei beiden "Teileliste:Bauteilnummer". ------------------ Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 27. Jan. 2012 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für Didikalle
Hallo Didikalle, ich würde erstmal nachprüfen, ob item(1) und item(2) überhaupt der Stückliste entsprechen, welche eingefügt werden soll.... Code: Public Sub StuecklisteEinfügen() Dim oapp As Inventor.Application Set oapp = ThisApplication Dim odoc As Inventor.DrawingDocument Set odoc = oapp.ActiveDocument Dim oStyle As Inventor.PartsListStylesEnumerator Set oStyle = odoc.StylesManager.PartsListStyles Dim oitem As Inventor.PartsListStyle Dim counter As Integer counter = 0 MsgBox "Es sind insgesamt " & oStyle.Count & " Stücklistenstile vorhanden." For Each oitem In oStyle counter = counter + 1 MsgBox "Item " & counter & _ " --- Name: " & oitem.Name Next End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 27. Jan. 2012 13:57 <-- editieren / zitieren --> Unities abgeben:
Hi der Code war sehr hilfreich. Ich konnte so die Items finden. Leider bringt das nicht den Erfolg. Item 18 zeigt Teileliste Baugruppe und Item 19 Teileliste Bauteil. Egal wie ich die Werte in den Klammern () setze, es kommt immer die Bauteil-Liste. Über die manuelle Einfügung der Listen funktioniert das. Ich bin ratlos Ich habe auch schon andere Listennamen kreiert, so ist auf Item 7 Teileliste (Baugruppe) und auf Item 8 Teileliste (Bauteil), anlehnend an den Normlisten, es klappt einfach nicht. Dein Code zeigt mir 20 Listen an. Kann man die nicht benötigten Listen löschen, und wenn ja, wie? Liebe Grüße ------------------ Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 27. Jan. 2012 16:41 <-- editieren / zitieren --> Unities abgeben: Nur für Didikalle
K, begeben wir uns also auf Fehlersuche: Als erstes mal anschauen ob der Unterschied zwischen Baugruppe und Bauteil funktioniert. Code: Set oStyle = oDrawDoc.StylesManager.PartsListStyles.Item(1) ' Zuweisen der Stücklisten-Stile für Baugruppe und Einzelteil If oDrawingView.ReferencedDocumentDescriptor.ReferencedDocumentType = kAssemblyDocumentObject Then msgbox "Baugruppe" Set oStyle = oDrawDoc.StylesManager.PartsListStyles.Item(1) ElseIf oDrawingView.ReferencedDocumentDescriptor.ReferencedDocumentType = kPartDocumentObject Then msgbox "Bauteil" Set oStyle = oDrawDoc.StylesManager.PartsListStyles.Item(2) Else Set oStyle = oDrawDoc.StylesManager.PartsListStyles.Item(1) MsgBox "Konnte Dokumenttyp der Standardansicht nicht erkennen" End If
Desweiteren würde ich nochmal überprüfen ob jedesmal oSheet.PartsLists.Item(1) auch die richtige Stückliste ist, ob oDrawDoc.StylesManager.PartsListStyles.Item(1) auch das gewünschte item ist... Code: Set oPartsList = oSheet.PartsLists.Add(oDrawingView, oPlacementPoint) 'Aktuelle Stüli referenzieren Dim oActualPartsList As PartsList Set oActualPartsList = oSheet.PartsLists.Item(1) ' PartsListStyles Objekt erzeugen und belegen mit der Baugruppen-Stückliste Deutsch Dim oStyle As PartsListStyle Set oStyle = oDrawDoc.StylesManager.PartsListStyles.Item(1)
Desweiteren sollte ja oPartsList und oActualPartsList das gleiche sein, oder?!? Speicher Dir Deinen bisherigen Code mal weg und ersetz oActualPartsList durch oPartsList... Und natürlich die Zeile mit Dim oActualPartsList komplett löschen. Und noch ein Fehler der passieren kann: Hast Du im Stil- Editor deine Stile als lokaler Stil oder in der Stilbibliothek gespeichert?!? Wenn Sie nur lokal gespeichert sind, würde es das Verhalten auch erklären...
[Diese Nachricht wurde von noctis79 am 27. Jan. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 28. Jan. 2012 10:34 <-- editieren / zitieren --> Unities abgeben:
Hi, ich habe die Codes eingefügt und verändert wie vorgeschlagen. Baugruppe=Baugruppe und Bauteil=Bauteil, das ist schon mal ok. Die Listen sind alle in der Stilbibliothek gespeichert. Wenn ich die Liste auf der Zeichnung öffne steht im Kopf nur Teileliste:und die Bauteilnummer (siehe JPEG´s). Zitat: Desweiteren würde ich nochmal überprüfen ob jedesmal oSheet.PartsLists.Item(1) auch die richtige Stückliste ist, ob oDrawDoc.StylesManager.PartsListStyles.Item(1) auch das gewünschte item ist...
Wie kann ich das feststellen? ------------------ Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 28. Jan. 2012 10:38 <-- editieren / zitieren --> Unities abgeben:
|
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 28. Jan. 2012 10:48 <-- editieren / zitieren --> Unities abgeben: Nur für Didikalle
K, mach ma nen Haken bei Titel und vergeb da einen eindeutigen Namen (Baugruppe.jpg). Die verwendete StüLi- Vorlage bekommst Du heraus, indem Du einen doppelklick auf die Stückliste machst, oben gibt es dann verschiedene Auswahlmöglichkeiten z.B. von A-Z sortieren, Neu nummerieren und Tabellen- Layout. Tabellen Layout anklicken und Du bekommst die Informationen die Du brauchst. Zitat:
Wie kann ich das feststellen?
Code: msgbox oSheet.PartsLists.count
Wenn ein größerer Wert als 1 zurückgegeben wird dann sind mehrere Stücklisten auf der Zeichnung vorhanden... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 28. Jan. 2012 11:31 <-- editieren / zitieren --> Unities abgeben:
Hi noctis79 wenn Dummheit weh tät, würde ich wahrscheinlich nur schreiend rumlaufen. Weil das Sortieren im Code nicht funktionierte, habe ich es abgeschaltet aber auch die Stilzuweisung. Die habe ich wieder aktiviert und siehe da, es funktioniert. Deine Hilfecodes sind aber auch sehr hilfreich und dafür danke ich Dir. Unities sind unterwegs. Herzlichen Dank nochmal und liebe Grüße ------------------ Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noctis79 Mitglied Konstrukteur/ CAD-Administrator
Beiträge: 164 Registriert: 07.10.2009 Inventor Pro 2017 Cideon Workspace
|
erstellt am: 29. Jan. 2012 10:18 <-- editieren / zitieren --> Unities abgeben: Nur für Didikalle
Hast aber selber den Fehler gefunden! Mich würde noch interessieren, was passiert wenn schon eine Teileliste vorhanden ist?!? Kannst Du Dir ja nochmal anschauen und evtl. am Code noch was ändern damit dort keine "Fehler" passieren.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Didikalle Mitglied Konstrukteur
Beiträge: 91 Registriert: 07.10.2011 Ich nutze Inventor 2016 mit dem BS Win 10
|
erstellt am: 29. Jan. 2012 11:27 <-- editieren / zitieren --> Unities abgeben:
Hi das habe ich auch gelöst, wie auch die Sortierung. Hier der komplette Code: Code: Public Sub Teileliste() On Error Resume Next Dim oDrawDoc As DrawingDocument Set oDrawDoc = ThisApplication.ActiveDocument Dim oSheet As Sheet Set oSheet = oDrawDoc.ActiveSheet If oSheet.DrawingViews.Count > 0 Then Dim oDrawingView As DrawingView Set oDrawingView = oSheet.DrawingViews(1) Debug.Print "Erstansicht = " & oDrawingView.Name Else MsgBox "Bitte erstellen Sie zuerst eine Erstansicht!" GoTo AbbruchMarker End If If oSheet.PartsLists.Count > 0 Then MsgBox "Liste schon vorhanden!" GoTo AbbruchMarker End If Dim oBorder As Border Set oBorder = oSheet.Border Dim oPlacementPoint As Point2d Set oPlacementPoint = ThisApplication.TransientGeometry.CreatePoint2d(0, 0) Dim oPLDimensionPoint As Point2d Dim oPartsList As PartsList Set oPartsList = oSheet.PartsLists.Add(oDrawingView, oPlacementPoint) Set oPLDimensionPoint = oPartsList.RangeBox.MinPoint Dim oLeftBottomPoint As Point2d Dim oRightUpperPoint As Point2d If Not oBorder Is Nothing Then Set oLeftBottomPoint = oBorder.RangeBox.MinPoint Set oRightUpperPoint = oBorder.RangeBox.MaxPoint Else MsgBox "Kein Rahmen Eingefügt!" Dim oNoBorderPoint As Point2d Set oNoBorderPoint = ThisApplication.TransientGeometry.CreatePoint2d(0, 0) Set oLeftBottomPoint = oNoBorderPoint Set oRightUpperPoint = oNoBorderPoint End If Dim oVec As Vector2d ' Abmasse des Zeichnungskopfens plus Höhe des Zeichnungskopfes Set oVec = ThisApplication.TransientGeometry.CreateVector2d(18.4, 5.525 - oPLDimensionPoint.Y) Dim oDisplacementVector As Vector2d Set oDisplacementVector = ThisApplication.TransientGeometry.CreateVector2d(oRightUpperPoint.X, oLeftBottomPoint.Y + oVec.Y) Call oPartsList.Delete Call oPlacementPoint.TranslateBy(oDisplacementVector) Set oPartsList = oSheet.PartsLists.Add(oDrawingView, oPlacementPoint) Set oPartsList = oSheet.PartsLists.Item(2) Dim oStyle As PartsListStyle Set oStyle = oDrawDoc.StylesManager.PartsListStyles.Item(2) If oDrawingView.ReferencedDocumentDescriptor.ReferencedDocumentType = kAssemblyDocumentObject Then ' MsgBox "Baugruppe" Set oStyle = oDrawDoc.StylesManager.PartsListStyles.Item(18) ElseIf oDrawingView.ReferencedDocumentDescriptor.ReferencedDocumentType = kPartDocumentObject Then ' MsgBox "Bauteil" Set oStyle = oDrawDoc.StylesManager.PartsListStyles.Item(19) Else Set oStyle = oDrawDoc.StylesManager.PartsListStyles.Item(2) MsgBox "Konnte Dokumenttyp der Standardansicht nicht erkennen" End If ' MsgBox oSheet.PartsLists.Count ' Stil zuweisen oPartsList.Style = oStyle ' Teileliste sortieren Dim sPartsListSortString1 As String sPartsListSortString1 = "OBJEKT" Dim sPartsListSortString2 As String sPartsListSortString2 = "ANZAHL" Dim sPartsListSortString3 As String sPartsListSortString3 = "BAUTEILNUMMER" Call oPartsList.Sort(sPartsListSortString1, True, sPartsListSortString2, True, sPartsListSortString3, True) AbbruchMarker: End Sub
Einen schönen Sonntag noch Gruß ------------------ Didi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |