Autor
|
Thema: Formel im Produkt ändern (1165 mal gelesen)
|
Langer11 Mitglied
Beiträge: 31 Registriert: 30.07.2015 Catia V5 R29 VBA
|
erstellt am: 10. Sep. 2020 14:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich möchte in einem Produkt, eine Formel eines Produktparamenters mittels eines Makros ändern. Dem Parameter BG_Baugruppennummer_gez ist bereits eine Formel zugewiesen. Diese Formel soll auf den Formelwert "BG_Bezeichnung->Extract(0,9)" geändert werden. Beim Einzelteil hat dies einwandfrei funktioniert (siehe Makro Einzelteil). Das selbe Makro möchte ich für ein Produkt erstellen. Hierzu habe ich das Makro Baugruppe/Produkt (siehe unten) erstellt. Leider funktioniert es nicht. Es erscheint keine Fehlermeldung, aber die Formel ändert sich leider auch nicht. Kann mir hier bitte jemand weiterhelfen? Makro Einzelteil: Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.Part Set relations1 = part1.Relations Set formula1 = relations1.Item("Formula.2") formula1.Modify "ET_Bezeichnung ->Extract(0,9) " formula1.Rename "Formula.2"
Versuch Makro Baugruppe/Produkt: Sub CATMain() Set productDocument1 = CATIA.ActiveDocument Set product1 = productDocument1.Product Set publications1 = product1.Publications Set relations1 = product1.Relations Set formula1 = relations1.Item("Formula.2") formula1.Modify "BG_Bezeichnung ->Extract(0,9) " formula1.Rename "Formula.2" End Sub Danke schon mal für eure Hilfe.
Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 10. Sep. 2020 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für Langer11
|
Lionel Hutz Mitglied
Beiträge: 363 Registriert: 26.03.2014 CATIA V5 R20
|
erstellt am: 10. Sep. 2020 15:20 <-- editieren / zitieren --> Unities abgeben: Nur für Langer11
Prüf mal, ob im ersten Part, das verbaut ist, die Formel angepasst wurde. Beim Zugriff auf Parameter in Baugruppen durchläuft Catia den Baum von oben nach unten bis er den Parameter erstmals findet. Ist doof, wenn man "LAENGE" in allen Parts und Products verwendet hat. Dann wird halt der erste genommen der gefunden wird. Habe aber vergessen, wie man dann dran kommt. Vielleicht irgendwie von der letzten Formel ausgehend nach vorne durchsuchen. 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: 10. Sep. 2020 16:13 <-- editieren / zitieren --> Unities abgeben: Nur für Langer11
Servus Statt über den Namen der Formel zu gehen (der nicht mal eindeutig benannt wurde) würde ich eher auf den Parameter ansprechen und per OptionalRelation auf die Formel zugreifen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Langer11 Mitglied
Beiträge: 31 Registriert: 30.07.2015 Catia V5 R29 VBA
|
erstellt am: 15. Sep. 2020 08:26 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ja die Formel heißt wirklich "Formula.2" Das Macro funktioniert nun wenn ich es auf ein Produkt integriertes Unterprodukt anwende. Das Problem ist aber, wie von Lionel Hutz vermutet, sobald ich ein Unterprodukt in meinem Produkt habe, ändert das Macro nicht die Formel des Parameters BG_Baugruppennummer_gez des Hauptprodukts sondern des Unterprodukts innerhalb des Hauptprodukts. Wie muss ich mein Macro anpassen, damit ich auf die Formel des Hauptprodukts zugreife (unabhängig davon wieviele Unterprodukte/Parts im Produkt sind)? @Bernd: Ich bin noch Anfänger im Programmieren, kannst du mir weiterhelfen, wie ich die Formel mittels OptionalRelation abändern kann? Danke schon mal für eure Hilfe. Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 15. Sep. 2020 09:27 <-- editieren / zitieren --> Unities abgeben: Nur für Langer11
Hallo Langer11, Hier mal ein Beispiel für OptionalRelation:
Code: Set oFormula1 = strParam1.OptionalRelation 'Verknüpfte Relation zu Parameter suchen oRelations.Remove (oFormula1.Name) strParam1.Value = " " Set oFormula1 = oRelations.CreateFormula("", "", strParam1, "neueFormel hier eintragen")
------------------ Gruß Uwe Auch Catia ist nur ein Mensch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Langer11 Mitglied
Beiträge: 31 Registriert: 30.07.2015 Catia V5 R29 VBA
|
erstellt am: 15. Sep. 2020 14:35 <-- editieren / zitieren --> Unities abgeben:
Hallo Uwe, danke für den Beispielcode. Funktioniert soweit einwandfrei in einem Produkt ohne Unterprodukte. Mein Problem liegt jetzt nur darin, das Catia das Produkt von oben nach unten abarbeitet. Der Parameter existiert in allen Unterprodukten als auch in meinem Hauptprodukt, deshalb ändert das Macro leider die Formel des Parameters im ersten Unterprodukt. Ich möchte aber die Formel des Hauptproduktparameters (Parameter im aktiven Produkt) ändern. Wie kann ich auf die Produkt-Parameter des Hauptprodukts (aktives Produkt) zugreifen, ohne das er alle Teile/Unterprodukte durcharbeitet? Ich möchte ausschließlich die Formel des Parameters in der aktiven Baugruppe (Hauptprodukt) ändern. Gibt es hier einen Weg? Momentan sieht mein Code folgendermaßen aus: Set productDocument1 = CATIA.ActiveDocument Set product1 = productDocument1.Product.ReferenceProduct Set strParam2 = product1.Parameters.Item("BG_Baugruppennummer_gez") Set oRelations = product1.Relations Set oFormula2=strParam2.OptionalRelation 'Verknüpfte Relation zu Parameter suchen oRelations.Remove (oFormula2.Name) Set oFormula2 = oRelations.CreateFormula("", "", strParam2, "BG_Bezeichnung->Extract(0,9)") Danke schon mal 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: 15. Sep. 2020 17:22 <-- editieren / zitieren --> Unities abgeben: Nur für Langer11
Servus Die Schwierigkeiten entstehen, da in der Parameter- bzw Relation-Collection einer Baugruppe auch alle Parameter bzw Formeln der Einzellteile/Unterbaugruppen enthalten sind. So sollte es für eine Baugruppe und einem Part klappen: Code: Sub CATMain()Dim oDocument as ProductDocument Dim oProduct as Product Dim oParameter as Parameters Dim oFormula as Formula Set oDocument = CATIA.ActiveDocument if TypeName(oDocument) = "ProductDocument" then Set oParameters = oDocument.Product.Parameters elseif TypeName(oDocument) = "PartDocument" then Set oParameters = oDocument.Part.Parameters else Exit Sub end if Set oParameter = oParameters.RootParameterSet.DirectParameters.Item("BG_Baugruppennummer_gez") Set oFormula = oParameter.OptionalRelation oFormula.Modify "BG_Bezeichnung ->Extract(0,9)" End Sub
Gruß Bernd Edit: Code modifiziert dass er im CATPart und CATProduct laufen sollte ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |