Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  PTC Creo Elements/Programmierung
  Macro Teile zählen

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
  
MAIT & Drexler - Starke Kooperation für HP Drucklösungen, eine Pressemitteilung
Autor Thema:  Macro Teile zählen (1021 mal gelesen)
Martin.M
Mitglied
Maschinenbau-Ingenieur


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

Beiträge: 352
Registriert: 05.10.2002

erstellt am: 28. Okt. 2005 13: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 Walter,

ich übernehme gerade aus Deinem Macro das Zählen der Teile.
http://osd.cad.de/lisp.htm#22


Als Teileanzahl gibst Du die gesamte Anzahl der Exemplare an. Kannst Du auch die Anzahl der "verschiedenen" Teile ausgeben lassen.

Dafuer reichen meine LISP Kenntnisse noch nicht aus. 


Tschuess
Martin

------------------
OSDM - Die freie Wissensdatenbank
WorkManager Forum

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

Martin.M
Mitglied
Maschinenbau-Ingenieur


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

Beiträge: 352
Registriert: 05.10.2002

erstellt am: 03. Nov. 2005 08: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 Programmierer,

ich versuche gerade es selber zu programmieren und habe jetzt ein Problem mit dem Befehl Member. Kann mir jemand weiterhelfen warum der LISP-Befehl nicht funktioniert ?

Ich lasse alle Teile in einer Liste speichern. In einer zweiten Liste will ich die Modellnamen/Inhalts-ID speichern lassen. Mit Member will ich prüfen lassen ob der Modellname schon existiert.

Member gibt aber keine Liste zurück auch wenn der Modelname existiert.

Die Displayausgaben zeigen das die Liste richtig zusammengesetzt wird und member keine Liste zurückliefert.

Im folgenden ist der Quellcode und die Displayausgabe.

Tschuess
Martin


QUELLCODE
---------
; Liste aller Teile speichern und Anzahl ermitteln
      (setf total-ls nil)
      (setf total-ls (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :allow_wire_part :allow_face_part :select :recursive :in_assembly A_ASSEM)))
      (setf total (length total-ls ))

; Den Modellnamen/Inhalts-ID in eine neue Liste speichern
      (setf artikel-ls nil)
      (dolist (teil total-ls)
            (setf modellname (SD-INQ-OBJ-CONTENTS-NAME teil))

            (setf member-ls (member (SD-INQ-OBJ-CONTENTS-NAME teil) artikel-ls))

            (display (format NIL "Teil ~A"  (SD-INQ-OBJ-CONTENTS-NAME teil)))
            (display (format NIL "Liste ~A" artikel-ls))
            (display (format NIL "Member ~A" (member (SD-INQ-OBJ-CONTENTS-NAME teil) artikel-ls)))
            (display (format NIL "Member ~A" (member modellname artikel-ls)))
            (display (format NIL "Member-ls ~A" member-ls))
            (display " ")

; Der Modellname soll nur in die Liste geschrieben werden wenn er nicht in der Liste vorhanden ist
            (when  (length (member (SD-INQ-OBJ-CONTENTS-NAME teil) artikel-ls))
              (push (SD-INQ-OBJ-CONTENTS-NAME teil) artikel-ls)
            )
      )

      (setf artikel (length artikel-ls))


DISPLAYAUSGABE
--------------
Teil B92.06431_019S
Liste NIL
Member NIL
Member NIL
Member-ls NIL

Teil B92.V0012
Liste (B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil B92.V0014
Liste (B92.V0012 B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil B92.V0009
Liste (B92.V0014 B92.V0012 B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil B92.06619_002S
Liste (B92.V0009 B92.V0014 B92.V0012 B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil B92.V0009
Liste (B92.06619_002S B92.V0009 B92.V0014 B92.V0012 B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil 300.74763
Liste (B92.V0009 B92.06619_002S B92.V0009 B92.V0014 B92.V0012
      B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil B92.03657
Liste (300.74763 B92.V0009 B92.06619_002S B92.V0009 B92.V0014 B92.V0012
      B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil B92.01092
Liste (B92.03657 300.74763 B92.V0009 B92.06619_002S B92.V0009 B92.V0014
      B92.V0012 B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil B92.03657
Liste (B92.01092 B92.03657 300.74763 B92.V0009 B92.06619_002S B92.V0009
      B92.V0014 B92.V0012 B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil B92.03657
Liste (B92.03657 B92.01092 B92.03657 300.74763 B92.V0009 B92.06619_002S
      B92.V0009 B92.V0014 B92.V0012 B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil B92.03657
Liste (B92.03657 B92.03657 B92.01092 B92.03657 300.74763 B92.V0009
      B92.06619_002S B92.V0009 B92.V0014 B92.V0012 B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

Teil B92.03657
Liste (B92.03657 B92.03657 B92.03657 B92.01092 B92.03657 300.74763
      B92.V0009 B92.06619_002S B92.V0009 B92.V0014 B92.V0012
      B92.06431_019S)
Member NIL
Member NIL
Member-ls NIL

------------------
OSDM - Die freie Wissensdatenbank
WorkManager Forum

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: 03. Nov. 2005 09: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 Martin.M 10 Unities + Antwort hilfreich

Versuchs mal mit
Code:

(member (SD-INQ-OBJ-CONTENTS-NAME teil) artikel-ls  :test #'equal))


------------------
meine LISP-Makros sind auf Heikos Hilfeseite
Grüße aus Wien

Walter
DC4 Technisches Büro GmbH

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

Martin.M
Mitglied
Maschinenbau-Ingenieur


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

Beiträge: 352
Registriert: 05.10.2002

erstellt am: 03. Nov. 2005 13: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,

vielen Dank für Deine Hilfe. Es läuft jetzt. Wenn Du es in Dein Macro einbauen möchtest ist hier der Code.


Tschuess
Martin


DIALOG
------
    (volumen :value-type :display-only
          :title "Volumen"
    )

CODE
----

; Liste aller Teile speichern und Anzahl ermitteln
      (setf total-ls nil)
      (setf total-ls (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :allow_wire_part :allow_face_part :select :recursive :in_assembly A_ASSEM)))
      (setf total (length total-ls ))

; Den Modellnamen/Inhalts-ID in eine neue Liste speichern
      (setf volumen-ls nil)
      (dolist (teil total-ls)
            (setf modellname (SD-INQ-OBJ-CONTENTS-NAME teil))

; Der Modellname soll nur in die Liste geschrieben werden wenn er nicht in der Liste vorhanden ist
            (when  (not (member modellname volumen-ls :test #'equal))
              (push modellname volumen-ls)
            )
      )

      (setf volumen (length volumen-ls))

------------------
OSDM - Die freie Wissensdatenbank
WorkManager Forum

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