Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  VBA: Session... SaveAs... Sauerei...

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:  VBA: Session... SaveAs... Sauerei... (2139 mal gelesen)
Schabloneur
Mitglied
Konstrukteur, Programmierer


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

Beiträge: 19
Registriert: 09.04.2014

Dell Precision T3610
Win7 Pro 64bit
CatiaV5 R19 SP9 H106

erstellt am: 05. Sep. 2014 14:16    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 möchte gerne per Makro ein (All-)Catpart umbenennen und mit SaveAs an zwei verschiedenen Orten speichern. Soweit erstmal nix wildes.
Aber: Wiederhole ich diese Prozedur innerhalb einer (Catia)Session und möchte nochmals den gleichen Namen für ein Catpart vergeben, streikt Catia, weil der Name in der Session schon vergeben ist. Hmmm... ok, ist ja bekannt. Da Catia sich nicht gerne in die Karten schauen und nicht mehr geöffnete Dokumente aus der Session löschen lässt, brauche ich eure Hilfe!
==> Kurioserweise kann ich den Ablauf des Umbenennens und Speicherns unendlich oft wiederholen, solange ich diesen per Hand machen! Was macht Catia da anders?  

3 Sachen habe ich schon erfolglos versucht:

1. in einem Temp-Verzeichnis 100e Male (oft hatte ich gelesen, dass fünf Mal reichen würde. haha...) das Catpart mit Zeitstempel umbenannt und dort gespeichert => hat nix gebracht - "method SaveAs failed"
2. mit Catia.Documents.Item(mein Catpart).Close versucht, das Catpart/den Name aus der Session zu bekommen => Catia schließt nix (*)
3. dem Catpart im Namen (Partnumber) einen Zeitstempel angehängt und dann unter dem zu überschreibenden Dateinamen gespeichert => hat nix gebracht - "method SaveAs failed"

Mein Catpart soll als Partnumber die Konvention: Bezeichnung_Datum haben. Der Dateiname entsprechend Bezeichnung_Datum.Catpart
Ich bin jetzt mittlerweile so weit, dass ich (wie bei 3. beschrieben) der Partnumber einen Zeitstempel anhänge: Bezeichnung_Datum_Zeitstempel (Ansonsten kommt zu o.g. "method SaveAs failed" noch ein "method Partnumber failed" o_0 )

Der Dateiname muss aber zwingend die Konvention Bezeichnung_Datum.Catpart einhalten!

Wem die Problemstellung bekannt vor kommt: Ich habe das schon mal in meinem Thema Catvba: Allcatpart-Erstellung mit DECProductToPart beschrieben. Jedoch habe ich diese neue Problemstellung hier her ausgelagert. Der Übersichtlichkeit halber...


Für Ideen und Vorschläge oder auch einfach nur seelischen Beistand bin euch dankbar.  

Verzweifelte Grüße,
Tilo


Edit: Viele haben angeblich die Session mit dem Befehl "Clear History" (bei "Commands"/"All Commands" und den Befehl in eine Toolbar ziehen) leeren können. Funktioniert bei mir nicht. Oben genannte Methodenfehler treten danach immernoch auf. Es wird ja auch nur die Undo-History gelöscht. In Catia.Documents bleibt alles beim alten... 


(*) Bei der Allcatparterstellung per Makro erstellt Catia immer 2 Parts (ersichtlich in Catia.Documents): ein "CATPARTxyz.Catpart" (xyz sind fortlaufende Zahlen) und mein Allcatpart "Bezeichnung_Allcatpart.Catpart". Nur das "CATPARTxyz.Catpart" kann ich per Catia.Documents.Item(dieses Catpart).Close schließen (und aus dieser entfernen). Mein Allcatpart kann ich zwar schließen, jedoch bleibt es in der Liste bestehen. *argh*

------------------
Dem Schabloneur ist nichts zu schwör...

[Diese Nachricht wurde von Schabloneur am 05. Sep. 2014 editiert.]

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: 05. Sep. 2014 15:25    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 Schabloneur 10 Unities + Antwort hilfreich

Hallo,
würde es dir was bringen wenn du dir als zwischen Speicherung einen neuen Ordner anlegst und von dort aus das das erstellte CATPart an die richtige Stelle holst?

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

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

Schabloneur
Mitglied
Konstrukteur, Programmierer


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

Beiträge: 19
Registriert: 09.04.2014

Dell Precision T3610
Win7 Pro 64bit
CatiaV5 R19 SP9 H106

erstellt am: 08. Sep. 2014 10:31    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

Moin,

im Prinzip habe ich das schon probiert, indem ich die unzähligen Zwischenspeicherungen im Temp-Verzeichnis durchgeführt habe. Catia wollte mir aber auch danach nicht mein Part so benennen und speichern, wie ich das gerne haben möchte! (weil der Name eben in der Session schon vorhanden ist) *hmpf*

Meine Idee ist jetzt, das Part mit einem Zeitstempel zwischenzuspeichern, eine neue Catia-Session zu starten, von dort aus das Part umzubenennen (Zeitstempel weg) und an die richtigen Stellen zu speichern. Danach die Session wieder schließen... 

Es gibt ja noch ein kleines Lichtlein am Ende des Tunnels:
Catia kann durchaus innerhalb einer Session einen Namen nochmal verwenden. Man kann ein Part/Produkt aus der Session entladen (unload). Danach kann es wieder in die Session geladen werden (load). Wurde das Part/Produkt zwischenzeitlich geändert (bspw. in einer anderen Session), so sind diese Änderungen wirksam, da Catia die Daten komplett neu läd (sonst sagt Catia einem, dass Änderungen nicht wirksam sind, weil der Name in der Session schon vorhanden ist und die vorhandenen Daten innerhalb der Session verwendet werden.)
Nun, ich befürchte das Licht ist ein entgegenkommender Zug. Habe es nicht geschafft, mein per Makro erstelltes Allcatpart aus der Session zu entladen... 


Geladene Grüße,
Tilo

------------------
Dem Schabloneur ist nichts zu schwör...

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

Schabloneur
Mitglied
Konstrukteur, Programmierer


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

Beiträge: 19
Registriert: 09.04.2014

Dell Precision T3610
Win7 Pro 64bit
CatiaV5 R19 SP9 H106

erstellt am: 08. Sep. 2014 13:03    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

Nebenbei:
Wie lautet der Syntax um eine neue Catia-Session zu starten?
Code:

Sub Neu_Catia()
Dim oCATIA As Object
Set oCATIA = GetObject(, "Catia.Application")
oCATIA.Documents.Open ("s_Pfad" + "TEMP.CATPart")
End Sub


Läuft fehlerfrei durch, allerdings wird das Part in der schon laufenden Session geöffnet. Von einer neuen Catia-Session ist weit und breit keine Spur. Mit CreateObject("Catia.Application") tut sich auch nix.

Obiger Code scheint aber bei Aufruf durch ein externes Programm (bspw. Excel) keine Probleme zu machen (ungetestet, nur mehrfache Foreneinträge ohne Beschwerden deuten darauf hin...)


Grüße,
Tilo

------------------
Dem Schabloneur ist nichts zu schwör...

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: 08. Sep. 2014 14: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 Schabloneur 10 Unities + Antwort hilfreich

Hallo,
eine neue Session kannst Du unter CATScript und VBA mit

Code:

Sub CATMain()

CATIA.SystemService.ExecuteProcessus ("cnext.exe")

End Sub



starten.

Unter VB.net mit:

Code:

      System.Diagnostics.Process.Start("cnext.exe")

Gruß
Peter

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



Systemmanager / Systemingenieur (m/w/d)

  • Technische Führung interdisziplinärer Projektteams zur Entwicklung neuer Waffensysteme
  • Definition von HW- und SW- Anforderungen sowie operativer Kundenanforderungen in modularen Systemarchitekturen
  • Einsatzorientierte Planung, Koordination, Überwachung und Steuerung der Entwicklung, der Integration und zur Inbetriebnahme neuer Waffensysteme
  • Unterstützung und Begleitung von Anfragen bzw....
Anzeige ansehenTeamleitung, Gruppenleitung
Schabloneur
Mitglied
Konstrukteur, Programmierer


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

Beiträge: 19
Registriert: 09.04.2014

Dell Precision T3610
Win7 Pro 64bit
CatiaV5 R19 SP9 H106

erstellt am: 08. Sep. 2014 17:07    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,

danke dafür. Kann ich dem ExecuteProcessus noch mitgeben, dass er mir ein Part öffnen und auf dieses ein Makro ausführen soll?
Es wird ein neues Catia geöffnet und der ExecuteProcessus wartet solange, bis ich dieses Catia wieder geschlossen habe.

Theoretisch könnte das mit

Code:

CATIA.SystemService.ExecuteScript(CATBSTR  iLibraryName, CatScriptLibraryType  iType, CATBSTR  iProgramName, CATBSTR  iFunctionName, CATSafeArrayVariant  iParameters)



funktionieren. Jedoch vermute ich, dass das nur innerhalb der laufenden Session läuft.
Ich vermute es deswegen, weil ich es nicht zum Laufen bekomme. Bekomme den Debugfehler
Zitat:

Funktion oder Schnittstelle kann nur eingeschränkt verwendet werden [...]

Bisher kannte ich es nur davon, das man bspw. Selections mit einem Latebinding versehen musste ("Dim Sel" anstatt "Dim Sel As Selection").
Habe hier aber nichts vorher definiert und bekomme es nicht compiliert (siehe Code).

Code:

Sub Neu_Catia()

CATIA.SystemService.ExecuteScript "TEMP.CATPart", catScriptLibraryTypeDocument, "Mein_Projekt.catvba", "Modul1", params

End Sub


Danke für die Mühe.


Grüße,
Tilo

------------------
Dem Schabloneur ist nichts zu schwör...

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