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
  
On-Demand-Webinare von Software Factory (Software Factory)
Autor(16297) Thema:  Masse für mehrere Exemplare nicht darstellen (237 / 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

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