Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parts werden nicht ordnungsgemäß geschlossen

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:  Parts werden nicht ordnungsgemäß geschlossen (2608 mal gelesen)
geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 08. Mrz. 2012 11:51    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

Mahlzeit!

Schreibe gerade an einem umfangreicheren Makro und habe noch eine Stelle die mir Kopfschmerzen bereitet.

Ich erstelle aus einem Produkt ein AllCATPart und exportiere dieses als z.B. "igs". Problem eins ist, dass nach Erzeugung des AllCATParts auf einmal zwei Dokumente mehr im Produkt vorhanden sind. Problem Nummer zwei ist, dass mein Versuch das AllCATPart zu schließen, scheitert, es sind noch genauso viele Dokumente geöffnet.. Hier mal ein Minimalbeispiel:

Code:

Sub CATMain()

Set documents1 = CATIA.Documents
Set productDocument1 = documents1.Add("Product")
Set product1 = productDocument1.Product
Set Prod2Part = product1.GetItem("DECProductToPart")

MsgBox documents1.Count

Prod2Part.Run
sError = Prod2Part.GetError

Set AllCATPart = Prod2Part.GetResult

MsgBox documents1.Count

AllCATPart.ExportData "D:\Neuer Ordner\test.igs", "igs"
AllCATPart.Close

MsgBox documents1.Count

End Sub


Habe mich an einem Workaround versucht, die Liste der geöffneten Dokumente zu speichern und diese dann nach dem Export mit den geöffneten Dokumenten zu vergleichen, um schließlich die Differenz zu schließen, hat aber nicht so ganz geklappt und ist sicherlich auch nicht DIE Lösung..

Gruß

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

K.Siebert
Mitglied
Tech Zeichner


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

Beiträge: 415
Registriert: 19.05.2007

Win XP
Catia V5 R19
Catia V5 R24

erstellt am: 08. Mrz. 2012 15: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 Nur für geekv5 10 Unities + Antwort hilfreich

habe das Skript mal getestet , bei mir macht es das was es soll
am Schluss kommt zwar eine Fehlermeldung (Sicherung von *.igs ist Fehlgeschlagen)
dennoch wird das *igs korrekt gespeichert

------------------
Sei Schlau bleib Dumm !!?!!

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 08. Mrz. 2012 17: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

Ja, der Export klappt auch, allerdings geht es mir darum, dass nach dem Export zwei zusätzliche Parts geöffnet sind, obwohl ich das sichbare AllCATPart geschlossen habe!

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 09. Mrz. 2012 10:04    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 geekv5 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von geekv5:
Ja, der Export klappt auch, allerdings geht es mir darum, dass nach dem Export zwei zusätzliche Parts geöffnet sind, obwohl ich das sichbare AllCATPart geschlossen habe!

Hallo Geek,
das verstehe ich noch nicht ganz, könntest du das mal näher erklären?

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 09. Mrz. 2012 11:40    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 geekv5 10 Unities + Antwort hilfreich

Hallo,
also ich habe es so versucht...

Code:

Sub CATMain()

Dim Documents1 As Documents
Dim ProductDocument1 As Document
Dim Product1 As Product
Dim Prod2Part As DECProductToPart
Dim sError As String
Dim AllCATPart As PartDocument
Dim oCount As Integer
Dim nCount As Integer

Set Documents1 = CATIA.Documents
oCount = Documents1.Count
Set ProductDocument1 = CATIA.ActiveDocument
Set Product1 = ProductDocument1.Product
Set Prod2Part = Product1.GetItem("DECProductToPart")

CATIA.DisplayFileAlerts = False

MsgBox Documents1.Count

Prod2Part.Run
sError = Prod2Part.GetError
MsgBox Documents1.Count

Set Prod2Part = Nothing
Set Product1 = Nothing

nCount = Documents1.Count

Set AllCATPart = Documents1.Item(nCount)

MsgBox Documents1.Count

AllCATPart.ExportData "D:\test\test.igs", "igs"

For i = 1 To nCount - oCount
    Documents1.Item(oCount + 1).Close
Next

CATIA.DisplayFileAlerts = True
MsgBox Documents1.Count

End Sub


...und bekomme das Temppart, welches von der Prozedur DECProductToPart angelegt wird geschlossen. Das abgeleitete CATAllPart lässt sich aber einfach nicht schließen! Keine Chance! Selbst wenn du alle anderen Dokumente vorher geschlossen hast, um vll. Abhängigkeiten zu beseitigen wie auch immer, bleibt das CATAllPart im Hintergrund geöffnet bzw. im Speicher geladen.

Einzige Möglichkeit, die ich sehe ist, mit der StartCommand-Prozedur zu arbeiten oder eben das geladene Part zu ignorieren.

Achso BTW du kannst die Meldungen mit "CATIA.DisplayFileAlerts = False" deaktivieren. Vergiss nur nicht diese am Ende wieder zu aktivieren.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

RSchulz
Moderator²
Head of CAD, Content & Collaboration / IT-Manager



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

Beiträge: 5541
Registriert: 12.04.2007

@Work
Lenovo P510
Xeon E5-1630v4
64GB DDR4
Quadro P2000
256GB PCIe SSD
512GB SSD
SmarTeam V5-6 R2016 Sp04
CATIA V5-6 R2016 Sp05
E3.Series V2019
Altium Designer/Concord 19
Win 10 Pro x64

erstellt am: 09. Mrz. 2012 11:57    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 geekv5 10 Unities + Antwort hilfreich

...selbst wenn du das Part von Hand schließt wird es nicht ordnungsgemäß geschlossen. Ergo scheint irgendetwas bei der Generierung schon nicht in Ordnung zu sein. Demnach ist die undokumentierte Funktion wohl nicht sauber im Ablauf. Wie gesagt entweder ignorieren oder auf StartCommand ausweichen. Das Daten und Dateien nach dem Schließen im Zwischenspeicher bleiben, ist allerdings so oder so nicht neues.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 09. Mrz. 2012 12:02    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

Hey Rick,

das ist ja mies, aber immerhin habe ich jetzt einen Ansatz um weiter zu kommen.. Dass es im Speicher bleibt ist keine gute Lösung für mich, da der Speicher irgendwann sicher rappelvoll ist, wenn ich eine Reihe Exporte abarbeite.. Dann bleibt wohl nur noch Startcommand, wo bei ich da ja noch auf OK klicken muss, wo ich wieder bei der Windows API wäre 

Auf jeden Fall vielen Dank! =)

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 20. Mrz. 2012 17:49    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!

Habe das Problem jetzt mit dem Startcommand erfolgreich lösen können, allerdings (noch) mit einer Einschränkung:

Wenn ich ein Part in Bearbeitung (blau) gesetzt habe, findet er das Startcommand natürlich nicht, da es im Part Design nicht verfügbar ist..

Jetzt würde ich gerne das oberste Produkt im aktiven Dokument blau setzen lassen, habe auch schon mehrere Möglichkeiten probiert, leider ohne Erfolg:


1. Es passiert nichts, bin mir aber auch nicht sicher ob das der richtige Befehl für mein Anliegen ist..

Code:

Set productdocument1 = CATIA.ActiveDocument
Set product1 = productdocument1.Product

product1.ActivateDefaultShape


2. Es tut sich auch nichts.. Habe natürlich vorher eine Selektion vorgenommen.. Vielleicht brauche ich den deutschen String?

Code:

CATIA.StartCommand "Activate Terminal Node"

3. Er öffnet ungewollt leere Produkte..

Code:

CATIA.StartWorkbench ("Assembly")

Schönen Feierabend!

Nachtrag:

Wusste doch, dass ich das schonmal irgendwo gelesen hatte, hier die Lösung:

Code:

Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate ("CATIA V5")
WshShell.SendKeys "c:" & "FrmActivate" & Chr(13), True

Wobei es nur funktioniert, wenn ich es aus CATIA heraus starte, sonst schreibt er "c:FrmActivate" in den Makro Code.. Kann es sein, dass Zeile 2 nicht das macht, was sie soll oder gehört der VBA Editor auch zu "CATIA V5"?

[Diese Nachricht wurde von geekv5 am 21. Mrz. 2012 editiert.]

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

geekv5
Mitglied
Konstrukteur


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

Beiträge: 214
Registriert: 13.07.2011

Notebook<P>MSI GX660R
Intel Core i5 460M
8GB DDR3
1GB Mobility HD5870
80GB Intel X25-M Postville
250GB HDD<P>Desktop<P>AMD Phenom II X4 965
1GB HD4890@ FirePro V8700
8GB DDR3-1600
2,5TB HDD<P>Belinea 2485 S1W 24" MVA

erstellt am: 21. Mrz. 2012 10: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

Leider ergeben sich immer neue Probleme, habe mal einen Minimalcode zusammengebastelt, wenn die MsgBox auskommentiert wird, funktioniert es, sonst nicht.. Habe schon diverse Sleep und DoEvents gestreut, hat aber nichts geholfen..

Code:

Sub CATMain()

Set selection1 = CATIA.ActiveDocument.Selection

selection1.Clear
selection1.Add CATIA.ActiveDocument.Product

SendKeys "c:FrmActivate" & "{ENTER}", True
MsgBox "test"

End Sub


Danke schonmal    

Edit:

OK habs jetzt doch mit dem Wechsel ins Assembly gelöst, prüfe jetzt vorher ob ein Part in Bearbeitung ist und wenn ja schalte ich um ins Assembly.. Hatte vorher das Problem, dass er ein neues Produkt geöffnet hat, wenn ich schon im Assembly war..

Wäre allerdings trotzdem interessant, wie (oder ob) das mit dem Sendkeys ordentlich funktioniert..

[Diese Nachricht wurde von geekv5 am 21. Mrz. 2012 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