Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Aus Eingabe Zahlen bzw. Buchstaben auslesen

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:  Aus Eingabe Zahlen bzw. Buchstaben auslesen (1146 mal gelesen)
Spritty
Mitglied



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

Beiträge: 21
Registriert: 03.04.2006

erstellt am: 29. Mai. 2006 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

Hallo mal wieder!
Hab ein Makro erstellt, das mir über eine Eingabe Zahlen/Buchstaben selektiert und in ein neues Part einfügt. Ich muss allerdings jede Zahl/Buchstabe in ein separates Eingabefenser eingeben. Das ist meinem Chef leider zu umständlich. Gibt es eine Möglichkeit, die Zahlen/Buchstaben, die ich benötige, in ein Eingabefenster einzugeben und das Makro dann jede string abarbeitet und nacheinander die Bodies in mein neues Part einfügt?
Hoffe, es kann mir jemand weiter helfen!
Hier ein kurzer Ausschnitt meines bisherigen Makros:

Set ADoc1 = CATIA.ActiveDocument
Set Liste1 = ADoc1.Selection
Liste1.Clear
Eingabe1 = "1.Zahl/Buchstabe der Teile-Nummer"
Eingabe1 = InputBox ("Bitte hier die 1.Zahl/den 1. Buchstaben der Teile-Nummer eingeben" & Chr (13) & Chr (10)  &  "Achtung: Groß- und Kleinschreibung beachten!", "Eingabe der 1.Zahl/des 1. Buchstaben der Teile-Nummer", Eingabe1)
If Eingabe1 = "" Then
CATIA.ActiveDocument.Close
Exit Sub
End If
Liste1.Search "'Part Design'.Körper.NAME =" & Eingabe1 & ";Alle"
Liste1.Copy

CATIA.Windows.Item(1).activate

'Einfügen der 1.Zahl/des 1. Buchstaben in das neue Part
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set selection1 = partDocument1.Selection
selection1.Clear
selection1.Add part1
selection1.Paste

'Weitere Zahl/Buchstabe?
Rueckfrage2 = MsgBox ("Wird noch eine Zahl oder ein Buchstabe benötigt?", vbYesNo)
If Rueckfrage2 = vbNo Then
Set WinCol = CATIA.Windows
Set ThisWindow1 = WinCol.Item(2)
ThisWindow1.activate
CATIA.ActiveDocument.Close
CATIA.ActiveDocument.Save
Exit Sub
ElseIf Rueckfrage2 = vbYes Then
CATIA.Windows.Item(2).activate
End If
Set Liste2 = ADoc1.Selection
Liste2.Clear
Eingabe2 = "2.Zahl/Buchstabe der Teile-Nummer"
Eingabe2 = InputBox ("Bitte hier die 2.Zahl/den 2. Buchstaben der Teile-Nummer eingeben" & Chr (13) & Chr (10)  &  "Achtung: Groß- und Kleinschreibung beachten!", "Eingabe der 2.Zahl/des 2. Buchstaben der Teile-Nummer", Eingabe2)
If Eingabe2 = "" Then
CATIA.ActiveDocument.Close
Exit Sub
End If
Liste2.Search "'Part Design'.Körper.NAME =" & Eingabe2 & ";Alle"
Liste2.Copy
...
End Sub

Ihr könnt Euch ja sicherlich vorstellen, dass dieses Makro ewig und wahrscheinlich auch unnötig lang ist!

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: 30. Mai. 2006 00:00    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 Spritty 10 Unities + Antwort hilfreich

Hallo Spritty,

laß doch die gesuchten Strings mit einem definierten Trennzeichen (z.B. ";") eingeben und arbeite dann den Eingabestring "stückweise" in einer Schleife ab, bis kein String mehr übrig ist.
Habe ich schon in anderen Zusammenhängen genutzt und funktioniert auch!


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

Spritty
Mitglied



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

Beiträge: 21
Registriert: 03.04.2006

erstellt am: 30. Mai. 2006 18:42    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

Hört sich gut an...
Muss ich das unbedingt mit einem Trennzeichen machen? Hat da zufällig jemand ein ähnliches Makro, das ich für meinen Bedarf abändern kann?!
Kenne mich mit Schleifen absolut gar nicht aus!

Danke im Voraus

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: 31. Mai. 2006 20:29    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 Spritty 10 Unities + Antwort hilfreich

Hallo Spritty,

natürlich mußt Du kein Trennzeichen machen, doch wie willst Du die einzelnen Werte dann auseinanderhalten? Klar, wenn Du nur 1-stellige Werte hast, erübrigt sich die Frage!

Hier mal ein Beispiel für das Auslesen mit Trennzeichen:

Code:
    '"iString" ist Rueckgabe von InputBox
    Dim params()
    Dim P As Integer
    Dim inStrPos As Integer
    Dim lastCell As Boolean
   
    P = 0
    ReDim params(P)
    params(P) = ""
    lastCell = False
   
    Do Until lastCell = True
        inStrPos = InStr(iString, ";")
        If P > 0 Then ReDim Preserve params(P)
        If inStrPos = "0" Then
            params(P) = iString
            lastCell = True
            Exit Do
        End If
        params(P) = Left(iString, inStrPos - 1)
        iString = Right(iString, Len(iString) - inStrPos)
        P = P + 1
    Loop


Hier werden die einzelnen Werte in ein Feld (Array) "params" geschrieben, das dann immer entsprechend vergrößert wird. Damit kann man dann zu jeder beliebigen späteren Zeit darauf zugreifen.
Alternativ kannst Du auch einen Befehl, eine Funktion, eine Sub-Routine,... ausführen, wenn Du die Zeilen:
Code:
            params(P) = iString

    params(P) = Left(iString, inStrPos - 1)

entsprechend ersetzt.


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

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