Chuyển đến nội dung
Diễn đàn CADViet

Truongson2006corp

Thành viên
  • Số lượng nội dung

    1
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi Truongson2006corp


  1. Mình có một đoạn Lisp, mìnhđọc mãi không hiểu lắm nhờ các bạn giải thích giúp mình. Một số lệnh trong Lisp mình đã đọc ở phần Help của Lisp nhưng mình vẫn không hiểu. Vì mình vừa mới nhập môn Lisp. Có bạn nào có tài liệu về giải thích các lệnh trong Lisp không, nếu có gửi cho mình với. Cám ơn các bạn nhiều. Sau đây là đoạn Lisp mình nhờ các bạn giải thích dùm:

    (defun c:noi (/)
    (command "_.undo" "be")
    (setvar "cmdecho" 0)
    (setq ss (ssget (list (cons 8 "TEXTCAODOMIA"))))
    (setq ss1 (ssadd))
    (setq ss2 (ssadd))
    (setq cnt 0)
    (repeat (sslength ss)
    (setq ent (entget (ssname ss cnt)))
    (if (= (cdr (assoc 72 ent)) 0)
    (setq ss2 (ssadd (ssname ss cnt) ss2))
    (progn
    (if (= (cdr (assoc 72 ent)) 2)
    (setq ss1 (ssadd (ssname ss cnt) ss1))
    )
    )
    )
    (setq cnt (+ cnt 1))
    
    )
    (setq ro (cdr (assoc 50 (entget (ssname ss1 0)))))
    (setq cnt 0)
    (repeat (min (sslength ss1) (sslength ss2))
    (setq ent (entget (ssname ss1 cnt)))
    (setq pt (cdr (assoc 11 ent)))
    (setq pt (polar pt ro 0.8))
    (setq dk 1)
    (setq cnt1 0)
    (while (and dk (< cnt1 (max (sslength ss1) (sslength ss2))))
    (setq ent1 (entget (ssname ss2 cnt1)))
    (setq pt1 (cdr (assoc 10 ent1)))
    (if (and (equal (car pt) (car pt1) 0.001)
    (equal (cadr pt) (cadr pt1) 0.001)
    )
    (progn
    (setq
    txt (strcat (cdr (assoc 1 ent)) "." (cdr (assoc 1 ent1)))
    )
    (setq ent (subst (cons 1 txt) (assoc 1 ent) ent))
    (setq ent (subst (cons 72 1) (assoc 72 ent) ent))
    (entmod ent)
    (command ".ERASE" (ssname ss2 cnt1) "")
    (setq ss2 (ssdel (ssname ss2 cnt1) ss2))
    (setq dk nil)
    )
    )
    (setq cnt1 (+ cnt1 1))
    )
    (setq cnt (+ cnt 1))
    )
    (setq ss nil)
    (setq ss1 nil)
    (setq ss2 nil)
    (command "_.undo" "e")
    (princ)
    )
    

×