Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  mehrfacher Makroaufruf = Fehler, Document scheinbar noch im Speicher

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:  mehrfacher Makroaufruf = Fehler, Document scheinbar noch im Speicher (1586 mal gelesen)
CoolEagle
Mitglied
NC-Programmierer


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

Beiträge: 45
Registriert: 14.11.2003

erstellt am: 24. Mrz. 2014 14: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

Hallo,

ich habe das Problem, dass ein generiertes CATPart (GenerateCATPartfromProduct) scheinbar selbst nach dem Schliessen noch im Speicher verbleibt.

Beim 2. Aufruf des Makros bleibt es in der Zeile mit der PartNumber-Änderung hängen (ScriptingERR_1002), weil ein CATPart dieser Benennung bereits im Speicher existiert. Breche ich dann das Makro ab und schliesse das CATPart manuell, kommt auch der Hinweis, dass das neue CATPart im Speicher verbleibt:
"Modifications on ... are still active because the ... is in use in other windows or it has not been unloaded from session because of Undo/Redo stack."

Hat da jemand eine Idee?

Code:

Sub CATMain()

'Produkt öffnen
V5ProductName = "c:\temp\v4tov5migration.CATProduct"
Set V5Product = CATIA.Documents.Open(V5ProductName)

'GenerateCATPartfromProduct ablaufen lassen
Set Prod2Part = V5Product.Product.GetItem("DECProductToPart")
Prod2Part.Run
Set AllCATPart = Prod2Part.GetResult

'Produkt schliessen und Objekt löschen
V5Product.Close
Set V5Product = Nothing

'GenerateCATPartfromProduct zurücksetzen
Set Prod2Part = Nothing

'CATPart benennen
AllCATPart.Product.PartNumber = "abba"

'AllCATPart schliessen und Objekt löschen
AllCATPart.Close
Set AllCATPart = Nothing

End Sub


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

Trilemma
Mitglied
staatl. gepr. Techniker


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

Beiträge: 254
Registriert: 20.08.2010

Catia V5 R19 SP8
Windows7 64bit 12GB 2,93GHz
Dell Precision T3500

erstellt am: 24. Mrz. 2014 15:11    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 CoolEagle 10 Unities + Antwort hilfreich

Hallo,
wir haben bei uns so ein "Speicher-Reset"-Makro im Einsatz.
Du könntest folgenden Code in Deinen einbauen:

Code:

Sub CATMain()

Dim DocumentArray() As Document
Dim Counter As Variant
Dim Msg As String
Dim InputValue As Long
Dim ChoosedButton As Integer
Dim Text As String
Dim OK As Integer, n As Integer

Text = ""
Text = Text + "Soll ALLES gelöscht werden????"
 
OK = MsgBox(Text, vbOKCancel, "Catia Arbeitsspeicher löschen")
If OK <> 1 Then Exit Sub

On Error Resume Next

ReDim DocumentArray(CATIA.documents.Count)
Msg = ""

For n = 1 To 5
    For Counter = 1 To CATIA.documents.Count
        Set DocumentArray(Counter) = CATIA.documents.Item(Counter)
        Msg = CStr(Counter) + ".  " + CATIA.documents.Item(Counter).Name + Chr(13) + Chr(10) + "      " + Left(CATIA.documents.Item(Counter).Path, 40) + Chr(13) + Chr(10) + Chr(13) + Chr(10)
        'MsgBox (Msg)
        DocumentArray(Counter).Close
    Next
Next

End Sub



Gruß
Peter

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

CoolEagle
Mitglied
NC-Programmierer


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

Beiträge: 45
Registriert: 14.11.2003

erstellt am: 24. Mrz. 2014 16:06    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 Peter,

dankeschön erstmal, aber das war es noch nicht. Aber durch Deine Hilfe kann ich jetzt folgendes sagen:

Direkt nach dem 1. Durchlauf meines Makros, bleiben 2 Documents im Speicher.

Das 1. Document kann ich als Item anspechen (CATPart3-CATPart) und mit .Close schliessen.
Das 2. Document bleibt bestehen. Spreche ich es mit Item an, bekomme ich einen Fehler (The method Item failed). Baue ich die Schleife in eine For-Each-Schleife um, bleibt eben dieses 2. Document trotzdem immer bestehen.

Gibt es noch eine weitere Möglichkeit den Speicher zu leeren?

Gruß, Jan

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: 24. Mrz. 2014 16:28    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 CoolEagle 10 Unities + Antwort hilfreich

Servus
Du könntest Catia neu starten.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

CoolEagle
Mitglied
NC-Programmierer


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

Beiträge: 45
Registriert: 14.11.2003

erstellt am: 25. Mrz. 2014 08:47    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

-

[Diese Nachricht wurde von CoolEagle am 25. Mrz. 2014 editiert.]

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

CoolEagle
Mitglied
NC-Programmierer


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

Beiträge: 45
Registriert: 14.11.2003

erstellt am: 25. Mrz. 2014 11:05    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 Bernd,

genau das möchte ich umgehen 

Für mich sieht es so aus, als würde das "DECProductToPart" ein undefiniertes CATPart im Speicher festhalten. Hat noch jemand eine Idee, wie man dieses aus dem Speicher schmeissen / den Speicher leeren kann?

Gruß, Jan

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: 25. Mrz. 2014 11:28    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 CoolEagle 10 Unities + Antwort hilfreich

Servus
Das Makro läuft erst beim umbenennen in einen Fehler?
Könntest du nicht auf die Änderung der PartNumber verzichten bzw eine eindeutigen String verwenden (Zähler, Datum mit Urzeit, ....)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

CoolEagle
Mitglied
NC-Programmierer


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

Beiträge: 45
Registriert: 14.11.2003

erstellt am: 25. Mrz. 2014 11:34    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 Bernd,

der Fehler taucht erst beim Umbenennen auf, weil das frische CATPart dann einen Namen erhält, der in der Session schon vorhanden ist, ja.

Ein Timestamp in die Bennenung mit einzubringen ist allerdings eine Variante, das werde ich als Notlösung in Betracht ziehen. Allerdings wäre es ja eleganter den Speicher zu bereinigen ;-)

Gruß, Jan

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