Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
VuCuong79

Nhờ chỉnh sửa lisp tính khối lượng solid

Các bài được khuyến nghị

Tôi dùng win 10 có bản quyền, khi dùng lệnh mass trên máy tính không cho phép tạo file tự động mass.mpr nên không lấy được dữ liệu. Các bác sửa giúp không phải tạo file mà vẫn dùng được. Cảm ơn các bác nhiều

MASS.lsp

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình ko biết chỉnh lisp thế nào để khỏi tạo file:

Cơ mừ chỗ này bạn sửa lại đường dẫn ổ C chắc là dc.

(command "massprop" ss1 "" "y" "c:/MASS.mpr")
  (setq fisier (open "c:/MASS.mpr" "r"))

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chủ yếu lấy thể tích thôi mà. 

(defun c:khoiluong ( / DENSITATE KL MAT RO SS1 STR VOL X)
(initget "S A C B Z T L N")
  (initget
    "Steel Aluminium Copper Brass Zinc Tin Lead Nickel"
  )
  (setq    densitate
     (getkword
       "\nChoose material Aluminium/Copper/Brass/Zinc/Tin/Lead/Nickel/<Steel>:"
     )
  )
  (cond
    ((or (= densitate "Aluminium") (= densitate "A"))
     (setq ro 2.70)
     (setq mat "Aluminium")
    )
    ((or (= densitate "Copper") (= densitate "C"))
     (setq ro 8.93)
     (setq mat "Copper")
    )
    ((or (= densitate "Brass") (= densitate "B"))
     (setq ro 8.80)
     (setq mat "Brass")
    )
    ((or (= densitate "Zinc") (= densitate "Z"))
     (setq ro 7.14)
     (setq mat "Zinc")
    )
    ((or (= densitate "Tin") (= densitate "T"))
     (setq ro 7.29)
     (setq mat "Tin")
    )
    ((or (= densitate "Lead") (= densitate "L"))
     (setq ro 11.34)
     (setq mat "Lead")
    )
    ((or (= densitate "Nickel") (= densitate "N"))
     (setq ro 8.86)
     (setq mat "Nickel")
    )
    (T
     (setq ro 7.85)
     (setq mat "Steel")
    )
  )
(setq ss1 (ACET-SS-TO-LIST(ssget)))
  (if (= ss1 nil)
    (exit)
  )
 (setq ss1 (mapcar '(lambda (x) ( vlax-ename->vla-object x)) ss1)  )
(setq vol 0)
(foreach n ss1
  
       (if (= (vla-get-Objectname n) "AcDb3dSolid")
         (setq vol (+ vol (vla-get-Volume n)))
      )
  )
  ;;;he so chuyen mm3 sang m3
  (setq vol (* vol 0.0000001))
(setq kl (* vol ro))
(setq str (strcat "Vat lieu: \t" mat
          "\nKhoi luong rieng: \t" (rtos ro 2 2) " t/m3"
          "\nThe tich: \t" (rtos vol 2 3) " m3"
          "\nKhoi luong: \t" (rtos kl 2 3) " tan"
          )
      )
          
  (alert str)
)

 

  • Like 1
  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 29/9/2021 tại 10:38, cuongtk2 đã nói:

Chủ yếu lấy thể tích thôi mà. 


(defun c:khoiluong ( / DENSITATE KL MAT RO SS1 STR VOL X)
(initget "S A C B Z T L N")
  (initget
    "Steel Aluminium Copper Brass Zinc Tin Lead Nickel"
  )
  (setq    densitate
     (getkword
       "\nChoose material Aluminium/Copper/Brass/Zinc/Tin/Lead/Nickel/<Steel>:"
     )
  )
  (cond
    ((or (= densitate "Aluminium") (= densitate "A"))
     (setq ro 2.70)
     (setq mat "Aluminium")
    )
    ((or (= densitate "Copper") (= densitate "C"))
     (setq ro 8.93)
     (setq mat "Copper")
    )
    ((or (= densitate "Brass") (= densitate "B"))
     (setq ro 8.80)
     (setq mat "Brass")
    )
    ((or (= densitate "Zinc") (= densitate "Z"))
     (setq ro 7.14)
     (setq mat "Zinc")
    )
    ((or (= densitate "Tin") (= densitate "T"))
     (setq ro 7.29)
     (setq mat "Tin")
    )
    ((or (= densitate "Lead") (= densitate "L"))
     (setq ro 11.34)
     (setq mat "Lead")
    )
    ((or (= densitate "Nickel") (= densitate "N"))
     (setq ro 8.86)
     (setq mat "Nickel")
    )
    (T
     (setq ro 7.85)
     (setq mat "Steel")
    )
  )
(setq ss1 (ACET-SS-TO-LIST(ssget)))
  (if (= ss1 nil)
    (exit)
  )
 (setq ss1 (mapcar '(lambda (x) ( vlax-ename->vla-object x)) ss1)  )
(setq vol 0)
(foreach n ss1
  
       (if (= (vla-get-Objectname n) "AcDb3dSolid")
         (setq vol (+ vol (vla-get-Volume n)))
      )
  )
  ;;;he so chuyen mm3 sang m3
  (setq vol (* vol 0.0000001))
(setq kl (* vol ro))
(setq str (strcat "Vat lieu: \t" mat
          "\nKhoi luong rieng: \t" (rtos ro 2 2) " t/m3"
          "\nThe tich: \t" (rtos vol 2 3) " m3"
          "\nKhoi luong: \t" (rtos kl 2 3) " tan"
          )
      )
          
  (alert str)
)

 

Cảm ơn nhiều,  phần chuyển đổi đơn vị bị sai nên khối lượng bị sai. Cái Lisp sau khi sửa lại đơn vị.

Mass.lsp

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×