Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Direct Drafting
  Änderungsindex Makro

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:   Änderungsindex Makro (680 mal gelesen)
Kitzivofelbra
Mitglied
Konstrukteur

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

Beiträge: 3
Registriert: 15.11.2017

ME 10 Version 17.0

erstellt am: 28. Nov. 2017 12:10    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


Anderungsindex.PNG

 
Hallo,

ich bin auf der Suche nach einem Makro für unseren Änderungsindex.

Hier mal mein Entwurf:

define Index
LOCAL Ds
LOCAL P100
LOCAL P101
LOCAL Text
READ PNT 'Untere linke Ecke anwählen' P100
READ STRING DEFAULT 'a  Zeichn. aktualisiert  28.11.17  Kit' Text
INQ_ENV 6
LET Ds (INQ 4)
LET P101 (P100+PNT_XY (4/Ds) (2/Ds))
COLOR
YELLOW
TEXT_ADJUST 4
TEXT_SIZE 2
TEXT_RATIO 0.8
TEXT Text P101
END
END_DEFINE

Nun möchte ich diesen Text noch jeweils separat abfragen. D. h. a,b,c.. dann den Text eingeben, das Datum wenn möglich automatisch beziehen und am Ende das Kürzel des Konstrukteurs.

Außerdem nach dem Eingeben und Positionieren der Zeile, sollte das Makro den Buchstaben der Änderung mit dem Mauszeiger in der Zeichnung positionieren.

Hier ein ähnliches Makro, welches ich hier im Forum gefunden hab:

DEFINE Revision
  LOCAL Teilename
  LOCAL Teilenummer
  LOCAL P0
  LOCAL P1
  LOCAL P2
  LOCAL P3
  LOCAL nr
  LOCAL Rev_nr_txt
  LOCAL LA
  LOCAL LF

  LET Teilename "Revision"
  EDIT_PART TOP
  CREATE_LTAB 'TMPLTAB'
  PARTS_LIST TREE LTAB 'TMPLTAB'
    LET I 1
  LOOP
  EXIT_IF (I > (LTAB_ROWS 'TMPLTAB'))
    LET Z (READ_LTAB 'TMPLTAB' I 1)
    LET Kl1 (POS Z ' [~')
    LET Tmpstr (SUBSTR Z (Kl1+2) (LEN Z - Kl1 - 1))
    LET Kl2 (POS Tmpstr ']')
    LET Name (TRIM (SUBSTR Z 1 (Kl1 - 1))) { Teilename }
    LET Nr (SUBSTR Tmpstr 1 (Kl2-1)) { Teilenummer }
  EXIT_IF (Name = Teilename)
    LET I (I+1)
  END_LOOP
  IF (Name = Teilename)
    EDIT_PART Nr
  ELSE
    INIT_PART Teilename
    PART_DRW_SCALE Teilename 1
  END_IF

  READ NUMBER 'Revisionsnummer ?' nr
  LET Rev_nr_txt (STR(nr))

  INQ_ENV 3
  LET LF (INQ 201)
  LET LA (INQ 301)

  LOOP
    READ PNT 'Platzierungspunkt angeben oder END ?' P0
    LET P1 (PNT_XY ((X_OF P0)-4) ((Y_OF P0)-(4*TAN(30))))
    LET P2 (PNT_XY (X_OF P0) ((Y_OF P0)+(4/COS(30))))
    LET P3 (PNT_XY ((X_OF P0)+4) ((Y_OF P0)-(4*TAN(30))))
    COLOR YELLOW LINETYPE SOLID
    LINE POLYGON P1 P2 P3 P1 END
    TEXT_ADJUST 5 TEXT_RATIO 1 TEXT_SIZE 2.5 COLOR YELLOW
    TEXT Rev_nr_txt P0 END
  END_LOOP

  COLOR LF
  LINETYPE LA

END_DEFINE


Dies ist mein erstes Makro, welches ich versucht habe zu schreiben/abzuleiten. Seid also bitte gnädig mit mir 

Kann mir hier jemand weiterhelfen?

Mit freundlichen Grüßen,

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

Roman
Mitglied



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

Beiträge: 612
Registriert: 16.01.2001

ME10 18.1, Win7
SD v18.1, Win7
Windchill 10.2

erstellt am: 28. Nov. 2017 13: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 Nur für Kitzivofelbra 10 Unities + Antwort hilfreich

Der Befehl
Code:
date
ergibt einen String ergibt Datum und Uhrzeit in folgendem Format: '26-Oct-2003 10:26:58'
Da du die Uhrzeit nicht benötigst must du den String noch bearbeiten.
Dazu musst du wahrscheinlich die Funktion
Code:
substr
nutzen
Also etwa so ACHTUNG DAS IST KEINE FERTIGE LÖSUNG!!!:
Code:

define abfrage
LOCAL tfindex
LOCAL tfgrund
LOCAL tfdatum
LOCAL teildatum
READ STRING DEFAULT 'a' tfindex
READ STRING DEFAULT 'Grund' tfgrund
let tfdatum (date)
let teildatum (substr tfdatum 1 12)
DISPLAY teildatum
end_define

Wie du siehst ist das extrahieren des gültigen Datums nicht damit fertig gemacht.
Roman

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

riesi
Mitglied
Konstrukteur, CAD-Admin


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

Beiträge: 823
Registriert: 06.05.2002

SWX Office Pre. 2013-Sp5
OneSpaceDrafting V21.1.1
MS-Windows 7 Prof. 64Bit
Core i7-6700 @ 3.40 GHz
32,00 GB RAM
ATI WX 5100

erstellt am: 28. Nov. 2017 15:21    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 Kitzivofelbra 10 Unities + Antwort hilfreich

Wenn z.B. das Kürzel des Konstrukteurs gleich der Windows-Anmeldung ist, könntest Du die Umgebungsvariable %USERNAME% abfragen und einsetzen. Z.B. so:

LET kuerzel GETENV("USERNAME")

Die Texte würde ich alle schon im Blatt eintragen und mit eindeutigen Info-Variablen belegen, worüber die Texte identifiziert, abgefragt und geändert werden kann.

Gruß, Klaus.

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

Roman
Mitglied



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

Beiträge: 612
Registriert: 16.01.2001

ME10 18.1, Win7
SD v18.1, Win7
Windchill 10.2

erstellt am: 28. Nov. 2017 17: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 Kitzivofelbra 10 Unities + Antwort hilfreich

Ja,
das mit den Infos ist die allerbeste Lösung.
Bei dem Ansatz von Kitzi?
würde ich dann sowas machen:
Code:

define abfrage
LOCAL tfindex
LOCAL tfgrund
LOCAL tfdatum
LOCAL teildatum
LOCAL kuerzel
LOCAL indextext

READ STRING DEFAULT 'a' tfindex
READ STRING DEFAULT 'Blablabla' tfgrund
let tfdatum (date)
let teildatum (substr tfdatum 1 11)
LET kuerzel (getenv('USERNAME'))

{ 'a  Zeichn. aktualisiert  28.11.17  Kit' }
{ Zusammenbauen }
LET indextext (tfindex + "  " + tfgrund + "  " + teildatum + "  " + kuerzel)
DISPLAY indextext
end_define

Roman

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

ME10-Faultier
Mitglied



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

Beiträge: 18
Registriert: 30.03.2015

Direct Drafting 18.1

erstellt am: 30. Nov. 2017 22:17    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 Kitzivofelbra 10 Unities + Antwort hilfreich

Hier mal mein Makro der Umwandlung des englischen Datumsformat in das deutsche Format:

DEFINE Deutsches_Datum_erstellen
{v============================================================================================================= }
{ - erstellt aus dem englischen Datum (10-May-05) ein deutsches Datum (10.Mai.05)                               }
{      - Aufruf: Deutsches_Datum_erstellen 'Datum'                                                              }
{        darin: 'Datum'      - das Datum, welches umgewandelt werden soll. Wird ein Leerstring ('') übergeben,  }
{                              dann wird das aktuelle Datum verwendet.                                          }
{      - verwendet folgende Variable:                                                                           }
{           - uebergabetext  - enthält das deutsche Datum                                                       }
{ ============================================================================================================= }
   PARAMETER deu_datum
   IF ( ( LEN deu_datum ) = 0 )
      LET uebergabetext ( SUBSTR DATE 1 11 )
   ELSE
      LET uebergabetext deu_datum
   END_IF
   IF ( POS uebergabetext 'Mar' )
      Buchstabe_in_Wort_tauschen uebergabetext ( POS uebergabetext 'a' ) 'ä' 't'
   ELSE_IF ( POS uebergabetext 'May' )
      Buchstabe_in_Wort_tauschen uebergabetext ( POS uebergabetext 'y' ) 'i' 't'
   ELSE_IF ( POS uebergabetext 'Oct' )
      Buchstabe_in_Wort_tauschen uebergabetext ( POS uebergabetext 'c' ) 'k' 't'
   ELSE_IF ( POS uebergabetext 'Dec' )
      Buchstabe_in_Wort_tauschen uebergabetext ( POS uebergabetext 'c' ) 'z' 't'
   END_IF
   Buchstabe_in_Wort_tauschen uebergabetext ( POS uebergabetext '-' ) '.' 't'
   Buchstabe_in_Wort_tauschen uebergabetext ( POS uebergabetext '-' ) '.' 't'
END_DEFINE

Die Zeile
"LET uebergabetext ( SUBSTR DATE 1 11 )"
enthält dann den schon weiter vorne angeführten Befehl zur Extrahierung des Datums aus dem ME10-Datums-String, in welchem die Uhrzeit noch enthalten ist.

Die Funktion Buchstabe_in_Wort_tauschen findest Du hier: Datei drucken mit Übergabe des Dateinamens

Und hier mein Makro für die automatische Indexänderung:

DEFINE Index_aendern
{ ============================================================================================================= }
{ - ändert im Schriftfeld den Zeichnungsindex und fügt unter "Änderungen" im Schriftfeld den neuen Zeichnungs-  }
{   index mit dem Namen des Bearbeiters und des aktuellen Datums ein                                            }
{      - verwendet folgende Variablen:                                                                          }
{           - index_n        - der Zeichnungsindex, der um eins erhöht wird                                     }
{           - Naam_tekenaar  - der Name des Planers, der verwendet wird                                         }
{           - alt_part_n     - das Teil, in dem man sich beim Aufruf des Macros befindet                        }
{           - alt_win_u      - der Punkt links unten des Ausgangs-Fensterausschnitts                            }
{           - alt_win_o      - der Punkt rechts oben des Ausgangs-Fensterausschnitts                            }
{           - sf_faktor      - der vorher errechnete Vergrößerungsfaktor                                        }
{           - uebergabetext  - enthält das deutsche Datum nach der Umwandlung aus dem englischen Datum          }
{ ============================================================================================================= }
   LOCAL P1W
   LOCAL P2W
   LOCAL P3W
   LOCAL P4W
   LOCAL abst
   Fenster_feststellen
   Teil_feststellen
   Index_feststellen
   IF ( index_n <> 'k.SF' )
      EDIT_PART 'Label'
      IF ( index_n <> 'z' )
         LET P1W ( Y_OF teil_u + ( 75.76 * sf_faktor ) )
         LET P2W ( X_OF teil_u + ( 132 * sf_faktor ) )
         LET P3W ( X_OF teil_u + ( 156 * sf_faktor ) )
         LET P4W ( X_OF teil_u + ( 164 * sf_faktor ) )
         WINDOW (PNT_XY ((X_OF teil_u)+(130*sf_faktor)) (P1W-(30.75*sf_faktor))) (PNT_XY (X_OF teil_o) (P1W+(1.8*sf_faktor)))
         IF ( index_n = '-' )
            LET index_n 'a'
            LET abst ( -20 * sf_faktor )
         ELSE_IF ( index_n = 'a' )
            LET index_n 'b'
            LET abst ( -25 * sf_faktor )
         ELSE_IF ( index_n = 'b' )
            LET index_n 'c'
            LET abst ( -30 * sf_faktor )
         ELSE_IF ( index_n < 'z' )
            LET index_n ( CHR ( NUM index_n + 1 ) )
            LET abst ( -20 * sf_faktor )
            DELETE ( PNT_XY P2W ( P1W + abst ) )
            DELETE ( PNT_XY P3W ( P1W + abst ) )
            DELETE ( PNT_XY P4W ( P1W + abst ) )
            END
            LET abst ( -25 * sf_faktor )
            MODIFY ( PNT_XY P2W ( P1W + abst ) ) MOVE DEL_OLD VERTICAL ( 5 * sf_faktor )
            MODIFY ( PNT_XY P3W ( P1W + abst ) ) MOVE DEL_OLD VERTICAL ( 5 * sf_faktor )
            MODIFY ( PNT_XY P4W ( P1W + abst ) ) MOVE DEL_OLD VERTICAL ( 5 * sf_faktor )
            LET abst ( -30 * sf_faktor )
            MODIFY ( PNT_XY P2W ( P1W + abst ) ) MOVE DEL_OLD VERTICAL ( 5 * sf_faktor )
            MODIFY ( PNT_XY P3W ( P1W + abst ) ) MOVE DEL_OLD VERTICAL ( 5 * sf_faktor )
            MODIFY ( PNT_XY P4W ( P1W + abst ) ) MOVE DEL_OLD VERTICAL ( 5 * sf_faktor )
         END_IF
         MODIFY ( PNT_XY P2W P1W ) MOVE COPY VERTICAL abst
         MODIFY ( PNT_XY P3W P1W ) MOVE COPY VERTICAL abst
         MODIFY ( PNT_XY P4W P1W ) MOVE COPY VERTICAL abst
         CHANGE_TEXT Naam_tekenaar ( PNT_XY P3W ( P1W + abst ) )
         CHANGE_COLOR WHITE ( PNT_XY P2W ( P1W + abst ) )
         CHANGE_TEXT ( index_n + ') Überarbeitet' ) ( PNT_XY P2W ( P1W + abst ) )
         IF ( ( POS DATE ':' ) > 0 )
            Deutsches_Datum_erstellen ''
            CHANGE_TEXT uebergabetext ( PNT_XY P4W ( P1W + abst ) )
         ELSE
            EDIT_TEXT ( PNT_XY P4W ( P1W + abst ) )
         END_IF
         LET P1W ( X_OF teil_u + ( 157.5 * sf_faktor ) )
         LET P2W ( Y_OF teil_u + ( 14.26 * sf_faktor ) )
         WINDOW ( PNT_XY ( ( X_OF teil_u ) + ( 130 * sf_faktor ) ) Y_OF teil_u ) teil_o
         Plannummer_erstellen
         CHANGE_TEXT Project_number ( PNT_XY P1W P2W )
         Textlaenge_anpassen ( PNT_XY P1W P2W ) ( 51 * sf_faktor ) 12
         Projektnummer_aus_Zeichnung 'prnum'
         IF ( ( index_n = '-' ) OR ( index_n = 'k.SF' ) )
            Protokolldatei_eintragen ( 'Plan bearbeitet : ' + uebergabetext + pfad_trenn_z + ( LWC Tekening_nummer ) )
         ELSE
            Protokolldatei_eintragen ('Plan bearbeitet : ' + uebergabetext + pfad_trenn_z + (LWC Tekening_nummer) + index_n)
         END_IF
      ELSE
         DISPLAY 'Maximaler Index "z" ist erreicht!'
      END_IF
   ELSE
      DISPLAY 'Bitte erst ein Schriftfeld einfügen!'
   END_IF
   Teil_herstellen
   Fenster_herstellen
END_DEFINE

Bei uns werden die Änderungen im Schriftfeld hinterlegt, welches das Teil "Label" als Symbol ist. damit sind die Punkte, an denen die Texte eingefügt werden müssen, immer fest definiert und können durch feste Zahlen definiert werden.
Zuerst stelle ich fest, in welchem Teil ich mich befinde und welcher Zeichnungsausschnitt auf dem Bildschirm angezeigt wird. Das wird abgespeichert und am Ende wieder abgerufen, damit man an der gleichen stelle weiter arbeiten kann.
Dann wird der aktuelle Index aus dem Schriftfeld eingelesen und die Punkte berechnet, die für die Texteingabe wichtig sind.
Da bei uns nur 3 Zeilen für Änderungen vorrätig sind, wird, falls schon was in allen 3 Zeilen eingetragen ist, die erste Zeile gelöscht und die beiden anderen werden jeweils um eine Zeile nach oben verschoben. Unten wird dann der aktuelle Index mit Datum und Zeichnerkürzel eingetragen. Falls noch nichts in allen 3 Zeilen iengetragen ist (als entweder nur eine, nur zwei oder noch keine Zeile ausgefüllt, was über den Index errechnet wird) wird in die letzte freie Zeile der aktuelle Index eingetragen. Allerdings wird bei mir immer nur als Änderung nach dem Index "Überarbeitet" eingetragen. Falls ich das spezifieren möchte, dann mache ich das hinterher von Hand. Aber in 95 % der fälle bleibt das "Überarbeitet" da drin stehen. Ich bin schließlich faul.  

Zitat:
Original erstellt von Roman:
Ja, das mit den Infos ist die allerbeste Lösung.
Bei dem Ansatz von Kitzi?
würde ich dann sowas machen:
Code:

LET indextext (tfindex + "  " + tfgrund + "  " + teildatum + "  " + kuerzel)




Da bei uns im Schriftfeld eine Schriftart mit unterschiedlich breiten Zeichen verwendet wird, würde ich 4 einzelne Texte statt einem verwenden.

Gruß

ME10-Faultier

[Diese Nachricht wurde von ME10-Faultier am 30. Nov. 2017 editiert.]

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

der_Wolfgang
Ehrenmitglied
Tastenhauer


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

Beiträge: 1564
Registriert: 03.2003.27

● PEnix@home(garnimmermehr)
● OutOfCadSince2009
● JobLess2017v02

erstellt am: 01. Dez. 2017 11: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 Kitzivofelbra 10 Unities + Antwort hilfreich

@ME10-Faultier

Du hast auf cad.de noch nicht viel geschrieben...  Du kennst die UBB kuerzel fuer [ code ] Dein Macro Code [ / code ] ?

Code:
  PARAMETER deu_datum
  IF ( ( LEN deu_datum ) = 0 )
      LET uebergabetext ( SUBSTR DATE 1 11 )
  ELSE
      LET uebergabetext deu_datum
  END_IF

siehe http://ww3.cad.de/foren/ubb/ubbcode.html - kannst du auch noch nachtraeglich einbauen in Deinem Beitrag.

------------------
Firefox ESRJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++BuFDi

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

ME10-Faultier
Mitglied



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

Beiträge: 18
Registriert: 30.03.2015

Direct Drafting 18.1

erstellt am: 01. Dez. 2017 12:14    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 Kitzivofelbra 10 Unities + Antwort hilfreich

Ja, die Kürzel für den Code habe ich gesehen. Aber ich dachte, daß durch die Leerzeile vor und nach dem Makro klar ersichtlich ist, was das Makro und was der Text ist. Und die Mehrklicks für das Einfügen der Code-Kürzel wollte ich mir sparen, ich bin ja schließlich ein Faultier.   
Wenn es aber hier Vorschrift ist, das man die verwendet, dann entschuldige ich mich natürlich für das Nichtverwenden und gelobe Besserung. Das war mir zumindest bisher noch nicht bekannt. Ich sehe dann nur das Problem, daß meine Beschreibung zu breit sein könnte, da die im alten ME10 für Unix auf den Bildschirm abgestimmt war und dort genau den Bildschirm ausgefüllt hat.

Gruß

ME10-Faultier

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

ME10-Faultier
Mitglied



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

Beiträge: 18
Registriert: 30.03.2015

Direct Drafting 18.1

erstellt am: 01. Dez. 2017 13:10    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 Kitzivofelbra 10 Unities + Antwort hilfreich


BeispielIndexerhohung.png

 
Hier mal im Anhang dann unser Schriftfeld und wie das bei mir dann aussieht, wenn der Index erhöht wird.

Dazu noch einige meiner SUBs, die ich im Makro verwende:

Code:
DEFINE Fenster_feststellen
{v============================================================================================================= }
{ - speichert die Koordinaten des aktuellen Fensterausschnitts                                                  }
{      - verwendet folgende Variablen:                                                                          }
{          - alt_win_u      - der linke untere Punkt des aktuellen Fensterausschnitts                          }
{          - alt_win_o      - der rechte obere Punkt des aktuellen Fensterausschnitts                          }
{ ============================================================================================================= }
  INQ_ENV 2
  LET alt_win_u ( INQ(101) )
  LET alt_win_o ( INQ(102) )
END_DEFINE

DEFINE Fenster_herstellen
{v============================================================================================================= }
{ - stellt den Fensterausschnitt mit den Koordinaten alt_win_u und alt_win_o wieder her                        }
{      - verwendet folgende Variablen:                                                                          }
{          - alt_win_u      - der linke untere Punkt des Fensterausschnitts                                    }
{          - alt_win_o      - der rechte obere Punkt des Fensterausschnitts                                    }
{ ============================================================================================================= }
  WINDOW alt_win_u alt_win_o
END_DEFINE

DEFINE Teil_feststellen
{v============================================================================================================= }
{ - speichert die eindeutige Nummer des aktuellen Teiles in der Variablen alt_part_n                            }
{      - verwendet folgende Variable:                                                                          }
{          - alt_part_n    - das Teil, in dem man sich beim Aufruf des Macros befindet                        }
{ ============================================================================================================= }
  INQ_ENV 7
  LET alt_part_n ( '~' + INQ(302) )
END_DEFINE

DEFINE Teil_herstellen
{v============================================================================================================= }
{ - editiert das Teil, dessen Nummer in alt_part_n gespeichert ist                                              }
{      - verwendet folgende Variable:                                                                          }
{          - alt_part_n    - das Teil, welches editiert werden soll                                          }
{ ============================================================================================================= }
  EDIT_PART alt_part_n
END_DEFINE

DEFINE Index_erkennen
{v============================================================================================================= }
{ - berechnet die Projektnummer, die Plannummer und den Zeichnungsindex aus der Zeichnungsnummer                }
{      - verwendet folgende Variablen:                                                                          }
{          - Project_number - die Zeichnungsnummer, aus der die anderen Nummern berechnet werden              }
{          - Project_nummer - die Projektnummer, die berechnet wird                                            }
{          - Tekening_nummer- die Plannummer, die berechnet wird                                              }
{          - index_n        - der Zeichnungsindex, der berechnet wird                                          }
{ ============================================================================================================= }
  IF ( LEN Project_number > 0 )
      LET index_n ( LWC ( SUBSTR Project_number LEN Project_number 1 ) )
      IF ( ( NUM index_n < 97 ) OR ( NUM index_n > 122 ) )
        LET index_n '-'
      ELSE_IF (((NUM (SUBSTR Project_number ((LEN Project_number)-1) 1))<>32) AND (((NUM (SUBSTR Project_number ((LEN Project_number)-1) 1))<48) OR ((NUM (SUBSTR Project_number ((LEN Project_number)-1) 1))>57)))
        LET index_n '-'
      END_IF
      IF ( index_n <> '-' )
        IF ( ( SUBSTR Project_number ( LEN Project_number - 1 ) 1 ) = ' ' )
            LET Project_number ( SUBSTR Project_number 1 ( LEN Project_number - 2 ) )
        ELSE
            LET Project_number ( SUBSTR Project_number 1 ( LEN Project_number - 1 ) )
        END_IF
      END_IF
      IF ( POS Project_number '-' > 0 )
        LET Project_nummer ( SUBSTR Project_number 1 ( POS Project_number '-' - 1 ) )
        LET Tekening_nummer (SUBSTR Project_number (POS Project_number '-' + 1) (LEN Project_number - (POS Project_number '-')))
      ELSE
        LET Project_nummer Project_number
        LET Tekening_nummer ''
      END_IF
  ELSE
      LET Project_nummer ''
      LET Tekening_nummer ''
  END_IF
END_DEFINE

DEFINE Index_feststellen
{v============================================================================================================= }
{ - liest vom Schriftfeld die Zeichnungsnummer und speichert sie in der Variablen Project_number, danach werden }
{  mit der Funktion Index_erkennen die Projektnummer, die Plannummer und der Zeichnungsindex berechnet        }
{      - falls das Schriftfeld nicht vorhanden ist, wird index_n auf 'k.SF' gesetzt                            }
{      - falls im Schriftfeld keine Zeichnungsnummer vorhanden ist, werden Project_nummer und Tekening_nummer  }
{        auf '' gesetzt                                                                                        }
{      - verwendet folgende Variablen:                                                                          }
{          - Project_number - die Zeichnungsnummer, aus der die anderen Nummern berechnet werden              }
{          - Project_nummer - die Projektnummer, die berechnet wird                                            }
{          - Tekening_nummer- die Plannummer, die berechnet wird                                              }
{          - index_n        - der Zeichnungsindex, der berechnet wird                                          }
{          - sf_faktor      - der errechnete Vergrößerungsfaktor des Schriftfeldes. Falls kein Schriftfeld    }
{                              vorhanden ist, wird sf_faktor auf 0 gesetzt                                      }
{          - teil_o        - der rechte obere Punkt des Schriftfeldes                                        }
{          - teil_u        - der linke untere Punkt des Schriftfeldes                                        }
{ ============================================================================================================= }
  Faktor_berechnen 'Label' 'H' 79.26
  IF ( sf_faktor <> 0 )
      WINDOW ( PNT_XY ( ( X_OF teil_u ) + ( 130 * sf_faktor ) ) Y_OF teil_u ) teil_o
      INQ_ELEM ( PNT_XY ( ( X_OF teil_u ) + ( 157.5 * sf_faktor ) ) ( ( Y_OF teil_u ) + ( 14.26 * sf_faktor ) ) )
      LET Project_number ( INQ(902) )
      Index_erkennen
      END_PART
  ELSE
      LET index_n 'k.SF'
  END_IF
END_DEFINE

DEFINE Faktor_berechnen
{v============================================================================================================= }
{ - berechnet den Vergrößerungsfaktor eines Teils durch die übermittelte Vergleichslänge                        }
{      - Aufruf: Faktor_berechnen 'Teilname' ( 'L' oder 'H' ) 100                                              }
{        darin: 'Teilname'  - der Name des Teils, dessen Vergrößerungsfaktor berechnet werden soll            }
{              'L' oder 'H' - Angabe, ob der Vergrößerungsfaktor aus der Höhe ('L') oder der Länge ('L') be-  }
{                              rechnet werden soll                                                              }
{              100          - die Höhe oder die Länge, die als Vergleich benutzt wird                          }
{      - verwendet folgende Variablen:                                                                          }
{          - sf_faktor      - der errechnete Vergrößerungsfaktor. Falls das Teil nicht vorhanden ist, wird    }
{                              sf_faktor auf 0 gesetzt                                                          }
{          - teil_o        - der rechte obere Punkt des Teiles                                                }
{          - teil_u        - der linke untere Punkt des Teiles                                                }
{ ============================================================================================================= }
  PARAMETER name_teil
  PARAMETER hoehe_oder_laenge
  PARAMETER laenge_teil
  TRAP_ERROR
  EDIT_PART name_teil
  IF ( CHECK_ERROR = 0 )
      INQ_ENV 7
      LET teil_u ( INQ(101) )
      LET teil_o ( INQ(102) )
      IF ( ( UPC hoehe_oder_laenge ) = 'L' )
        IF ( ( X_OF teil_o - X_OF teil_u ) <> laenge_teil )
            LET sf_faktor ( ( X_OF teil_o - X_OF teil_u ) / laenge_teil )
        ELSE
            LET sf_faktor 1
        END_IF
      ELSE_IF ( ( UPC hoehe_oder_laenge ) = 'H' )
        IF ( ( Y_OF teil_o - Y_OF teil_u ) <> laenge_teil )
            LET sf_faktor ( ( Y_OF teil_o - Y_OF teil_u ) / laenge_teil )
        ELSE
            LET sf_faktor 1
        END_IF
      END_IF
  ELSE
      LET sf_faktor 0
  END_IF
END_DEFINE

DEFINE Plannummer_erstellen
{v============================================================================================================= }
{ - erstellt die Zeichnungsnummer aus der Projektnummer, der Plannummer und dem Zeichnungsindex                }
{      - verwendet folgende Variablen:                                                                          }
{          - Project_number - die Zeichnungsnummer, die aus den anderen Nummern berechnet wird                }
{          - Project_nummer - die Projektnummer, die verwendet wird                                            }
{          - Tekening_nummer- die Plannummer, die verwendet wird                                              }
{          - index_n        - der Zeichnungsindex, der verwendet wird                                          }
{ ============================================================================================================= }
  IF ( Tekening_nummer <> '' )
      LET Project_number ( Project_nummer + '-' + Tekening_nummer )
  ELSE
      LET Project_number Project_nummer
  END_IF
  IF ( ( index_n <> '-' ) AND ( index_n <> 'k.SF' ) )
      LET Project_number ( Project_number + ' ' + index_n )
  END_IF
END_DEFINE

DEFINE Textlaenge_anpassen
{v============================================================================================================= }
{ - paßt einen Text an eine vorgegebene Länge an (nur wenn der Text länger als die vorgegebene Länge ist) oder  }
{  markiert Anfang und Ende eines Textes                                                                      }
{      - Aufruf: Textlaenge_anpassen P1 100 50                                                                  }
{        darin: P1          - der Bezugspunkt des anzupassenden Textes                                        }
{              100          - die neue maximale Länge des Textes                                              }
{              50          - die Anzahl der Buchstaben, ab deren Länge der Text angepaßt wird (wenn beide    }
{                              Zahlen 0 sind, wird am Anfang und Ende des Textes eine Hilfslinie eingezeichnet) }
{      - erstellt das Teil 'test' neu und löscht es dann wieder. Dieses Teil darf nicht vorhanden sein !!!      }
{      - verwendet folgende Variable:                                                                          }
{          - sf_faktor      - wird zur Berechnung der Textlänge benutzt                                        }
{ ============================================================================================================= }
  PARAMETER wp1
  PARAMETER text_laenge_neu
  PARAMETER text_laenge_min
  LOCAL wp2
  LOCAL wp3
  IF ( ( text_laenge_neu = 0 ) AND ( text_laenge_min = 0 ) )
      LET uebergabetext 'Wort'
      Daten_eingeben 'Antippen'
      LET wp1 uebergabetext
  ELSE
      CHANGE_TEXT_RATIO 1 wp1
  END_IF
  INQ_ELEM wp1
  IF ( LEN ( INQ(902) ) > text_laenge_min )
      CREATE_SUBPART 'test' wp1
      EDIT_PART 'test'
      INQ_ENV 7
      LET wp2 ( INQ(103) )
      LET wp3 ( INQ(104) )
      IF ( ( text_laenge_neu = 0 ) AND ( text_laenge_min = 0 ) )
        C_LINE VERTICAL wp2
        C_LINE VERTICAL wp3 END
      ELSE
        IF ( ( X_OF wp3 ) - ( X_OF wp2 ) > text_laenge_neu )
            CHANGE_TEXT_RATIO ( INT ( ( text_laenge_neu * 100 ) / ( ( X_OF wp3 ) - ( X_OF wp2 ) ) ) / 100 ) ALL END
        END_IF
      END_IF
      END_PART
      SMASH_SUBPART KEEP_DISPLAY 'test' END
  END_IF
END_DEFINE


Die Funktion Projektnummer_aus_Zeichnung erstellt mit der Option "prnum" aus der Projektnummer den Verzeichnispfad, unter welchem das Projekt auf der Festplatte gespeichert ist und welcher dann für den Eintrag in meine Protokolldatei gebraucht wird. Für die Indexerstellung sind diese Funktionen aber nicht notwendig, weswegen ich sie hier nicht auch noch reinquetsche. Sie dienen nur für meine Abrechnung, da ich nach einigen Tagen nicht mehr weiß, wie lange ich welches Projekt bearbeitet habe und nicht immer gleich meine Teiten aufschreibe.

Gruß

Faultier

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

Roman
Mitglied



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

Beiträge: 612
Registriert: 16.01.2001

ME10 18.1, Win7
SD v18.1, Win7
Windchill 10.2

erstellt am: 01. Dez. 2017 13:24    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 Kitzivofelbra 10 Unities + Antwort hilfreich


Klasse-Code "Faultier" (sorry der musste sein  ).
Da werde ich bestimmt was von klauen 

Ich gebe nur zu Bedenken (ist natürlich immer eine subjektive Entscheidung), daß man sich so einen manuellen Aufwand ersparen kann, wenn man eine Zeichnungsverwaltung einsetzt (muss ja nicht unbedingt das monströse Windchill sein).

Roman

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

ME10-Faultier
Mitglied



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

Beiträge: 18
Registriert: 30.03.2015

Direct Drafting 18.1

erstellt am: 01. Dez. 2017 16: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 Kitzivofelbra 10 Unities + Antwort hilfreich

Immer zu, darfst Dich ruhig davon bedienen.

Zum Aufwand: die Makros sind ja alle entstanden, weil ich so faul bin.  
Wenn ich 3x hintereinander das Gleiche machen muß, dann fange ich an zu überlegen, ob ich das nicht an meinen Rechenknecht delegieren kann. Und das für mich Nervigste sind die Tastatureingaben, weil man da jedes Mal den Stift zur Seite legen muß, die Eingabe machen und dann den Stift wieder nehmen muß. Und da das beim manuellen Einfügen des Änderungsindex zwangsläufig geschieht, war es nur eine Frage der Zeit, bis ich das bei mir geändert habe, da ich es liebe, zu programmieren. Jetzt ist das nur noch ein Klick im Menü und alles passiert automatisch. Und da ich meinen Standardtext ("Überarbeitet") benutze, brauche ich normalerweise da auch nichts mehr ändern, da ich nicht in der Konstruktion, sondern in der Schalungsplanung das Programm benutze. Da interessiert nicht so sehr, was geändert wurde, sondern hauptsächlich, ob es eine neue Materialliste gibt.
Eine Zeichnungsverwaltung benutzen wir nicht, da weiß ich also nicht, was es da für Vorteile gibt bzw. was die Programme alles können.
Falls ich mit meinen Makros auch noch anderen die Arbeit erleichtern kann, dann immer fragen (hier z.B. war ja schon mal mein Makro zum automatischen Speichern der aktuellen Zeichnung im richtigen Verzeichnis).

Gruß

Faultier

[Diese Nachricht wurde von ME10-Faultier am 01. Dez. 2017 editiert.]

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



Projektleiter (m/w) im Anlagenbau

Ideen brauchen Tatkraft.

Die Aberle GmbH ist in den Bereichen Automatisierung und Modernisierung von Industrie- und Logistikanlagen tätig. Dabei plant und realisiert Aberle als Generalunternehmer und Systemintegrator hochkomplexe Automatisierungsprojekte für automatische Intralogistiksysteme und bietet branchenübergreifende Beratung, Planung, Softwareentwicklung, Projektrealisierung und Service aus einer Hand....

Anzeige ansehenProjektmanagement
ME10-Faultier
Mitglied



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

Beiträge: 18
Registriert: 30.03.2015

Direct Drafting 18.1

erstellt am: 05. Dez. 2017 10:17    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 Kitzivofelbra 10 Unities + Antwort hilfreich

Ich sehe gerade, daß auch meine Funktion Daten_eingeben hier drin ist. Hier noch deren Code:

Code:
DEFINE Daten_eingeben
{ ============================================================================================================= }
{ - weist verschiedenen Variablen Daten zu, die vom Benutzer eingegen werden                                    }
{      - Aufruf: Daten_eingeben (3750, 2500, 1700, 1500, 1150, 780, 'Alles', 'Antippen'                         }
{                                'ASG A2', 'ASG A4', 'ASG A6', 'ASG 250', 'ASG 500', 'ASG 1000', 'ASG 1250',    }
{                                'ASG 5000', 'ASG Sk', 'ASG Sl', 'ASG SH', 'ASG AK', 'Bez_Punkt 1',             }
{                                'Bezugspunkt Text', 'GH', 'Hoehe', 'Hoehenkote', 'HV St', 'HV Maxi', 'HV AK'   }
{                                'HV 100', 'HV 125', 'HV Sk', 'HV Sl', 'HV SH', 'HV-Traegerlaenge', 'Ja_Nein'   }
{                                'KH', 'Länge', 'R-H', 'R-V', 'Schnittpfeil', 'SF 1', 'ST', 'JT', 'Stuetze',    }
{                                'Text', 'Textpfeil' oder 'Zahl')                                               }
{        darin: 1700, 1500, 1150      - die Anzahl der HV-NT 1700, 1500 oder 1150 wird eingegeben               }
{               3750, 2500, 780       - die Anzahl der TITAN 120-3750, 120-2500 bzw. 120-780 wird eingegeben    }
{               'Alles'               - es wird der auf der Zeichnung angetippte Punkt oder die Eingabe oder    }
{                                       der angetippte Befehl an uebergabetext zurückgegeben. Vor Aufruf von    }
{                                       Daten_eingeben 'Alles' muß in uebergabetext ein Text angegeben werden,  }
{                                       der bei der Eingabe angezeigt werden soll! Nach 'Alles' kann noch eine  }
{                                       Angabe für die Vorgabe ('Alles Vorgabe') oder die Art der Gummilinie    }
{                                       gemacht werden (z.B. 'Alles Line' -> Gummilinie oder 'Alles Box' ->     }
{                                       Gummibox). Bei 'Alles Vorgabe' muß in uebergabetext vor dem Eingabetext }
{                                       ein Wert für die Vorgabe, gefolgt von '#####', eingegeben werden. Bei   }
{                                       'Alles Line' wird der in teil_o gespeicherte Wert als Bezugspunkt für   }
{                                       RUBBER_BOX bzw. RUBBER_LINE benutzt.                                    }
{               'Antippen'            - es wird der auf der Zeichnung angetippte Punkt an uebergabetext zurück- }
{                                       gegeben. Vor Aufruf von Daten_eingeben 'Antippen' muß in uebergabetext  }
{                                       ein Text angegeben werden, der bei der Eingabe angezeigt werden soll    }
{                                       (z.B. 'Startpunkt' -> 'Bitte Startpunkt antippen:' wird angezeigt)!     }
{                                       Nach Antippen kann noch eine Angabe für die Art der Gummilinie gemacht  }
{                                       werden (z.B. 'Antippen Line' -> Gummilinie oder 'Antippen Box' ->       }
{                                       Gummibox). Dann wird der in teil_o gespeicherte Punkt als Bezugspunkt   }
{                                       für RUBBER_BOX bzw. RUBBER_LINE benutzt.                                }
{               ASG A2, ASG A4, ASG A6- die Anzahl der Alustützen Gr. 2, Gr. 4 oder Gr. 6 wird eingegeben       }
{               'ASG 250'             - die Anzahl der Kopfplatten 250mm Bauhöhe wird eingegeben                }
{               ASG 500/1000/1250/5000- die Anzahl der Aufstockungen 500 / 1000 / 1250 / 5000 wird eingegeben   }
{               'ASG AK'              - die Anzahl der Aufstockklammern wird eingegeben                         }
{               'ASG Sk', 'ASG Sl'    - die Anzahl der Spindeln 40cm (Sk) bzw. 120cm (Sl) wird eingegeben       }
{               'ASG SH'              - die Anzahl der Spindelhalterungen wird eingegeben                       }
{               'Bez_Punkt 1'         - der Bezugspunkt eines Teiles (analog Textbezugspunkt) wird eingegeben   }
{                                       (Die Nummer (zwischen 1 und 9) gibt den neuen Bezugspunkt an)           }
{               'Bezugspunkt Text'    - der Bezugspunkt des Textes wird eingegeben                              }
{               'GH'                  - die Trägerhöhe für den GH im Schnitt wird eingegeben                    }
{               'Hoehe'               - der Höhenwert für die erste Höhenkote wird eingegeben                   }
{               'Hoehenkote'          - der Bezugspunkt für die Höhenkote wird eingegeben bzw. die Ausrichtung. }
{                                       Vor Aufruf von Daten_eingeben 'Hoehenkote' muß in uebergabetext die     }
{                                       Ausrichtung angegeben werden ('u' oder 'o' und 'l' oder 'r': z.B. 'ol') }
{               'HV St', 'HV Maxi'    - die Anzahl der Alustützen TITAN HV oder TITAN HV-Maxi wird eingegeben   }
{               'HV 100', 'HV 125'    - die Anzahl der HV-Aufstockungen 1000 / 1250 wird eingegeben             }
{               'HV AK'               - die Anzahl der HV-Aufstockklammern wird eingegeben                      }
{               'HV Sk', 'HV Sl  '    - die Anzahl der HV-Spindeln 40cm (Sk) bzw. 120cm (Sl) wird eingegeben    }
{               'HV SH'               - die Anzahl der HV-Spindelhalterungen wird eingegeben                    }
{               'HV-Traegerlaenge'    - die Länge des Hauptträgers wird eingegeben                              }
{               'Ja_Nein'             - 'Y' oder 'N' wird eingegeben                                            }
{               'KH'                  - der KH-Abstand wird eingegeben                                          }
{               'Länge'               - END oder die Punkte für die Längenmessung werden eingegeben             }
{               'R-H', 'R-V'          - die Anzahl der horiz. ('R-H') / vertik. ('R-V') Rahmen wird eingegeben  }
{               'Schnittpfeil'        - die Punkte für den Schnittpfeil im Grundriß werden eingegeben           }
{               'SF 1' ... 'SF 5'     - die Schriftfelddaten werden eingegeben (1 - Baufirma, 2 - Bauvorhaben,  }
{                                       3 - Projektnummer, 4 - Zeichnungsnummer und 5 - alles von 1 bis 4)      }
{               'ST', 'JT', 'Stuetze' - der ST-Abstand, der JT-Abstand oder der Stützenabstand wird eingegeben  }
{               'Text'                - ein Text wird eingegeben. Vor Aufruf von Daten_eingeben 'Text' muß in   }
{                                       uebergabetext ein Text angegeben werden, der bei der Eingabe angezeigt  }
{                                       werden soll. Soll ein Vorgabewert angezeigt werden, dann ist der am     }
{                                       Anfang in uebergabetext anzugeben, gefolgt von '#####' und dem bei der  }
{                                       Eingabe anzuzeigenden Text (z.B. 'AB#####Bitte Text eingeben:').        }
{               'Textpfeil'           - die Punkte für den Bezugspfeil des Textes werden eingegeben             }
{               'Überstand'           - der Mindest-Überstand für die Träger in einem Joch wird eingegeben      }
{               'Zahl'                - eine Zahl wird eingegeben. Vor Aufruf von Daten_eingeben 'Zahl' muß in  }
{                                       uebergabetext ein Text angegeben werden, der bei der Eingabe angezeigt  }
{                                       werden soll. Soll ein Vorgabewert angezeigt werden, dann ist der am     }
{                                       Anfang in uebergabetext anzugeben, gefolgt von '#####' und dem bei der  }
{                                       Eingabe anzuzeigenden Text (z.B. '45#####Bitte Zahl eingeben:').        }
{      - verwendet folgende Variablen:                                                                          }
{           - die jeweilige globale Variable, die den Wert enthält: index_st_ab, index_jt_ab, index_stue_ab,    }
{             anzahl_jt_3750, anzahl_jt_2500, anzahl_jt_1700, anzahl_jt_1500, anzahl_jt_1150, anzahl_jt_0780,   }
{             anzahl_rahmen_h, anzahl_rahmen_v, bezugs_punkt, index_asg_code, index_kh_ab, teil_u, teil_o,      }
{             ueber_jt_min und uebergabetext                                                                    }
{ ============================================================================================================= }
   PARAMETER was_eingeben
   LOCAL x
   IF ( was_eingeben = 3750 )
      READ NUMBER 'Bitte geben Sie die Anzahl der Schalungsträger TITAN 120 - 3750 ein:' DEFAULT anzahl_jt_3750 anzahl_jt_3750
      Sm_willi
   ELSE_IF ( was_eingeben = 2500 )
      READ NUMBER 'Bitte geben Sie die Anzahl der Schalungsträger TITAN 120 - 2500 ein:' DEFAULT anzahl_jt_2500 anzahl_jt_2500
      Sm_willi
   ELSE_IF ( was_eingeben = 1700 )
      READ NUMBER 'Bitte geben Sie die Anzahl der HV-NT 1700 ein:' DEFAULT anzahl_jt_1700 anzahl_jt_1700
      Sm_willi
   ELSE_IF ( was_eingeben = 1500 )
      READ NUMBER 'Bitte geben Sie die Anzahl der HV-NT 1500 ein:' DEFAULT anzahl_jt_1500 anzahl_jt_1500
      Sm_willi
   ELSE_IF ( was_eingeben = 1150 )
      READ NUMBER 'Bitte geben Sie die Anzahl der HV-NT 1150 ein:' DEFAULT anzahl_jt_1150 anzahl_jt_1150
      Sm_willi
   ELSE_IF ( was_eingeben = 780 )
      READ NUMBER 'Bitte geben Sie die Anzahl der Schalungsträger TITAN 120 - 780 ein:' DEFAULT anzahl_jt_0780 anzahl_jt_0780
      Sm_willi
   ELSE_IF ( SUBSTR was_eingeben 1 5 = 'Alles' )
      IF ( LEN ( was_eingeben ) = 5 )
         READ PROMPT uebergabetext uebergabetext
      ELSE
         IF ( POS ( UPC was_eingeben ) 'VORGABE' > 0 )
            LET x ( ( POS uebergabetext '#' ) - 1 )
            WHILE ( ( x < ( POS uebergabetext '#' ) ) AND ( x > 0 ) )
               IF ( ( NUM ( SUBSTR uebergabetext x 1 ) < 58 ) AND ( NUM ( SUBSTR uebergabetext x 1 ) > 47 ) )
                  LET x ( x - 1 )
               ELSE
                  LET x ( ( POS uebergabetext '#' ) + 1 )
               END_IF
            END_WHILE
            IF ( x = 0 )
               LET x ( VAL ( SUBSTR uebergabetext 1 ( ( POS uebergabetext '#' ) - 1 ) ) )
            ELSE
               LET x ( SUBSTR uebergabetext 1 ( ( POS uebergabetext '#' ) - 1 ) )
            END_IF
            LET uebergabetext ( SUBSTR uebergabetext ( ( POS uebergabetext '#' ) + 5 ) ( ( LEN uebergabetext ) - ( POS uebergabetext '#' ) - 4 ) )
            READ PROMPT uebergabetext DEFAULT x uebergabetext
         ELSE_IF ( POS ( UPC was_eingeben ) 'BOX' > 0 )
            READ PROMPT uebergabetext RUBBER_BOX teil_o uebergabetext
         ELSE_IF ( POS ( UPC was_eingeben ) 'LINE' > 0 )
            READ PROMPT uebergabetext RUBBER_LINE teil_o uebergabetext
         END_IF
      END_IF
   ELSE_IF ( ( SUBSTR was_eingeben 1 8 ) = 'Antippen' )
      IF ( ( LEN was_eingeben ) = 8 )
         READ PNT PROMPT ( 'Bitte ' + uebergabetext + ' antippen:' ) uebergabetext
      ELSE
         LET was_eingeben ( SUBSTR was_eingeben 10 ( ( LEN was_eingeben ) - 9 ) )
         IF ( ( UPC was_eingeben ) = 'BOX' )
            READ PNT PROMPT ( 'Bitte ' + uebergabetext + ' antippen:' ) RUBBER_BOX teil_o uebergabetext
         ELSE_IF ( ( UPC was_eingeben ) = 'LINE' )
            READ PNT PROMPT ( 'Bitte ' + uebergabetext + ' antippen:' ) RUBBER_LINE teil_o uebergabetext
         ELSE_IF ( ( UPC was_eingeben ) = 'TEXT' )
            READ PNT PROMPT ( uebergabetext ) uebergabetext
         END_IF
      END_IF
   ELSE_IF ( SUBSTR was_eingeben 1 3 = 'ASG' )
      LET was_eingeben ( SUBSTR was_eingeben 5 ( ( LEN was_eingeben ) - 4 ) )
      IF ( was_eingeben = 'A2' )
         LET x ( NUM ( SUBSTR index_asg_code 1 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Alu-Stütze Gr. 2 ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 1 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'A4' )
         LET x ( NUM ( SUBSTR index_asg_code 2 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Alu-Stütze Gr. 4 ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 2 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'A6' )
         LET x ( NUM ( SUBSTR index_asg_code 3 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Alu-Stütze Gr. 6 ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 3 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = '250' )
         LET x ( NUM ( SUBSTR index_asg_code 5 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Kopfplatte 250mm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 5 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = '500' )
         LET x ( NUM ( SUBSTR index_asg_code 7 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Aufstockung 500mm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 7 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = '1000' )
         LET x ( NUM ( SUBSTR index_asg_code 8 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Aufstockung 1000mm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 8 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = '1250' )
         LET x ( NUM ( SUBSTR index_asg_code 9 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Aufstockung 1250mm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 9 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = '5000' )
         LET x ( NUM ( SUBSTR index_asg_code 10 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Aufstockung 5000mm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 10 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'AK' )
         LET x ( NUM ( SUBSTR index_asg_code 12 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Aufstockklammern ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 12 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'Sk' )
         LET x ( NUM ( SUBSTR index_asg_code 14 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Spindel 40cm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 14 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'Sl' )
         LET x ( NUM ( SUBSTR index_asg_code 15 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Spindel 120cm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 15 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'SH' )
         LET x ( NUM ( SUBSTR index_asg_code 17 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Spindelhalterungen ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 17 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'Gelenk' )
         LET x ( NUM ( SUBSTR index_asg_code 19 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Gelenkplatten ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_asg_code 19 ( CHR ( x + 48 ) ) 't'
      END_IF
      LET index_asg_code uebergabetext
      Sm_willi
   ELSE_IF ( POS was_eingeben 'Bez_Punkt' > 0 )
      LET x ( VAL ( SUBSTR was_eingeben 11 ( ( LEN was_eingeben ) - 10 ) ) )
      IF ( ( x <= 9 ) AND ( x >= 1 ) )
         LET bezugs_punkt x
      ELSE
         REPEAT
            READ NUMBER 'Bitte geben Sie den Bezugspunkt des Teils ein:' DEFAULT bezugs_punkt bezugs_punkt
         UNTIL ( ( bezugs_punkt >= 1 ) AND ( bezugs_punkt <= 9 ) AND ( FRACT bezugs_punkt = 0 ) )
      END_IF
      Sm_willi
   ELSE_IF ( was_eingeben = 'Bezugspunkt Text' )
      READ PNT 'Bitte Punkt antippen, an dem der Text eingefügt werden soll:' teil_u
   ELSE_IF ( was_eingeben = 'GH' )
      READ PNT 'Bitte die untere Ecke am Träger antippen:' teil_u
      READ PNT 'Bitte die Oberkante der Schalhaut antippen:' RUBBER_LINE_VERTICAL teil_u teil_o
      READ PNT 'Bitte antippen, in welcher Richtung die Deckenkante liegt:' uebergabetext
   ELSE_IF ( was_eingeben = 'Hoehe' )
      READ NUMBER 'Bitte Höhe eingeben:' uebergabetext
   ELSE_IF ( was_eingeben = 'Hoehenkote' )
      REPEAT
         READ PROMPT ('Bitte die Ausrichtung ("o","u","l","r" - aktuell: '+uebergabetext+') oder den Einfügepunkt der Höhenkote eingeben bzw. antippen:') teil_u
         IF ( ( TYPE teil_u ) = STRING )
            IF ( teil_u = 'o' )
               IF ( ( POS uebergabetext 'u' ) > 0 )
                  Buchstabe_in_Wort_tauschen uebergabetext ( POS uebergabetext 'u' ) teil_u 't'
               ELSE_IF ( ( POS uebergabetext 'o' ) = 0 )
                  LET uebergabetext ( uebergabetext + teil_u )
               END_IF
            ELSE_IF ( teil_u = 'u' )
               IF ( ( POS uebergabetext 'o' ) > 0 )
                  Buchstabe_in_Wort_tauschen uebergabetext ( POS uebergabetext 'o' ) teil_u 't'
               ELSE_IF ( ( POS uebergabetext 'u' ) = 0 )
                  LET uebergabetext ( uebergabetext + teil_u )
               END_IF
            ELSE_IF ( teil_u = 'l' )
               IF ( ( POS uebergabetext 'r' ) > 0 )
                  Buchstabe_in_Wort_tauschen uebergabetext ( POS uebergabetext 'r' ) teil_u 't'
               ELSE_IF ( ( POS uebergabetext 'l' ) = 0 )
                  LET uebergabetext ( uebergabetext + teil_u )
               END_IF
            ELSE_IF ( teil_u = 'r' )
               IF ( ( POS uebergabetext 'l' ) > 0 )
                  Buchstabe_in_Wort_tauschen uebergabetext ( POS uebergabetext 'l' ) teil_u 't'
               ELSE_IF ( ( POS uebergabetext 'r' ) = 0 )
                  LET uebergabetext ( uebergabetext + teil_u )
               END_IF
            END_IF
         END_IF
      UNTIL ( ( TYPE teil_u ) = PNT )
   ELSE_IF ( SUBSTR was_eingeben 1 3 = 'HV ' )
      LET was_eingeben ( SUBSTR was_eingeben 4 ( ( LEN was_eingeben ) - 3 ) )
      IF ( was_eingeben = 'St' )
         LET x ( NUM ( SUBSTR index_hv_code 1 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Alu-Stütze TITAN HV ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_hv_code 1 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'Maxi' )
         LET x ( NUM ( SUBSTR index_hv_code 2 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Alu-Stütze TITAN Maxi ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_hv_code 2 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = '100' )
         LET x ( NUM ( SUBSTR index_hv_code 4 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der HV-Aufstockung 1000mm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_hv_code 4 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = '125' )
         LET x ( NUM ( SUBSTR index_hv_code 5 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der HV-Aufstockung 1250mm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_hv_code 5 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'AK' )
         LET x ( NUM ( SUBSTR index_hv_code 7 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Aufstockklammern TITAN HV ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_hv_code 7 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'Sk' )
         LET x ( NUM ( SUBSTR index_hv_code 9 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der HV-Spindel 50cm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_hv_code 9 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'Sl' )
         LET x ( NUM ( SUBSTR index_hv_code 10 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der HV-Spindel 130cm ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_hv_code 10 ( CHR ( x + 48 ) ) 't'
      ELSE_IF ( was_eingeben = 'SH' )
         LET x ( NUM ( SUBSTR index_hv_code 12 1 ) - 48 )
         READ NUMBER 'Bitte geben Sie die Anzahl der Spindelhalterungen TITAN HV ein:' DEFAULT x x
         Buchstabe_in_Wort_tauschen index_hv_code 12 ( CHR ( x + 48 ) ) 't'
      END_IF
      LET index_hv_code uebergabetext
      Sm_willi
   ELSE_IF ( was_eingeben = 'HV-Traegerlaenge' )
      IF ( ( uebergabetext<>1150 ) AND ( uebergabetext<>1500 ) AND ( uebergabetext<>1700 ) AND ( uebergabetext<>2300 ) )
         LET uebergabetext 0
      END_IF
      REPEAT
         IF ( uebergabetext = 0 )
            READ NUMBER 'Bitte geben Sie die Trägerlänge ein:' uebergabetext
         ELSE
            READ NUMBER 'Bitte geben Sie die Trägerlänge ein:' DEFAULT uebergabetext uebergabetext
         END_IF
      UNTIL ( ( uebergabetext = 1150 ) OR ( uebergabetext = 1500 ) OR ( uebergabetext = 1700 ) OR ( uebergabetext = 2300 ) )
   ELSE_IF ( was_eingeben = 'Ja_Nein' )
      READ STRING PROMPT ( uebergabetext + " ('Y' = Ja, 'N' = Nein):" ) DEFAULT 'Y' uebergabetext
      LET uebergabetext ( UPC uebergabetext )
   ELSE_IF ( was_eingeben = 'JT' )
      READ NUMBER 'Bitte geben Sie einen neuen Jochträgerabstand in [mm] ein:' DEFAULT index_jt_ab index_jt_ab
      Sm_willi
   ELSE_IF ( was_eingeben = 'KH' )
      READ NUMBER 'Bitte geben Sie einen neuen KH-Abstand in [mm] ein:' DEFAULT index_kh_ab index_kh_ab
      Sm_willi
   ELSE_IF ( was_eingeben = 'Länge' )
      READ 'Bitte den Startpunkt antippen:' teil_o
      IF ( TYPE teil_o = PNT )
         READ PNT 'Bitte den Endpunkt antippen:' RUBBER_LINE teil_o teil_u
      END_IF
   ELSE_IF ( was_eingeben = 'R-H' )
      READ NUMBER 'Bitte geben Sie die Anzahl der horizontalen Rahmen in der Höhe ein:' DEFAULT anzahl_rahmen_h anzahl_rahmen_h
      Sm_willi
   ELSE_IF ( was_eingeben = 'R-V' )
      READ NUMBER 'Bitte geben Sie die Anzahl der vertikalen Rahmen in der Höhe ein:' DEFAULT anzahl_rahmen_v anzahl_rahmen_v
      Sm_willi
   ELSE_IF ( was_eingeben = 'Schnittpfeil' )
      READ PNT 'Bitte den linken Punkt des Schnittpfeils antippen:' teil_u
      READ PNT 'Bitte den rechten Punkt des Schnittpfeils antippen:' RUBBER_LINE teil_u teil_o
      READ PNT 'Bitte die Richtung der Schnittansicht antippen:' RUBBER_LINE teil_o uebergabetext
   ELSE_IF ( SUBSTR was_eingeben 1 2 = 'SF' )
      LET x ( VAL ( SUBSTR was_eingeben 4 1 ) )
      IF ( x = 1 )
         READ STRING 'Contractor Name ?' DEFAULT Naam_aannemer Naam_aannemer
         Baufirma_speichern Naam_aannemer
      ELSE_IF ( x = 2 )
         READ STRING 'Project Name ?' DEFAULT Naam_projekt Naam_projekt
      ELSE_IF ( x = 3 )
         IF ( Project_nummer = '' )
            INQ_ENV 0
            LET Project_nummer ( INQ(302) )
            WHILE ( ( POS Project_nummer pfad_trenn_z ) > 0 )
               LET Project_nummer (SUBSTR Project_nummer (1+(POS Project_nummer pfad_trenn_z)) (LEN Project_nummer-(POS Project_nummer pfad_trenn_z)))
            END_WHILE
         END_IF
         READ STRING "Project number (max 5 chr's):" DEFAULT Project_nummer Project_nummer
      ELSE_IF ( x = 4 )
         IF ( Tekening_nummer = '' )
            IF ( ( POS Naam_projekt 'Brücke' ) > 0 )
               LET Tekening_nummer 'BR-1'
            ELSE_IF ( ( POS Naam_projekt 'Rampe' ) > 0 )
               LET Tekening_nummer 'R-1'
            ELSE_IF ( ( POS Naam_projekt 'Tiefgarage' ) > 0 )
               LET Tekening_nummer 'TG-1'
            ELSE_IF ( ( ( POS Naam_projekt 'Tunnel' ) > 0 ) OR ( ( POS Naam_projekt 'tunnel' ) > 0 ) )
               LET Tekening_nummer 'T-1'
            ELSE
               LET Tekening_nummer '1'
            END_IF
         END_IF
         READ STRING "Drawing number (max 5 chr's):" DEFAULT Tekening_nummer Tekening_nummer
      ELSE_IF ( x = 5 )
         IF ( Project_nummer = '' )
            INQ_ENV 0
            LET Project_nummer ( INQ(302) )
            WHILE ( ( POS Project_nummer pfad_trenn_z ) > 0 )
               LET Project_nummer (SUBSTR Project_nummer (1+(POS Project_nummer pfad_trenn_z)) (LEN Project_nummer-(POS Project_nummer pfad_trenn_z)))
            END_WHILE
         END_IF
         IF ( Tekening_nummer = '' )
            IF ( ( POS Naam_projekt 'Brücke' ) > 0 )
               LET Tekening_nummer 'BR-1'
            ELSE
               LET Tekening_nummer '1'
            END_IF
         END_IF
         READ STRING 'Contractor Name ?' DEFAULT Naam_aannemer Naam_aannemer
         Baufirma_speichern Naam_aannemer
         READ STRING 'Project Name ?' DEFAULT Naam_projekt Naam_projekt
         READ STRING "Project number (max 5 chr's):" DEFAULT Project_nummer Project_nummer
         READ STRING "Drawing number (max 5 chr's):" DEFAULT Tekening_nummer Tekening_nummer
      END_IF
      Sm_willi
   ELSE_IF ( was_eingeben = 'ST' )
      READ NUMBER 'Bitte geben Sie einen neuen Schalungsträgerabstand in [mm] ein:' DEFAULT index_st_ab index_st_ab
      Sm_willi
   ELSE_IF ( was_eingeben = 'Stuetze' )
      READ NUMBER 'Bitte geben Sie einen neuen Stützenabstand in [mm] ein:' DEFAULT index_stue_ab index_stue_ab
      Sm_willi
   ELSE_IF ( was_eingeben = 'Text' )
      IF ( ( POS uebergabetext '#####' ) > 0 )
         LET x ( SUBSTR uebergabetext 1 ( ( POS uebergabetext '#####' ) - 1 ) )
         LET uebergabetext (SUBSTR uebergabetext ((POS uebergabetext '#####')+5) ((LEN uebergabetext)-(POS uebergabetext '#####')-4))
         READ STRING PROMPT uebergabetext DEFAULT x uebergabetext
      ELSE
         READ STRING PROMPT uebergabetext DEFAULT '' uebergabetext
      END_IF
   ELSE_IF ( was_eingeben = 'Textpfeil' )
      READ PNT 'Bitte Punkt antippen, wo die Pfeilspitze hinzeigen soll:' teil_o
      READ PNT 'Bitte Punkt antippen, wo der Pfeil beginnen soll:' RUBBER_LINE teil_o teil_u
   ELSE_IF ( was_eingeben = 'Überstand' )
      READ NUMBER 'Bitte geben Sie den Trägerüberstand ein:' DEFAULT ueber_jt_min ueber_jt_min
   ELSE_IF ( was_eingeben = 'Zahl' )
      IF ( ( POS uebergabetext '#####' ) > 0 )
         LET x ( VAL ( SUBSTR uebergabetext 1 ( ( POS uebergabetext '#####' ) - 1 ) ) )
         LET uebergabetext (SUBSTR uebergabetext ((POS uebergabetext '#####')+5) ((LEN uebergabetext)-(POS uebergabetext '#####')-4))
         READ NUMBER PROMPT uebergabetext DEFAULT x uebergabetext
      ELSE
         READ NUMBER PROMPT ( uebergabetext ) uebergabetext
      END_IF
   END_IF
END_DEFINE

Das hätte man alles auch ohne extra Funktion programmieren können. Aber die Firmenmakros, die unser alter Chef programmiert hat, waren teilweise verschlüsselt. Allerdings ist mir mal aufgefallen, daß man bei Eingaben die Verschlüsselung aushebeln kann, indem man zuerst ECHO und/oder TRACE eingibt. Dann kann man zumindest ab der Selle der Eingabe sehen, was programmiert wurde. Darum habe ich alle meine Eingaben dann in diese extra Funktion geschrieben, in die ich bei Bedarf dann am Ende noch ein ECHO OFF oder TRACE OFF geschrieben hätte, wenn ich das Makro verschlüsseln hätte wollen. Da ich meine Makros aber bisher noch nicht verschlüsselt habe, fehlt das noch. Sie sind also nur für den Fall der Fälle schon dafür vorbereitet.
Hier sind jetzt auch viele Eingaben dabei, die speziell für unser Anwendungsgebiet sind. Die kann sich jeder ja je nach Bedarf rauslöschen.

Und alle nicht im Makro definierten Variablen sind global definiert und werden beim Start von ME10 definiert, bei dem unsere Makros geladen werden.

Gruß

ME10-Faultier

[Diese Nachricht wurde von ME10-Faultier am 05. Dez. 2017 editiert.]

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