Autor
|
Thema: Bestehenden Text in einer Deawing editieren und ändern. (1145 mal gelesen)
|
ZORG Mitglied CAD-CAM-Techniker
Beiträge: 21 Registriert: 26.05.2009 CATIA V5R19 SP5
|
erstellt am: 26. Jun. 2009 22:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Profi- Programmierer hier ist wider einmal ZORG ! Heute hab ich zwei Fragen an Euch! 1.)Ich möchte gerne bei einer Drawing auf einen bestimmten Text zugreifen. Text ist bereits in der Drawing vorhanden mit einem eigenen Komponentenname (xyz) benennt. Wie kann ich nun auf den Text zugreifen, und zwar so dass ich den bestehenden Textinhalt in meiner Textbox angezeigt bekomme? (Textinhalt ist z.B. Länge 1500mm) Grund ist das der Benutzer den bestehenden Text kontrollieren kann und wen nötig abändern. Als Abschluß sollte entweder wider der Originaltext oder der Geänderte Text aus der Textbox zurückgeschrieben werden. (Anmerkung es handelt sich um 40 unterschiedliche Texte pro Drawing.) 2.)Kann mir bitte einer Erklären wie ich eine ComboBox richtig erstellen kann? Habe eine UserForm gebaut und möchte eine ComboBox einfügen wo ich verschiedene Materialien auswählen kann. Und die Auswahl sollte anschließend als ein Text übergeben werden. Sind für einen Profi nur Kleinigkeiten aber anscheinend bin ich so doof das ich einfach nicht weiterkomme! Vorab schon einmal Danke!!! Mit freundlichen Grüßen ZORG (CATIA V5/R19/SP2 VB )
------------------ MFG ZORG 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: 30. Jun. 2009 17:18 <-- editieren / zitieren --> Unities abgeben: Nur für ZORG
In den Sheets sind Views enthalten, die wiederum Texsts enthalten, was eine Collection der Texte darstellt. diese haben alle den Namen der Komponente, Darüber eine Suche laufen lassen und dann eben den Text, ich glaube mit Value oder so verändern. ComboBox weiß ich jetzt nicht ganz aus dem Stehgreif, gibt's aber bestimmt eine .Add Methode für das Objekt. Edit: cmbText.AddItem "Test" ------------------ 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 30. Jun. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ZORG Mitglied CAD-CAM-Techniker
Beiträge: 21 Registriert: 26.05.2009 CATIA V5R19 SP5
|
erstellt am: 01. Jul. 2009 00:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry ! Danke erstmal für Deinen Tipp! Dein Prinzip habe ich bereits versucht, nur komm ich mit den Codes einfach nicht klar. Da ich Programmier – Neuling bin währe es sehr nett wen Du oder jemand anders für mich ein Beispiel hätte. Zum Beispiel habe ich einen Text mit dem Komponentennahmen(Rollenlänge ). Der Inhalt des Textes ist 1510mm. Optimal währe wenn dieser Wert in meiner Kontrollbox angezeigt wird. Somit kann der Benutzer einen neuen Wert festlegen oder den ursprünglichen Wert einfach bestätigen. (Sollte der Wert 1510mm gleichbleiben ist es auch kein Problem wenn er nach Betätigung mit 1510mm überschrieben wird.) Trotzdem herzlichen Dank Henry ! Und ich werde noch weiter mit Deiner Idee probieren. Danke!!! Mit freundlichen Grüßen ZORG (CATIA V5/R19/SP2 VB )
------------------ MFG ZORG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ZORG Mitglied CAD-CAM-Techniker
Beiträge: 21 Registriert: 26.05.2009 CATIA V5R19 SP5
|
erstellt am: 02. Jul. 2009 22:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Profi- Programmierer! Habe gerade eine Lösung gefunden die funktioniert. Fraglich ist nur ob sie optimal programmiert ist? Anbei das Ergebnis : Grundvoraussetzung ist das im Blatthintergrund ein Text mit dem Komponentename: LAENGE vorhanden ist. Sub CATMain() Dim dDoc1 As DrawingDocument Set dDoc1 = CATIA.ActiveDocument Dim dSheets1 As DrawingSheets Set dSheets1 = dDoc1.Sheets Dim dSheet1 As DrawingSheet Set dSheet1 = dSheets1.Item("Blatt .1") ' In den Hintergrund wechseln Set oDraw = CATIA.ActiveDocument Set oSheets = oDraw.Sheets Set oSheet = oSheets.ActiveSheet oSheet.Activate Set oViews = oSheet.Views oSheet.Views.Item(2).Activate Set oView = oViews.Item(2) oView.Activate Dim dViews1 As DrawingViews Set dViews1 = dSheet1.Views Dim dView1 As DrawingView Set dView1 = dViews1.Item("Background View") Dim dTexts1 As DrawingTexts Set dTexts1 = dView1.Texts Dim dText1 As DrawingText Set dText1 = dTexts1.GetItem("LAENGE") charstring = dText1.Text MsgBox charstring End Sub Mit freundlichen Grüßen ZORG
------------------ MFG ZORG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 03. Jul. 2009 18:41 <-- editieren / zitieren --> Unities abgeben: Nur für ZORG
Hallo ZORG, Ich habe dein Code etwas optimiert: Code: Sub CATMain() Dim dDoc1 As DrawingDocument Set dDoc1 = CATIA.ActiveDocument Dim dSheets1 As DrawingSheets Set dSheets1 = dDoc1.Sheets Dim dSheet1 As DrawingSheet 'hier sollte man auch was ähnliches machen, wie beim Text Set dSheet1 = dSheets1.Item("Sheet.1") Dim oViews As DrawingViews Set oViews = dSheet1.Views Dim oView As DrawingView Set oView = oViews.Item(2) 'oView.Activate Dim dTexts1 As DrawingTexts Set dTexts1 = oView.Texts Dim dText1 As DrawingText 'Set dText1 = dTexts1.GetItem("LAENGE") 'elegantere und Fehlertolerantere Version Dim i As Integer Dim charstring As String For i = 1 To dTexts1.Count Set dText1 = dTexts1.Item(i) If dText1.Name = "LAENGE" Then charstring = dText1.Text MsgBox charstring Exit For End If Next End Sub
Einerseits brauchst du nicht in den View zu wechseln, um den Wert einer Textfeld auszulesen. Zweitens ist die Background View immer Item(2), somit ist es sicherer. Drittens, wenn du einfach den Feld "LAENGE" ansprichst und der Feld nicht existiert, läuft das Programm auf Fehler. Deswegen habe ich eine For-Schleife eingebaut. Die Lösung mit der For-Schleife kannst du auch auf den Blatt anwenden.Für die Programmierung von Comboboxen gibt es im Internet sicher einige Beispiele. In CATIA brachst du dazu VBA. Du musst da einen Form anlegen, den Form von einen Modul aufrufen (starten des Makros). Du brauchst dann wahrscheinlich auch zwei Tasten. Einer zum Auslesen der Informationen und ein anderer zum Zurückschreiben. Versuche was zu basteln und stellen dann deine weitere Fragen mit Beispielcode / Beispieldokumente hier ruhig. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ZORG Mitglied CAD-CAM-Techniker
Beiträge: 21 Registriert: 26.05.2009 CATIA V5R19 SP5
|
erstellt am: 03. Jul. 2009 21:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Zoltan ! Danke für die Optimierung echt super! Durch deine Optimierung läuft das ganze Ding viel runder. Hier sieht man wider den unterschied zwischen einem Laien und einem Profi. Noch einmal DANKE ! Für die Combobox habe ich bereits eine Lösung gefunden. War in der Hilfe einigermaßen beschrieben. Mit freundlichen Grüßen ZORG
------------------ MFG ZORG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |