Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Direct Drafting
  Teileditor

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo
Autor Thema:  Teileditor (1071 mal gelesen)
Ren Odani
Mitglied
Elektriker

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

Beiträge: 4
Registriert: 01.02.2014

erstellt am: 01. Feb. 2014 19: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

Hallo!

Weiss vllt. jemand wie man im Teileeditor die Zeilennummer ermittelt.

Ich würde gerne im Teileeditor ein Teil anklicken und dessen Position
in der Tabelle ermitteln sprich: Zeilennummer
Leider lassen sich über INQ_ENV(7) INQ 301 und INQ 302 nur
der Teilename und Teilenummer ermitteln. 

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

r.hoffmann
Mitglied
Techniker


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

Beiträge: 127
Registriert: 07.12.2006

OSD 13.2 20.4

erstellt am: 01. Feb. 2014 22:41    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 Ren Odani 10 Unities + Antwort hilfreich

Hallo Ren,

die eindeutigen Teilenummern ändern sich bei jedem Speichern.
Erstelle mal eine Zeichnung mit drei oder vier Teilen,
speicher diese und lass Dir nach dem erneuten Laden
den Teilebaum anzeigen. Dann editiere wahllos diese Teile und schiebe
sie ein wenig hin und her. Nach Speichern und Neuladen sieh
dir den Teilebaum an. Die Teile stehen in anderen Zeilen.

Was hast Du denn vor?

Gruß Robert

------------------
Homepage: www.me10-makros.de

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

Ren Odani
Mitglied
Elektriker

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

Beiträge: 4
Registriert: 01.02.2014

erstellt am: 02. Feb. 2014 09: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

Guten Morgen Herr Hoffmann!

Das mit dem Teilebaum hab ich auch schon als Problem erkannt.

Ich habe vor direkt im Teilebaum Teilenamen umzubenennen.
Also nicht über eine Datei wie ich es bei ihren Beispielen schon gesehen habe.

Es geht darum eine bereits geladene Datei im Teilebaum einige
Teile mit gleichen Namen einer Baugruppe umzubenennen.

Deshalb bräuchte ich die absulute Zeilenposition, um von dort
aus über eine Variable weiter zu zählen.

Ich stellte es mir folgender maßen vor:

1. Ich klicke das Teil im Teileditor an das umbenannt werden soll.
2. Ich gebe einen neuen Teilenamen an. ( Der alte Teilename soll idealerweise vorgeschlagen werden. )

3. Mit Edit_Part Parent soll die Oberbaugruppe selektiert werden.
  Von dort aus sollen alle Teilenamen mit neuen Teilenamen
  umbenannt werden.
 
Hier beginnen die Schwierigkeiten, die grenzen einer Baugruppe
zu ermitteln. Also wo ist der Anfang und das Ende einer Baugruppe.

Vllt. wäre es möglich die Baugruppe zu Isolieren in einer anderen
Tabelle um dort entsprechend die änderungen vor zunehmen.
Danach wieder zurück zu schreiben.
Find ich aber irgendwie umständlich.

Vllt. haben sie noch eine Idee!

Mir wärs aber lieber ich könnte es direkt im Teileeditor änderungen
vornehmen.

Gruß Ren

 

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

r.hoffmann
Mitglied
Techniker


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

Beiträge: 127
Registriert: 07.12.2006

OSD 13.2 20.4

erstellt am: 02. Feb. 2014 16:01    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 Ren Odani 10 Unities + Antwort hilfreich


test1.jpg


test2.jpg


test3.jpg

 
mit

PARTS_LIST TREE DEL_OLD 'c:/temp/pl_tree.txt'

kann der Teilebaum in eine Datei geschrieben werden.

Das aktuelle Teil erkennst Du an dem Stern in eckigen Klammern

Wenn Du also Deine zu ändernde Baugruppe aktiv machst,
könntest Du die Zeilen darunter auslesen,
beginnend mit der Zeile mit Stern. Hier merkst Du dir den Anfang des Namens
(hier im Beispiel NACH 6 Zeichen)
bis eine Zeile kommt, die gleich viel führende Leerzeichen hat
(dies ist nämlich das nächste Teil, das NICHT mehr zu dieser Baugruppe gehört.

Siehe das Bild test3.jpg
Willst Du z.B. die Baugruppe_4 ändern,
überliest Du die Zeile Top (kein Stern)
dann liest Du Baugruppe_4 (Start des Namens nach 6 Zeichen),
bearbeitest diese (der eindeutige Teilename ist der mit der Tilde)
Danach liest Du die nächsten 3 Zeilen (Start nach je 8 Leerzeichen) und bearbeitest diese.
Danach liest Du Zeile Baugruppe_3, stellst fest, Start wieder nach 6 Leerzeichen,
also Baugruppe zu Ende -> Abbruch.

--------------------------------------------

Das untenstehende Makro geht aber ALLE Teile durch und sucht nach
Teilen mit gleichem Namen

DEFINE test
  LOCAL eva_TeileName_Aktuell
  LOCAL eva_TeileName_Eindeutig
  LOCAL Schleife
  LOCAL Name_gesucht

  READ STRING 'zu suchender Name: ' Name_gesucht

  INQ_ENV 8                        { Hole hoechste Teilenummer }
  LET Schleife (INQ 5)
  WHILE (Schleife>0)                { alle Teilenummern durchlaufen }
    TRAP_ERROR
    EDIT_PART ('~'+(STR Schleife))  { editiere Teil }
    IF (NOT CHECK_ERROR)            { Teil vorhanden? }
      INQ_ENV 7
      LET eva_TeileName_Aktuell (INQ 301)
      LET eva_TeileName_Eindeutig ('~'+ STR(INQ 302))
      IF (Name_gesucht = eva_TeileName_Aktuell)

        DISPLAY (eva_TeileName_Aktuell+' -> '+eva_TeileName_Eindeutig)
        { hier die gewünschte Änderung machen }

      END_IF
    END_IF
    LET Schleife (Schleife - 1)    { naechstes Teil }
  END_WHILE
  END
END_DEFINE

Ich hoffe, es war einigermassen verständlich.

Gruß Robert

------------------
Homepage: www.me10-makros.de

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

Ren Odani
Mitglied
Elektriker

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

Beiträge: 4
Registriert: 01.02.2014

erstellt am: 02. Feb. 2014 16:12    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

Vielen Dank für ihre Unterstützung Herr Hoffmann
und ihrem Beispiel Makro.

Ich werde es mir mal zu gemüte führen.

Es wird mir bestimmt weiter helfen.


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

Ren Odani
Mitglied
Elektriker

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

Beiträge: 4
Registriert: 01.02.2014

erstellt am: 09. Feb. 2014 14:38    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!

Anbei meine Lösung des Problems mit dem Teileeditor.

Vielen Dank noch mal an H.Hoffmann.

Das Makro ist lauffähig ab ME10 8.5

Viel Spass beim ausprobieren!

{ Nennt gleiche Teilenamen in einer Baugruppe um }
DEFINE Teil_Umbenennen

    LOCAL Start_B          { Beginn der Baugruppe }
    LOCAL Ebene            { Ebene der Baugruppe  }
    LOCAL Ende_B            { Ende der Baugruppe  }
    LOCAL Teilename
    LOCAL Alter_Teilename
    LOCAL Baugruppe
    LOCAL NAME
    LOCAL TMP              { Temporäre Variable}
    LOCAL i                { Ebenezähler }
    LOCAL j             { Schleifenzähler }   
    LOCAL j_Max            { Maximale Tabellen Einträge}
    { Startwerte setzen  } 
    LET i 1
    LET j 1 
    LET TEMP  ''
    LET Teilename ''
   
    PRT_EDITOR
    INQ_ENV 8         { holt höchste bekannete Teilenummer}
    LET j_Max (INQ 5)   
   
    READ STRING 'Bitte Teil auswählen das Umbenannt werden soll!  ' Teilename
    EDIT_PART Teilename                                  { Teil wird über eindeutigen Teilename selektiert  z.b. ~253 }
    { Teileneame ohne führende Leerzeichen holen  }
    INQ_ENV 7   
    LET Alter_Teilename (INQ 301)
 
    READ STRING ' Neuen Teilnamen eingeben! ' DEFAULT  (INQ 301) Teilename
   
    EDIT_PART PARENT                                    { Oberbaugruppe selektieren }
    INQ_ENV 7
    LET Baugruppe ('~'+(INQ 302))                            { Eindeutiger Teilename der Oberbaugruppe }
   
    { Oberbaugruppe suchen und den Schleifenzähler j Aktualisieren }
    LOOP
        LET TMP ( READ_LTAB 'PBT_LTAB' j 2 )            { Eindeutiger Teilename zum Vergleich zuweisen}
        EXIT_IF ( ( Baugruppe = TMP ) OR ( i >= j_Max ))
        LET j ( j + 1 )
    END_LOOP
   
    LET Start_B j                                          {  Merke den Anfang der Baugruppe }
    LET NAME (READ_LTAB 'PBT_LTAB' j 1 )              { Baugruppennamen mit führenden Leerzeichen }
    {  Ebene ermitteln  der gefundenen Baugruppe }
    LOOP
       
        { Hier wird immer nur ein Zeichen zum Vergleich aus dem String Name übergeben }
        LET TMP (SUBSTR NAME i 1 ) 
        { Verlasse die Schleife wenn kein Leerzeichen erkannt wurde }
        EXIT_IF ( TMP <> ' ')
        LET i (i + 1)
    END_LOOP
   
    LET Ebene i                                            { Merke die Ebene der Baugruppe }
    LET i 1                                                { Schleifenzähler für die Ebene zurücksetzen }
   
    {  Ende der Baugruppe ermitteln }
    LOOP
        LET j ( j + 1 )
        LET NAME (READ_LTAB 'PBT_LTAB' j 1 )          { Nächsten Teilenamen holen }
        LOOP
            { Hier wird immer nur ein Zeichen zum Vergleich aus dem String Name übergeben }
            LET TMP (SUBSTR NAME i 1 )
           
            IF ( TMP = ' '  )                              {  Ebenenzähler erhöhen solange ein Leerzeichen erkannt wurde }
                LET i (i + 1)
            END_IF
           
            { Verlasse die Schleife wenn kein Leerzeichen erkannt wurde }
            EXIT_IF ( TMP <> ' '  )

        END_LOOP
        { Verlasse Schleife wenn Kein Zeichen erkannt wurde oder Schleifenzähler i = Ebene}
        EXIT_IF ( ( i = Ebene )  OR ( TMP = '' ))     

        LET i 1            { Schleifenzähler für die Ebene zurücksetzen }
    END_LOOP
    LET Ende_B j                                          { Merke das Ende  der Baugruppe }
    LET j ( Start_B + 1 )
    { Hier werden gleich lautende Teilenamen Automatisch Umbenannt innerhalb der Grenzen }
    { Start_B  und Ende_B                                                                }
    LOOP
        LET TMP  (TRIM( READ_LTAB 'PBT_LTAB' j 1 ))
        IF (  TMP = Alter_Teilename )
            LET TMP ( READ_LTAB 'PBT_LTAB' j 2 )
            EDIT_PART TMP
            RENAME_PART  Teilename
        END_IF
        LET j ( j+1 )
        EXIT_IF ( j >= Ende_B )
    END_LOOP
END_DEFINE

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