Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V4 MAKROS
  Strings zusammenführen und Textlänge

  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:   Strings zusammenführen und Textlänge (1431 mal gelesen)
MarkusK
Mitglied



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

Beiträge: 130
Registriert: 09.08.2002

HP ZBook 15 G2
Intel i7-4810MQ 8-Core
32 GB Ram
NVIDIA Quadro K2100M
Win 7
Catia V5R24 SP4

erstellt am: 17. Aug. 2004 17:06    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 Leute,

ich habe mal wieder ein Problem.
Ist wohl eher ein Problem der "Sprache".

Ich vergebe Punkten eine neue ID.

Auf jeden fall habe ich eine Variable i, in der der zu vergebende Index steckt.
Zusätzlich habe ich noch ein Prefix ("SPT "), welches ich vor den Index
setzen will, also z.B. so "SPT 22"

Doch leider funktioniert das nicht ganz so wie ich will.
Ich habe jetzt mal den Prefix als festen Text in den Code gesetzt,
weil er sonst gar nix gemacht hat.

LET string = CHCONV(i)
Let nname = 'SPT'//string 

Hierbei setzt er aber Leerzeichen in den Namen, und zwar irgendwie unkontroliert
SPT__22 (2 Leerstellen)

Ich hätte aber gerne so was
nname = prefix // i    (Wenn im Prefix "SPT " geht)
bzw.
nname = prefix // ' ' // i      (Wenn im Prefix nur "SPT" geht)

Kann mir da jemand helfen das nacher der richtige Name rauskommt?


------------------
Gruss Markus

IP

Brauburger
Mitglied
CAD-SystemIngenieur


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

Beiträge: 386
Registriert: 05.04.2001

erstellt am: 19. Aug. 2004 07: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 MarkusK 10 Unities + Antwort hilfreich


Hallo Markus,

auf Anhieb helfen kann ich Dir nicht - ich habe einige Jahre nix mehr mit IUA gemacht. Aber folgende Hinweise helfen Dir vielleicht weiter:

- das dump Kommando kann zwischen zwei IUA-Statements eingebaut werden und zeigt Dir dann VariablenInhalte an (Ausfhren mit IUA-Funktion im ControlOn Modus)

- falls Du die Formatierung mit IUA selbst nicht hinbekommst, kannst Du auch ein Stckchen FORTRAN einbauen. Damit klappt das sicher.

Dirk

IP

MarkusK
Mitglied



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

Beiträge: 130
Registriert: 09.08.2002

HP ZBook 15 G2
Intel i7-4810MQ 8-Core
32 GB Ram
NVIDIA Quadro K2100M
Win 7
Catia V5R24 SP4

erstellt am: 19. Aug. 2004 07:57    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 Dirk,

das mit dem Befel dump kenn ich schon, das hat mir auch schon
sehr geholfen.

Das mit dem Fortran-Code ist ja gerade das was ich suche.
Leider habe ich in Fortran eigentlich keine Ahnung.
Nur das was ich aus anderen Makros rauslesen kann.

Ich habe es jetzt über eine Catia-Funktion hinbekommen.
Aber leider finde ich das umständlich, und ist bisher auch nur die
halbe Lösung.(Prefix ist noch fest im Code)

LET string = CHCONV(i)
LOAD GUMKHN 1,string,70,string2,ele,ier
Let nname = 'SPT '//string2

Wie gesagt  'SPT ' möchte ich zuvor eingeben und dies in einer
Variablen speichern.
Diesen Prefix möchte ich dann mit dem Index verbinden.

LET nname = pre // string2

Weißt du vielleicht wie man die Textlänge in einem String ermitteln kann?

------------------
Gruss Markus

IP

Brauburger
Mitglied
CAD-SystemIngenieur


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

Beiträge: 386
Registriert: 05.04.2001

erstellt am: 20. Aug. 2004 08:31    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 MarkusK 10 Unities + Antwort hilfreich


TXTE.txt


TXTEWRI.txt


TRIMLEN.txt

 

Hallo Markus,

da hab' ich 'was angefangen ... ich bin wirklich nicht mehr allzu nahe am Thema. Die angehngten Sourcen habe ich 'mal vor langer, langer Zeit erstellt.

TXTE ist ein IUA-Makro, das ein shared module TXTEWRI aufruft. TXTEWRI.f ist der FORTRAN Source von TXTEWRI. TXTEWRI ruft wiederum die FORTRAN Subroutine TRIMLEN (DateiName TRIMLEN.f) auf. Am Besten, Du kopierst die beiden FORTRAN Sources in eine Datei zusammen und bildest mit dem mit CATIA mitgeliefert Script shared daraus ein shared module. Komponenten, die ich nicht mitgeschickt habe (wie zB das IUA-Panel TXTE) mut Du sinnvoll auskommentieren.

Ich hoffe, das Beispiel hilft Dir weiter.

Dirk

IP

MarkusK
Mitglied



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

Beiträge: 130
Registriert: 09.08.2002

HP ZBook 15 G2
Intel i7-4810MQ 8-Core
32 GB Ram
NVIDIA Quadro K2100M
Win 7
Catia V5R24 SP4

erstellt am: 23. Aug. 2004 10:32    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 Dirk,

erst mal vielen dank für das Beispiel.
So ganz bin ich nocht nicht durch, aber es hilft zumindest.
Ich hab z.B. gesehen du fragst die String-Länge mit "LEN(string)" ab.
Das funktioniert bei mir nicht, er meckert bei LEN. Kann aber auch daran liegen dass mein String als CHAR*72 deklariert ist.
Das werde ich noch testen.

Aber mein Problem habe ich noch nicht lösen können.
Ich habe gesehen, dass du auch Strings verbindest.
Was ungefähr wie bei mir ist.

let STRING = 'DET ' // chtype(TXT) // IDENT

Nur benötige ich am Anfang noch eine Variable, und keinen festen Sring.

Ich habe noch mal etwas Code bis zu meiner Problemstelle.
Die Eingabe des Prefix habe ich auskommentiert, weil es ja nicht funktioniert.

                        INTERNAL
*------------------------------------------------------------------
*
  INTEGER x FORMAT 4,
% i FORMAT 4,
% mnum init 1,
% ele,
%      ier
*
LOGICAL ja INIT true,
% nein INIT false
*
CHAR*72 nname
CHAR*72 string
CHAR*72 string2

*
*------------------------END INTERNAL------------------------------
*
                  EXTERNAL
PT pt1 INPUT
CHAR*72 pre INPUT
INTEGER index INPUT
*
*------------------------------------------------------------------
*
*
*------------------------END EXTERNAL------------------------------
*
                        PROC
*------------------------------------------------------------------
LABEL Lstart
*
*LABEL TEXT
* MSG 'Prefix für Punkt-Name angeben' KEY,pre,YES
* if (KODE EQ YES)  EXIT
* IF (KODE EQ ' ') TEXT

MSG 'Start-Index angeben / YES = Ende' KEY,string,YES
if (KODE EQ YES)  EXIT
LET index = CONV(string)
LET i=index

SELECT 'Punkt selectieren / YES = Ende' pt1,YES
if (KODE EQ YES) EXIT

LET string = CHCONV(i)
LOAD GUMKHN 1,string,70,string2,ele,ier  *Leerzeichen vorne löschen
Let nname = 'SPT ' // string2

in der Letzten Zeile würde ich gerne den Prefix setzen.

Let nname = pre // string2

Nur leider nimmt er dann string2 nicht mehr dazu

Vielleicht findest du ja mal ein paar ruhige Minuten und kannst es dir anschauen.


------------------
Gruss Markus

IP

MarkusK
Mitglied



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

Beiträge: 130
Registriert: 09.08.2002

erstellt am: 23. Aug. 2004 12:45    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 Dirk,

Das mit dem zusammensetzen der Strings habe ich hinbekommen.
Habe festgestellt das es mit // nicht geht, da mein 1. String einfach zu lang ist.
Jetzt benutze ich die Routine GUMKHN um die Leerzeichen zu löschen.
Dabei bekomme ich auch die Länge des Srings.

Dann füge ich mit der Routine GUMKTN zusammen.

------------------
Gruss Markus

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


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)2020 CAD.de | Impressum | Datenschutz