Autor
|
Thema: Zeichnung \ Textfeld automatisch ausfüllen (3231 mal gelesen)
|
NT24 Mitglied Technischer Zeichner
Beiträge: 61 Registriert: 08.11.2004
|
erstellt am: 12. Nov. 2006 23:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum Ich habe im Forum einen Beitrag gefunden wie man einen Text einliest. http://ww3.cad.de/foren/ubb/Forum137/HTML/001111.shtml#000001 Code: sLine = “Text” Set DrawingText = DrwView.Texts.Add(sLine, 0, i) DrawingText.SetFontSize 0, 0, 5 DrawingText.anchorPosition = catBottomLeft
Dieses Script setzt ein Textfeld mit einem bestimten Text in eine bestimmte Position auf der Zeichnung.
Weis jemand wie das Scrpt ausschauen müsste wenn ich den Text in eine Vordefiniertes Textfeld (zb. Namen „Feld1“ auf der Zeichnung einfügen möchten. Mit freundlichen Grüßen NT24
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tstone Mitglied Werkzeugkonstrukteur
Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram Microsoft Windows XP Catia V5 R18 SP6 VB2005
|
erstellt am: 13. Nov. 2006 12:40 <-- editieren / zitieren --> Unities abgeben: Nur für NT24
Hallo NT24 Wenn das Textfeld auf der Zeichnung vorhanden ist und du den Namen kennst geht es folgendermaßen: ... Dim drawingTexts1 As DrawingTexts Set drawingTexts1 = drawingView1.Texts Dim drawingText1 As DrawingText Dim n As Integer N=0 Do n = n + 1 If drawingTexts1.Item(n).Name = oName Then Set drawingText1 = drawingTexts1.Item(n) drawingText1.Text = "MeinText" Exit Do End If Loop Until n = drawingTexts1.Count ... Bis denn ------------------ Grüße TStone "Respektiere die Macht der Worte, wähle sie mit Bedacht!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tstone Mitglied Werkzeugkonstrukteur
Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram Microsoft Windows XP Catia V5 R18 SP6 VB2005
|
erstellt am: 13. Nov. 2006 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für NT24
|
NT24 Mitglied Technischer Zeichner
Beiträge: 61 Registriert: 08.11.2004
|
erstellt am: 14. Nov. 2006 09:55 <-- editieren / zitieren --> Unities abgeben:
Vielen dank für ihre Antwort! Ich habe das Script Probiert! leider funktioniert das nicht wirklich und mir ist es nicht gelungen es zum laufen zu bringen!! es bleibt immer auf dieser Stelle stehen
Code: Set drawingTexts1 = drawingView1.Texts
??? mfg NT24 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tstone Mitglied Werkzeugkonstrukteur
Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram Microsoft Windows XP Catia V5 R18 SP6 VB2005
|
erstellt am: 14. Nov. 2006 12:32 <-- editieren / zitieren --> Unities abgeben: Nur für NT24
|
NT24 Mitglied Technischer Zeichner
Beiträge: 61 Registriert: 08.11.2004
|
erstellt am: 16. Nov. 2006 09:19 <-- editieren / zitieren --> Unities abgeben:
|
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 16. Nov. 2006 21:10 <-- editieren / zitieren --> Unities abgeben: Nur für NT24
Hallo NT24, ich will ja nicht vorwitzig sein ( ), aber wenn ich mir die Code-Schnipsel in den Beiträgen anschaue, so sollte die Zeile vielleicht so lauten: Code: Set drawingTexts1 = DrwView.Texts
Hilft das? 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 |
Tstone Mitglied Werkzeugkonstrukteur
Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram Microsoft Windows XP Catia V5 R18 SP6 VB2005
|
erstellt am: 17. Nov. 2006 09:07 <-- editieren / zitieren --> Unities abgeben: Nur für NT24
|
NT24 Mitglied Technischer Zeichner
Beiträge: 61 Registriert: 08.11.2004
|
erstellt am: 20. Nov. 2006 08:51 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Forum Ich habe leider immer noch das Problem das das Script noch nicht Funktioniert! In der Zeile „Set drawingTexts1 = DrwView.Texts“ Kommt die Fehlermeldung „(424) Objekt erforderlich“
Code: Private Sub CommandButton1_Click() oName = "TEST"Dim drawingTexts1 As DrawingTexts 'Set drawingTexts1 = drawingView1.Texts Set drawingTexts1 = DrwView.Texts Dim drawingText1 As DrawingText Dim n As Integer n = 0 Do n = n + 1 If drawingTexts1.Item(n).Name = oName Then Set drawingText1 = drawingTexts1.Item(n) drawingText1.text = "MeinText" Exit Do End If Loop Until n = drawingTexts1.Count End Sub
Ich würde mich freuen über einen Antwort!mfg NT24
[Diese Nachricht wurde von NT24 am 20. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MarkusK Mitglied
Beiträge: 130 Registriert: 09.08.2002 Dell Precision T5500 Intel Xenon X5560 4x 2,8 GHz 12 GB Ram NVIDIA Quadro FX 3800 Win XP Catia V5R19 SP3
|
erstellt am: 20. Nov. 2006 12:51 <-- editieren / zitieren --> Unities abgeben: Nur für NT24
Hallo NT24, ich vermute dein Code weiß einfach nicht, in welcher Datei, in welchem Blatt und in welcher View es arbeiten soll. Als erstes fehlt dir eigentlich "Options Explicit", und zwar ganz oben in deinem Modul. Das bewirkt nämlich, dass alle Variablen definiert sein müssen. Somit dürft in deinem Code erst mal bei DrwView eine Fehlermeldung kommen. Denn das ist eine (Objekt)Variable, die aber nie mit einem Objekt verbunden wird. Somit kann ja auch auf kein Textfeld darin zugegriffen werden. Habe mal von mir einen Code rauskopiert. Hoffe nur er läuft, bzw. dass nix fehlt, da er halt rauskopiert wurde. Ich trage in zwei Textfeldern das Datum und mein Name ein. Die Textfelder sitzen auf dem Blatt "Vorlagen (Detail )", darauf in der View "Engl. ZG-Kopf_text". Das Makro durchläft dann, wie es die Kollegen auch schon beschrieben haben, alle Textfelder in dieser View (nur dieser View, andere Views haben ihre eigene Textfelder, die auch gleich heißen können) Option Explicit Private Const Datumsfeld = 65 Private Const Namensfeld = 66 Sub CATMain() If CATIA.Documents.Count Then If TypeName(CATIA.ActiveDocument) = "DrawingDocument" Then Freigabe Format(Date, "dd.mm") End If End If End Sub Public Sub Freigabe(Datum As String)
Dim drawingDocument1 As DrawingDocument Set drawingDocument1 = CATIA.ActiveDocument Dim drawingSheets1 As DrawingSheets Set drawingSheets1 = drawingDocument1.Sheets Dim drawingSheet1 As DrawingSheet If drawingSheets1.Item("Vorlagen (Detail )") Is Nothing Then MsgBox "Zeichnungköpfe nicht gefunden": Exit Sub Set drawingSheet1 = drawingSheets1.Item("Vorlagen (Detail )") Dim drawingViews1 As DrawingViews Set drawingViews1 = drawingSheet1.Views Dim drawingView1 As DrawingView If drawingViews1.Item("Engl. ZG-Kopf_text") Is Nothing Then MsgBox "Zeichnungköpfe nicht gefunden": Exit Sub Set drawingView1 = drawingViews1.Item("Engl. ZG-Kopf_text") Dim text1 As DrawingText Dim text2 As DrawingText 'Datumsfeld ermitteln For Each text1 In drawingView1.Texts If text1.Name = "Text." & Datumsfeld Then Exit For Next text1 If text1 Is Nothing Then MsgBox "Textfeld " & Datumsfeld & " für Datum nicht gefunden" Exit Sub Else text1.Text = Datum End If 'Namensfeld ermitteln For Each text2 In drawingView1.Texts If text2.Name = "Text." & Namensfeld Then Exit For Next text2 If text2 Is Nothing Then MsgBox "Textfeld " & Namensfeld & " für Datum nicht gefunden" Exit Sub Else text2.Text = "Hans Mustermann" End If End Sub
------------------ Gruss Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tstone Mitglied Werkzeugkonstrukteur
Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram Microsoft Windows XP Catia V5 R18 SP6 VB2005
|
erstellt am: 20. Nov. 2006 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für NT24
Hallo NT24 Deiner Variable DrwView wird gar kein Wert/Objekt zugewiesen. So sollte es gehen: Code: -------------------------------------------------------------------------------- Private Sub CommandButton1_Click() oName = "TEST" Dim DrwDocument As DrawingDocument Set DrwDocument = CATIA.ActiveDocument Dim DrwSheets As DrawingSheets Set DrwSheets = DrwDocument.Sheets Dim DrwSheet As DrawingSheet Set DrwSheet = DrwSheets.ActiveSheet Dim DrwView As DrawingView Set DrwView = DrwSheet.Views.ActiveView Dim drawingTexts1 As DrawingTexts Set drawingTexts1 = DrwView.Texts Dim drawingText1 As DrawingText Dim n As Integer n = 0 Do n = n + 1 If drawingTexts1.Item(n).Name = oName Then Set drawingText1 = drawingTexts1.Item(n) drawingText1.text = "MeinText" Exit Do End If Loop Until n = drawingTexts1.Count End Sub -------------------------------------------------------------------------------- Bitte nicht falsch verstehen: Ich kann dir nur empfehlen dich in die "Infrastructure Automation Objects" der V5Automation.chm einzuarbeiten. Die Forumsmitglieder können nur Lösungenvorschläge für Probleme machen, nicht ganze Programme zusammenbasteln. Grundkenntnisse der VB-Programmierung sind,auch für die Macros, erforderlich. Ein großer Vorteil ist es, wenn man weiß, ob ein Gegenüber Anfänger oder Profi ist. Entsprechend kann geantwortet werden. Schlußendlich hätte ich aber auch detailierter antworten müssen. Ich hoffe dein Programm funktioniert nun.
------------------ Grüße TStone "Respektiere die Macht der Worte, wähle sie mit Bedacht!" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NT24 Mitglied Technischer Zeichner
Beiträge: 61 Registriert: 08.11.2004
|
erstellt am: 20. Nov. 2006 14:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen Ich möchte mich noch Mals bei euch allen bedanke für die interessanten und hilfreichen Beiträge! Ich hätte nur noch einen bitte! Wie müsste das Script ausschauen wenn das Text Feld in der Hintergrundansicht positioniert ist? Ich bedanke mich nochmals für eure Hilfe mfg NT24
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Zerspanungsmechaniker (a) | «Innovationen sind gefragt, um unsere Erde lebenswert zu erhalten. Und wir sind ganz vorne mit dabei: Unsere Hightech-Sensoren machen rund um den Globus Maschinen leistungsfähiger und Fabriken smarter. Vor allem helfen sie, kostbare Ressourcen zu schonen. Das fasziniert mich. Wir sind der richtige Ort für alle, die mit uns in einer inspirierenden und wertschätzenden Arbeitsumgebung die Zukunft gestalten wollen.... | Anzeige ansehen | Mechaniker |
|
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 20. Nov. 2006 21:24 <-- editieren / zitieren --> Unities abgeben: Nur für NT24
Hallo NT24, dann müßte die Zeile aus dem Script von Tstone nicht Code: Set DrwView = DrwSheet.Views.ActiveView
sondernCode: Set DrwView = DrwSheet.Views.Item(2)
lauten. Das sollte immer die BackgroundView (Hintergrundansicht) sein, ".Item(1)" immer die MainView (Sheet)! 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 |