Creo Elements/Direct怎么添加零件的材料属性?
怎么添加零件的材料属性有Lisp可以做,看过其他人做过,但我没有用过,不是很清楚。看有没有哪位网友能帮忙解答一下 完整的 BOM 注册示例
下列示例演示的是如何向模型附加属性,以及如何将这些属性检索至 BOM。
;;-----------------------------------------------------------------------------;; 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 ) ) ));;-----------------------------------------------------------------------------;; 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)));;-----------------------------------------------------------------------------;; 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 "")))(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)
Superman 发表于 2023-10-23 17:40
有Lisp可以做,看过其他人做过,但我没有用过,不是很清楚。看有没有哪位网友能帮忙解答一下 ...
下面是一个有关 BOM 属性注册的示例:
(defun docu-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))
)
)
(docu-unregister-bom-attr-all)
(docu-register-bom-attr :attr-type "PART_NAME"
:attr-title "Part Name"
:attr-display t
:attr-value-fnc #'docu-bom-attr-part-name)
(docu-unregister-bom-attr "PART_NAME")
(docu-register-bom-attr :attr-type "DOCU_BOM_QUANTITY"
:attr-title "Quantity"
:attr-display t
:attr-value-fnc nil) ;; system BOM attribute
(docu-register-bom-attr :attr-type "PART_NAME"
:attr-title "Part Name"
:attr-display t
:attr-value-fnc #'docu-bom-attr-part-name)
完整的 BOM 注册示例
下列示例演示的是如何向模型附加属性,以及如何将这些属性检索至 BOM。
;;-----------------------------------------------------------------------------
;; 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
)
)
)
)
;;-----------------------------------------------------------------------------
;; 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)
)
)
;;-----------------------------------------------------------------------------
;; 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 "")
)
)
(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) renchaoroy 发表于 2023-11-18 22:04
下面是一个有关 BOM 属性注册的示例:
(defun docu-bom-attr-part-name (selitem)
(let ((contents-n ...
后面我看到一个添加材料属性和编号的Lisp,对比了一下,跟你这个类似
如何把这个材料和编号,带到BOM中去,还没搞懂 1.运行这个程序后,2.在2D图里面,自定义BOM的布局,用参考文本连接上变量,保存BOM布局,3.下次生成BOM选修改过的BOM布局名称,就可以啦
页:
[1]