Hot News:
   

Mit Unterstützung durch:

  Foren auf CAD.de
  PTC Creo Elements/Programmierung
  Drafting: Element über ID selektieren?

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

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
  
Wichtige Änderung bei Lizenzverlängerungen von PTC, eine Pressemitteilung
Autor Thema:  Drafting: Element über ID selektieren? (406 / mal gelesen)
Martin Gutjahr
Mitglied
Jack of all trades


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

Beiträge: 17
Registriert: 03.12.2000

HP Z800,Z2G1i | HP15c
Creo Elements/Direct Modeling 20.8,
SheetMetal, AdvancedDesign,
SolidPower, SolidTube, SolidPipe,
PhoenixPDM

erstellt am: 26. Nov. 2025 07: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

Ich mal wieder...

Eines meiner Makros editiert die Bemaßungs-Prefixe.

Code:

INQ_SELECTED_ELEM GLOBAL DIMENSIONS ALL

LOOP
  EXIT_IF ((INQ 14) = 0) { verbleibende Bemaßungen}
  { INQ 39  = Element-ID
    INQ 309  = Part-ID
    INQ 902  = Prefix Text
    INQ 904  = Postfix Text
  }     
 
  IF ((LEN (INQ 902)) AND ((INQ 902) <> "END-OF-LIST"))
      LET C (UCHR 57393)  { <Diameter> -> "ø" UCHR(248) oder "Ø" -> UCHR(216) }
      LET T (INQ 902)
     
      LET P (POS T C)
      IF (P>0)
        EDIT_PART (INQ 309)
        LET Tnew ((SUBSTR T 1 (P-1)) + (UCHR 216) + (SUBSTR T (P+1) 80))
        EDIT_DIM_PREFIX PICK_VP_PNT 1 (INQ 101) Tnew END
      END_IF
  END_IF

  INQ_NEXT_ELEM
END_LOOP


Das funktioniert fast immer. Nur bei einer Bemaßung kommt mir ein trap token error.

trace:

Code:

INQ_SELECTED_ELEM GLOBAL DIMENSIONS ALL
LOOP
EXIT_IF ( ( INQ 14 ) = 0 ) 0
IF ( ( LEN ( INQ 902 ) ) AND ( ( INQ 902 ) <> 'END-OF-LIST' ) ) 1
LET C ( UCHR 57393 ) ''
LET T ( INQ 902 ) ' '
LET P ( POS T ' ' C '' ) 2
IF ( P 2 > 0 ) 1
LET Cnt ( Cnt 0 + 1 ) 1
EDIT_PART ( INQ 309 ) '~26'
LET Tnew ( ( SUBSTR T ' ' 1 ( P 2 -1 ) ) + ( UCHR 216 ) + ( SUBSTR T
  ' ' ( P 2 + 1 ) 80 ) ) ' Ø'
EDIT_DIM_PREFIX
PICK_VP_PNT 1 ( INQ 101 ) -402.479368338531,-8.26140561111269  { trapped token error occurred }
Tnew ' Ø'  { trapped token error occurred }
END
END_IF
END_IF
INQ_NEXT_ELEM
END_LOOP

weitere Änderungen laufen problemlos durch:

EDIT_DIM_PREFIX
PICK_VP_PNT 1 ( INQ 101 ) -224.539987097415,101.052014913183 Tnew ' Ø'
END

EDIT_DIM_PREFIX
PICK_VP_PNT 1 ( INQ 101 ) -208.811594399194,127.372303128114 Tnew ' Ø'
END

etc...


Es ist zufälligerweise die erste Bemaßung in der Liste, aber daran liegts
nicht - wenn ich bei der ersten im Loop kein EDIT_DIM_PREFIX mache läuft
es bei der nächsten (welche dann die erste editierte ist) wie gehabt problemlos.

Ich vermute daß das PICK_VP_PNT nichts findet. Der Maßtext ist zur Seite gezogen.

Wenn ich aber in der Befehlszeile

Code:

INQ_ELEM -> Klick auf Bemaßung

und dann

EDIT_DIM_PREFIX PICK_VP_PNT 1 (INQ 101)



eingebe wird mir das Prefix zur manuellen Änderung vorgeschlagen...

Seltsam?

Kann ich eine Bemaßung auch über die Element ID (INQ 39) statt über PICKVP_PNT (INQ 101) selektieren?
Oder auf anderem Weg?

So long,
Martin

------------------
Tu nicht so, sonst bekommst Du das doch auch immer hin!

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

der_Wolfgang
Moderator
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: 2399
Registriert: 3.20.

● PE60+80+90@home
● W10 Pro Build10.0.19045.6466
● Drafting V17~V20.7@job
● Modeling V17~V20.7@job
● Windchill 12.1.2.6@job
● UWGM Client 13.1.0.1@job
● Taschenrechner
● brain 6.3
● Stift+Zettel V8.42

erstellt am: 26. Nov. 2025 20:08    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 Martin Gutjahr 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Martin Gutjahr:
Kann ich eine Bemaßung auch über die Element ID (INQ 39) statt über PICKVP_PNT (INQ 101) selektieren?

PICKVP_PNT war das erste was mir in dem Code..   <räusper>


Ich räuber aber am liebsten erst in den Annotation Macros. 😉

Es gibt da aber paar Zeilen, die auch den Pointer mit Bemassungen einsetzen:

Code:
DA_STYLE_GET POINTER (INQ 332)
Also ggf. 
EDIT_DIM_PREFIX GLOBAL POINTER (INQ 332) Tnew END

39? 332? Das eine war nen String, das andere 'n Integer. Kam durch die 64bit Version vom Drafting.

Mit GLOBAL POINTER brauchst du dann auch den EDIT_PART nimmer, und, Nebeneffekt: Teile könnten skaliert sein. Da wäre dann auch ein umrechnen nicht mehr nötig.

------------------
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

Martin Gutjahr
Mitglied
Jack of all trades


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

Beiträge: 17
Registriert: 03.12.2000

HP Z800,Z2G1i | HP15c
Creo Elements/Direct Modeling 20.8,
SheetMetal, AdvancedDesign,
SolidPower, SolidTube, SolidPipe,
PhoenixPDM

erstellt am: 26. Nov. 2025 22:18    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

Zitat:
<räusper>
Nicht dran verschlucken! 

EDIT_DIM_TEXT funktioniert mit POINTER.

EDIT_DIM_PREFIX nicht.


getraced aus der Befehlszeile sieht das so aus:

Code:

INQ_ELEM PICK_VP_PNT 1 -213.79740688525,-28.248553834509
LET Ptr ( INQ 332 ) '76352032'
EDIT_DIM_TEXT POINTER Ptr '76352032' 'ABC'
END
EDIT_DIM_PREFIX POINTER  { untrapped token error occurred }


------------------
Tu nicht so, sonst bekommst Du das doch auch immer hin!

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

der_Wolfgang
Moderator
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: 2399
Registriert: 3.20.

● PE60+80+90@home
● W10 Pro Build10.0.19045.6466
● Drafting V17~V20.7@job
● Modeling V17~V20.7@job
● Windchill 12.1.2.6@job
● UWGM Client 13.1.0.1@job
● Taschenrechner
● brain 6.3
● Stift+Zettel V8.42

erstellt am: 26. Nov. 2025 22: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 Nur für Martin Gutjahr 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Martin Gutjahr:
getraced aus der Befehlszeile sieht das so aus:

Dann stülp noch den SELECTOR oben drüber. Ja, ich hatte befürchtet das nicht alle Befehle mit POINTER umgehen können.

Code:
EDIT_DIM_PREFIX SELECT GLOBAL POINTER (INQ 332) CONFIRM 'ABC' END
code written - not tested

------------------
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

Martin Gutjahr
Mitglied
Jack of all trades


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

Beiträge: 17
Registriert: 03.12.2000

HP Z800,Z2G1i | HP15c
Creo Elements/Direct Modeling 20.8,
SheetMetal, AdvancedDesign,
SolidPower, SolidTube, SolidPipe,
PhoenixPDM

erstellt am: 26. Nov. 2025 23:03    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

EDIT_DIM_PREFIX SELECT mit POINTER klappt leider auch nicht.

PRESELECT POINTER Ptr CONFIRM - ok, Bemaßung ist selektiert.
EDIT_DIM_TEXT "ABC" END - klappt.
EDIT_DIM_PREFIX "D" END dann wieder nicht.

Ich schlaf jetzt ne Nacht drüber.  

------------------
Tu nicht so, sonst bekommst Du das doch auch immer hin!

[Diese Nachricht wurde von Martin Gutjahr am 26. Nov. 2025 editiert.]

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

Martin Gutjahr
Mitglied
Jack of all trades


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

Beiträge: 17
Registriert: 03.12.2000

HP Z800,Z2G1i | HP15c
Creo Elements/Direct Modeling 20.8,
SheetMetal, AdvancedDesign,
SolidPower, SolidTube, SolidPipe,
PhoenixPDM

erstellt am: 26. Nov. 2025 23: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

In den Anno-Makros bin ich über ein Konstrukt
Code:
EDIT_DIM_TEXT (Dim_midpoint/Dim_scale) ...

gestolpert.

Damit kann es zu tun haben! Die Ansicht mit dem nicht erkannten Maß hat Maßstab 2:1.

Aber warum fängt mein Script 2 von 3 Maßen und eins nur wenn ich mit Dim_scale 2 rechne?
Muß ich die Tage mal drüberschauen...

Danke fürs Mitleiden. 

------------------
Tu nicht so, sonst bekommst Du das doch auch immer hin!

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

Martin Gutjahr
Mitglied
Jack of all trades


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

Beiträge: 17
Registriert: 03.12.2000

HP Z800,Z2G1i | HP15c
Creo Elements/Direct Modeling 20.8,
SheetMetal, AdvancedDesign,
SolidPower, SolidTube, SolidPipe,
PhoenixPDM

erstellt am: 27. Nov. 2025 08: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

Das Rätsel und meine Eingangsfrage ist gelöst!

Danke Wolfgang für den Tip mit POINTER (das war meine Frage)
und ich werde das in Zukunft gerne verwenden.

Aber funktioniert halt leider nicht mit EDIT_DIM_PREFIX.


Nun zur Sache warum die ERSTE Bemaßung im Teil nicht mit INQ 101 gefunden wird:

INQ_SELECTED_ELEM GLOBAL DIMENSIONS läuft im TOP.
Also ist das erste INQ 101 ein globaler 2D-Punkt.

Ich wechsle dann mit EDIT_PART ins Teil, das hat Maßstab 2:1 und
damit eine eigene Skalierung. INQ 101 von zuvor bleibt aber unverändert.
Deshalb wird das erste Maß nicht gefunden und die Selektion wirft einen Fehler.

Beim folgenden INQ_NEXT_ELEM bin ich noch in der maßstäblichen Ansicht.
Damit ist dessen INQ 101 dann lokal aus der Ansicht und
deren weitere Dimensions dort können mit INQ 101 selektiert werden.

Deshalb wurde immer die erste Bemaßung der Ansicht nicht getroffen und hat einen Fehler geworfen.

Ich ermittle jetzt den Teile-Maßstab mit GET_PART_SCALE (INQ 309)
und vor jedem INQ_NEXT_ELEM steht EDIT_PART TOP damit die INQ 101 immer aus demselben Koordinatensystem kommen.

Damit klappts auch mit der ersten Bemaßung!

Funktionierender Code

Code:

EDIT_PART TOP
INQ_SELECTED_ELEM GLOBAL DIMENSIONS ALL

LOOP
  EXIT_IF ((INQ 14) = 0) { verbleibende Bemaßungen}
  { INQ 39  = Element-ID (Integer)
    INQ 332  = Pointer (String)
    INQ 101  = Bemaßungstext Position PNT_XY (global)
    INQ 309  = Part-ID

    INQ 902  = Prefix Text
    INQ 904  = Postfix Text
  }   

  LET Dim__midpoint (INQ 101)
  LET Dim__scale (GET_PART_SCALE (INQ 309))

  IF ((LEN (INQ 902)) AND ((INQ 902) <> "END-OF-LIST"))
      LET C (UCHR 57393)  { <Diameter> -> "ø" UCHR(248) oder "Ø" -> UCHR(216) }
      LET T (INQ 902)
   
      LET P (POS T C)
      IF (P>0)
        EDIT_PART (INQ 309)
        LET Tnew ((SUBSTR T 1 (P-1)) + (UCHR 216) + (SUBSTR T (P+1) 80))
        EDIT_DIM_PREFIX (Dim__midpoint/Dim__scale) Tnew END
      END_IF
  END_IF

  EDIT_PART TOP
  INQ_NEXT_ELEM
END_LOOP


Was für ne Hühnerei. Jetzt weiß ich warum sie sich POINTER entwickelt haben. 
GET_PART_SCALE ist i.ü. auch nur aus den Anno-Makros ersichtlich. Kein Wörtchen davon in der Doku.

------------------
Tu nicht so, sonst bekommst Du das doch auch immer hin!

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

der_Wolfgang
Moderator
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: 2399
Registriert: 3.20.

● PE60+80+90@home
● W10 Pro Build10.0.19045.6466
● Drafting V17~V20.7@job
● Modeling V17~V20.7@job
● Windchill 12.1.2.6@job
● UWGM Client 13.1.0.1@job
● Taschenrechner
● brain 6.3
● Stift+Zettel V8.42

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

Zitat:
Original erstellt von Martin Gutjahr:
Code:
EDIT_DIM_TEXT (Dim_midpoint/Dim_scale) ...
gestolpert. Damit kann es zu tun haben! Die Ansicht mit dem nicht erkannten Maß hat Maßstab 2:1.


Zitat:
der_Wolfgang schrub:
PTR ... Nebeneffekt: Teile könnten skaliert sein. Da wäre dann auch ein umrechnen nicht mehr nötig

Code:
PRESELECT POINTER Ptr CONFIRM - ok, Bemaßung ist selektiert.
EDIT_DIM_TEXT "ABC" END - klappt.
EDIT_DIM_PREFIX "D" END dann wieder nicht.
Preselect ist IMHO nicht das selbe wie SELECT. Aber nach dem EDIT_DIM_TEXT .. END wird die PRESELECTion doch schon leer sein. Dann kann der nächste Befehl, egal welcher, nix mehr bewirken.

Aber ich gebe zu: PRESELECT im Makro..  fühlt sich für nicht gut an und ich habe das nie angewandt. Deswegen: 🤷

Zitat:
Was für ne Hühnerei
na, wenn du wild durch die Parts springst und den Scale nicht einrechnest...   gibt es halt Rührei!
Zitat:
Jetzt weiß ich warum sie sich POINTER entwickelt haben.
Ja, die slovenischen ME10'ler mussten das für uns Annotöter machen.
Zitat:
GET_PART_SCALE ...Kein Wörtchen davon in der Doku.
Ja, die slovenischen ME10'ler mussten einiges für uns Annotöter machen. Der prefix DOCU_  deutet auf das Annotation Modul als Initiator hin. Aber einige unsere (damaligen) Anforderungen waren dann doch sehr generisch und auch allgemein so hilfreich das sie es in den puren ME10 geschafft haben. Da wird GET_PART_SCALE nicht das einzige sein.

------------------
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

Martin Gutjahr
Mitglied
Jack of all trades


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

Beiträge: 17
Registriert: 03.12.2000

HP Z800,Z2G1i | HP15c
Creo Elements/Direct Modeling 20.8,
SheetMetal, AdvancedDesign,
SolidPower, SolidTube, SolidPipe,
PhoenixPDM

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

Zitat:
Aber nach dem EDIT_DIM_TEXT .. END wird die PRESELECTion doch schon leer sein.
Ist sie auch, die beiden EDIT_DIM in der Cmdline jeweils für sich direkt nach dem PRESELECT haben obige Auswirkung. Ich habs auch nur in der Cmdline verwendet.

Zitat:
na, wenn du wild durch die Parts springst...

"Der mit den Parts tanzt."     

------------------
Tu nicht so, sonst bekommst Du das doch auch immer hin!

[Diese Nachricht wurde von Martin Gutjahr am 27. Nov. 2025 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

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

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

(c)2025 CAD.de | Impressum | Datenschutz