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

Các bác giúp em kiểm tra lisp về lenh trim

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

Neu lisp nầy chạy tốt thì thật tiến vi lenh trim chỉ cho phép cat từng đường một trong khi lệnh này cho phép trim liên tục (em cũng xin lỗi tác giả vì em xin được một tập list nên \"chep \" ra để đúng thoi ...Nhưng chưa chạy được ). Doan lisp như sau :

(defun C:trn ()

(setq CVAR (Getvar "CMDECHO")) (setvar "CMDECHO" 0)

(Prompt "Select cutting edges :") (setq CUTEDG (Ssget))

(Prompt "select objects to trim :") (setq SS (Ssget))

(Setq LEN (SSlength SS)) (Setq I-1)

(Setq SIDE (getpoint"pick side to trim")) (command "TRIM" CUTEDG "")

(Repeat LEN

(Setq I (1+I))

(Command (List(SSname SS I) SIDE)) )

(Command "")

(Setvar "CMDECHO" CVAR) (Princ "\nTrim complete.")

(Princ) )

Cac bac kiem tra dum nhe!!!!!!!!!

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
Neu lisp nầy chạy tốt thì thật tiến vi lenh trim chỉ cho phép cat từng đường một trong khi lệnh này cho phép trim liên tục (em cũng xin lỗi tác giả vì em xin được một tập list nên \"chep \" ra để đúng thoi ...Nhưng chưa chạy được ). Doan lisp như sau :

(defun C:trn ()

(setq CVAR (Getvar "CMDECHO")) (setvar "CMDECHO" 0)

(Prompt "Select cutting edges :") (setq CUTEDG (Ssget))

(Prompt "select objects to trim :") (setq SS (Ssget))

(Setq LEN (SSlength SS)) (Setq I-1)

(Setq SIDE (getpoint"pick side to trim")) (command "TRIM" CUTEDG "")

(Repeat LEN

(Setq I (1+I))

(Command (List(SSname SS I) SIDE)) )

(Command "")

(Setvar "CMDECHO" CVAR) (Princ "\nTrim complete.")

(Princ) )

Cac bac kiem tra dum nhe!!!!!!!!!

Chỉ mới kiểm tra bằng mắt thì thấy 2 lỗi trên:

(chú ý các khỏang trắng)

(setq I 1)

(setq I (1+ I))

Bác chạy lại thử xem.

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
@cavoitrang_11 bạn dùng cad "đời" bao nhiêu mà phải để ý đến lệnh trim vậy ???

Dùng lệnh Extrim hình như Cad14 cũng đã có.

Và học lisp phải học bài bản ko nên copy code mà ko rõ ý nghĩa mất nhiều thời gian lắm

đoạn mã trên là ko thể chạy được

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
Neu lisp nầy chạy tốt thì thật tiến vi lenh trim chỉ cho phép cat từng đường một trong khi lệnh này cho phép trim liên tục (em cũng xin lỗi tác giả vì em xin được một tập list nên \"chep \" ra để đúng thoi ...Nhưng chưa chạy được )...

Mình có vài ý kiến:

 

1) Code đã sửa và chạy được:

 

(defun C:trn () 
(setq CVAR (Getvar "CMDECHO")) (setvar "CMDECHO" 0)
(Prompt "Select cutting edges :") (setq CUTEDG (Ssget))
(Prompt "select objects to trim :") (setq SS (Ssget))
(Setq LEN (SSlength SS)) (Setq i -1)
(Setq SIDE (getpoint "pick side to trim")) (command "TRIM" CUTEDG "")
(Repeat LEN
(Setq I (1+ I))
(Command (List (SSname SS I) SIDE))
) 
(Command "")
(Setvar "CMDECHO" CVAR) (Princ "\nTrim complete.") 
(Princ) )

 

2) Chỉ chạy đúng khi cutting edge và object to trim vuông góc nhau, nếu không kết quả có khi không đúng như ý muốn (khi xác định side to trim)

 

3) Cad đời mới (không nhớ rõ bắt đầu từ đời nào) có lệnh Extrim, làm thay công việc của đoạn lisp trên, và tất nhiên kết quả bao giờ cũng đúng! Nếu bạn có ý "ngâm cứu" về lisp thì giữ lại (xét về kỹ thuật lisp cũng có cái để tham khảo), còn chỉ để dùng thì... quên nó đi!

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

Xin cam on cac bac chi giao, em moi duoc biet toi cong dung cua Lisp thoi nen van con "ngo ngac" truoc cac doan ma.

Va lai cung dang can sai lam do an nen cu lieu load len hoi cac bac cung la de hoc hoi luon the.

Em dang dung CAD2004 cung chua cap nhat phien ban moi.

:bigsmile:

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

×