Autor
|
Thema: Parameter auslesen und ansprechen (3457 mal gelesen)
|
Syphield Mitglied Konstrukteur
Beiträge: 46 Registriert: 02.10.2007
|
erstellt am: 20. Okt. 2010 08:55 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte innerhalb eines Makros einen Parameter aus einem benannten Textfeld einer Zeichnung auslesen/suchen, und dann weiterverwenden z.B. zur Benennung des Dateinamens. Das suchen klappt ja schon, aber wie spreche ich den gefundenen Text dann wieder an, um ihn weiter zu verwenden ??? So weit bin ich schon. Das besagte Textfeld heißt hier "PRO.FILE@DOKID" ------------------------------------------------------- Set objSel = objDoc.Selection objSel.Search "Drafting.Text.Name=PRO.FILE@DOKID*" ------------------------------------------------------- Mit "objSel" selbst klappt es leider nicht.
------------------ Never stop progress ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 20. Okt. 2010 10:02 <-- editieren / zitieren --> Unities abgeben: Nur für Syphield
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 20. Okt. 2010 10:08 <-- editieren / zitieren --> Unities abgeben: Nur für Syphield
Ansprechen dann über Code:
selWork.Item(1).Value
Edit: Daniel, Du hast meißt mehr Ahnung, als ich, daher frage ich nur. Bisher dachte ich, es kann ein Textfeld mit einem Namen nur einmal geben. ist mehrfach auch möglich? ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing [Diese Nachricht wurde von HoBLila am 20. Okt. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 20. Okt. 2010 10:57 <-- editieren / zitieren --> Unities abgeben: Nur für Syphield
Hallo Henry, also mit dem .Value hast du natürlich vollkommen recht . Textfelder auf Zeichnungen können aber mehrmals mit dem selben Namen belegt werden. Hier wird natürlich nur nach dem DisplayNamen gesucht (dieser kann gleich sein). Die Schreibgeschütze Eigenschaft "internalName" liefert unterschiedliche Namen (Erhöhung des Counter z.B. DrwText.1...DrwText.2..DrwText.n). Das heißt es sollte zur Sicherung der Konsistenz auf jeden Fall diese Abfrage rein ;-) Anbei mal ein Testmakro. Voraussetzung sind zwei Textfelder mit dem selben DisplayName Code:
Sub CATMain() Dim objDoc As Document Dim objSel As Selection Dim i As Long Dim objModelElement As ModelElement Set objDoc = CATIA.ActiveDocument Set objSel = objDoc.Selection objSel.Clear '***EXPLIZITER NAME OHNE WILDCARDS CATIA.HSOSynchronized = False objSel.Search "Drafting.Text.Name=TEST_1" CATIA.HSOSynchronized = True MsgBox "Es wurden " & objSel.Count & " Textfelder selektiert!" + vbNewLine + _ "Name der Textfelder: " + objSel.Item(1).Value.Name For i = 1 To objSel.Count Set objModelElement = objSel.Item(i).Value.GetItem("ModelElement") MsgBox "Interne Name für Textfeld " & CStr(i) + vbNewLine + objModelElement.InternalName Next objSel.Clear End Sub
------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 20. Okt. 2010 17:10 <-- editieren / zitieren --> Unities abgeben: Nur für Syphield
Hut ab, Daniel! Noch eine Frage: Was ist aus dem guten alten ";all" beim Search geworden? ;-) ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasKi Mitglied
Beiträge: 1 Registriert: 22.10.2010
|
erstellt am: 22. Okt. 2010 16:19 <-- editieren / zitieren --> Unities abgeben: Nur für Syphield
Hallo zusammen, ich habe über Power-Copy ein neues Geoset mit mehreren Konstruktionselementen, Parametern und einem Axensystem in mein Part eingefügt. Um mehrere eingefügte Geosets unterscheiden zu können, möchte ich die Elemente über ein Makro folgendermaßen umbenennen: Bsp: Alter Name: XXX-Line Neuer Name: 001-Line Bei allen Konstruktionselementen und Axen klappt das auch nach einiger Arbeit ganz gut, allerdings klappt die Umbenennung der Parameter nicht. Den alten und neuen Namensteil (sOld, sNew) gebe ich über eine Eingabemaske ein. Kurz ein Auszug aus dem betreffenden Quelltext zur Umbenennung: für Konstruktionselemente: If Sel1.Item(i).Value.Parent.Name = "HybridShapes" Then sOldname = Sel1.Item(i).Value.Name sNewname = Replace(sOldname, sOld, sNew) Sel1.Item(i).Value.Name = sNewname End If für Parameter: If Sel1.Item(i).Value.Parent.Name = "Parameters" Then sOldname = Sel1.Item(i).Value.Name sNewname = Replace(sNewname, sOld, sNew) Sel1.Item(i).Rename sNewname End If Genau in der Vorletzten Quelltextzeile scheint der Haken zu liegen. Wenn ich statt der Variablen sNewname ein String, wie z.B. "Test" eingebe, klappt die Umbenennung. Nur eine Variable scheint er nicht als Eingabe anzunehmen. Meine Frage ist nun, wie man es schafft die Rename-Funktion mit einer Variablen laufen zu lassen? Vielen Dank schonmal für eure Hilfe. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 26. Okt. 2010 13:13 <-- editieren / zitieren --> Unities abgeben: Nur für Syphield
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 26. Okt. 2010 13:26 <-- editieren / zitieren --> Unities abgeben: Nur für Syphield
Servus Müsse es beim Parameter nicht: sNewname = Replace(sOldname, sOld, sNew)heißen, oder ist sNewname schon vorher definiert? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|