Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  PTC Creo Elements/Programmierung
  oberstes Teil prüfen

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 PTC CREO
  
HPE ProLiant Summer Academy 2025 in Linz, eine Veranstaltung am 11.09.2025
Autor Thema:  oberstes Teil prüfen (2041 mal gelesen)
Greskamp
Mitglied
Ingenieur


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

Beiträge: 523
Registriert: 12.03.2003

MS: Windows 10 64bit
OSD: 20.1 M020
ModelManager: 20.1 M020
NX 1899
TC 12.3

erstellt am: 25. Nov. 2013 12: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

Hallo,

ich möchte prüfen ob das oberste Teil ":all_at_top" ein Einzelteil oder eine Baugruppe ist, jedoch ohne das jeweilige Teil vorher auswählen zu müssen.
Die Befehle sd-inq-part-p oder sd-inq-assembly-p kenne ich, nur wie komme ich an das Teil ran, wenn ich es nicht wählen möchte.
Der Versuch (sd-inq-assembly-p :all_at_top) wäre wohl zu leicht gewesen.

Vielleicht hat jemand eine Tipp.

------------------
Gruß Peter

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: 2166
Registriert: 12.12.2000

erstellt am: 25. Nov. 2013 12:40    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 Greskamp 10 Unities + Antwort hilfreich

Es gibt nicht unbedingt nur ein oberstes Objekt; <:all_at_top> ist eine SELECT-Auswahl und liefert eine Liste mit allen Objekten im Root

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

Walter

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: 2166
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: 25. Nov. 2013 13: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 Greskamp 10 Unities + Antwort hilfreich

Ausserdem glaube ich, dass <:all_at_top> eigentlich nur ein Keyword im save_package-Dialog ist, und sonst gar nicht funktioniert.
Was jedenfalls geht ist:
Code:
(setf objectsintoplist (sd-inq-obj-children (sd-pathname-to-obj "/")))

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

Walter

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

Greskamp
Mitglied
Ingenieur


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

Beiträge: 523
Registriert: 12.03.2003

erstellt am: 25. Nov. 2013 13:09    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 Walter,

bekomme ich da dann eine Liste mit allen Teilen unter dem "/" oder nur das oberste?

Und würde dann der Befehl (sd-inq-part-p objectsintoplist) heißen?

------------------
Gruß Peter

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: 2166
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: 25. Nov. 2013 14: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 Greskamp 10 Unities + Antwort hilfreich


Strukturliste.jpg

 
Wie schon gesagt, CED (oder wie es je nach Version auch immer heissen mag  ) sieht da keine eindeutige Struktur vor, es können beliebige Objekte "nebeneinander" in der obersten Ebene existieren, siehe Anhang.
Deshalb ist die von mir beispielhaft objectsintoplist bezeichnete Variable immer von der Type LIST, in den meisten Fällen halt mit nur einem Element.
Wenn du dir da warum auch immer sicher bist, dass bei euch immer nur eine eindeutige Struktur existiert, wäre denkbar
Code:
(setf mytopobjekt (first objectsintoplist))

und dann weiter
Code:
(setf topobjispart (sd-inq-part-p mytopobject)

Da braucht aber nur wer eine Arbeitsebene "vergessen" (liegt ja meist im Top) und dein Code liefert u.U. Mist

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

Walter

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: 25. Nov. 2013 15: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 Greskamp 10 Unities + Antwort hilfreich

Die Frage wäre wohl, ob die Ansicht der Strukturliste immer der Reihenfolge der wiedergegebenen Liste von objectsintoplist entspricht. Hab ich nie ausprobiert, ob da gewisse Sortierungen oder Filter einen Einfluss besitzen. 

------------------
Patrick

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

Greskamp
Mitglied
Ingenieur


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

Beiträge: 523
Registriert: 12.03.2003

MS: Windows 10 64bit
OSD: 20.1 M020
ModelManager: 20.1 M020
NX 1899
TC 12.3

erstellt am: 26. Nov. 2013 11: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

Hallo Walter,

es scheint mein Programm zu laufen. Danke für die Hilfe.
Habe noch eine kleine Prüfung eingebaut, ob es mehr als ein Teil im Top gibt.

(setf MYSECONDOBJEKT (second OBJECTSINTOPLIST))

(WHEN (AND (sd-inq-assembly-p MYTOPOBJEKT) (NOT(setf MYSECONDOBJEKT (second OBJECTSINTOPLIST))))

Somit ist gewährleistet das es nur ein Teil im Top gibt wenn ich das ausführe.
Aber ohne Hilfe, keine Chance.
Punkte sind auf dem Weg.

------------------
Gruß Peter

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: 2166
Registriert: 12.12.2000

erstellt am: 26. Nov. 2013 14:58    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 Greskamp 10 Unities + Antwort hilfreich

Etwas kompakter:

Code:
(WHEN (AND (sd-inq-assembly-p MYTOPOBJEKT) (= 1 (length OBJECTSINTOPLIST))))

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

Walter

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 26. Nov. 2013 18:22    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 Greskamp 10 Unities + Antwort hilfreich

Oder so ("guck mal, Mami, ohne WHEN"):

Code:

(and (not (rest objectsintoplist)) (sd-inq-assembly-p mytopobjekt)
  (tu-was-mit mytopobjekt))

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/

[Diese Nachricht wurde von clausb am 26. Nov. 2013 editiert.]

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

Greskamp
Mitglied
Ingenieur


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

Beiträge: 523
Registriert: 12.03.2003

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

Hallo Walter, Hallo Clausb,

bin immer für solche Tipps zu haben.
Den Vorschlag von Walter kann ich ja nach noch nachvollziehen.
Clausb: Auch ohne "When". Wie sage ich denn dem Programm dann das "when" zu ende ist..
Oder macht das Programm dann alles was zwischen der Klammer vor dem AND steht und der Klammer die das Programm beendet?

Aber gerne lese ich solche Verbesserungsvorschläge.

------------------
Gruß Peter

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 26. Nov. 2013 21:37    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 Greskamp 10 Unities + Antwort hilfreich

Stellen wir mal "komplette" Beispiele nebeneinander, dann wird es vielleicht klarer. Bei Walters Vorschlag läuft es in etwa auf dieses hinaus:

Code:

(WHEN (AND (sd-inq-assembly-p MYTOPOBJEKT) (= 1 (length OBJECTSINTOPLIST)))
  (tu-was-mit MYTOPOBJEKT))

Das "WHEN" ist also "zu Ende", wenn sich die korrespondierende Klammer schließt (wie Du ja auch vermutet hast). Wie das in Lisp halt eigentlich immer so ist.

Das ganze jetzt ohne "WHEN":

Code:

(and (sd-inq-assembly-p MYTOPOBJEKT) (= 1 (length OBJECTSINTOPLIST))
  (tu-was-mit MYTOPOBJEKT))

Das ist praktisch das gleiche, nur dass ich mir das (when) gespart habe. Das "when" wegzulassen, ist zugebenermassen Geschmackssache. Für erfahrene Lisp-Programmierer ist "meine" Variante angemessen, während Einsteiger vielleicht das "when" vermissen.

Wie auch immer. Jetzt vereinfachen wir noch den Test auf eine ein-elementige Liste:

Code:

(and (sd-inq-assembly-p MYTOPOBJEKT) (not (rest  OBJECTSINTOPLIST))
  (tu-was-mit MYTOPOBJEKT))

Diese kleine Vereinfachung kann man natürlich auch in der Variante mit "when" anwenden. Sieht erst mal so aus, als wäre es egal, welche Variante man wählt, aber bei einer langen Liste ist (not (rest ...)) viel schneller als (=1 (length ...)).

Code:

(let ((l (loop for i from 0 to 10000000 collecting i)))
  (time (= 1 (length l)))
  (time (not (rest l))))

SBCL (eine sehr schnelle Lisp-Implementierung) braucht für (not (rest l)) braucht in diesem Beispiel gerade mal 248 CPU-Zyklen für (not (rest l)) - aber mehr als 46 Millionen CPU-Zyklen für die Variante (=1 (length l))!

Peter, wenn Du jetzt noch Fragezeichen in den Augen hast, nimm einfach die Variante von Walter, denn sie ist erstens schon sehr gut und zweitens offenbar für Dich gut lesbar, und das ist auch viel wert.

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/

[Diese Nachricht wurde von clausb am 30. Nov. 2013 editiert.]

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: 2296
Registriert: 3.20.

● PE60+80@home
● W10 Pro Build10.0.19045.5737
● Drafting V17~V20.7@job
● Modeling V17~V20.7@job
● Windchill 12.1.2.6@job
● UWGM Client 13.0.0.1@job
● Taschenrechner
● Stift+Zettel V8.42

erstellt am: 13. Dez. 2013 20:43    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 Greskamp 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von clausb:
...SBCL ... braucht in diesem Beispiel gerade mal 248 CPU-Zyklen für (not (rest l)) - aber mehr als 46 Millionen CPU-Zyklen für die Variante (=1 (length l))!

Gigantische Zahlen, ja. Aber das wuerde im gegebenen Anwendungsfall heissen, das DU 10000000 Objekte im Modeling unterhalb von "/" haengen hast. Ich denke in dem Fall gaebe es mindestens noch ein 2. oder 3. Performance Problem zu dem von Dir genannten.

Also: (realistischere Zahlen, mein Gutster!    ) wieviele CPU Zyklen kommen bei einer Liste mit 20 und mit 10 Elementen raus?

------------------
Seamonkey FirefoxJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2914
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 13. Dez. 2013 22:40    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 Greskamp 10 Unities + Antwort hilfreich

Wolfgang, die Zahlen sind absolut realistisch, weil auf einem real existierenden System gemessen! Aber es ging mir sowieso nicht um einzelne Zyklen, sondern vor allem um den Unterschied zwischen einem Algorithmus der Komplexität O(1) und einem mit Komplexität O(n).

Zitat:
Original erstellt von der_Wolfgang:

Gigantische Zahlen, ja. Aber das wuerde im gegebenen Anwendungsfall heissen, das DU 10000000 Objekte im Modeling unterhalb von "/" haengen hast. Ich denke in dem Fall gaebe es mindestens noch ein 2. oder 3. Performance Problem zu dem von Dir genannten.

Also: (realistischere Zahlen, mein Gutster!     ) wieviele CPU Zyklen kommen bei einer Liste mit 20 und mit 10 Elementen raus?


------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/

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: 2166
Registriert: 12.12.2000

erstellt am: 16. Dez. 2013 16:27    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 Greskamp 10 Unities + Antwort hilfreich

Bei der Programmierung meines HP-41C hab ich mir auch noch Gedanken über jedes Byte und jeden Rechenschritt gemacht  , die heutzutage gerade verschwenderischen Ressourcen lassen solche Überlegungen -leider- in den Hintergrund treten.
Wenn man dann mal wieder ein kleines  Windows-Update von ein paar 100Mb runterlädt, wünscht man sich in der Tat, dass eine saubere, kompakte Programmierung wieder wichtiger würde.
Was heute ein einziger Druckertreiber verbraucht, ging vor 20 Jahren auf keine Festplatte 

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

Walter

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