| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Datei unter neuem Namen speichern (520 mal gelesen)
|
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 06. Aug. 2010 11:54 <-- editieren / zitieren --> Unities abgeben:
Hallo an Alle, ich möchte meine Zeichnung unter neuem Namen in ein neues Verzeichniss speichern. Dazu habe ich folgende Zeilen in VB geschrieben: . . . Try fs = CreateObject("Scripting.FileSystemObject") f = fs.CreateFolder(ThisDrawing.Path & "\NEB") Name = ThisDrawing.Path & dazu & ThisDrawing.Name Call ThisDrawing.SaveAs(Name) Catch ex As Exception MsgBox(ex.Message) End Try Funktioniert einwanfrei solange ich auf meinen lokalen Festplatten bleibe. Sobald ich auf unser Netzwerk gehe, bekomme ich die Fehlermeldung "Probleme beim Speichern der Datei" und es wird nicht gespeichert. Was kann ich machen um auch auf dem Netzwerk sicher zu speichern? Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
oscarr Mitglied CAD-Manager
Beiträge: 198 Registriert: 02.10.2007 ACA 2012 - English Win 7/x64
|
erstellt am: 06. Aug. 2010 16:18 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
|
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 09. Aug. 2010 07:53 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Holger, zu Deinen Fragen.. Rechte habe ich ausreichend, sonst würde das manuele Speichern von AutoCad heraus auch nicht gehen. Name ergibt einen gültigen Pfad, der bei meinen lokalen Platten auch funktioniert. Dazu kann verschiedene Werte annehmen, ist aber meistens "\NEB\NEB_" Ich habe das ganze mal mit SendCommand "_saveas " & Name probiert. Das geht. Ist aber nicht so schön. Dann muß ich filedia umstellen und kann den Befehl nicht wiederholen. Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 09. Aug. 2010 08:18 <-- editieren / zitieren -->
Hi, kannst Du mal einen BreakPoint setzen, wo mit MsgBox eine Meldung ausgegeben wird, dann ex anklicken ==> rechte Maustaste ==> Schnellüberwachung und davon einen Screenshot (mit so viel Info wie möglich aufgeklappt) hier uploaden. - alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 09. Aug. 2010 10:06 <-- editieren / zitieren --> Unities abgeben:
|
Ex-Mitglied
|
erstellt am: 09. Aug. 2010 10:27 <-- editieren / zitieren -->
Hi, läßt leider keine großen Rückschlüsse zu. Der Pfad, der am Server angelegt wird, beginnt der mit einem Laufwerksbuchstaben oder mit "\\" und Servername? Was ich im INet zu dieser Fehlermeldung finden konnte (Du scheinst mit dem Problem damit nicht alleine zu sein), könnte es daran liegen. Probier mal probehalber, nach Erstellung des Verzeichnisses (vor Speichern der DWG) mal eine Textdatei in diesem Pfad anzulegen, ob das geht. Weiters, wenn es wirklich nicht mehr anders geht, speichere diese DWG im lokalen TEMP-Ordner und kopiere diese dann über das FS-Objekt in den Zielordner, dazu wäre es natürlich angenehm, wenn Du die DWG schließen könntest. BTW: guck Dir im dotNET mal My.Computer.Filesystem an (oder System.IO), da gibt es schon jede Menge Datei-/Verzeichnisfunktionen, das (alte) Scripting-Object brauchst Du nicht mehr. - alfred - ------------------ www.hollaus.at |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 09. Aug. 2010 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
Also in C# würde er die Laufwerksverkettung wegen falscher Escapesequenzen anmatschkern, wobei ich mich dunkel erinnere, dass Strings lokaler Laufwerke aufgrund des c:\ (bzw d:\) erkannt werden, Netzlaufwerke jedoch nciht Also Code: Pfad + @"\neuerOrdner\" + neuerName + ".dwg"
Mit @ sage C#.net: lese den String wörtlich, also den bachslash nicht als EscapeSeuqnz Keine Ahnung, ob das in VB.net auch so ist. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 09. Aug. 2010 14:47 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
OK Vergiss es. In VB.net ist der BackSlasch anscheinend standardmässig kein Sonderzeichen, so wie in C#.net Eigentlich würde ich mal den Inhalt der Variable name in dieser Zeile Code: Call ThisDrawing.SaveAs(Name)
genauer anschauen. Also haltepunkt drauf, und überwachen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 10. Aug. 2010 16:41 <-- editieren / zitieren --> Unities abgeben:
Jetzt hab ich den halben Tag probiert, und meine einzige Erkentniss ist, daß es manchmal geht und manchmal nicht. Ich kann nicht erkennen was den Unterschied ausmacht, daß es bei manchen Dateien geht und bei manchen nicht. (lokal, immer) Trotzdem Danke für jeden Ratschlag. Ich laß vorerst mal meine VBA-Variante weiter laufen. Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Aug. 2010 17:02 <-- editieren / zitieren -->
Hi, hast Du das mit der Textdatei probiert? Kann es vielleicht daran liegen, dass es nur auftritt, wenn das Verzeichnis gerade erst erstellt wurde und nicht schon existiert hat (cache des Servers zu langsam?) - alfred - ------------------ www.hollaus.at |
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 11. Aug. 2010 16:57 <-- editieren / zitieren --> Unities abgeben:
Hallo, mein jetziger Stand ist: If My.Computer.FileSystem.FileExists(ThisDrawing.Path & "\NEB") = False Then My.Computer.FileSystem.CreateDirectory(ThisDrawing.Path & "\NEB") End If Name = "\\Svr1\struktur".ToString & Mid(ThisDrawing.Path, 3) & dazu.ToString & ThisDrawing.Name If Left(ThisDrawing.Path, 1) <> "O" Then Name = ThisDrawing.Path & dazu.ToString & ThisDrawing.Name MsgBox(Name) fileReader = _ My.Computer.FileSystem.OpenTextFileWriter(ThisDrawing.Path & "\NEB\Text.txt", False) For i = 1 To 20 fileReader.WriteLine("Das ist die Zeile " & i) Next fileReader.Close() Try Call ThisDrawing.SaveAs(Name.ToString) Catch ex As Exception MsgBox(ex.Message) End Try My.Computer.FileSystem.DeleteFile(ThisDrawing.Path & "\Text.txt") End If Ich erstelle vorher eine sinnlose Textdatei. Anscheinend funktioniert es dadurch besser, zumindest habe ich bisher keine Fehlermeldung mehr bekommen und die DWG wird unter neuem Namen abgespeichert. Die Textdatei lösche ich anschließend wieder. Hab zur Zeit viel Arbeit, darum komme ich nur wenig zum Probieren. Gruß, Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 11. Aug. 2010 17:16 <-- editieren / zitieren -->
Hi, das könnte meine Meinung bestätigen (wenn es jetzt stabil bleibt). Das unmittelbare Anlegen der Verzeichnisses und die gleich nachfolgende SpeichernUnter-Aktion kollidieren, da das Netzwerk (oder der Server) nicht schnell genug auf die Anforderungen reagiert. Mit der Textdatei legst Du von FrameWork aus direkt etwas nach, und das kann ev. einen Verlust (die Verzögerung) im Cache gut machen, ev. hilft auch ein DoEvents oder ähnliches, das dem Betriebssystem oder Netzwerk mal ein wenig Luft gibt, das Anlegen des Verzeichnisses wieder gut in die anfragende Umgebung zu bringen. Hoffe, dass es das war, - alfred - ------------------ www.hollaus.at |
oscarr Mitglied CAD-Manager
Beiträge: 198 Registriert: 02.10.2007 ACA 2012 - English Win 7/x64
|
erstellt am: 12. Aug. 2010 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für Theo37
Hallo zusammen, nur so aus Neugier: Was ist denn das für ein Server? Ich hatte mal vor langer, langer Zeit mächtig Probleme mit einem Linux/Samba Server. Wenn ich mich recht erinnere war es Samba 2.0. Die Probleme hörten erst mit einer neuen Linux Version auf. Wobei sowohl der Kernel, Netzwerkkartentreiber als auch Samba ausgetauscht wurden.(Das müsste debian 2.2 gegen 3.0 gewesen sein.) Auf jeden Fall lies sich AutoCAD (und nur AutoCAD, nicht Office, Adobe oder Microstation) zuverlässig mit dem Server betreiben. LG Holger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theo37 Mitglied Techniker
Beiträge: 423 Registriert: 08.10.2008
|
erstellt am: 12. Aug. 2010 13:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, mit dem Server muß ich leider passen. Ich glaube nicht daß es Linux ist, aber ich weiß es nicht. Es funktioniert noch immer ohne Probleme. Ich denke ich kanns so lassen. Danke an Alle. Theo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |