Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  TXT-Datei in Textfeld laden

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  TXT-Datei in Textfeld laden (6907 mal gelesen)
AndreeX00X
Mitglied
Ingenieur


Sehen Sie sich das Profil von AndreeX00X an!   Senden Sie eine Private Message an AndreeX00X  Schreiben Sie einen Gästebucheintrag für AndreeX00X

Beiträge: 48
Registriert: 14.08.2007

CATIA V5 R16

erstellt am: 05. Okt. 2007 23:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Positionsfenster.jpg

 
Hallo,

ich möchte ein Makro mit VBA in CATIA erstellen, welches, wenn es aktiviert wird, eine TXT-Datei einlesen soll, die der User im "Datei öffnen"-Fenster aufruft.

Dazu habe ich bei Formulare ein Objekt erzeugt, welches ein Textfeld enthält, siehe Bild. Der Code dazu sieht so aus:

Code:

Private Sub cmdSchliessen_Click()
    End
End Sub

Private Sub UserForm_Activate()

    txtPositionen = FilePath

End Sub


Bei Module sieht der Code zur Zeit noch so aus:

Code:

Option Explicit

Sub CATMain()

  DateiOeffnen
   
  UserPosition.Show 0

End Sub

Sub DateiOeffnen()

  Dim FilePath As String
  FilePath = CATIA.FileSelectionBox("Select a text file", "*.txt", CatFileSelectionModeOpen)
'  CATIA.SystemServices.Print "The selected file is " & FilePath

End Sub


Eigentlich habe ich mir gedacht, dass der Inhalt der TXT-Datei in das Textfeld kopiert wird, aber das hat so nicht ganz hingehauen.

Ich habe auch schon in mein VBA-Buch geschaut, aber da finde ich auch nichts drin. Kann mir hier vielleicht jemand helfen?

------------------
Gruß AndreeX00X

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lusilnie
Mitglied



Sehen Sie sich das Profil von Lusilnie an!   Senden Sie eine Private Message an Lusilnie  Schreiben Sie einen Gästebucheintrag für Lusilnie

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 06. Okt. 2007 17:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AndreeX00X 10 Unities + Antwort hilfreich

Hallo AndreeX00X,

ich kenne mich zwar nicht mit UserForm's aus, doch um "txtPositionen" mit dem Text aus der Textdatei zu füllen, sollte die Zeile wahrscheinlich so lauten:

Code:
txtPositionen = CATIA.FileSystem.GetFile(FilePath).OpenAsTextStream("ForReading")


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

AndreeX00X
Mitglied
Ingenieur


Sehen Sie sich das Profil von AndreeX00X an!   Senden Sie eine Private Message an AndreeX00X  Schreiben Sie einen Gästebucheintrag für AndreeX00X

Beiträge: 48
Registriert: 14.08.2007

CATIA V5 R16

erstellt am: 06. Okt. 2007 18:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Lusilnie,

Danke erstmal für die schnelle Antwort.

Wenn ich das Makro mit dieser Zeile abfaufen lasse, dann wird mir ein Fehler angezeigt, in dem steht:

Fehler beim Kompilieren:
Argumenttyp ByRef unverträglich

und es wird das Wort "FilePath" in dieser Zeile markiert.

In habe auch noch mal ein wenig im Forum rumgesucht und habe etwas ähnliches gefunden.

Code:

Const cDateiPfad = "F:\Testobjekt\test.txt"
Const cUmgerechnetPfad = "C:\Makroverzeichnis1\Umgerechnet_01.txt"

Dim Datei As File
Set Datei = CATIA.FileSystem.GetFile(cDateiPfad)
Dim DStrom As TextStream
Set DStrom = Datei.OpenAsTextStream("ForReading")

Do While Not (DStrom.AtEndOfStream)
  Dim Zeile 'As CATBSTR
  Zeile = DStrom.ReadLine
  MsgBox (Zeile)
Loop

DStrom.Close


Dieses Makro ist ein CATScript und gibt jeweils in einer MsgBox die Zeile aus der TXT Datei aus.

Ich habe das mal versucht mit ins VBA bei "DateiOeffnen" zu setzten, jedoch passiert da auch nicht das, wie es sein soll.

Vielleicht siehst du ja den Fehler.

------------------
Gruß AndreeX00X

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 06. Okt. 2007 22:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AndreeX00X 10 Unities + Antwort hilfreich

Servus

Ich hätte da eine Idee:
Du könntest ja die Textdatei Zeilenweise auslesen, und diese dann zusammensetzen.

Code:
Dim Datei As File
Set Datei = CATIA.FileSystem.GetFile(D:\test\text.txt)
Dim Text_St As TextStream
Set Text_St = Datei.OpenAsTextStream("ForReading")
Dim Test as String

Do While Not (Text_St.AtEndOfStream)
    Text = Text & Chr(10) & Text_St.ReadLine 
Loop



Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AndreeX00X
Mitglied
Ingenieur


Sehen Sie sich das Profil von AndreeX00X an!   Senden Sie eine Private Message an AndreeX00X  Schreiben Sie einen Gästebucheintrag für AndreeX00X

Beiträge: 48
Registriert: 14.08.2007

CATIA V5 R16

erstellt am: 08. Okt. 2007 12:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo bgrittmann,

deine Idee ist schon ganz gut. Im CATScript funktioniert es auch so wie es sein soll. Das blöde ist nur, dass man die MsgBox mit den Infos erst wieder schließen muss, um in CATIA weiterzuarbeiten. Die Daten sollen nämlich Informationen sein, die immer offen stehen, wenn man in CATIA arbeitet.

Deswegen habe ich in catvba ein Fenster erstellt (siehe den 1. Bericht oben), in dem die Informationen eingefügt werden sollen. Und nun geht es nämlich los. Sobald ich den Code aus dem CATSript ins catvba kopiere und es von dort aus starte, habe ich eine Totschleife in gang gesetzt (was ich ehrlich gesagt nicht wirklich verstehen kann). Darum habe ich in die Schleife eine IF-Bedingung eingesetzt, bei der die DO WHILE- Schleife abbrechen soll, sobald das Wort "end" gefunden wird. Das Ergebnis davon ist, dass das Makro durchläuft und die Infos in einer MsgBox ausgibt, jedoch wird immer nur die ungerade Zeile ausgegeben (was mich auch wundert).

Der letzte Punkt wäre dann noch, dass die Daten nicht in einer MsgBox dargestellt werden, sondern in dem von mir erzeugten Fenster. Da habe ich nämlich auch schon alles ausprobiert, was mir einfiel.

Wenn es natürlich die Möglichkeit gibt, die MsgBox so zu aktivieren, dass man weiterhin in CATIA arbeiten kann, nehme ich diese Lösung natürlich gerne an.

Ich habe hier noch mal die Codes reingestellt.

catvba-Code (Modul) bei dem nur jede ungerade Zeile ausgegeben wird:

Code:

Option Explicit

Sub CATMain()

  DateiOeffnen
   
  'UserPosition.Show 0

End Sub

Sub DateiOeffnen()

'  Dim cDateiPfad As String
'  cDateiPfad = CATIA.FileSelectionBox("Datei öffnen", "*.txt", CatFileSelectionModeOpen)

Const cDateiPfad = "H:\Dassault-CATIA-Daten\Testobjekt\test.txt"

Dim Datei As File
Set Datei = CATIA.FileSystem.GetFile(cDateiPfad)

Dim Text_St As TextStream
Set Text_St = Datei.OpenAsTextStream("ForReading")

Dim Text As String
Do While Not (Text_St.AtEndOfStream)
  Text = Text & Chr(10) & Text_St.ReadLine
   
  If Text_St.ReadLine = "end" Then
    Exit Do
  End If
 
Loop

Text_St.Close
MsgBox (Text)

End Sub


catvba-Code (Formular) bei dem die Daten aus den TXT-Datei an das Textfeld im Fenster übergeben werden werden sollen:

Code:

Private Sub cmdSchliessen_Click()
    End
End Sub


Private Sub UserForm_Activate()
'  txtPositionen = Text
  'lstPositionen = CATIA.FileSystem.GetFile(FilePath).OpenAsTextStream("ForReading")
 
  'txtPositionen = CATIA.FileSystem.GetFile(cDateiPfad).OpenAsTextStream("ForReading")
End Sub


------------------
Gruß AndreeX00X

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 08. Okt. 2007 12:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AndreeX00X 10 Unities + Antwort hilfreich

Servus

Versuch mal mit dem Befehl "readall" die Datei komplett einzulesen. zB:

Code:

Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
Text = file.ReadAll

Ich hab es allerdings nicht Probiert (nur raus kopiert).

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

[Diese Nachricht wurde von bgrittmann am 08. Okt. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AndreeX00X
Mitglied
Ingenieur


Sehen Sie sich das Profil von AndreeX00X an!   Senden Sie eine Private Message an AndreeX00X  Schreiben Sie einen Gästebucheintrag für AndreeX00X

Beiträge: 48
Registriert: 14.08.2007

CATIA V5 R16

erstellt am: 08. Okt. 2007 19:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Begeisterung!!!

Funktioniert auch alles super.

Danke!!!

------------------
Gruß AndreeX00X

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

moppesle
Ehrenmitglied V.I.P. h.c.
Konstrukteur


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 21. Feb. 2018 10:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AndreeX00X 10 Unities + Antwort hilfreich

Hallo Bernd,

ich wollte deinen Code benutzen um einen Text anzeigen zu lassen.

Leider bekomme ich eine Fehlermeldung.
"Invalid procedure call or argument"

Ich wollte ursprünglich den Text mit "oTextStream.AtEndOfStream"
auslesen, aber leider läuft die Schleife in endlose und finden "EndOfStream" nicht.

Hast du nen Tipp für mich?

Code:
Sub CATMain()

    Dim oActDoc As Document
    If CATIA.Documents.count = 0 Then
        MsgBox ("Kein Dokument geöffnet!")
        Exit Sub
    End If
    Set oActDoc = CATIA.ActiveDocument
    If TypeName(oActDoc) <> "PartDocument" Then
        MsgBox ("Kein CATPart geöffnet!")
        Exit Sub
    End If

    Dim oPart As Part
    Set oPart = oActDoc.Part

  

    'Dim oFile As File
    'Set oFile = CATIA.FileSystem.GetFile("D:\input.txt")
    'Dim oTextStream As TextStream
    'Set oTextStream = oFile.OpenAsTextStream("ForReading")
   
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set File = fso.OpenTextFile("D:\input.txt", ForWriting, True)
    TEXT = File.ReadAll
   

    'Do Until (oTextStream.AtEndOfStream)
    'Do While Not (oTextStream.AtEndOfStream)
    'TEXT = TEXT & Chr(10) & oTextStream.ReadLine
    'Debug.Print TEXT
    'Loop
    'oTextStream.Close
    MsgBox TEXT


End Sub



EDIT Makro sollte als CATScript laufen
------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!      

[Diese Nachricht wurde von moppesle am 21. Feb. 2018 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 21. Feb. 2018 17:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AndreeX00X 10 Unities + Antwort hilfreich

Servus Uwe

Wo kommt die Fehlermeldung? Bei Verwendung des FSO?
ggf liegt es daran dass das OpenTextFile kein ForWriting unterstützt (siehe hier)
Falls du die Datei verändern willst musst du ggf OpenAsTextStream nutzen.

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


Sehen Sie sich das Profil von moppesle an!   Senden Sie eine Private Message an moppesle  Schreiben Sie einen Gästebucheintrag für moppesle

Beiträge: 3418
Registriert: 28.05.2009

CATIA V5 R19 SP9
WIN 7 64bit

erstellt am: 22. Feb. 2018 07:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AndreeX00X 10 Unities + Antwort hilfreich

Hallo Bernd,

danke dir

Habe das jetzt so gelöst.

Code:

PathTXTInput ="D:\"

PathTabelle = PathTXTInput + "Input.txt"
            Set Objekt = CreateObject("Scripting.FileSystemObject")
           
            If CATIA.FileSystem.FileExists(PathTabelle) Then
                Set TextStream = Objekt.OpenTextFile(PathTabelle)
                    Do While Not (TextStream.AtEndOfStream)
                    Zeile = TextStream.ReadLine
                    TextPassungreihe = TextPassungreihe + Zeile & vbCrLf
                    Loop
            End If



------------------
Gruß Uwe

Auch Catia ist nur ein Mensch!    

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz