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

[Yêu Cầu] Lisp tính toán trong các attribute của block

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

Em có 2 vấn đề sau mong các anh/chị viết 1 đoạn lisp giúp em:

 

Vấn đề 1: em có 1 cái block với 5 attribute, giờ em muốn giá trị của attribute thứ 5 = (attribute thứ 2 * attribute thứ 4).

 

Vấn đề 2: em có 2 cái block, block a có 4 attribute, block b có 6 attribute, giờ em muốn copy lần lượt giá trị (attribute thứ 2, attribute thứ 4 của block a) vào (attribute thứ 3, attribute thứ 5 của block b).

 

Em cảm ơn rất nhiều.

 

 

  • Vote giảm 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

Lisp phân biệt att qua tag thôi, chẳng biết att thứ mấy.

Lisp copy giá trị att này qua att khác thì có nhiều trên forum, bạn search thử xem.

Còn lisp nhân att thì chắc chưa có. Bạn thử lisp dưới đây.

Chọn số hạng nhân (có thể nhiều hơn 2) rồi chọn att ghi kết quả, sau đó quét chọn tât cả block muốn nhân.

 

(defun c:nhan()
  (defun laysohang(ent l tm / l1 obj kq)
    (setq l1 nil)
     (while (and (setq ent (entnext ent))
   (/= (cdr (assoc 0 (entget ent))) "SEQEND"))
       (if (vlax-property-available-p (setq obj (vlax-ename->vla-object ent)) 'TagString) 
(cond ((member (vla-get-TagString obj) l)
(setq l1 (cons (atof (vla-get-TextString obj)) l1)))
      ((= tm (vla-get-TagString obj))
(setq kq ent))))
     )
     (vla-put-Textstring (vlax-ename->vla-object kq) (apply '* l1))
  )
  ;;;
  (setq l1 nil)
  (while (setq tm (car (nentsel "\nChon Attribute so hang:")))
    (setq l1 (cons (cdr (assoc 2 (entget tm))) l1)))
  (setq tm (cdr (assoc 2 (entget (car (nentsel "\nChon Attribute ket qua:")))))
ss (ssget '((0 . "INSERT") (66 . 1))))
  (mapcar '(lambda(v) (laysohang v l1 tm))  (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
  (princ)
)
  • 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

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  

×