steven 发表于 2023-10-23 17:00:05

Creo Elements/Direct怎么添加零件的材料属性?

怎么添加零件的材料属性

Superman 发表于 2023-10-23 17:40:41

有Lisp可以做,看过其他人做过,但我没有用过,不是很清楚。看有没有哪位网友能帮忙解答一下

renchaoroy 发表于 2023-11-18 22:03:00

完整的 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:55

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)

Superman 发表于 2023-11-21 09:30:15

renchaoroy 发表于 2023-11-18 22:04
下面是一个有关 BOM 属性注册的示例:
(defun docu-bom-attr-part-name (selitem)
    (let ((contents-n ...

后面我看到一个添加材料属性和编号的Lisp,对比了一下,跟你这个类似
如何把这个材料和编号,带到BOM中去,还没搞懂

renchaoroy 发表于 2023-11-25 22:52:14

1.运行这个程序后,2.在2D图里面,自定义BOM的布局,用参考文本连接上变量,保存BOM布局,3.下次生成BOM选修改过的BOM布局名称,就可以啦
页: [1]
查看完整版本: Creo Elements/Direct怎么添加零件的材料属性?