Autor
|
Thema: Syntax Search Drafting.Text mit Variable (1517 mal gelesen)
|
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 12. Aug. 2015 07:48 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte einen Textsuche über eine Variable suchen lassen leider bekomme ich den Syntax für die Zeile: Code: objSel.Search "Drafting.Text.Name=WKZ_NR"
mit einer Variablen nicht hin.
Code: Sub CATMain() Dim objDoc As Document Dim objSel As Selection Dim i As Long Dim objModelElement As ModelElement Dim sTextName As String sTextName = "WKZ_NR" MsgBox sTextName Set objDoc = CATIA.ActiveDocument Set objSel = objDoc.Selection objSel.Clear '***EXPLIZITER NAME OHNE WILDCARDS CATIA.HSOSynchronized = False objSel.Search "Drafting.Text.Name=sTextName" 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
Hat jemand einen Tipp für mich. ------------------ Gruß Uwe Auch Catia ist nur ein Mensch! [Diese Nachricht wurde von moppesle am 12. Aug. 2015 editiert.] 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: 12. Aug. 2015 08:48 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Uwe So wie du es geschrieben hast wird nicht der Inhalt der Variabel ausgewertet sondern nur der Variablenname als Sting verwendet (steht in " "): Code: objSel.Search "Drafting.Text.Name=" & sTextName & ",all"
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 12. Aug. 2015 12:40 <-- editieren / zitieren --> Unities abgeben:
Servus Bernd. Danke hat geklappt. Ich dachte ""Drafting.Text.Name" wäre ein Objekt und kein Text. Da bin ich wohl auf dem falschen Dampfer? Oder? Habe noch ein anderes Problem. In folgendem Code erstelle ich mir Attribut Links zu Textfeldern her, die ein Dummyzeichen haben. Funzt soweit gut, bis das wenn nur einstellige Werte in den Parametern stehen das Dummyzeichen nicht ersetzt wird. Hast du dazu auch eine Idee? ...Bestimmt Ich möchte später auf den Text eines Bestimmten Detail zugreifen. Wie müßte ich den Code dazu anpassen?
Code: Sub CreateAtribLink(Param_Name As String, Einfuegeset As Parameters, ZIELSETName As String, TextName As String)If Parameter_pruefen(Param_Name, Einfuegeset, ZIELSETName) = True Then MsgBox "Parameter " & Param_Name & " nicht vorhanden. Bitte Parameter anlegen" Exit Sub End If If Text_pruefen(TextName) = False Then MsgBox "Textfeld " & TextName & " nicht vorhanden. Bitte " & TextName & " Textfeld anlegen" Exit Sub Else Dim intDrwDocObj As DrawingDocument Dim intDrwParametersObj As Parameters Dim intDrwParameter 'As Length Dim intDrwSheetsObj As DrawingSheets Dim intDrwSheetObj As DrawingSheet Dim intDrwViewsObj As DrawingViews Dim intDrwViewObj As DrawingView Dim intDrwTextsObj As DrawingTexts Dim intDrwTextObj As DrawingText Dim intStartPosLng As Long Dim intReplaceLenLng 'As Long Dim InParamName Set intDrwDocObj = CATIA.ActiveDocument Set intDrwSheetsObj = intDrwDocObj.Sheets Set intDrwSheetObj = intDrwSheetsObj.Item(1) Set intDrwViewsObj = intDrwSheetObj.Views Set intDrwViewObj = intDrwViewsObj.Item(1) Set intDrwTextsObj = intDrwViewObj.Texts Set intDrwTextObj = intDrwTextsObj.GetItem(TextName) Set intDrwParametersObj = intDrwDocObj.Parameters Set intDrwParameter = intDrwParametersObj.Item(Param_Name) 'MsgBox intDrwParameter.Value intReplaceLenLng = CLng(Len(intDrwParameter.ValueAsString)) intDrwTextObj.InsertVariable intStartPosLng, intReplaceLenLng, intDrwParameter End If End Sub
------------------ Gruß Uwe Auch Catia ist nur ein Mensch! 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: 12. Aug. 2015 12:58 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Uwe zu 1.: Überschreibe doch den Dummy-Text vor dem erstellen des Attibutlinks durch ein Leerzeichen. zu 2.: Schau mal hier. Gruß Bernd PS: Vielleicht wäre es einfacher/stabiler wenn du deinen Funktion/Unterroutinen gleich die Objekte (Parameter/Textfeld) übergibst anstatt diese dort "neu zu suchen" ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 12. Aug. 2015 21:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, Punkt 1: habe ich umgesetzt. War noch einfach. Punkt 2: Kann ich nicht nachvollziehen.Kannst du näher darauf eingehen? Punkt PS: Ich dachte ich hätte das schon gemacht?! Hast du mal ein Beispiel? ------------------ Gruß Uwe Auch Catia ist nur ein Mensch! 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: 13. Aug. 2015 14:43 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Uwe Anbei ein Beispiel. Code: Sub Catmain()Dim drawingDocument1 As DrawingDocument Set drawingDocument1 = CATIA.ActiveDocument Dim drawingSheets1 As DrawingSheets Set drawingSheets1 = drawingDocument1.Sheets Dim drawingSheet1 As DrawingSheet Set drawingSheet1 = drawingSheets1.Item("Blatt .1") Dim drawingViews1 As DrawingViews Set drawingViews1 = drawingSheet1.Views Dim drawingView1 As DrawingView Set drawingView1 = drawingViews1.Item("Main View") Dim drawingComponents1 As DrawingComponents Set drawingComponents1 = drawingView1.Components Dim drawingComponent1 As DrawingComponent Set drawingComponent1 = drawingComponents1.Item("Werkstueckkante.1") SetDrwCompText drawingComponent1, "Text_min_Kehle", "-0,3" End Sub Sub SetDrwCompText(DrwComponent As DrawingComponent, StrDrwCompModTextName As String, StrDrwCompModTextValue As String) Dim i As Integer Dim DrwCompModObj As Variant For i = 1 To DrwComponent.GetModifiableObjectsCount Set DrwCompModObj = DrwComponent.GetModifiableObject(i) If DrwCompModObj.Name = StrDrwCompModTextName Then DrwCompModObj.Text = StrDrwCompModTextValue Exit Sub End If Next End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 13. Aug. 2015 15:18 <-- editieren / zitieren --> Unities abgeben:
|
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 13. Aug. 2015 19:22 <-- editieren / zitieren --> Unities abgeben:
Ich bin´s wieder, Bekomme bei Code: Dim drawingComponent1 As DrawingComponent Set drawingComponent1 = drawingComponents1.Item("WKZ_NR")
ein Automation error. Hast du ne Idee was es sein könnte? ------------------ Gruß Uwe Auch Catia ist nur ein Mensch! 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: 13. Aug. 2015 19:33 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
|
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 13. Aug. 2015 19:38 <-- editieren / zitieren --> Unities abgeben:
Hi Ja.. oder ich bin wieder auf dem falschen Dampfer. Siehe Bild. Code: Dim drawingSheet1 As DrawingSheet Set drawingSheet1 = drawingSheets1.Item("Details") Dim drawingViews1 As DrawingViews Set drawingViews1 = drawingSheet1.Views
Dim drawingView1 As DrawingView Set drawingView1 = drawingViews1.Item("TEXT_PROJEKTINFO") Dim drawingComponents1 As DrawingComponents Set drawingComponents1 = drawingView1.Components Dim drawingComponent1 As DrawingComponent Set drawingComponent1 = drawingComponents1.Item("WKZ_NR") SetDrwCompText drawingComponent1, "Text_min_Kehle", "-0,3"
------------------ Gruß Uwe Auch Catia ist nur ein Mensch! [Diese Nachricht wurde von moppesle am 13. Aug. 2015 editiert.] 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: 13. Aug. 2015 19:49 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Moment, willst du die Instanz oder die Referenz (das "Orginal" auf dem Detail-Sheet) der 2D-Komponente ändern? Wenn du die Referenz ändern willst, einfach die View und den Text "normal" ansprechen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 13. Aug. 2015 20:00 <-- editieren / zitieren --> Unities abgeben:
Hi Jetzt wird es wieder dunkler Ich möchte den Textwert des Textes ändern der in dem Detailview "TEXT_PROJEKTINFO" ist. Aber was bewirkt den der nachfolgende Code? Code: Dim drawingComponents1 As DrawingComponents Set drawingComponents1 = drawingView1.ComponentsDim drawingComponent1 As DrawingComponent Set drawingComponent1 = drawingComponents1.Item("WKZ_NR")
------------------ Gruß Uwe Auch Catia ist nur ein Mensch! 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: 13. Aug. 2015 20:23 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Dieser Code greift auf die 2D-Komponente zu, die in einer "normalen" Ansicht (zB Vorderansicht, oder Vordergrund) eingefügt/vorhanden ist. Wo änderst du von Hand den Inhalt der 2D-Komponenten? Ich bin davon ausgegangen, dass die 2D-Komponenten direkt aus einem Katalog kommen, und bei der Instanz der Inhalt angepasst wird. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |