分享

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

steven 2023-10-23 17:00:05 发表于 基础建模 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 5 2363
怎么添加零件的材料属性
我知道答案 回答被采纳将会获得 1 贡献 + 2 金币 已有5人回答

已有(5)人评论

跳转到指定楼层
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布局名称,就可以啦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则