Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Pro ENGINEER
  VB Regenerieren / Parameter

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo
Autor Thema:  VB Regenerieren / Parameter (2324 mal gelesen)
supTom
Mitglied
CAD-Support


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

Beiträge: 42
Registriert: 19.02.2008

erstellt am: 25. Apr. 2014 16: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

HAllo zusammen,

ich hänge an einer Baugruppe fest, die über einen Parameter gesteuert wird.
Je nach Veränderung des Parameters ändert sich eine Fläche (nach vorherigem Regenerieren), die ich zusammen mit dem Parameter in eine Datei schreibe.

Klappt von Hand alles ganz gut, nur in VB kann ich nichts auf Befehl regenerieren.
Das Programm spult die Veränderung des Parameters durch und nach Programmschluß gibt es eine große Designänderung da die Regenerierung mit dem Endwert des Parameters durchgeführt wird. In der Ausgabedatei stehen die einzelnen Parameterwerte, die ausgelesene Fläche bleibt aufgrund der fehlenden Regenerierung gleich.
Hier der Programmausschnitt:

            For i As Integer = CType(fStartWinkel, Integer) To CType(fEndWinkel, Integer)
                ' Durch alle Winkel
                errMsg = Change_Parameter(oAsmModel, "DREHWINKEL", CType(i, String))
                'Model muß regeneriert werden
                '======================================================================
                'Loop through all the components     
                '======================================================================
                components = oAsmModel.ListFeaturesByType(False, EpfcFeatureType.EpfcFEATTYPE_COMPONENT)
                For j = 0 To components.Count - 1
                    component = components.Item(j)
                    component.Regenerate()
                Next

                ' oModel.Regenerate(Nothing)
regen:
                Try
                    oModel.Regenerate(Nothing) 'regenerieren
                Catch ex As Exception
                    If ex.Message = "pfcExceptions::XToolkitRegenerateAgain" Then
                        GoTo regen
                    ElseIf ex.Message = "pfcExceptions::XToolkitBadContext" Then
                        'MsgBox("Regenerieren Geht nicht! " + ex.Message + Chr(10) + " Creo_Drehwinkel = " + CType(i, String), MsgBoxStyle.Critical, "Abbruch")
                    End If
                End Try

                oModel.RegenerateRelations()

                Dim window As pfcls.IpfcWindow
                window = oSession.CurrentWindow

                window.Activate()
                window.Refresh()

                ' Analysis -> Berechnung und Ausgabe der res. fläche
                errMsg = CountArea(oAsmModel, i, sFileName)

            Next

Es gibt einen XToolkitBadContext Fehler, der eigentlich mit der option regen_failure_handling = resolve_mode aufgefangen werden kann.

Es scheint, ich habe die Hilfe dazu falsch verstanden.

Hat jemand eine Idee wie ich das Assembly dazu zwingen kann alles zu regenerieren?

Viele Grüße
Thomas

------------------
nixblick

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

Creo Parametric 3.0 M120
PDM Essentials 10.1 M040

erstellt am: 28. Apr. 2014 07:29    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 supTom 10 Unities + Antwort hilfreich

Hallo Thomas,

werden die Winkel auch ins richtige Format an deinen Parameter übergeben? (siehe MpfcModelItem und Create***ParamValue)
Ich finde es merkwürdig, dass du den Wert vom 'Drehwinkel' als String übergibst.

Außerdem werden deine Beziehungen nach dem Regenerieren vom Modell regeneriert. Vielleicht ist das hier auch ein Problem?

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

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

supTom
Mitglied
CAD-Support


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

Beiträge: 42
Registriert: 19.02.2008

erstellt am: 09. Mai. 2014 15:38    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 Nico,

habe mir etwas Zeit gelassen, da Programmieren nur neben der Betreuung läuft. Und wenn da viel los ist, kommt die Kür etwas zu kurz.

Da mit der Winkelübergabe klappt. Es wird alles als String in die Routine übergeben, die dann das richtige Format draus macht und an den Parameter übergibt.

Der Hinweis mit dem Ablauf von Regenerieren war gut, brachte aber auch nicht die Lösung.

Ich habe jetzt 2 Sachen gemacht:
Ein Objekt IpfcRegenInstructions erstellt und damit die Regenerierung gesteuert und bin direkt ins Modell gegangen und habe nicht versucht im Assembly Parameter der Komponenten zu regenerieren. So siehts jetzt aus:

                Dim oRegenInst As pfcls.IpfcRegenInstructions

                oRegenInst = (New CCpfcRegenInstructions).Create(False, True, Nothing)

                oRegenInst.AllowFixUI = False
                oRegenInst.ForceRegen = True
                oRegenInst.RefreshModelTree = True
regen:
                Try
                    oModel.Regenerate(oRegenInst) 'regenerieren
                Catch ex As Exception
                    If ex.Message = "pfcExceptions::XToolkitRegenerateAgain" Then
                        GoTo regen
                    ElseIf ex.Message = "pfcExceptions::XToolkitBadContext" Then
                        MsgBox("Regenerieren Geht nicht! " + ex.Message + Chr(10) + " Creo_Drehwinkel = " + CType(i, String), MsgBoxStyle.Critical, "Abbruch")
                    End If
                End Try

Leider kommt immer noch die Exception "XToolkitBad Context" die ja durch die "regen_failure_handling" Option eingefangen werden soll (siehe Hinweise im den Unterlagen zu WF5).

Hat das Regenerieren schon jemand gemacht und hat es geklappt?

Viele Grüße
Thomas

------------------
nixblick

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

NicoFTB
Mitglied
Ingenieur Entwicklung/Konstuktion


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

Beiträge: 806
Registriert: 08.05.2012

Creo Parametric 3.0 M120
PDM Essentials 10.1 M040

erstellt am: 12. Mai. 2014 07:30    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 supTom 10 Unities + Antwort hilfreich

Hallo Thomas,

aus der Dokumentation:


Regeneration in No-Resolve mode (default mode in Creo Elements/Pro) is not supported. This method will throw IpfcXToolkitBadContext, if Creo Parametric is running in No-Resolve mode. To continue with the Pro/ENGINEER Wildfire 4.0 behavior in Resolve mode, set the configuration option 'regen_failure_handling' to 'resolve_mode'.

Edit: Du hast ja schon im ersten Post drüber geschrieben. Also ich habe es hier gerade getestet. Als erstes hatte ich noch regen_failure_handling auf no_resolve_mode -> BadToolKit. Danach auf resolve_mode, und die Regeneration läuft durch.

------------------
Grüße
Nico \o/

Üs - ProE-Beziehungen

[Diese Nachricht wurde von NicoFTB am 12. Mai. 2014 editiert.]

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