Autor
|
Thema: User Properties in Excel (3035 mal gelesen)
|
MG8684 Mitglied
Beiträge: 27 Registriert: 02.01.2012 CatiaV5R20 Intel Xeon E5630 2,53 GHz 12 GB RAm Windows 7 64 Bit
|
erstellt am: 20. Apr. 2012 12:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich würde mir gerne eine Stücklsite in Excel schreiben aber ich verzweifele schon am anfang. Ich hab folgenden Code über die SuFu gefunden: Dim y As Integer 'Zeilenzähler Dim xMenge 'Spalte Menge Dim xName 'SPalte Name Dim xPartNumber 'Spalte PartNumber Sub CATMain() y = 1 xMenge = 1 xName = 2 xPartNumber = 3 xWerkstoff = 4 Set CATIA = GetObject(, "CATIA.APPLICATION") Set oRoot = CATIA.ActiveDocument Set oProducts = oRoot.Product.Products Call SUB_ProdScan(oProducts) End Sub Sub SUB_ProdScan(oProducts) ySuche = 1 For I = 1 To oProducts.Count 'Über alle Teile der aktuellen Hirarchie If oProducts.Item(I).Products.Count > 0 Then 'Enthält Teil Kinder? Set oProductsUebergabe = oProducts.Item(I).Products Call SUB_ProdScan(oProductsUebergabe) 'Rekursiver Aufruf mit Übergabe der Kinder Else 'keine Kinder schonDrinn = False 'Schalter zurücksetzten ySuche = 1 'Suchzeile an den Anfang 'Schauen ob schon drinn, wenn ja Menge erhöhen Do While Tabelle1.Cells(ySuche, xPartNumber) <> "" If Tabelle1.Cells(ySuche, xPartNumber) = oProducts.Item(I).PartNumber Then Tabelle1.Cells(ySuche, xMenge).Value = Tabelle1.Cells(ySuche, xMenge).Value + 1 schonDrinn = True y = y - 1 Exit Do End If ySuche = ySuche + 1 Loop 'Wenn nich nicht drinn in nächste freie Zeile schreiben If schonDrinn = False Then Tabelle1.Cells(y, xMenge).Value = 1 Tabelle1.Cells(y, xName).Value = oProducts.Item(I).Name Tabelle1.Cells(y, xPartNumber).Value = oProducts.Item(I).PartNumber End If y = y + 1 End If Next End Sub Soweit so gut nur würde ich gerne diesen Code um die User Properties der Einzelteile meiner Baugruppe erweitern wie z.B. Werkstoff etc. Da ist der knackpunkt ich komm nicht drauf wie ich Eigenschaften auslesen soll.... weiß jemand rat? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 20. Apr. 2012 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für MG8684
|
MG8684 Mitglied
Beiträge: 27 Registriert: 02.01.2012 CatiaV5R20 Intel Xeon E5630 2,53 GHz 12 GB RAm Windows 7 64 Bit
|
erstellt am: 20. Apr. 2012 13:09 <-- editieren / zitieren --> Unities abgeben:
|
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 20. Apr. 2012 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für MG8684
Hallo, Ja so in dieser Art hier wird von Catia gelesen Code: Sub CATMain()Set productDocument1 = CATIA.ActiveDocument Set product1 = productDocument1.Product Name_Part = product1.PartNumber Dim partDocument1 As Document Set partDocument1 = CATIA.ActiveDocument Dim product1 As CATBaseDispatch Set product1 = partDocument1.GetItem(Name_Part) Set product1 = product1.ReferenceProduct Dim part1 As Part Set part1 = partDocument1.Part Dim parameters1 As Parameters Set parameters1 = part1.Parameters Dim strParam1 As Parameter '------------------------------------------------------------- Set strParam1 = parameters1.Item("Eigenschaften\Werkstoff") 'strParam1.Value = WerkstoffVonExcel WerkstoffNachExcel = strParam1.Value Set product1 = product1.ReferenceProduct msgbox WerkstoffNachExcel '------------------------------------------------------------- End Sub
um nach Catia zu schreiben:
Code: Sub CATMain() Set objXL = GetObject(, "Excel.Application") objXL.Visible = True Set oAWBook = objxl.Workbooks WerkstoffVonExcel = objXL.Worksheets.Item("Tabelle1").Cells(2,6).Value 'erste Zahl fuer Zelle (1,2,3...) zweite Zahl fuer Spalte (A,B,C...) ........ Code ........... end Sub
------------------ Sei Schlau bleib Dumm !!?!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 20. Apr. 2012 22:43 <-- editieren / zitieren --> Unities abgeben: Nur für MG8684
Servus MG8684 Auf die Userproperties solltest zB über: oProducts.Item(I).ReferenceProduct.Userproperties.Item("Werkstoff")zugreifen können bzw über: oProducts.Item(I).ReferenceProduct.Userproperties.Item("Werkstoff").ValueAsStringden Wert ausgeben lassen. Diesen Wert musst du dann nur noch in der Tabelle eintragen lassen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MG8684 Mitglied
Beiträge: 27 Registriert: 02.01.2012 CatiaV5R20 Intel Xeon E5630 2,53 GHz 12 GB RAm Windows 7 64 Bit
|
erstellt am: 23. Apr. 2012 12:24 <-- editieren / zitieren --> Unities abgeben:
Erstmal danke für eure antworten.... Kanni ich nicht einfach oProducts.Item(I).ReferenceProduct.Userproperties.Item("Werkstoff").ValueAsString If schonDrinn = False Then Tabelle1.Cells(y, xMenge).Value = 1 Tabelle1.Cells(y, xName).Value = Products.Item(I).Name Tabelle1.Cells(y, xPartNumber).Value=Products.Item(I).PartNumber End If dazwischen setzen mit bezug auf die zelle in excel? Vielleicht ist noch zu erwähnen das dieses makro aus exdcel gestartet wird.... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Apr. 2012 12:51 <-- editieren / zitieren --> Unities abgeben: Nur für MG8684
Servus Ja, genau an dieser Stelle musst du den Code um die entsprechende Zeile ergänzen (Userpropertie in Zelle eintragen) Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MG8684 Mitglied
Beiträge: 27 Registriert: 02.01.2012 CatiaV5R20 Intel Xeon E5630 2,53 GHz 12 GB RAm Windows 7 64 Bit
|
erstellt am: 23. Apr. 2012 13:06 <-- editieren / zitieren --> Unities abgeben:
Wenn ich das um diese zeile ergänze bekomme ich die Fehlermeldung: Objekt unterstützt diese Eigenschaft oder Methode nicht! deklariert hab ich die spalte auch am anfang Dim y As Integer 'Zeilenzähler Dim xMenge 'Spalte Menge Dim xName 'SPalte Name Dim xPartNumber 'Spalte PartNumber Dim xWerkstoff 'Spalte Werkstoff
Sub CATMain() y = 1 xMenge = 1 xName = 2 xPartNumber = 3 xWerkstoff = 4 Set CATIA = GetObject(, "CATIA.APPLICATION") Set oRoot = CATIA.ActiveDocument Set oProducts = oRoot.Product.Products Call SUB_ProdScan(oProducts) End Sub Sub SUB_ProdScan(oProducts) ySuche = 1 For I = 1 To oProducts.Count 'Über alle Teile der aktuellen Hirarchie If oProducts.Item(I).Products.Count > 0 Then 'Enthält Teil Kinder? Set oProductsUebergabe = oProducts.Item(I).Products Call SUB_ProdScan(oProductsUebergabe) 'Rekursiver Aufruf mit Übergabe der Kinder Else 'keine Kinder schonDrinn = False 'Schalter zurücksetzten ySuche = 1 'Suchzeile an den Anfang 'Schauen ob schon drinn, wenn ja Menge erhöhen Do While Tabelle1.Cells(ySuche, xPartNumber) <> "" If Tabelle1.Cells(ySuche, xPartNumber) = oProducts.Item(I).PartNumber Then Tabelle1.Cells(ySuche, xMenge).Value = Tabelle1.Cells(ySuche, xMenge).Value + 1 schonDrinn = True y = y - 1 Exit Do End If ySuche = ySuche + 1 Loop 'Wenn nich nicht drinn in nächste freie Zeile schreiben If schonDrinn = False Then Tabelle1.Cells(y, xMenge).Value = 1 Tabelle1.Cells(y, xName).Value = oProducts.Item(I).Name Tabelle1.Cells(y, xPartNumber).Value = oProducts.Item(I).PartNumber Tabelle1.Cells(y, xWerkstoff).Value = oProducts.Item(I).Userproperties.Item("Werkstoff").ValueAsString End If y = y + 1 End If Next End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Apr. 2012 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für MG8684
Servus Schon mal mit "ReferenceProduct" (wie ich vorgeschlagen hatte) probiert? Gibt es den Parameter? Probiere mal mit dem Local/Watchfenster den "Pfad" zum Userparameter zu verifizieren/korrigieren Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MG8684 Mitglied
Beiträge: 27 Registriert: 02.01.2012 CatiaV5R20 Intel Xeon E5630 2,53 GHz 12 GB RAm Windows 7 64 Bit
|
erstellt am: 23. Apr. 2012 14:07 <-- editieren / zitieren --> Unities abgeben:
Also ich habs mal eingesetzt mehr aber auch nicht :-) gearbeitet habe ich damit noch nicht.... PArameter sind schon bereits angelegt...möchte nur alle aprts auslesen und in excel übertragen udn gegebenfalls die Menge erhöhen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 23. Apr. 2012 20:39 <-- editieren / zitieren --> Unities abgeben: Nur für MG8684
|
MG8684 Mitglied
Beiträge: 27 Registriert: 02.01.2012 CatiaV5R20 Intel Xeon E5630 2,53 GHz 12 GB RAm Windows 7 64 Bit
|
erstellt am: 24. Apr. 2012 08:27 <-- editieren / zitieren --> Unities abgeben:
Kein Problem Wenigstens sieht die Fehlermeldung schone inmal anders aus also wenn ich es unter excel laufen lass dann sagt der mir "systemfehler....." und unter VBA in Excel bekomm ich die Meldung "das Verfahren UserRefProperties ist fehlgeschlagen" Der steigt schon beim ersten Teil aus....der name und die PArtnummer werden in die zellen geschrieben aber beim Werkstoff bleibt der dann hängen.....habs auch schon mal mit anderen eingenschaften versucht funzt auch nicht..... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MG8684 Mitglied
Beiträge: 27 Registriert: 02.01.2012 CatiaV5R20 Intel Xeon E5630 2,53 GHz 12 GB RAm Windows 7 64 Bit
|
erstellt am: 20. Sep. 2012 14:52 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, nach langer zeit würd ich das thema doch gerne wieder aufgreifen..... also über Ratschläge vone uch bin ich schon dankbar habe mir mein Makro auch weiter anpassen können aber im Bezug auf die UserProps seh ich einfach kein Licht am ende des Tunnels...uich glaube ich seh den Wald vor lauter Bäume nicht. Stueckliste.Cells(y, xWerkstoff).Value = oProducts.Item(I).UserRefProperties.Item("Werkstoff").Value Das Verfahren USerRefProperties ist fehlgeschlagen lautet die Fehlermeldung....selbst mti ReferenceProdukt bekomm ich das nicht in den Griff..... Ich weiß nciht wo mein fehler liegt ...könnte mir jemand helfen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 20. Sep. 2012 17:23 <-- editieren / zitieren --> Unities abgeben: Nur für MG8684
Servus Ein Blick ins Watchfenster hat mir gezeigt dass man über den Namen nicht direkt oder nur sehr schlecht auf die Userparameter zugreifen kann (Namen zB "Part1\Eigenschaften\Werkstoff"). Deshalb entweder eine Schleife über alle UserRefproperties laufen lassen und die letzten Buchstaben auswerten, bis du den entsprechenden Parameter gefunden hast. (Zugriff über oProducts.Item(i).ReferenceProduct.Userproperties.item(x)) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 20. Sep. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MG8684 Mitglied
Beiträge: 27 Registriert: 02.01.2012 CatiaV5R20 Intel Xeon E5630 2,53 GHz 12 GB RAm Windows 7 64 Bit
|
erstellt am: 21. Sep. 2012 07:32 <-- editieren / zitieren --> Unities abgeben:
Hi, dacht ich mir doch das über den namen etwas schwierig wird aber die UserProps sind doch auch durchnummeriert könnte man nicht da was anhand von Positionen machen? Deiner antwort zufolge müsste ich ja den namen in meinem code mit dem UserProp vergleichen...ging deine antwort noch weiter? Denn bei entweder würde man ja noch etwas erwarten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 21. Sep. 2012 08:18 <-- editieren / zitieren --> Unities abgeben: Nur für MG8684
Servus Über die Item-Nummer schlägt fehl wenn der Parameter nicht existiert oder CATIA die Parameter anders durchnummeriert hat. Oder das ReferenceProduct selektieren und in der Selektion suchen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |