;###################################################################### ;# # ;# FILE REGISTRAZIONE INSTAZIONE - TABELLA - PALLINO BOM # ;# # ;###################################################################### ;FILE CARICA IMPOSTAZIONI BOM ;ATTENZIONE!!!!!!! le impostazioni del file load_bom_file saranno sovrascritte dalle impostazioni di default di ECSMain ;SE SI UTILIZZA ECSMain BOM configurare il file /ECSPers/Main/user_custom_folder/annotation/bom/bom_reg_pal_tab_int.lsp ;caricato automaticamente da ECSMain come personalizzazione ;ELIMINA TUTTI I LAYOUTS BOM PRECEDENTI ;(docu::docu-unload-all-bom-layouts) ;REGISTRAZIONE INTESTAZIONE ;(docu::docu-load-bom-head-layout ; :ui-name "Iso" ; :file (format nil "~a/Bom/bomh_iso.mi" eit-start::*eit-start-pers-path*) ;) ;REGISTRAZIONE RIGA TABELLA ;(docu::docu-load-bom-comp-layout ; :ui-name "Iso" ; :file (format nil "~a/Bom/bomc_iso.mi" eit-start::*eit-start-pers-path*) ;) ;REGISTRAZIONE INTESTAZIONE (docu::docu-load-bom-head-layout :ui-name "Agnati" :file (format nil "~a/Bom/bomh_usr_H7_AGNATI.mi" eit-start::*eit-start-pers-path*) ) ;REGISTRAZIONE RIGA TABELLA (docu::docu-load-bom-comp-layout :ui-name "Agnati" :file (format nil "~a/Bom/bomc_usr_H7_AGNATI.mi" eit-start::*eit-start-pers-path*) ) ;REGISTRAZIONE PALLINO (docu::docu-load-bom-flag-layout :ui-name "Agnati" :file (format nil "~a/Bom/bomf_usr_H7_AGNATI.mi" eit-start::*eit-start-pers-path*) ) ;REGISTRAZIONE PALLINO (docu::docu-load-bom-flag-layout :ui-name "ECS-Iso" :file (format nil "~a/Bom/bomf_iso.mi" eit-start::*eit-start-pers-path*) ) ;;----------------------------------------------------------------------------- ;; simple example how to implement BOM attributes using IK functions ;;----------------------------------------------------------------------------- (in-package :my-special-bom-attr) (use-package '( :oli )) ;;----------------------------------------------------------------------------- ;; functions to inquire attached BOM information of an SD part or assembly ;;----------------------------------------------------------------------------- (defun bomattr-get-material (object) (let ((attr (sd-inq-item-attribute object "MY_SPECIAL_BOM_ATTR" :values :attachment :contents))) (if attr (getf attr :material) nil) ) ) (defun bomattr-get-partno (object) (let ((attr (sd-inq-item-attribute object "MY_SPECIAL_BOM_ATTR" :values :attachment :contents))) (if attr (getf attr :part-number) nil) ) ) ;;------------------------------------------------------------------------- ;; dialog to attach BOM information to an SD part or assembly ;;----------------------------------------------------------------------------- (sd-defdialog 'my_special_bom_attr :dialog-title "BOM Attr" :start-variable 'object :variables '( (OBJECT :value-type :part-assembly :modifies :contents :title "Part/Assy" :prompt-text "Select a part or assembly." :after-input (progn (setq material (bomattr-get-material object)) (setq partno (bomattr-get-partno object)) ) ) (MATERIAL :range ("Steel" "Aluminium" "Brass") :title "Material" :prompt-text "Enter material info." ) (PARTNO :value-type :string :title "Part No" :prompt-text "Enter part number info." ) ) :ok-action '(progn (sd-attach-item-attribute object "MY_SPECIAL_BOM_ATTR" :attachment :contents :on-copy :copy :on-merge :maintain :on-split :copy :on-xform :maintain :filing '(:sd-file) :values `( :material ,material :part-number ,partno ) ) ) ) ;;----------------------------------------------------------------------------- ;; dialog to attach AGNATI information to an SD part or assembly ;;----------------------------------------------------------------------------- (sd-defdialog 'DB-PREF :dialog-title "BOM Attr" :start-variable 'object :variables '( (OBJECT :value-type :part-assembly :modifies :contents :title "Part/Assy" :prompt-text "Select a part or assembly." :after-input (progn (setq descrizione (bomattr-get-descrizione object)) (setq partno (bomattr-get-partno object)) ) ) (Descrizione :value-type :string :title "Descrizione" :prompt-text "Inserire una descrizione (campo libero)" ) (MATERIAL :value-type :string :title "Materiale" :prompt-text "Inserire Materiale" ) (PARTNO :value-type :string :title "Part No" :prompt-text "Enter part number info." ) ) :ok-action '(progn (sd-attach-item-attribute object "DB-PREF" :attachment :contents :on-copy :copy :on-merge :maintain :on-split :copy :on-xform :maintain :filing '(:sd-file) :values `( :DENOMINAZIONE ,descrizione :MATERIAL ,Material :part-number ,partno ) ) ) ) ;;----------------------------------------------------------------------------- ;; convenience functions to inquire attached BOM information ;;----------------------------------------------------------------------------- (defun bomattr-get-material (selitem) (let ((attr (sd-inq-item-attribute selitem "MY_SPECIAL_BOM_ATTR" :values :attachment :contents))) (if attr (getf attr :material) nil) ) ) (defun bomattr-get-partno (selitem) (let ((attr (sd-inq-item-attribute selitem "MY_SPECIAL_BOM_ATTR" :values :attachment :contents))) (if attr (getf attr :part-number) nil) ) ) (defun bomattr-get-descrizione (selitem) (let ((attr (sd-inq-item-attribute selitem "DB-PREF" :values :attachment :contents))) (if attr (getf attr :DENOMINAZIONE) nil) ) ) (defun bomattr-get-descrizione (selitem) (let ((attr (sd-inq-item-attribute selitem "DB-DREF" :values ))) (if attr (getf attr :DENOMINAZIONE_LIB) (let ((attr (sd-inq-item-attribute selitem "DB-PREF" :values :attachment :contents))) (if attr (getf attr :DENOMINAZIONE) nil) ) ) ) ) ;;----------------------------------------------------------------------------- ;; examples of how to customize some simple BOM attributes ;;----------------------------------------------------------------------------- (defun my-bom-attr-part-name (selitem) (let ((contents-name (oli::sd-inq-obj-contents-name selitem))) (if contents-name contents-name (oli::sd-inq-obj-basename selitem)) ) ) (defun my-bom-attr-part-no (selitem) (let ((part-no (bomattr-get-partno selitem))) (if part-no part-no "") ) ) (defun my-bom-attr-material (selitem) (let ((material (bomattr-get-material selitem))) (if material material "") ) ) (defun my-bom-attr-descrizione (selitem) (let ((descrizione (bomattr-get-descrizione selitem))) (if descrizione descrizione "") ) ) (docu::docu-unregister-bom-attr-all) (docu::docu-register-bom-attr :attr-type "DOCU_BOM_QUANTITY" :attr-title "Quantity" :attr-display t :attr-value-fnc nil) ;; system bom attribute (docu::docu-register-bom-attr :attr-type "PART_NAME" :attr-title "Part Name" :attr-display t :attr-value-fnc #'my-bom-attr-part-name) (docu::docu-register-bom-attr :attr-type "PART_NO" :attr-title "Part No" :attr-display t :attr-value-fnc #'my-bom-attr-part-no) (docu::docu-register-bom-attr :attr-type "MATERIAL" :attr-title "Material" :attr-display t :attr-value-fnc #'my-bom-attr-material) (docu::docu-register-bom-attr :attr-type "descrizione" :attr-title "descrizione" :attr-display t :attr-value-fnc #'my-bom-attr-descrizione)