Thứ Tư, 2 tháng 9, 2009

Lisp trim và extend giống cad2007 cho các đời cad thấp hơn

Ở cad đời 2007 trở lên chức năng TRIM và EXTEND chọn đối tượng bằng cửa sổ rất chi là thích. Nhưng vì điều kiện cụ thể nào đó mà bạn phải dùng cad đời thấp hơn nhưng vẫn ưng cái hiệu ứng đó thì dùng lisp sau của mình nhé!
Bạn copy nội dung và tạo file lisp hay tải file về cũng được!

(DEFUN C:exn ( )
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(Prompt "\nChon doi tuong dich den")
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(Setq dichkeodai (Ssget))
(setq a (getpoint "\nDiem thu nhat: "))
(setq b (getcorner a"\nDiem thu hai: "))
(setq c (list (car a) (cadr b)))
(setq d (list (car b) (cadr a)))
(command ".extend" dichkeodai "" "f" a b c d b c a d "" "")
(while (setq ab (getpoint "\nDiem thu nhat: "))
(setq bb (getcorner ab"\nDiem thu hai: "))
(setq cb (list (car ab) (cadr bb)))
(setq db (list (car bb) (cadr ab)))
(command ".extend" dichkeodai "" "f" ab bb cb db bb cb ab db "" "")
)
(setvar "osmode" luubatdiem)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN C:trn ( )
(princ "\nPHAM QUOC DUY Binh Son - Quang ngai")
(Prompt "\nChon doi tuong cat")
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(Setq dichkeodai (Ssget))
(setq a (getpoint "\nDiem thu nhat: "))
(setq b (getcorner a"\nDiem thu hai: "))
(setq c (list (car a) (cadr b)))
(setq d (list (car b) (cadr a)))
(command ".trim" dichkeodai "" "f" a b c d b c a d "" "")
(while (setq ab (getpoint "\nDiem thu nhat: "))
(setq bb (getcorner ab"\nDiem thu hai: "))
(setq cb (list (car ab) (cadr bb)))
(setq db (list (car bb) (cadr ab)))
(command ".trim" dichkeodai "" "f" ab bb cb db bb cb ab db "" "")
)
(setvar "osmode" luubatdiem)
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



Tênh lệnh:
EXN : (extend)
TRN : (trim)

3 nhận xét:

  1. Lisp này hay quá . Nhưng em chưa hiểu rõ lắm Anh Duy chỉ giúp em nhé
    từ đoạn (command ".extend"....trở đi khó hiểu lắm
    Cám ơn anh .

    Trả lờiXóa
  2. *(command ".trim" dichkeodai "" "f" a b c d b c a d "" "")

    Thực hiện lệnh extend. Chọn đối tượng đích đến là dichkeodai (mình chọn được ở dòng (Setq dichkeodai (Ssget)) ấy), enter kết thúc việc chọn đối tượng đích. Chọn tham số f nghĩa là sẻ chọn đối tượng muốn kéo dài theo kiểu f (hàng rào cắt qua đối tượng), vẽ hàng rào là hình chử nhật abcd và đường chéo ac và bd mục đích cho các đối tượng nằn trong hình chữ nhật tạo bởi 2 điểm mình chọn sẽ được chọn và được kéo dài tạo hiệu ứng giống cad2007.

    *(while
    là vòng lặp khi dùng vóng lặp này ko kèm theo điều kiện phía sau thì vòng lặp được thực hiện đến khi mình enter sẽ kết thúc. Bạn xem thêm về hàm này bên hướng dẩn viết lisp.

    Trả lờiXóa
  3. Ah ah ah Em hiểu rồi ha ha .
    Cám ơn anh nhiều Chúc anh một ngày vui vẻ nhé ^^

    Trả lờiXóa