| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: FullFileName editieren (3160 mal gelesen)
|
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 28. Feb. 2005 10:16 <-- editieren / zitieren --> Unities abgeben:
Hi Leute, ich bin gerade drüber, ein Script zu schreiben, das ein ganzes Projekt in ein neues Verzeichnis kopiert und die entsprechenden Verweise auf andere Zeichnungen (z.B. Einzelteile) anpasst. Der Design-Assistent ist da viel zu langsam. Leider stolpere ich jetzt über das "ReadOnly"-Problem bei den Proberties. Beim Versuch dies zu editieren: Dim FileName As String FileName = 'irgendein Pfad oDoc.ReferencedFiles.Item(1).FullFileName = NewFileName ... bekomme ich immer eine Fehlermeldung: Die Methode "FullFileName" für das Objekt blablabla ist fehlgeschlagen! Hat jemand einen Lösungsvorschlag, wie ich die Neubelegung dieser Variable schaffe?
MFG Shakie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 28. Feb. 2005 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für Shakie
Zitat: Original erstellt von Shakie: ... Leider stolpere ich jetzt über das "ReadOnly"-Problem bei den Proberties. ...Hat jemand einen Lösungsvorschlag, wie ich die Neubelegung dieser Variable schaffe ...
Hallo, Du hast Dir die Antwort ja selber schon gegeben: die Variable ist read-only. Eine Neubelegung von 'FullFileName' erreichst Du, indem Du die Datei irgendwo anders hin verschiebst. Gruesse,
Paul www.morecam.ch/cad.htm
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 28. Feb. 2005 10:56 <-- editieren / zitieren --> Unities abgeben:
Hallo Paul, Danke für die schnelle Antwort! Das ist mir schon klar, dass es read-only ist. Aber vielleicht wüsste jemand wie man diese Einschränkung ändert. Wie meinst Du das verschieben? ... mit dem Explorer warscheinlich nicht, oder? Gibts da ne Funktion bei Inventor? Die "SaveAs" Methode funktioniert da wohl nicht. Da bleibt der alte Verweis erhalten. Sprich, er speichert die Datei, wo man sie hinhaben will, aber sie verweist immernoch auf den File, der im ursprünglichen Verzeichnis steht. Mein konkretes Problem betrifft die 2D-Ableitungen von einem 3D-Objekt. Ich muss neben dem kompletten Projekt auch die Ableitungen verschieben. Diese werden in der Projektdatei jedoch nicht verwiesen. Ich muss also die 2D-Ableitung öffnen und woanders speichern ("SaveAs.."). Doch wie gesagt, die alten Verweise innerhalb der 2D-Ableitung bleiben dabei leider erhalten und werden nicht aktualisiert. Und die muss ich demnach "manuell" ändern.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 28. Feb. 2005 11:10 <-- editieren / zitieren --> Unities abgeben: Nur für Shakie
Zitat: Original erstellt von Shakie:
... Der Design-Assistent ist da viel zu langsam...
Und du glaubst es mit Inventor API schneller machen zu können ? Du kannst es mit ApprenticeServer genau nach programmieren, aber schneller ? Überlege mal... ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 28. Feb. 2005 11:22 <-- editieren / zitieren --> Unities abgeben: Nur für Shakie
Hallo daywa1k3r, das ist wohl keine Frage: der Design-Assistent macht ja nichts anderes als via ApprenticeServer die Dateien auf dem OS zu verschieben und Verweise neu zu setzen.
Das schneller machen ???? ... und dabei riskieren, dass etwas verloren geht oder vergessen wird ???? Das wuerde ich mir schon 2x ueberlegen. Gruesse,
Paul www.morecam.ch/cad.htm
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 28. Feb. 2005 11:25 <-- editieren / zitieren --> Unities abgeben:
Hallo daywa1k3r, bist n QuakeIII-Fan, hm? Cooles Game! ... Das Problem beim Design-Assistent ist, dass er ewig lang nach den 2D-Ableitungen sucht. Das dauert teilweise Stunden, da dies übers Netzwerk geht. Da wir aber wissen, dass diese Ableitungen schon in dem Projektordner vorhanden sind, ginge es auch schneller. Ich habs schon mit einem selbstgeschriebenen Script ausprobiert, ein Projekt mit "SaveAs" zu "verschieben", die entspr. 2D-Ableitungen zu öffnen und auch mit "SaveAs" zu verschieben. Es geht schneller als der Assistent. Doch werden die Verweise in den 2D-Ableitungen nicht aktualisiert. Außerdem soll später noch das Umbenennen des Projekts automatisiert werden. Desshalb des eigene Script. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 28. Feb. 2005 11:34 <-- editieren / zitieren --> Unities abgeben:
Hey Tom, Das mit dem ApprenticeServer scheint ein guter Tip zu sein ... ich schau mir das jetzt mal genauer an. Laut Inventor-Hilfe hat der nur read-Zugriff auf Geometrie usw. und Read/Write-Zugriff auf die Referenz-Daten ... des klingt vielversprechend. Ich danke schonmal im Voraus! MFG Shakie ---------------- "Shake it, Baby!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 28. Feb. 2005 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für Shakie
|
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 28. Feb. 2005 12:34 <-- editieren / zitieren --> Unities abgeben:
|
IngMar24 Mitglied Helper
Beiträge: 12 Registriert: 07.07.2004
|
erstellt am: 28. Feb. 2005 14:29 <-- editieren / zitieren --> Unities abgeben: Nur für Shakie
als der FulFileName muß ReadOnly sein Lösung: oDoc.SaveAs(irgendwas) App.Documents.Open(irgendwas) und siehe da wie von geisterhand der FullFileName ist neue Anmerkung: SaveAs tauscht nicht das Objekt ------------------ Gruss IngMar Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 28. Feb. 2005 15:38 <-- editieren / zitieren --> Unities abgeben:
Hallo IngMar, Wie meinst Du das? Meinst Du den "FullFileName" von dem geöffneten Objekt? Mir geht es hier um den "FullFileName" von den "ReferencedFiles". Also von den Dateiverweisen auf andere Dateien. Eine 2D-Ableitung (*.idw) hat somit auch einen Verweis auf Ihr 3D-Abbild (*.ipt). Ändert man im 3D-Modell etwas, wird dies in der 2D-Ableitung auch geändert. Dies ist erst durch die Verweise untereinander möglich. Doch leider lässt sich dessen Änderung nicht bewerkstelligen, wie es mir inzwischen scheint. Ich hab jetzt mal ein Beispiel aus der Inventor-Programmier-Hilfe ausprobiert: Private Sub ChangeReferenceSample() Dim oApprentice As New ApprenticeServerComponent ' Open a document. Dim oDoc As ApprenticeServerDocument Set oDoc = oApprentice.Open( _ "D:\Test.idw") 'iam ' Iterate through the references looking for a ' reference to a specific file. Dim oRefFileDesc As ReferencedFileDescriptor For Each oRefFileDesc In oDoc.ReferencedFileDescriptors If oRefFileDesc.FullFileName = "D:\Test.ipt" Then ' Replace the reference. ------> Call oRefFileDesc.PutLogicalFileNameUsingFull _ ("D:\Test Ordner\Test.ipt") Exit For End If Next ' Set a reference to the FileSaveAs object. Dim oFileSaveAs As FileSaveAs Set oFileSaveAs = oApprentice.FileSaveAs ' Save the assembly. Call oFileSaveAs.AddFileToSave(oDoc, oDoc.FullFileName) Call oFileSaveAs.ExecuteSave End Sub Aber in der Zeile mit dem schönen Pfeil (zur Verdeutlichung eingefügt) bekomme ich dann den Fehler eines ungültigen Prozeduraufrufs. Laut Hilfe sollte dies aber genau machen, was ich möchte. Ich hab lediglich die Pfade und Dateinamen geändert. Liegt das vielleicht an der Endung in Zeile 4? In der Hilfe wird eine "*.iam" geöffnet. Aber ich denke es sollte egal sein, obs eine Projektzeichnung oder eine 2D-Ableitung ist. Ist ja beides Inventor-Format und sollte somit funktionieren. Bei der Zuweisung von "oRefFileDesc" bekomme ich beim Debuggen (Überwachen) vermutlich das Richtige präsentiert. Also zumindest steht da der richtige Dateiverweis drin. Nur irgendwie will dieses "PutLogicalFileNameUsingFull" nicht funktionieren. Ich steh kurz vor der Kapitulation. Hat jemand eine Lösung bevor ich die weiße Flagge hisse?
------------------
MFG Shakie ---------------- "Shake it, Baby!"
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 28. Feb. 2005 16:01 <-- editieren / zitieren --> Unities abgeben:
Hi Leute, Ich glaube ich habe den Fehler gefunden: Dies ist ein Bug, der mit dem Servicepack 1 behoben werden soll... Ich zitiere die Inventor SP1 Txt-Datei: PutLogicalFilenameUsingFull ist für Referenz eines abgeleiteten Bauteils nicht möglich. Mal schauen, was sich dagegen machen lässt. ------------------
MFG Shakie ---------------- "Shake it, Baby!"
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 01. Mrz. 2005 09:14 <-- editieren / zitieren --> Unities abgeben:
Hmm, wie es aussieht habe ich schon das ServicePack 1 drauf. Aber leider funktioniert "PutLogicalFileNameUsingFull" trotzdem nicht auf 2D-Ableitungen ("*.idw"). Was heißt in dem Textfile des SP1 "Folgende Probleme blablabla werden BEHANDELT"? Ist das Problem behoben, bekannt oder hinzugefügt worden? Hat jemand einen Vorschlag, wie man das zum funktionieren bringen kann oder ob es eine Funktion gibt, auf die man ausweichen kann? PS.: für alle, die nicht nochmal alles vorher lesen wollen:
Ich habe eine 3D-Zeichnung (*.ipt) und deren 2D-Ableitung (*.idw) in ein anderes Verzeichnis kopiert und muss nun irgendwie die gegenseitigen Verweise untereinander auf den neuen Pfad setzten können. Warum benutze ich nicht den "Design Assistent"? Der "Design Assistent" ist im Netzwerk einfach zu langsam und das zu schreibende Script soll später noch weitere Aufgaben übernehmen, wie z.B. das automatisierte Umbenennen auch der Felder innerhalb der Datei. ------------------
MFG Shakie ---------------- "Shake it, Baby!"
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 01. Mrz. 2005 10:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, also inzw. bin ich n bisschen Verwirrt, oder schlauer: Irgendwie scheint das ganz normale Kopieren der 3D-Datei mit der 2D-Ableitung den Verweis selber zu setzen. Ich bin da jetzt sehr erstaunt! Denn gestern ging das nicht. Aber ich hatte auch gestern die ganze Zeit lang den Inventor offen und das Projekt offen, in dem die 3D-Datei eingebunden ist. Warum ich aber nun die 2D-Ableitung nicht ändern konnte, wärend ich die 3D-Datei geöffnet habe kann ich nicht so richtig nachvollziehen. Außerdem ist mir aufgefallen, dass ich mit "PutLogicalFileNameUsingFull" den Verweis nicht auf Dateien außerhalb des Ordners der 2D-Ableitung ändern kann. Jedoch kann ich nun offenbar auf Dateien verweisen, die im gleichen Ordner sind, solange der Inventor nicht läuft. Ich versuch jetzt mal den Inventor geschlossen zu halten, danach die Dateien regulär zu kopieren und dann evtl. Namensänderungen mit "PutLogicalFileNameUsingFull" vorzunehmen. Wenns damit klappt, sag ich bescheid. ------------------ MFG Shakie ---------------- "Shake it, Baby!"
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 01. Mrz. 2005 13:20 <-- editieren / zitieren --> Unities abgeben:
|
Shakie Mitglied
Beiträge: 18 Registriert: 28.02.2005
|
erstellt am: 02. Mrz. 2005 15:23 <-- editieren / zitieren --> Unities abgeben:
Hi Leute, inzwischen scheints zu klappen. ... Fragt mich nicht, wie ich das geschafft habe. Ich bin auch zu einem eigenständigen Programm übergegangen, anstatt ein Script zu schreiben. Es ergaben sich sehr eigenartige Verhalten der Funktionen. Teilweise wollte das "ReferencedFileDescriptor"-Objekt nicht einmal die neuen Daten vom "ApprenticeServerDocument"-Objekt übernehmen. Ich musste immer das Programm anhalten, und den Schritt manuell mit der "Schritt"-Funktion (F8) ausführen. Beim normalen Programmablauf ging das nicht! Bis ich dann vorher "PutLogicalFileNameUsingFull" des "ReferencedFileDescriptor"-Objekts benutzt habe. Aber diese Methode ist auch sehr eigenwillig. Außerdem funktioniert sie nicht bei 2D-Ableitungen (*.idw)... trotz Servicepack 1 von Inventor 8. Irgendwie werden die Verweise schon automatisch gesetzt, sobald ein Kopiervorgang von Statten geht. Naja, wie auch immer, es funktioniert jetzt irgendwie. Und nun gehts daran, ein Script zu schreiben, mit dem man eine/mehrere Projektdatei(en) umbenennen kann und sowohl die Verweise, als auch die Felder in der Zeichnung aktualisiert. ------------------ MFG Shakie ---------------- "Shake it, Baby!"
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
eugen1111 Mitglied Konstrukteur
Beiträge: 36 Registriert: 18.01.2005 AIS9; XPSP2 P4-3800, 4 GB Quadro FX3400
|
erstellt am: 01. Sep. 2008 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für Shakie
Hallo Shakie, was ist hieraus geworden? Das klingt interesant. Wir haben oft den Fall, wenn wir eine schonmal dagewesene BG in neuen Maschinen einsetzen, dann müssen wir einen Teil der Bauteilenummer/Dateiname ersetzen. Ich suche so etwas wie den DA nur mit der Möglichkeit die Dateinamen nach eine Bestimmten Zeichenfolge zu durchsuchen und durch eine neue zu ersetzen. Ich weiß , dass es soetwas im Vault gibt aber wir verwenden es hier nicht. Dein Makro klingt so als könnte man es dahingehend ausbauen. hast du es weitervefolgt? MfG Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 01. Sep. 2008 21:30 <-- editieren / zitieren --> Unities abgeben: Nur für Shakie
|