Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Zugriff auf temporäre CGRs im Cache mit Pfad > 259 Zeichen

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:  Zugriff auf temporäre CGRs im Cache mit Pfad > 259 Zeichen (2026 mal gelesen)
tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 29. Aug. 2008 06:50    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 kopiere temporäre cgr-Dateien, welche CATIA beim Arbeiten im CACHE-Mode automatisch im Cache-Verzeichnis anlegt per Script in andere Ordner.
Dabei tritt bei großen Verschachtelungstiefen der Ordner (in welchen die original Modelle: .CATParts, .models .etc) abgelegt sind, folgendes
Problem auf:
Im Cache-Verzeichnis "baut" Catia die Ordner-Struktur selbstständig nach, d.h. das temporäre CGR eines Parts welches z.B. im Ordner  \Projekt\Oem\Test\Beispiel\123
abgelegt ist findet sich in C:\Temp\CATCache\cgr\#13\Projekt\Oem\Test\Beispiel\123 wieder. Wenn zudem der Laufwerksbuchstabe (hier: Z) einem speziellen Ordner auf einem Server entspricht, so wird das auch noch in die Struktur integriert, also z.B. C:\Temp\CATCache\cgr\Servername\dfs\RedirectedFolders\Username\#13\Projekt\Oem\Test\Beispiel\123
Auch der Name des temporären cgrs wird (im vergleich zum org. Part) um einiges länger,aus Test.CATPart z.B. wird Test.CATPart.2008-08-11-13.04.06.cgr

Ist nun der absolute Pfad eines CATParts schon recht lang (z.B. 240 Zeichen), so steigt er für die temporären cgrs in den vorliegenden Fällen auf über 260 Zeichen an (280-290)

Will ich in VB6 auf die Files zugreifen (die teporären cgrs in der Cache Struktur) mit

Code:
Set oFS = CreateObject("Scripting.FileSystemObject")
Set oFile = oFS.GetFile(Path)

so tritt ein Error (Err.Number 53) auf: Datei kann nicht gefunden werden / existiert nicht.

Der Grenzwert für die Zeichenlänge des Pfades scheint bei 259 Zeichen zu liegen, d.h. ab dem 260sten tritt der Error auf.

Die sich im CACHE befindlichen Dateien können im Windows Explorer (oder TotalCommander oder sonst was) werder kopiert, gelöscht, umbenannt noch sonst was werden.

Nun zu meiner eigentlichen Frage: Kann ich die Dateien noch irgendwie (in VB) kopieren? Wenn ja, wie? Z.B. einen teil des Pfades duch eine Umgebungsvariable ersetzen (oder so was in der Art)?
Und: Wieso kann CATIA die Dinger überhaupt anlegen?

Ich hoffe irgendjemand hat einen Info für mich. Dieser Post findet sich auch im VB-Forum.

Gruss & einen schönen Tag TomTom

------------------
tomtom1972

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 29. Aug. 2008 07: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 tomtom1972 10 Unities + Antwort hilfreich

Hallo TomTom,

eine wirklich sehr gute Frage, deren Lösung mich auch interessieren würde.
Schon versucht das ganze in Teilstrings zu zerlegen und diese dann zu übergeben?

Bzw. jeden Folder einzeln zu holen und dann in seinen File-Objekten das gewünschte raus zu ziehen?
Weil wenn du die Folder Struktur durchgehst musst du ja nur dne String des nächsten Folders übergeben...

Vielleicht hilft's

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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: 29. Aug. 2008 08:00    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 tomtom1972 10 Unities + Antwort hilfreich

Servus
AFAIKAs far as i know (So viel ich weiss) kann man in Windows (zumindest bei NTFS Partitionen) auch einem Ordner ein Laufwerksbuchstaben zuweisen. So könntest du den Pfad kürzen und somit unter die 259 Zeichen kommen.

Gruß
Bernd

PS: Das Arbeiten mit einer Umgebungsvariable hört sich auch vielversprechend an

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

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 29. Aug. 2008 08: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

Hallo HoBLila,

danke für deine Antwort.
Hilft aber nix. Deinen Vorschlag habe ich schon versucht.

Es gibt auch noch den ShortPath, d.h. die verkürzte (DOS) Schreibweise für den absoluten Pafd (LongPath). Über den gehts auch nicht.

Eine Idee war wie gesagt noch der Aufruf der Datei über eine Umegbungsvariable, sprich einen Teil des Pfades ersetzen.
Also z.B. eine Variable erzeugen: cPATHPart und ihr den Wert mitgeben (aus obrigem Bsp.):
C:\Temp\CATCache\cgr\Servername\dfs\RedirectedFolders\Username
und dann aufrufen über
cPATHPart\#13\Projekt\Oem\Test\Beispiel\123\Test.CATPart.2008-08-11-13.04.06.cgr.
Das bekomme ich aber nicht hin, da der Path (des Files) dann doch wieder der komplette String ist.

Auch das ist noch ein Ansatz: Wenn ich in einer DOS-Shell (Eingabeaufforderung) mit Subst einen ganzen Pfad-Abschnitt durch einen Laufwerksbuchstaben ersetzte, also z.B. Subst N: C:\Temp\CATCache\cgr\Servername\dfs\RedirectedFolders\Username
dann kann ich die Dateien wieder ganz normal bearbeiten. Der Path des File.Objects fängt ist dann auch nur N:\...
Ob ich das in VB "fliegend" hinbekomme, also für jede Datei einzeln (rekursiv) bei Zeichenlänge Pfad > 259 einen Teil des Pfades durch Subst ersetzten, die Datei wegkopieren, dann das Laufwerk wieder löschen etc. weiss ich noch nicht.

Falls ich eine Lösung finde, poste ich sie hier.

EDIT: Genau, bgrittmann. Du warst schneller.


Danke und Gruss TomTom


------------------
tomtom1972

[Diese Nachricht wurde von tomtom1972 am 29. Aug. 2008 editiert.]

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: 29. Aug. 2008 08:09    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 tomtom1972 10 Unities + Antwort hilfreich

Servus
Mir ist da noch was eingefallen: Vielleicht könnte es mit "Symbolischer Verknüpfung" (siehe hier oder mit "Hart Links" gehen.

Gruß
Bernd

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

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2008
Plateia, Canalis
Visual Basic

erstellt am: 29. Aug. 2008 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 Nur für tomtom1972 10 Unities + Antwort hilfreich

Hallo TomTom,
Zitat:
ich kopiere temporäre cgr-Dateien, ... per Script in andere Ordner.

Warum? Datensicherung? Freigeben von Speicherplatz?

In der c't gab's da mal ein geniales Backup Programm, welches auch für Versionsarchivierung verwendet werden kann. So weit ich mich erinnere wurden Benutzer/Ersteller und Ursprungspfad als Zusatzinformationen mitgespeichert. Einstellbar war auf ein "Verfallsdatum", sprich: Wie lange sollen die Daten vor dem entgültigem Löschen behalten werden.

Wenn es das ist was Du vor hast könnte ich mich mal auf die Suche machen, oder einer der Forumsteilnehmer hat es im Einsatz und kanns Dir weitergeben.

Zum Thema Subst: Hilft Dir ein "Netzlaufwerk verbinden" nicht auch weiter?

Grüße,
Klaus

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 01. Sep. 2008 06:10    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 KlaK,
danke für deine Antwort.
Mein Problem beschränkt sich rein darauf, wie o.b. die Dateien zu kopieren.
Warum?
Ich erzeuge von (großen) nativen V5-Strukturen CGR-Strukturen (in etwas wie SaveAsFrozen im DMU). Und der einfachste (weil schnellste Weg und ohne DMU Lizenz) ist das rekursive kopieren (.SaveAs) der CATProducts der kompletten Struktur. Für alles andere (was Geometrie enthält, wie .CATParts, V4-models, cgrs oder sonstiger Schrott) erzeugt CATIA (im CACHE Mode) eigenständig temporäre CGR-Dateien, die ich aus den entsprechenden Verzeichnissen wegkopiere, umbenenne und gegen die Originale in der Struktur Replace. Ich habe so (was z.B. die Benennung betrifft) viel mehr Möglichkeiten als beim SaveAsFrozen oder einigen anderen Workarounds. Und da ist dann eben in einem Fall bei extremen Verschachtelungstiefen o.g. Problem aufgetreten.

Die Vorgehensweise mit "SUBST" ist die Lösung des Problems und funktioniert ausgezeichnet. Wenn ich fertig bin stelle ich die Code Zeilen hier ein.

Danke auch noch mal an HoBLila und bgrittmann.

Gruss TomTom

------------------
tomtom1972

[Diese Nachricht wurde von tomtom1972 am 01. Sep. 2008 editiert.]

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 09. Sep. 2008 12:54    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,

hier wie versprochen die Lösung des o.s. Problems:

'--- sFile: Absoluter Pfad der betroffenen Datei

If Len(sFile) > 259 Then

  Dim p As Integer
  p = 0
  Dim sSubstFile As String
           
  aFile = Split(sFile, "\")  '--- Struktur zerlegen
  sSubstFile = aFile(0)
  Do  '--- Pfad wieder zusammenbauen, bis String > 30 Zeichen
      p = p + 1
      sSubstFile = sSubstFile & "\" & aFile(p)
  Loop Until Len(sSubstFile) > 30
           
  Dim q As Integer
  Dim sRestFile As String  '--- der Rest des Pfades
  sRestFile = aFile(p + 1)
  For q = p + 2 To UBound(aFile)
      sRestFile = sRestFile & "\" & aFile(q)
  Next
       
  sSubstFile = FUNC_SUBST(True, sSubstFile)  '--- Laufwerk erzeugen & Subst
           
  Start = Timer  '--- Pause (das Script ist schneller als die Shell)
  Do While Timer < Start + 2
      DoEvents
  Loop
           
  SUB_CopyFile sSubstFile & ":\" & sRestFile
           
  sSubstFile = FUNC_SUBST(False, sSubstFile)  '--- Laufwerk wieder löschen
           
  Start = Timer  '--- Pause
  Do While Timer < Start + 2
      DoEvents
  Loop 

End if

Sub SUB_CopyFile(sFile)
  Set oFile = oFileSystem.GetFile(sFile)
  '--- oTargetFolder & "\" & sNewName: wo auch immer es unter welchem Namen hin soll
  oFileSystem.CopyFile oFile, oTargetFolder & "\" & sNewName
End Sub

Function FUNC_SUBST(bSubstOrDel As Boolean, sPathToSubst As String) As String
  If bSubstOrDel = True Then  '--- true = Laufwerk erzeugen & Subst
      Set oFS = CreateObject("Scripting.FileSystemObject")
      For i = 65 To 90  '--- Die Buchstaben A-Z entsprechen den Ascii-Code-Zeichen 65-90
        If oFS.DriveExists(Chr(i)) = False Then  '--- Laufwerksbuchstabe nich nicht vorhanden
          Exit For
        End If
      Next
      If i > 90 Then  '--- kein Laufwerksbuchstabe mehr verfuegbar
        MsgBox " Abbruch.      ", 16, "Kein Laufwerksbuchstabe mehr verfuegbar"
        End
      End If
      Shell "Subst " & Chr(i) & ": " & sPathToSubst  '--- über eine Shell mittels SUBST einem Laufwerk eine Odrnerstruktur zuweisen
      FUNC_SUBST = Chr(i)
  Else
      Shell "Subst " & sPathToSubst & ": /d"  '--- false = Laufwerk löschen
  End If
End Function

------------------
tomtom1972

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