| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Dateipfad-Umbruch im Schriftfeld (2300 / mal gelesen)
|
Phiben Mitglied Ingenieur
Beiträge: 4 Registriert: 21.05.2019
|
erstellt am: 21. Mai. 2019 09:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, da ich neu hier bin stelle ich mich erst einmal kurz vor: Ich bin der Phillip. Ich habe leider ein Problem für das ich trotz langen Suchens keine Lösung gefunden habe. Und zwar würden wir in unserer Firma gern den Dateipfad des Modells (Bauteil) auf im Inventor erstellten Zeichnungen angeben, aufgrund einer komplizierten (und definitiv unübersichtlichen ) Ordnerstruktur wird dieser jedoch meist so lang das er das Feld um Längen sprengt. Leider habe ich bisher keine Möglichkeit gefunden eine Art Umbruch zu erzwingen. Das liegt bestimmt auch daran das der Dateipfad als ein Wort gilt, da er keine Leerzeichen enthält. Die einzige mir bekannte Möglichkeit ist das "einpassen", was die lange Zeichenkette staucht um sie in das Feld zu zwingen. Dabei wird es jedoch oft so komprimiert das es absolut unlesbar ist. Es muss doch irgendeine Möglichkeit geben den Dateipfad umzubrechen. Es ist auch völlig egal an welcher Stelle der Pfad "zerhackt" wird, da man es dennoch nachvollziehen kann. Die einzige Antwort die mein Problem wirklich betrifft war die aus folgendem Thema dieses Forums: https://ww3.cad.de/foren/ubb/Forum54/HTML/030841.shtml Die kommt, wie man sieht, jedoch aus dem Unterforum "Rund um AutoCad", weshalb es mir nicht klar ist welche AutoDesk Software genau verwendet wird. Die Lösung wird mittels eines Tabellenfensters gefunden, leider ohne nähere Erklärungen. Ich habe dies natürlich versucht, jedoch konnte ich Tabellen nur über den Reiter "Mit Anmerkungen versehen" erzeugen und nicht im Reiter "Skizze" indem das Schriftfeld und die Funktionen (wie der Einzug der Dateipfad-Information aus dem Modell) festgelegt werden. Ich hoffe ihr könnt mir hierbei helfen, da ich, wie schon oben erwähnt, trotz ausführlichen Googelns und Herumprobierens nicht zu einem sinnvollen Ergebnis kam. Achja, es handelt sich bei meiner Version um Inventor 2016. Liebe Grüße Phillip Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Leo Laimer Moderator CAD-Dienstleister
Beiträge: 26123 Registriert: 24.11.2002 IV bis 2019
|
erstellt am: 21. Mai. 2019 09:54 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
Dateipfad auf der Zeichnung trifft man in der Praxis recht selten. Was ich mal gesehen habe war, die Pfadangabe im Bereich des Zeichnungsrahmens, da kann die Länge fast beliebig sein. ------------------ mfg - Leo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 721 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 21. Mai. 2019 13:35 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
Eine einfache Lösung kann ich leider auch nicht anbieten. mE wäre der Gedanke von Leo schon am wenigsten anfällig für Fehler und Probleme. Sollte es dennoch nötig sein den Pfad zu "zerstückeln", könnte ich mir eine iLogic-Regel vorstellen, die das macht. Ein erster Wurf im code unten. Darin zwei Varianten: nach einer fixen Anzahl Zeichen ein Leerzeichen einfügen (das könnte - in Verbindung mit einer passenden Schriftart - den verfügbaren Platz bestmöglich ausfüllen); Alternativ ein Leerzeichen nach jedem Backslash im Pfad (ist vermutlich noch am besten lesbar) Vielleicht mal konkret ausprobieren und Vergleichen! Der grobe Ablauf: - iLogic-Regel, gestartet durch den Ereignisauslöser z.B. "nach dem Speichern" - der bearbeitete Pfad wird in einem iProperty abgelegt - das iProperty wird vom Schriftfeld ausgelesen Man müsste noch (mindestens) ein Problem umschiffen: "nach dem Speichern" das Dokument nochmal verändern (iProp. schreiben) ist eher doof. "Vor dem Speichern" wird aber bei neuen, ungespeicherten Dokumenten Probleme machen... evtl. im Code am Ende nochmal Speichern (?) Code: Sub Main () Dim oDoc as Document = ThisApplication.ActiveDocument Dim sTxt As String = oDoc.FullFileName 'Dateiname inkl. Pfad und DateiendungDim T1 As String = Str_fixedLength(sTxt, 20) 'Function aufrufen, mit Angabe der Zeichenanzahl Dim T2 As String = Str_BreakOnSlash(sTxt) 'andere Function aufrufen MsgBox (sTxt & vbCrLf & T1 & vbCrLf & T2, , "zum Vergleich") 'Wert in iProperty schreiben iProperties.Value("Custom", "DatName") = T1 End Sub Function Str_fixedLength (sTxt As String, length As Long) As String 'fügt nach einer bestimmten Zeichenanzahl ein Leerzeichen ein ' sTxt : Eingabe-Text, bleibt unverändert ' length : Anzahl Zeichen zwischen den Leerzeichen ' Text mit zusätzlichen Leerzeichen wird zurückgegeben ' Dim sRet As String 'Return value Dim len_ As Long = sTxt.Length 'Anzahl Zeichen des Eingangsparameters Dim i As Long = 1 Do While len_ > (i+length) sRet = sRet & Mid(sTxt, i, length) & " " i += length Loop sRet = sRet & Mid(sTxt, i) 'restlichen Zeichen anhängen Return sRet End Function Function Str_BreakOnSlash (sTxt As String) As String 'fügt nach jedem Backslash ein Leerzeichen ein (aus "\" wird "\ ") ' sTxt : Eingabe-Text, bleibt unverändert Return Replace(sTxt, "\", "\ ") End Function
------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Leo Laimer Moderator CAD-Dienstleister
Beiträge: 26123 Registriert: 24.11.2002 IV bis 2019
|
erstellt am: 21. Mai. 2019 20:32 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
Man könnte auch noch in die Richtung denken, eine zweite Stückliste einzufügen die aus genau nur einer Zelle besteht, in der dann der Dateipfad angezeigt wird. Sollte einen automatischen Umbruch machen, halt hart an der Stelle wo die Zellenbreite aus ist, ohne Rücksicht auf Sinn oder Schönheit. ------------------ mfg - Leo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hohenöcker Ehrenmitglied V.I.P. h.c. Ingenieur
Beiträge: 2389 Registriert: 07.12.2005 Inventor 2023 Ich mag beide Arten von Musik: Country und Western! S-Fanclub
|
erstellt am: 22. Mai. 2019 09:02 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
Zitat: Original erstellt von Leo Laimer:
Was ich mal gesehen habe war, die Pfadangabe im Bereich des Zeichnungsrahmens, da kann die Länge fast beliebig sein.
So machen wir das auch. Im unteren Rand unterhalb des Schriftfelds, so lang wie dieses, oder so lang wie die ganze Zeichnung. Das sollte reichen. ------------------ Gert Dieter Selbst denken ist der höchste Mut. Wer wagt, selbst zu denken, der wird auch selbst handeln. Bettine von Arnim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
3d-freelancer Mitglied
Beiträge: 259 Registriert: 10.02.2011 Intel Core i7-950, 3,06GHz Quad Core, 24GB RAM, WIN10 Prof. 64bit Nvidia Quadro M4000 Space Controller AIP2021
|
erstellt am: 22. Mai. 2019 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
Hallo, ich hoffe ich habe die Frage richtig verstanden. Natürlich kann man in einem Textfeld des Schriftkopfes einen Zeilenumbruch machen. Siehe Bild. Der Text passt sich dann in der Länge an die Breite des definierten Rahmens an. Gruß Burkhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
3d-freelancer Mitglied
Beiträge: 259 Registriert: 10.02.2011 Intel Core i7-950, 3,06GHz Quad Core, 24GB RAM, WIN10 Prof. 64bit Nvidia Quadro M4000 Space Controller AIP2021
|
erstellt am: 22. Mai. 2019 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
|
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 721 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 22. Mai. 2019 11:01 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
Zitat: Original erstellt von Leo Laimer: ...eine zweite Stückliste einzufügen die aus genau nur einer Zelle besteht, in der dann der Dateipfad angezeigt wird.
Dabei stehe ich wohl auf dem Schlauch. Bei der Spaltenauswahl für die Teileliste (neuen Stil angelegt), gibt es zwar die Eigenschaft "Dateiname" aber keine mit "Dateiname und Pfad". Bei einem Textfeld gibt es unter Eigenschaften Modell den Wert "Dateiname und Pfad", der sich als Textparameter einfügen lässt. Was übersehe ich? ------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Phiben Mitglied Ingenieur
Beiträge: 4 Registriert: 21.05.2019
|
erstellt am: 22. Mai. 2019 11:09 <-- editieren / zitieren --> Unities abgeben:
Hallo alle zusammen! Ich danke euch am Beginn schonmal riesig das ihr mir helfen wollt mein Problem zu lösen, sehr nett von euch! Ich habe es jetzt geschafft mit der Lösung von Krabby. Ich bin leider sehr ungebildet in jeglicher Art der Programmierung, weshalb ich einige Zeit probieren musste bis es funktionierte, doch jetzt geht es. Der Code der nach einer gewissen Anzahl an Stellen ein Leerzeichen einfügt genaugenommen. Danke dafür! Persönlich fände ich die Lösung nach den Backslashs schöner, leider bekomme ich das nicht hin. Ich habe versucht den unteren Teil: "Function Str_BreakOnSlash (sTxt As String) As String 'fügt nach jedem Backslash ein Leerzeichen ein (aus "\" wird "\ ") ' sTxt : Eingabe-Text, bleibt unverändert Return Replace(sTxt, "\", "\ ") End Function" zu kopieren und folgende Stelle: "Function Str_fixedLength (sTxt As String, length As Long) As String 'fügt nach einer bestimmten Zeichenanzahl ein Leerzeichen ein ' sTxt : Eingabe-Text, bleibt unverändert ' length : Anzahl Zeichen zwischen den Leerzeichen ' Text mit zusätzlichen Leerzeichen wird zurückgegeben" dadurch zu ersetzten. Also ich habe den kompletten Teil mit "Function Str_fixedLength" rausgehauen und den anderen dafür eingefügt. Dadurch kamen eine Menge Kompilierungsfehler bei denen ich mir nicht zu helfen wusste. Scheinbar ist mein Kopier-Ansatz völlig falsch. Wie genau sollte ich die "Function Str_BreakOnSlash" denn einbinden? Danke schonmal für die Geduld und Entschuldigung für meine Noobness. Liebe Grüße Phillip Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 721 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 22. Mai. 2019 12:20 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
Freut mich, dass ich helfen kann. Andererseits möchte ich davor warnen, so eine "Programmier-Bastel-Lösung" produktiv einzusetzen ohne zumindest ein Grundmaß an iLogic-Kenntnissen! Ich fürchte, das könnte schnell nach hinten losgehen. Gibts jemandem der das querchecken kann, Systembetreuer oder so? Zu Deiner Frage: Lass die beiden Function-Blöcke (von "Function ..." bis "End Function") wie sie sind! mach aus dieser Zeile iProperties.Value("Custom", "DatName") = T1 dieses iProperties.Value("Custom", "DatName") = T2 Das sollte es schon gewesen sein. (die beiden Varianten werden ja schon "berechnet" und in den Variablen T1 und T2 gespeichert. Obige Anpassung bewirkt, dass eben die andere Variante in das iProp. geschrieben wird.) Falls noch nicht geschehen, kannst Du noch die Messagebox ausschalten/auskommentieren, indem Du einen Apostroph ' vor das Wort MsgBox setzt. Dadurch wird die ganze Zeile zum Kommentar und bei der Programmausführung übersprungen. Wie gehst Du mit dem Ereignisauslöser um? vor oder nach dem Speichern? siehe auch mein obiger Post ------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Phiben Mitglied Ingenieur
Beiträge: 4 Registriert: 21.05.2019
|
erstellt am: 22. Mai. 2019 13:45 <-- editieren / zitieren --> Unities abgeben:
Hallo KraBBy! Kann denn da viel schiefgehen, außer das es mal nicht funktionieren könnte? Im Notfall kann man die iLogic-Regel ja deaktivieren. Es gibt bei uns leider niemanden mit Kenntnissen darüber, der sich das mal anschauen könnte. Ich bin auch nur Praktikant, daher werden solche unbeliebten Aufgaben mir zugeschoben. Zu deinem weiteren Lösungsvorschlag: Ich habe jetzt deinen kompletten Programm(?)-Text aus deinem obigen Post als Regel eingefügt. Wenn ich die Zeile iProperties.Value("Custom", "DatName") = auf T2 setze, bleibt das Feld leider immer komplett leer. Wenn ich es wieder auf T1 setzte, funktioniert es mit den Abständen alle x Zeichen. Das Ausschalten der Messagebox hat funktioniert. Die Ereignisauslösung habe ich auf "Vor dem Speichern von Dokument" gesetzt. Das klappt nicht direkt beim ersten Mal, d.h. man muss ein zweites Mal speichern damit der Dateipfad korrekt und umgebrochen angezeigt wird. Aber das ist nicht so schlimm. Immerhin funktioniert es. Liebe Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 721 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 22. Mai. 2019 16:13 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
Es kann immer was schief gehen! Fehlermeldung bei jedem Speichern und/oder viele Dokumente die irgendwann mal falsche iProperties enthalten... Das hat auf jeden Fall Frustpotential und es sollte jemand da sein, der das Warten kann! Das kann womöglich dem Praktikanten alles egal sein, aber für mich klingt das Vorhaben nach einer Totgeburt, so in der Art "da hat zwar ein Praktikant mal was gemacht, aber das funktioniert nicht mehr richtig und wurde deshalb nicht weiter benutzt. Jetzt haben wir tausend Dateien, die eine tote iLogic-Regel enthalten und ein iProp-Leiche. Vielleicht sollte das mal ein (anderer) Praktikant bereinigen..." Zurück zur iLogic-Regel: Ich kann leider nicht nachvollziehen, warum das nicht funktioniert. Wenn Du die Messagebox wieder einschaltest, ist die Meldung dann 3zeilig? Wäre eigentlich in dieser Art gedacht: C:\das_ist\der_Pfad\im_Original\Beispiel.ipt C:\das_ist\der_P fad\im_Original\Beis piel.ipt (Leerz. nach fester Stellenanzahl) C:\ das_ist\ der_Pfad\ im_Original\ Beispiel.ipt (Leerz. nach jedem \)
------------------ Gruß KraBBy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Phiben Mitglied Ingenieur
Beiträge: 4 Registriert: 21.05.2019
|
erstellt am: 22. Mai. 2019 16:29 <-- editieren / zitieren --> Unities abgeben:
Entschuldige, ich habe irgendeine Art von Kopierfehler gemacht! Ich habe den Programmtext jetzt nochmal als ganzes kopiert und es macht exakt was es soll. Irgendwas habe ich übersehen. Jetzt gibt es die drei Zeilen genau so aus wie du es gesagt hast. Dankeschön, so werde ich es lassen! Tja, deine Befürchtungen werde ich weiterleiten, das habe ich nicht zu entscheiden. Im Endeffekt haben sie im schlimmsten Fall auch nur ein totes Dateipfad-Feld. Auf jeden Fall danke ich dir riesig! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KraBBy Mitglied Maschinenbau-Ingenieur
Beiträge: 721 Registriert: 19.09.2007 Inventor Professional 2020 WinX
|
erstellt am: 22. Mai. 2019 17:09 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
|
Leo Laimer Moderator CAD-Dienstleister
Beiträge: 26123 Registriert: 24.11.2002 IV bis 2019
|
erstellt am: 23. Mai. 2019 09:15 <-- editieren / zitieren --> Unities abgeben: Nur für Phiben
Zitat: Original erstellt von KraBBy:
Dabei stehe ich wohl auf dem Schlauch. Bei der Spaltenauswahl für die Teileliste (neuen Stil angelegt), gibt es zwar die Eigenschaft "Dateiname" aber keine mit "Dateiname und Pfad". Bei einem Textfeld gibt es unter Eigenschaften Modell den Wert "Dateiname und Pfad", der sich als Textparameter einfügen lässt. Was übersehe ich?
Tatsächlich kann man in der BG-Stüli wunderbar Dateipfad und Dateiname auswählen, in der Zeichnungs-Stüli steht der Pfad aber nicht zur Verfügung. Müsste man also den Umweg über ein Benutzerdefiniertes iProp gehen, wo man je Komponente den Dateipfad reinprojiziert. Der elegantere Weg ist aber ohnehin das mit dem Textfeld. ------------------ mfg - Leo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |