Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  Bg/Teil durch SysId identifizieren und Name anzeigen

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
  
Der INNEO Führungskreis stellt sich für die Zukunft neu auf, eine Pressemitteilung
Autor Thema:  Bg/Teil durch SysId identifizieren und Name anzeigen (2738 mal gelesen)
Benutzer1
Mitglied


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

Beiträge: 6
Registriert: 11.04.2005

Creo Elements/Direct Modeling (x64) V17.0,
Creo Elements/Direct Model Manager V17.0,
Windows Vista Business SP2,
Intel Xeon E5450 3 GHz, 16 GB RAM
NVidia Quadro FX 1700

erstellt am: 22. Sep. 2011 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

Hallo,

ich (Lisp-Neuling) versuche mit folgendem Code eine Bg/Teil anhand der SysId zu identifizieren und dann den Name anzuzeigen:

Code:

(in-package :custom)
(use-package :OLI)

(sd-defdialog 'Name_zu_SysId_anzeigen
  :Dialog-title "Name_zu_SysId_anzeigen"
  :variables
  '((SysId :value-type :string
    :modifies :nil
    :title "SysId"
    :initial-value "906564-1316415319-1f2901d9d4-0 3767040"
    rompt-text "Sys-Id eingeben"
  ))
  k-action
  '(display (format nil "Name = ~A" (sd-sysid-to-obj SysId))) ; Name anzeigen
)


Es wird nicht der Name angezeigt, sonder folgendes:


Name = (#S(SEL_ITEM PATH
              (#S(NPARCEL SIMPLE-ENTITY-PTR 123104432)
              #S(NPARCEL SIMPLE-ENTITY-PTR 2618072848)
              #S(NPARCEL SIMPLE-ENTITY-PTR 1455213920))
              TYPE 123591936 ITEM
              #S(NASMB3 SIMPLE-ENTITY-PTR 1455213920)))

Hat jemand Zeit und Lust sich mal anzuschauen wo's klemmt?   
Danke.

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

Walter Geppert
Moderator
Frank und Frei




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

Beiträge: 2158
Registriert: 12.12.2000

erstellt am: 22. Sep. 2011 10:47    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 Benutzer1 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Benutzer1:
...ich (Lisp-Neuling) ....   


Na da gibts dann ja einiges zu erklären.
Wenn von OBJECTs die Rede ist, ist immer die Struktur SEL_ITEM gemeint. Das ist sozusagen der eindeutige Anker, an dem sich die unterschiedlichsten Funktionen festmachen können, bzw. mit dem ein Objekt zur weiteren Verarbeitung übergeben werden kann. Das ist dann auch das, was du da als "gallischer Fluch" herausbekommen hast.
Im Unterschied zur SYS_ID sind SEL_ITEMs sozusagen "flüchtig" und existieren nur solange das betreffende Objekt im Arbeitsraum verfügbar ist .
Hilfe dazu gibts im Abschnitt "Object Inquiries" im IKit, für deinen Fall empfehle ich
Code:
(display (format nil "Name = ~A" (sd-inq-obj-basename (sd-sysid-to-obj SysId))))

------------------
meine LISP-Makros sind auf osd.cad.de
Disclaimer
Grüße aus Wien

Walter
DC4 Technisches Büro GmbH

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

Benutzer1
Mitglied


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

Beiträge: 6
Registriert: 11.04.2005

Creo Elements/Direct Modeling (x64) V17.0,
Creo Elements/Direct Model Manager V17.0,
Windows Vista Business SP2,
Intel Xeon E5450 3 GHz, 16 GB RAM
NVidia Quadro FX 1700

erstellt am: 22. Sep. 2011 11: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

Danke für die schnelle Antwort.
Den Abschnitt im IKit muss ich mir noch anschauen, die Empfehlung hab ich aber gleich mal ausprobiert.
Der Code liefert mir jetzt eine Fehlermeldung.

LISP-Fehler:
(#S(SEL_ITEM PATH (#S(NPARCEL SIMPLE-ENTITY-PTR 123104432) #S(NPARCEL SIMPLE-ENTITY-PTR 2618072848) #S(NPARCEL SIMPLE-ENTITY-PTR 1455213920)) TYPE ...)) is not a structure

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

Benutzer1
Mitglied


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

Beiträge: 6
Registriert: 11.04.2005

Creo Elements/Direct Modeling (x64) V17.0,
Creo Elements/Direct Model Manager V17.0,
Windows Vista Business SP2,
Intel Xeon E5450 3 GHz, 16 GB RAM
NVidia Quadro FX 1700

erstellt am: 23. Sep. 2011 08: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

Hallo, hab' mir das empfohlene Kapitel im IKit durchgelesen. Hab's zwar nicht komplett durchschaut, verstehe jetzt aber warum es zum ersten Fehler kam.
Jetzt ist mir aber immer noch unklar, warum ich im Moment die zuletzt erwähnte Fehlermeldung erhalte.
Gibt es hier noch einen Logikfehler?
Code:

(in-package :custom)
(use-package :OLI)
(sd-defdialog 'Name_zu_SysId
  :Dialog-title "Name_zu_SysId"
  :variables
  '((SysId :value-type :string
    :modifies :nil
    :title "SysId"
    :initial-value "906564-1316415319-1f2901d9d4-0 3767040"
    rompt-text "Sys-Id eingeben"
  ))
  k-action
  '(display (format nil "Name = ~A" (sd-inq-obj-basename (sd-sysid-to-obj SysId))))
)

Wäre nett, wenn sich nochmal jemand dazu äußern würde.

Danke und Grüße nach Wien

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

Patrick Weber
Mitglied
Konstruktionstechniker, Admin


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

Beiträge: 659
Registriert: 20.11.2006

erstellt am: 23. Sep. 2011 08:54    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 Benutzer1 10 Unities + Antwort hilfreich

(sd-sysid-to-obj SysId)
liefert eine Liste von Objekten, da von einer Sys-ID mehrere Versionen existieren können. (steht im Ikit unter sd-sysid-to-obj) Folglich musst du die Liste abarbeiten

:ok-action
  '(dolist (obj (sd-sysid-to-obj SysId)) (display (format nil "Name = ~A" (sd-inq-obj-basename obj))))

oder das erste Objekt nehmen, wenn du sicher bist, dass nur eine Version existiert

:ok-action
  '(display (format nil "Name = ~A" (sd-inq-obj-basename (first (sd-sysid-to-obj SysId)))))


(Beides ungetestet)

EDIT: Das Verhalten von sd-sysid-to-obj ist abhängig von der eingesetzten Programmversion. Ab Version 17 wird {LIST of SEL_ITEMs} zurückgegeben, vorher nur {SEL_ITEM}. (siehe "What's new?" im Ikit der Version 17 - 1. General - 2. Unterpunkt)

------------------
Grüße aus Sachsen
pw

Karl Marx ist tot, Einstein ist tot, und mir ist auch schon ganz schlecht!

[Diese Nachricht wurde von Patrick Weber am 23. Sep. 2011 editiert.]

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

Walter Geppert
Moderator
Frank und Frei




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

Beiträge: 2158
Registriert: 12.12.2000

Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.6, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf
HP ZBook Fury 16 G9, Windows 10 Pro 64

erstellt am: 23. Sep. 2011 08:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Benutzer1 10 Unities + Antwort hilfreich

Tja, wenn ich eine Antwort wüsste, hätte ich mich schon früher gemeldet. Laut IKit bringt (sd-sysid-to-obj) nur ein SEL_ITEM, wenn das Objekt auch im Arbeitsraum gefunden wurde, ansonsten NIL.
Kann nur vermuten, dass es sich bei der eingegebenen SysId um ein nicht aktuell geladenes Teil handelt und trotzdem ein (ungültiges) SEL_ITEM zurückgeliefert wird 

------------------
meine LISP-Makros sind auf osd.cad.de
Disclaimer
Grüße aus Wien

Walter
DC4 Technisches Büro GmbH

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

Walter Geppert
Moderator
Frank und Frei




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

Beiträge: 2158
Registriert: 12.12.2000

erstellt am: 23. Sep. 2011 09:04    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 Benutzer1 10 Unities + Antwort hilfreich

1. Zu Spät 
2. Im IKit v15 nachgesehen 

------------------
meine LISP-Makros sind auf osd.cad.de
Disclaimer
Grüße aus Wien

Walter
DC4 Technisches Büro GmbH

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

Patrick Weber
Mitglied
Konstruktionstechniker, Admin


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

Beiträge: 659
Registriert: 20.11.2006

Win11 Pro 23H2
Core i7-12700, 32GB RAM, Quadro P620
Creo Elements/Direct 19.0 M030
ModelManager 19.0
License Server 19.0 F000
clisp,VB.net,VBA,AHK,Python

erstellt am: 23. Sep. 2011 10:55    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 Benutzer1 10 Unities + Antwort hilfreich

   
Zitat:
Original erstellt von Benutzer1:
LISP-Fehler:
(#S(SEL_ITEM PATH (#S(NPARCEL SIMPLE-ENTITY-PTR 123104432) #S(NPARCEL SIMPLE-ENTITY-PTR 2618072848) #S(NPARCEL SIMPLE-ENTITY-PTR 1455213920)) TYPE ...)) is not a structure

[/i]

Dass es eine Liste ist, kann man schon durch Betrachten des Rückgabewertes erahnen "(#S(....))".

EDIT: @Benutzer1: Bitte Sys-Info im Profil ausfüllen, sonst wissen wir nicht genau, mit welchen Programmversionen du unterwegs bist!

------------------
Grüße aus Sachsen
pw

Karl Marx ist tot, Einstein ist tot, und mir ist auch schon ganz schlecht!

[Diese Nachricht wurde von Patrick Weber am 23. Sep. 2011 editiert.]

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

Benutzer1
Mitglied


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

Beiträge: 6
Registriert: 11.04.2005

Creo Elements/Direct Modeling (x64) V17.0,
Creo Elements/Direct Model Manager V17.0,
Windows Vista Business SP2,
Intel Xeon E5450 3 GHz, 16 GB RAM
NVidia Quadro FX 1700

erstellt am: 23. Sep. 2011 11:33    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 Patrick Weber,
Zitat:

(sd-sysid-to-obj SysId)
liefert eine Liste von Objekten, da von einer Sys-ID mehrere Versionen existieren können. (steht im Ikit unter sd-sysid-to-obj) Folglich musst du die Liste abarbeiten
k-action
'(dolist (obj (sd-sysid-to-obj SysId)) (display (format nil "Name = ~A" (sd-inq-obj-basename obj))))

oder das erste Objekt nehmen

k-action
'(display (format nil "Name = ~A" (sd-inq-obj-basename (first (sd-sysid-to-obj SysId)))))


so funktioniert es wie gewünscht.    Danke für die Hilfe.

Grüße an alle aus dem (im Moment) sonnigen Baden-Württemberg 

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