Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
2 replies to this topic

#1 tran_tin12

tran_tin12

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 29 June 2014 - 07:17 PM

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.

 

 


  • -1

#2 tran_tin12

tran_tin12

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: -1 (bình thường)

Đã gửi 02 July 2014 - 09:11 PM

hic, anh/chị nào rành về lisp thì giúp em với, em đang cần lisp này. 

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


  • 0

#3 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 03 July 2014 - 07:56 AM

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)
)

  • 1