| | | KISTERS 3DViewStation optimiert die Lizenzverwaltung für ihre Kunden, eine Pressemitteilung
|
Autor
|
Thema: Formel prüfen ob bereits existiert (611 / mal gelesen)
|
SeeCa Mitglied Mechanical Design Engineer
Beiträge: 13 Registriert: 28.01.2021
|
erstellt am: 17. Jun. 2021 20:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Gemeinde, ich möchte mit einem Makro diverse Parameter und Formeln erstellen, sowie diese miteinander Verknüpfen. Das funktioniert auch soweit ganz gut, bis auf, dass der Haken beim "Update relation at global update command" nicht eingehakt ist. Vielleicht weiß jemand auch hier die Lösung. Nun komme ich aber zu dem Punkt, dass ich bereits bestehende Formeln abprüfen möchte, damit diese nicht erneut erzeugt werden. Hier mein aktueller Stand. Dies funktioniert entsprechend bei den Parametern einwandfrei. Code:
Function Createformular(Params As Parameters, boolIsPrt As Boolean, PrtDoc As PartDocument, ProdDoc As ProductDocument, Relas As Relations) As Integer Dim Param3DVol As RealParam Dim Param3DSurf As RealParam Dim Param3DCoSurf As RealParam Dim Formu As Formula If boolIsPrt Then 'Create 3D Part Volume Formula If CheckExistsRela(Relas, "Volume_cm3") = False Then Set Param3DVol = PrtDoc.Part.Parameters.Item(PrtDoc.Part.Name & "\Properties\AD_WM_Volume_cm3") Set Formu = PrtDoc.Part.Relations.CreateFormula("Volume_cm3", "", Param3DVol, "round(smartVolume(`" & PrtDoc.Part.MainBody.Name & "`)," & """" & "cm3" & """" & ",2)/1cm3") End If 'Create 3D Part Surface Formula If CheckExistsRela(Relas, "Surface_mm2") = False Then Set Param3DSurf = PrtDoc.Part.Parameters.Item(PrtDoc.Part.Name & "\Properties\AD_WM_Surface_mm2") Set Formu = PrtDoc.Part.Relations.CreateFormula("Surface_mm2", "", Param3DSurf, "round(smartWetarea(`" & PrtDoc.Part.MainBody.Name & "`)," & """" & "mm2" & """" & ",2)/1mm2") End If 'Create 3D Part Coated Surface Formula If CheckExistsRela(Relas, "CoatedSurface_mm2") = False Then Set Param3DCoSurf = PrtDoc.Part.Parameters.Item(PrtDoc.Part.Name & "\Properties\AD_WM_CoatedSurface_mm2") Set Formu = PrtDoc.Part.Relations.CreateFormula("CoatedSurface_mm2", "", Param3DCoSurf, "round(1mm ," & """" & "mm2" & """" & ",2)/1mm2") Formu.Deactivate Param3DCoSurf.Value = 0# End If End If End Function Function CheckExistsRela(Relas As Relations, sName As String) As Boolean Dim iRelas As Integer 'check if relation already exist For iRelas = 1 To Relas.Count If Right(Relas.Item(iRelas).Name, Len(sName) + 1) = ("\" & sName) Then CheckExistsRela = True Exit Function End If Next CheckExistsRela = False End Function
Vielen Dank schonmal für eure Hilfe Schöne Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lionel Hutz Mitglied
Beiträge: 451 Registriert: 26.03.2014 CATIA V5 R26
|
erstellt am: 18. Jun. 2021 07:31 <-- editieren / zitieren --> Unities abgeben: Nur für SeeCa
Habe ich die Frage verpasst? Wo ist denn die Beschreibung des Problems? Wenn du Probleme hast festzustellen, ob eine Formel existiert, könntest du andersherum prüfen, ob ein Parameter mit einer Formel verknüpft ist. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SeeCa Mitglied Mechanical Design Engineer
Beiträge: 13 Registriert: 28.01.2021
|
erstellt am: 18. Jun. 2021 09:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Lionel, das Problem ist, dass diese Vorgehensweise irgendwie nicht mit Formeln funktioniert. Trotz der Abfrage erstellt das Makro die Formeln als "deaktiviert". Vielleicht ist in dem Makro auch irgendwo ein Fehler, aber leider finde ich diesen nicht. Die Parameter können bereits ohne Formel vorhanden sein, daher brauche die Abfrage auf die Formel. Sonnige Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3425 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 18. Jun. 2021 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für SeeCa
Hallo SeeCa, die Formel kannst du über ".OptionalRelation" abfragen. Code:
Set oFormula1 = strParam1.OptionalRelation 'Verknüpfte Relation zu Parameter suchen orelations.Remove (oFormula1.Name) 'Verknüpfte Relation zu Parameter löschen
------------------ Gruß Uwe Auch Catia ist nur ein Mensch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|