Autor
|
Thema: nach einem Textstring suchen und ersetzen (6589 mal gelesen)
|
madhya Mitglied Administrator
Beiträge: 61 Registriert: 19.02.2001 Windows 10 64-bit Catia V5-6 R2019 Robcad / PSimulate AutoCAD
|
erstellt am: 31. Jan. 2008 15:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Catia-Gemeinde! Ich möchte in Drawings nach einem Textstring suchen und diesen durch einen neuen ersetzen. Suchen ist zwar kein Problem, aber ich habe nicht die notwendigen Befehle für das Editieren. Language="VBSCRIPT" Sub CATMain() Dim drawingDocument1 As Document Set drawingDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = drawingDocument1.Selection selection1.Search "CATDrwSearch.DrwText.TextString=ALTSTRING,all"
Dim ModText as DrawingText Dim NewText as DrawingText Dim n as Integer For n = 1 to selection1.count Set ModText = Selection1.Item(k).Value . . . . Next End Sub Kommt jemand auf eine Idee? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 31. Jan. 2008 15:21 <-- editieren / zitieren --> Unities abgeben: Nur für madhya
|
madhya Mitglied Administrator
Beiträge: 61 Registriert: 19.02.2001 Windows 10 64-bit Catia V5-6 R2019 Robcad / PSimulate AutoCAD
|
erstellt am: 31. Jan. 2008 15:39 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 31. Jan. 2008 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für madhya
|
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 31. Jan. 2008 19:39 <-- editieren / zitieren --> Unities abgeben: Nur für madhya
Hallo madhya, Du solltest die Zeile so aufbauen: Code: ModText = Replace(ModText, "ALTSTRING", "Test")
mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
madhya Mitglied Administrator
Beiträge: 61 Registriert: 19.02.2001 Windows 10 64-bit Catia V5-6 R2019 Robcad / PSimulate AutoCAD
|
erstellt am: 31. Jan. 2008 20:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, Hallo Luslnie Dein Hinweis auf replace war richtig. Danke vorerst einmal dafür. Mein nächstes Problem ist es dem TextString eine Variable zuzuweisen. Es wird einfach nicht akzeptiert. Ich möchte nämlich in einem Drawing nach mehreren unterschiedlichen Textstrings suchen und diese durch neue ersetzen. Vielleicht ist der Suchbefehl CATDrwSearch... der falsche Ansatz dafür, oder ich verwende die falsche Schreibweise stringalt_1="Frontscheibe" stringalt_2="Radhaus" . . selection1.Search "CATDrwSearch.DrwText.TextString=stringalt_1,all" For k = 1 to selection1.count Set ModText = Selection1.Item(k).Value stringneu="Heckscheibe" modtext.text= Replace(stringalt, stringalt, stringneu) Next Habt Ihr vielleicht einen Ansatz dafür?
mfg madhya
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 31. Jan. 2008 23:12 <-- editieren / zitieren --> Unities abgeben: Nur für madhya
Hallo , der Ansatz ist doch eigentlich logisch ( ): Du musst den Such-String zusammensetzen, etwa so: Code: selection1.Search "CATDrwSearch.DrwText.TextString=" & stringalt_1 & ",all"
[Edit] PS: Logischer wäre für mich auch die "replace"-Zeile so:Code: modtext.text= Replace(modtext.text, stringalt, stringneu)
{/Edit]mfg, Lusilnie ------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern [Diese Nachricht wurde von Lusilnie am 31. Jan. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
madhya Mitglied Administrator
Beiträge: 61 Registriert: 19.02.2001 Windows 10 64-bit Catia V5-6 R2019 Robcad / PSimulate AutoCAD
|
erstellt am: 01. Feb. 2008 10:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, Hallo Luslnie! Tausend Dank an euch beiden. Nun habe ich ungefähr das was ich brauche. Nur habe ich Probleme wenn im Suchstring Leerzeichen bzw "@" vorkommen, dann nämlich kommt es zum Interrupt. Ich stelle den aktuellen Stand meines Makros rein. Sub CATMain() Dim drawingDocument1 As Document Set drawingDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = drawingDocument1.Selection Dim ModText as DrawingText Dim K as Integer dim i as integer dim stringalt(13) as string dim stringneu(13) as string dim suchstring as string stringalt(01)="beispiel.mustermann@musterstadt.de" stringneu(01)="beispiel.musterfrau@musterstadt.de" stringalt(02)="Hr. Mustermann" stringneu(02)="Hr. Musterfrau" stringalt(03)="+49 821 899 0001" stringneu(03)="+49 821 897 0002" for i=1 to 03 suchstring=stringalt(i) msgbox suchstring &" ---> "& stringneu(i) selection1.Search "CATDrwSearch.DrwText.TextString="&suchstring&",all" For k = 1 to selection1.count Set ModText = Selection1.Item(k).Value modtext.text= Replace(modtext.text,suchstring, stringneu(i)) Next selection1.clear next End Sub mfg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 03. Feb. 2008 20:01 <-- editieren / zitieren --> Unities abgeben: Nur für madhya
Hallo madhya, mit der CATIA-internen Kennzeichnung von Sonderzeichen in Namen sollte es funktionieren: Code: selection1.Search "CATDrwSearch.DrwText.TextString='"&suchstring&"',all"
mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reiffm Mitglied Angestellter
Beiträge: 82 Registriert: 18.08.2000
|
erstellt am: 04. Jun. 2008 08:40 <-- editieren / zitieren --> Unities abgeben: Nur für madhya
Hallo zusammen, kann mir jemand sagen wie ich die Zeile selection1.Search "CATDrwSearch.DrwText.TextString='"&suchstring&"',all" umschreiben muß, wenn ich in einem CATPart Features umbenennen will. Mein Versuch mit suchstring="Name=*"& stringalt&"*" &",all" selection1.Search suchstring scheitert leider bei einem Doppelpunkt im "Stringalt". ------------------ Frohes Schaffen Michael Reiff Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 04. Jun. 2008 22:00 <-- editieren / zitieren --> Unities abgeben: Nur für madhya
Hallo reiffm, probier es doch genau so, wie ich es im Beitrag vor Dir beschrieben habe: Code: suchstring="Name='*" & stringalt & "*',all"
Oder auch:Code: suchstring="'Name=*" & stringalt & "*',all"
Dann sollte es funktionieren. ODER ? mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Norman Schulz Mitglied Konstrukteur Catia V4/V5
Beiträge: 300 Registriert: 18.03.2002 V5R19SP9 // V5R20SP7 //V5R24SP5 Lizenz MD2 Lenovo ThinkPad W540 WIN 7 64bit 16GB Intel i7-4800MQ 2.7GHz
|
erstellt am: 19. Apr. 2010 10:34 <-- editieren / zitieren --> Unities abgeben: Nur für madhya
Hallo! Ist es moeglich, das Makro von madhya auch ueber eine Reihe von Dokumenten (Bsp. X Zeichnungen in einem Ordner) laufen zu lassen? Wie muesste man das Makro dafuer umschreiben? Gruss Norman ------------------ WTL Engineering GmbH n.schulz@wtl-group.de http://www.wtl-group.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |