Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Formel im Produkt ändern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Formel im Produkt ändern (1165 mal gelesen)
Langer11
Mitglied



Sehen Sie sich das Profil von Langer11 an!   Senden Sie eine Private Message an Langer11  Schreiben Sie einen Gästebucheintrag für Langer11

Beiträge: 31
Registriert: 30.07.2015

Catia V5 R29
VBA

erstellt am: 10. Sep. 2020 14:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Makro.png


Formeleditor.png

 
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


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 10. Sep. 2020 15:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Langer11 10 Unities + Antwort hilfreich

Hallo Langer11,

ist im Produkt die Formel des "BG_Baugruppennummer_gez" auch wirklich die "Formula.2" ?

------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lionel Hutz
Mitglied



Sehen Sie sich das Profil von Lionel Hutz an!   Senden Sie eine Private Message an Lionel Hutz  Schreiben Sie einen Gästebucheintrag für Lionel Hutz

Beiträge: 363
Registriert: 26.03.2014

CATIA V5 R20

erstellt am: 10. Sep. 2020 15:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Langer11 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Sep. 2020 16:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Langer11 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Langer11 an!   Senden Sie eine Private Message an Langer11  Schreiben Sie einen Gästebucheintrag für Langer11

Beiträge: 31
Registriert: 30.07.2015

Catia V5 R29
VBA

erstellt am: 15. Sep. 2020 08:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Formel_Editor.png


Produkt_mit_Parameter.png

 
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


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 15. Sep. 2020 09:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Langer11 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Langer11 an!   Senden Sie eine Private Message an Langer11  Schreiben Sie einen Gästebucheintrag für Langer11

Beiträge: 31
Registriert: 30.07.2015

Catia V5 R29
VBA

erstellt am: 15. Sep. 2020 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 15. Sep. 2020 17:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Langer11 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz