| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Text in DrawingView Sketch ersetzen (1369 / mal gelesen)
|
Brandy32 Mitglied Konstruktionsingenieur
Beiträge: 23 Registriert: 16.12.2015 Windows 7, 64 bit Inventor 2012 + 2015
|
erstellt am: 03. Mrz. 2016 20:29 <-- editieren / zitieren --> Unities abgeben:
Liebe Forum-Gemeinde, vorab ich bin absoluter VBA Anfänger, und konnte mich bisher einigermaßen durchschlagen, indem ich im Forum gefunden Codes minimal umgebastelt habe. Nun scheitere ich gerade aber an folgendem Problem: Ich habe auf einige Ansichten Skizzen gelegt, welche wiederum einen Text erhalten. Nun möchte ich bestimmte textteile suchen und durch neue ersetzten. Dies ist mein Ansatz: Sub ReplaceText() Dim oDrawing As DrawingDocument Set oDrawing = ThisApplication.ActiveDocument Dim oSheet As Sheet Dim oView As DrawingView Dim oSketch As Sketch
Dim oText As TextBox For Each oSheet In oDrawing.Sheets For Each oSketch In oView.Sketches ' hier stimmt schon was mit der Dekleratio von osketch nicht oSketch.Edit For Each oText In oSketch.TextBoxes oText.Text = Replace(oText.Text, "alterText", "neuerText") Next oSketch.ExitEdit Next Next End Sub Ist der Aufruf mit TextBoxes überhaupt richtig? Oder wie komme ich an den Text?
Ich würde mich freuen, wenn mir jemand behilflich wäre. Grüße, Brandy PS: In dem Fall für IV 2015, Mehr Systeminfo habe ich leider gerade nicht parat, muss ich erst im Büro anschauen
[Diese Nachricht wurde von Brandy32 am 04. Mrz. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanSolo Mitglied TZ, MB Tech., Student
Beiträge: 5 Registriert: 01.03.2016
|
erstellt am: 04. Mrz. 2016 08:16 <-- editieren / zitieren --> Unities abgeben: Nur für Brandy32
Guten Morgen, Ich denke das sollte seinen Dienst tun. Wenns noch Fragen dazu gibt, gerne Sub ReplaceText() Dim oDrawing As DrawingDocument Set oDrawing = ThisApplication.ActiveDocument Dim oSheet As Sheet Dim oView As DrawingView Dim oSketch As DrawingSketch Dim oText As TextBox For Each oSheet In oDrawing.Sheets For Each oView In oSheet.DrawingViews For Each oSketch In oView.Sketches oSketch.Edit For Each oText In oSketch.TextBoxes oText.Text = Replace(oText.Text, "Hallo", "neuerText") Next oSketch.ExitEdit Next Next Next End Sub Grüße DanSolo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brandy32 Mitglied Konstruktionsingenieur
Beiträge: 23 Registriert: 16.12.2015 Windows 7, 64 bit Inventor 2012 + 2015
|
erstellt am: 04. Mrz. 2016 08:51 <-- editieren / zitieren --> Unities abgeben:
Hallo DanSolo, herzlichen Dank schon mal. Ich habe aber tatsächlich noch ein Problem damit: Das Text ersetzten funktioniert mit deinem Code super. Allerdings verändert es bei mir die komplette TExtformatierung (Schrift, Zeilenumbruch,) Außderdem habe ich im Text Bauteileigentschaften (Bauteilummer, Bezeichnung, Parameter mit Abmaßen, et.) eingefügt, das war auch der SInn um die Skizze auf die Ansicht zu legen. Diese Verküpfung verliert er leider nach dem ausführen des Codes und schreibt dann z.B. nur noch <Bauteilnummer> in Feld. Hast du dafür auch eine Abhilfe???? Viele Grüße, Brandy
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanSolo Mitglied TZ, MB Tech., Student
Beiträge: 5 Registriert: 01.03.2016
|
erstellt am: 04. Mrz. 2016 09:53 <-- editieren / zitieren --> Unities abgeben: Nur für Brandy32
Ja, da müssen wir auf den "FormattedText" gehen, da sollten alle Formatierungen erhalten bleiben. Sub ReplaceText() Dim oDrawing As DrawingDocument Set oDrawing = ThisApplication.ActiveDocument Dim oSheet As Sheet Dim oView As DrawingView Dim oSketch As DrawingSketch Dim oText As TextBox For Each oSheet In oDrawing.Sheets For Each oView In oSheet.DrawingViews For Each oSketch In oView.Sketches oSketch.Edit For Each oText In oSketch.TextBoxes oText.FormattedText = Replace(oText.FormattedText, "Hallo", "Neuer Text") Next oSketch.ExitEdit Next Next Next End Sub Grüße DanSolo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brandy32 Mitglied Konstruktionsingenieur
Beiträge: 23 Registriert: 16.12.2015 Windows 7, 64 bit Inventor 2012 + 2015
|
erstellt am: 04. Mrz. 2016 12:28 <-- editieren / zitieren --> Unities abgeben:
|
surfeu36 Mitglied
Beiträge: 5 Registriert: 08.02.2007
|
erstellt am: 17. Sep. 2016 21:41 <-- editieren / zitieren --> Unities abgeben: Nur für Brandy32
|
Brandy32 Mitglied Konstruktionsingenieur
Beiträge: 23 Registriert: 16.12.2015 Windows 7, 64 bit Inventor 2012 + 2015
|
erstellt am: 21. Sep. 2016 11:08 <-- editieren / zitieren --> Unities abgeben:
Hey, ich habe mal versucht den Code soweit zu adaptieren, dass er für Texte gilt, die in einer normalen Skizze liegen. Sub ReplaceText() Dim oDrawing As DrawingDocument Set oDrawing = ThisApplication.ActiveDocument Dim oSheet As Sheet Dim oSketch As DrawingSketch Dim oText As TextBox For Each oSheet In oDrawing.Sheets For Each oSketch In oSheet.Sketches oSketch.Edit For Each oText In oSketch.TextBoxes oText.FormattedText = Replace(oText.FormattedText, "alter text", "neuer Text") Next oSketch.ExitEdit Next Next End Sub Hier noch ein weiterer Code, um Texte die nicht in Skizzen liegen zu ersetzten (habe ich glaube ich auch mal in diesem Forum gefunden):
Sub TextErsetzen() Dim oDrawing As DrawingDocument Set oDrawing = ThisApplication.ActiveDocument Dim oSheet As Sheet Dim oNote As DrawingNote ' Ein Objekt vom Typ DrawingNote definieren - Das sind die normalen Text Beschriftungen For Each oSheet In oDrawing.Sheets For Each oNote In oSheet.DrawingNotes ' Alle Notes aus diesem Blatt in einer ForEach Schleife durchgehen oNote.Text = Replace(oNote.Text, "alt", "neu") ' Text ändern, Achtung, nimmt kein Text aus Skizzen mit End Sub Grüße, Brandy [Diese Nachricht wurde von Brandy32 am 21. Sep. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
surfeu36 Mitglied
Beiträge: 5 Registriert: 08.02.2007
|
erstellt am: 21. Okt. 2016 21:07 <-- editieren / zitieren --> Unities abgeben: Nur für Brandy32
|