| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: VBA INVENTOR 2009 (2980 mal gelesen)
|
SMEneu Mitglied
Beiträge: 3 Registriert: 27.01.2009
|
erstellt am: 27. Jan. 2009 11:01 <-- editieren / zitieren --> Unities abgeben:
Hallo, Folgendes habe ich vor: In meiner Baugruppe (*.iam) möchte ich über VBA die Stückliste öffnen und aus der Spalte „OBJEKT“ und „ANZAHL“ einzelnen Werte einer Zelle kopieren und jeweils in die Spalte „ITEM“ und „QTY“ in die jeweilige Zelle einfügen. ITEM und QTY sind benutzerdefinierte I-Property in den Einzelbauteilen. Problem: Bisher habe ich VBA nur unter Excel benützt! Und es fällt mir recht schwer zu verstehen wie ich in VBA unter Inventor auf bestimmte Tabellen und Zellen zugreife, da hier ganz andere befehle benötigt werden.
Lösung: Wenn mir jemand sagen kann wie ich in VBA auf die Stückliste zugreifen kann, Werte aus bestimmten Zellen lesen/kopieren und in andere Zellen den Wert schreiben kann! Vielen Dank für jede Hilfe! Gruß, Sascha
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 27. Jan. 2009 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für SMEneu
|
SMEneu Mitglied
Beiträge: 3 Registriert: 27.01.2009
|
erstellt am: 27. Jan. 2009 13:04 <-- editieren / zitieren --> Unities abgeben:
Hallo, Danke für die Antwort! Ich habe schon versucht mit Hilfe der Programmierungshilfe mir einen Überblick zu verschaffen. Leider beziehen sich die Beispiele nur auf Zeichnungen und ich habe keine Möglichkeit gefunden, auf die Strukturierte-Stückliste in der Baugruppe zuzugreifen und verschiedenen Zellen anzusprechen (Zellen auszulesen und Zellen mit Werten füllen). Gruß, Sascha
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 27. Jan. 2009 13:09 <-- editieren / zitieren --> Unities abgeben: Nur für SMEneu
|
Michael Puschner Ehrenmitglied V.I.P. h.c. Rentner
Beiträge: 12982 Registriert: 29.08.2003
|
erstellt am: 27. Jan. 2009 18:33 <-- editieren / zitieren --> Unities abgeben: Nur für SMEneu
|
SMEneu Mitglied
Beiträge: 3 Registriert: 27.01.2009
|
erstellt am: 29. Jan. 2009 11:31 <-- editieren / zitieren --> Unities abgeben:
Hallo, habe soweit das Problem gelöst. Einen wichtigen Punkt haben ich noch! Und zwar schreibt mein Programm jetzt die Positionsnummer des Teils wie sie in der Baugruppe vergeben sind in die IP des Teils. Ist aber in der Baugruppe eine Baugruppe dann musste ich hierzu einen Abfrage starten lasse. Das klappt auch soweit. Was kann ich aber nun machen wenn in der Baugruppe einen Baugruppe ist in der wieder einen Baugruppe ist usw. Es muss also sowas wie eine Rekursiver Aufruf erstellt werden. Aber wie???? Der Aufruf müsste irgend wo bei der For j Schleife stehen! Dank!
Gruß, Sascha Code: Dim i As Long For i = 1 To oBOMRows.Count ' Get the current row. Dim oRow As BOMRow Set oRow = oBOMRows.item(i) If oRow.ChildRows Is Nothing Then 'Set a reference to the primary ComponentDefinition of the row Set oCompdef = oRow.ComponentDefinitions.item(1) Dim ouserPropSet As PropertySet Set ouserPropSet = oCompdef.Document.PropertySets.item("Inventor User Defined Properties") ouserPropSet.item("ITEM").Value = oRow.ItemNumber Else Dim j As Long For j = 1 To oRow.ChildRows.Count Dim oRow_child As BOMRow Set oRow_child = oRow.ChildRows.item(j) Set oCompdef_child = oRow_child.ComponentDefinitions.item(1) Dim ouserPropSet_child As PropertySet Set ouserPropSet_child = oCompdef_child.Document.PropertySets.item("Inventor User Defined Properties") ouserPropSet_child.item("ITEM").Value = oRow.ChildRows.item(j).ItemNumber Next j End If Next i 'bauteil qty füllen 'Set a reference to the "Structured" BOMView Dim oBOMView_Bauteile As BOMView Set oBOMView_Bauteile = oBOM.BOMViews.item("Nur Bauteile") Dim oBOMRows_B As BOMRowsEnumerator Set oBOMRows_B = oBOMView_Bauteile.BOMRows For i = 1 To oBOMRows_B.Count ' Get the current row_bauteil. Dim oRow_B As BOMRow Set oRow_B = oBOMRows_B.item(i) 'Set a reference to the primary ComponentDefinition of the row Set oCompdef = oRow_B.ComponentDefinitions.item(1) Set ouserPropSet = oCompdef.Document.PropertySets.item("Inventor User Defined Properties") ouserPropSet.item("QTY").Value = oRow_B.ItemQuantity Next i 'bauteil qty Baugruppen füllen 'Set a reference to the "Structured" BOMView For i = 1 To oBOMRows.Count ' Get the current row_bauteil. Set oRow = oBOMRows.item(i) If Not oRow.ChildRows Is Nothing Then 'Set a reference to the primary ComponentDefinition of the row Set oCompdef = oRow.ComponentDefinitions.item(1) Set ouserPropSet = oCompdef.Document.PropertySets.item("Inventor User Defined Properties") ouserPropSet.item("QTY").Value = oRow.ItemQuantity End If Next i
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 29. Jan. 2009 11:39 <-- editieren / zitieren --> Unities abgeben: Nur für SMEneu
|
Masternilix Mitglied
Beiträge: 1 Registriert: 01.07.2009
|
erstellt am: 01. Jul. 2009 15:34 <-- editieren / zitieren --> Unities abgeben: Nur für SMEneu
|
Charly Setter Ehrenmitglied V.I.P. h.c.
Beiträge: 11977 Registriert: 28.05.2002 Trau keiner Diva unter SP2....
|
erstellt am: 17. Aug. 2009 22:56 <-- editieren / zitieren --> Unities abgeben: Nur für SMEneu
Ja. Ich aber nicht ------------------ Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen. Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 18. Aug. 2009 08:29 <-- editieren / zitieren --> Unities abgeben: Nur für SMEneu
|