Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Direct Modeling
  Masse für mehrere Exemplare nicht darstellen

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
  
SF Webinarreihe zum Thema Nachhaltigkeit
Autor(16297) Thema:  Masse für mehrere Exemplare nicht darstellen (249 / mal gelesen)
darkfrei
Mitglied
Maschinenbauingenieur

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

Beiträge: 6
Registriert: 04.11.2015

PTC Creo Elements/Direct Modeling x64 Rev. 19.0 (2015)
Windows 7 Pro x64 SP1 (2009)
Intel Xeon W3565 (2009)

erstellt am: 12. Mrz. 2024 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


2024-03-12.png


teil_info.lsp

 
Hallo zusammen!

Ich habe den Script für Model Manager Name und Masse mit einem Click zu messen: teil_info.lsp

Ist es möglich die mehrere Exemplare ignorieren und für zwei ausgewählte Exemplare nur einmal die Info zu geben?

Code:
(in-package :gd-package) ; wozu?
(use-package :oli)

(sd-defdialog 'os_teil_info_dialog
:dialog-title "Teil-Info"
:dialog-control :sequential-loop
:variables
'(
(TEILE
:value-type :part
:multiple-items t
:title "Teil(e)"
:initial-value nil
:modifies nil
:prompt-text "Teil(e) angeben"
:after-input (progn (teileinfo_anzeigen))
) ; end Teil
);variables

:local-functions
'(
(teileinfo_anzeigen ()
(let (VOLUMEN DICHTE MATERIAL)
(display :clear)
(dolist (a-part TEILE)
(setq VOLUMEN
(sd-call-cmds
(get_vol_prop
:for_part a-part
:part_asmb (sd-inq-obj-pathname a-part)
:volume
)
:failure nil
);sd-call-cmds
);;setq VOLUMEN
(setq dichte (sd-inq-part-density a-part))
(oli:sd-set-control-geometry "OUTPUT-BOX-DS" :width 300 :height 200)
(display (format nil "---------------------------~% Teil: ~A" (sd-inq-obj-basename a-part)))
(display (format nil " Nummer: ~A" (sd-inq-obj-contents-name a-part))); -- mm198067
(display (format nil " Masse: ~A kg" (sd-num-to-string (* (/ VOLUMEN 1000) dichte) 1)))
(display (format nil "(Dichte: ~A kg/dm3)" (sd-num-to-string (* 1000 dichte)3)))
) ;; end dolist
(display "") ;; leerzeile
);;let
);;teileinfo_anzeigen
);;local-functions
);;sd-defdialog

(sd-define-available-command "SolidDesigner" "Part and Assy" "os_teil_info_command"
:commandTitle "Teile Info"
:action "os_teil_info_dialog"
)

(sd-fluentui-add-ribbon-group "sd_analysis_custom_group"
:parent "SDANALYSIS"
:title "Custom"
)

(sd-fluentui-add-ribbon-button
:parent '("SDANALYSIS" "sd_analysis_custom_group")
:availCmd '("SolidDesigner" "Part and Assy" "os_teil_info_command")
)



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

der_Wolfgang
Ehrenmitglied V.I.P. h.c.
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: 2165
Registriert: 3.20.

● PE20+60+80@home
● W10 Pro Build19045.4123
● Drafting V17~V20.6
● Modeling V17~V20.6
● Windchill 12.1.2.6
● UWGM Client 13.0.0.1

erstellt am: 12. Mrz. 2024 10:52    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 darkfrei 10 Unities + Antwort hilfreich

Du musst Deine Teile Liste reduzieren indem du dich auf den Contents beschränkst.

Ich würde es im :after-input machen .  vor der Dolist, wäre es aber das selbe:

Code:

:after-input
(progn
  ;; to reduce to unique contents only
  (setq TEILE (remove-duplicates TEILE :test 'equal :key 'sd-inq-obj-contents-sysid))
  ;; to always have same sequence in output:
  (setq TEILE (sort TEILE 'string< :key 'sd-inq-obj-contents-name))
  ;; (setq TEILE (sort TEILE 'string< :key 'sd-inq-obj-basename)) ;; alternative
  (teileinfo_anzeigen)
  )
HTH 
 

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

darkfrei
Mitglied
Maschinenbauingenieur

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

Beiträge: 6
Registriert: 04.11.2015

PTC Creo Elements/Direct Modeling x64 Rev. 19.0 (2015)
Windows 7 Pro x64 SP1 (2009)
Intel Xeon W3565 (2009)

erstellt am: 12. Mrz. 2024 11: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


2024-03-12T11_20_56-Ausgabe.png

 
Vielen Dank, ich habe auch die Lösung gefunden: teil_info2

Code:
(use-package :oli)

(sd-defdialog 'os_teil_info_dialog2
:dialog-title "Teil-Info2"
:dialog-control :sequential-loop
:variables
'(
(TEILE
:value-type :part
:multiple-items t
:title "Teil(e)"
:initial-value nil
:modifies nil
:prompt-text "Teil(e) angeben"
:after-input
(progn
(teileinfo_anzeigen))
) ;; TEILE
) ;; variables

:local-functions
'(
(teileinfo_anzeigen () ;; works
(let ((unique-parts (make-hash-table :test 'equal)))
(display :clear)
(dolist (a-part TEILE)
(let ((part-name (sd-inq-obj-contents-name a-part))
(part-mass (sd-call-cmds
(get_vol_prop
:for_part a-part
:part_asmb (sd-inq-obj-pathname a-part)
; :volume
:mass)
:failure nil)))
(if (gethash part-name unique-parts)
; (display (format nil "~A is already in the unique-parts" part-name))
() ;; No action needed if the part is already in unique-parts
(progn
(setf (gethash part-name unique-parts) t)
(display (format nil "~A ~A" part-name (sd-num-to-string (/ part-mass 1000) 1)))
)
)
)
)

; (display "Unique parts:")
; (maphash (lambda (part _) (display part)) unique-parts)
)
) ;; teileinfo_anzeigen
) ;; :local-functions
) ;;sd-defdialog


(sd-define-available-command "SolidDesigner" "Part and Assy" "os_teil_info_command2"
:commandTitle "Teile Info2"
:action "os_teil_info_dialog2"
)

(sd-fluentui-add-ribbon-group "sd_analysis_custom_group"
:parent "SDANALYSIS"
:title "Custom"
)

(sd-fluentui-add-ribbon-button
:parent '("SDANALYSIS" "sd_analysis_custom_group")
:availCmd '("SolidDesigner" "Part and Assy" "os_teil_info_command2")
)


[Diese Nachricht wurde von darkfrei am 12. Mrz. 2024 editiert.]

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

der_Wolfgang
Ehrenmitglied V.I.P. h.c.
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: 2165
Registriert: 3.20.

● PE20+60+80@home
● W10 Pro Build19045.4123
● Drafting V17~V20.6
● Modeling V17~V20.6
● Windchill 12.1.2.6
● UWGM Client 13.0.0.1

erstellt am: 12. Mrz. 2024 18:19    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 darkfrei 10 Unities + Antwort hilfreich

Mit einer Hashtable geht es natürlich auch, ist aber aufwendiger bei Code Umstellungen. 😌

Der (remove-duplicate... ) ist halt ein simpler Einzeiler. (und bis 10.. 20.000 Elemente auch fix genug) 🙂

Dein sort der TeileListe ist kompilizierter als nötig, macht aber das selbe wie der Einzeiler, den ich gezeigt habe. 🙄

Aber immer gut wenn es mehrere Lösungen gibt! 😊

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



IT Process Manager (w/m/d) Order Entry
Unser Mandant ist ein wirtschaftlich erfolgreicher, marktführender Hersteller für Küchenmöbel. Mit circa 4.000 Mitarbeitenden erzielt unser Mandant ein Umsatzvolumen von über 1,6 Mrd. ? und beliefert Kunden in über 90 Ländern auf allen Kontinenten. Mithilfe einer vorausschauenden, konsequent umgesetzten Strategie und innovativen, digitalen Produktionsprozessen entwickelt sich das Unternehmen kontinuierlich weiter und baut seine führende Marktposition in Europa aus....
Anzeige ansehenProzessmanagement
der_Wolfgang
Ehrenmitglied V.I.P. h.c.
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: 2165
Registriert: 3.20.

● PE20+60+80@home
● W10 Pro Build19045.4123
● Drafting V17~V20.6
● Modeling V17~V20.6
● Windchill 12.1.2.6
● UWGM Client 13.0.0.1

erstellt am: 12. Mrz. 2024 18:26    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 darkfrei 10 Unities + Antwort hilfreich

Hashtable:  als hash-KEY solltest Du allerdings NICHT den obj-contents-name des Objektes nehmen!!! 😣

Weil der ContentsName aus Modeling Sicht nicht zwangsweise unique ist❗

Nimm als hash-key die obj-contents-sysid, dann kannst du sicher sein, das die unique ist‼

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

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