#1
|
|||
|
|||
BOM customization
We want to create an exploded and indented multi-level BOM. From our research we have not been able to create this functionality. Has anyone else been able to? Any input would be much appreciated.
|
#2
|
|||
|
|||
re: BOM customization
We use CoCreate Workmangler 5.1 as the PDM for SolidDebacle and the Aggravator 7.10. The single level BOM works fine. The multi-level BOM (n-BOM) or the flattened BOM are not officially supported by CoCreate. However, we do have a partial fix (provided by CoCreate) for the multi-level BOM, but it fails when the same part appears on multiple lines of the BOM.
|
#3
|
|||
|
|||
re: BOM customization
Paul, Well, we definitely have the same software, could you e-mail me the CoCreate fix. my email is sgosnell@genlyteDOTcom. Is CoCreate working on the problem, they would have a great product if they but a little more effort into model documentation. Thank you
|
#4
|
|||
|
|||
re: BOM customization
;;----------------------------------------------------------------------------- ;; 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) ) ) (defun bomattr-get-codfom (object) (let ((attr (sd-inq-item-attribute object "MY_SPECIAL_BOM_ATTR" :values :attachment :contents))) (if attr (getf attr :codice-fom) nil) ) ) (defun bomattr-get-codkrona (object) (let ((attr (sd-inq-item-attribute object "MY_SPECIAL_BOM_ATTR" :values :attachment :contents))) (if attr (getf attr :codice-krona) nil) ) ) (defun bomattr-get-ricda (object) (let ((attr (sd-inq-item-attribute object "MY_SPECIAL_BOM_ATTR" :values :attachment :contents))) (if attr (getf attr :ricavato-da) 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)) (setq codfom (bomattr-get-codfom object)) (setq codkrona (bomattr-get-codkrona object)) (setq ricda (bomattr-get-ricda object)) ) ) (MATERIAL :value-type :string :title "Material" :prompt-text "Enter material info." ) (PARTNO :value-type :string :title "Nome Parte" :prompt-text "Enter part number info." ) (CODFOM :value-type :string :title "Codice Fom" :prompt-text "Enter Codice Fom." ) (CODKRONA :value-type :string :title "Codice Krona" :prompt-text "Enter Codice Krona." ) (RICDA :value-type :string :title "Ricavato da" :prompt-text "Enter Ricavato da." ) ) :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 :codice-fom ,codfom :codice-krona ,codkrona :ricavato-da ,ricda ) ) ) ) ;;----------------------------------------------------------------------------- ;; 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-codfom (selitem) (let ((attr (sd-inq-item-attribute selitem "MY_SPECIAL_BOM_ATTR" :values :attachment :contents))) (if attr (getf attr :codice-fom) nil) ) ) (defun bomattr-get-codkrona (selitem) (let ((attr (sd-inq-item-attribute selitem "MY_SPECIAL_BOM_ATTR" :values :attachment :contents))) (if attr (getf attr :codice-krona) nil) ) ) (defun bomattr-get-ricda (selitem) (let ((attr (sd-inq-item-attribute selitem "MY_SPECIAL_BOM_ATTR" :values :attachment :contents))) (if attr (getf attr :ricavato-da) 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-cod-fom (selitem) (let ((cod-fom (bomattr-get-codfom selitem))) (if cod-fom cod-fom "") ) ) (defun my-bom-attr-cod-krona (selitem) (let ((cod-krona (bomattr-get-codkrona selitem))) (if cod-krona cod-krona "") ) ) (defun my-bom-attr-ric-da (selitem) (let ((ric-da (bomattr-get-ricda selitem))) (if ric-da ric-da "") ) ) (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 "COD_FOM" :attr-title "Codice Fom" :attr-display t :attr-value-fnc #'my-bom-attr-cod-fom) (docu::docu-register-bom-attr :attr-type "COD_KRONA" :attr-title "Codice Krona" :attr-display t :attr-value-fnc #'my-bom-attr-cod-krona) (docu::docu-register-bom-attr :attr-type "RIC_DA" :attr-title "Ricavato da" :attr-display t :attr-value-fnc #'my-bom-attr-ric-da)
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|