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

Nhờ mọi người tìm giúp lỗi của Lisp :D

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

Chào các bác, mình hiện tại đang học viết Lisp thì bị 1 cái lỗi " error: bad function: (431398.0 2.32442e+006 0.0)"

Mong các bác xem giúp nguyên nhân bị lỗi và cách sửa. Cám ơn các bác :D

(Trong này có bản vẽ đi kèm về kết quả mình mong muốn)

test lisp v4 ve vai dia KCAD.lsp

mau v2.dwg

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

(setq a0 (list (+ car(a1) 2) (cadr a1) 0))
(setq a5 (list (- car(a4) 2) (cadr a4) 0))
(command "pline" a0 a1 a2 a3 a4 a5)

(Setvar "OSMODE" 0)

 

Sửa lỗi :

(setq a0 (list (+ (car a1) 2) (cadr a1) 0))
(setq a5 (list (- (car a4) 2) (cadr a4) 0))
(command "pline" "non" a0 "non" a1 "non" a2 "non" a3 "non"a4 "non" a5 "")

 

Code tóm lại đã chạy được. Còn đúng ý hay không thì tùy chủ thớt.

  • Like 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

Sai chỗ car(a1) và car(a4) sửa lại thành (car a1) và (car a4).

(defun c:vvd ()
(setvar "CMDECHO" 0)
(setq a1 (getpoint "\n Nhap diem thu 1:"))
(setq a2 (getpoint a1 "\n Nhap diem thu 2:"))
(setq a3 (getpoint a2 "\n Nhap diem thu 3:"))
(setq a4 (getpoint a3 "\n Nhap diem thu 4:"))
(setq a0 (list (+ (car a1) 2) (cadr a1) 0))
(setq a5 (list (- (car a4) 2) (cadr a4) 0))
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(command "pline" a0 a1 a2 a3 a4 a5 "" )
(setvar "osmode" oldos)
(princ)
)

 

  • Like 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
Quote

 

Cám ơn 2 bác Danh Cong và Narutoo đã giúp đỡ :D. 2 bác cho e hỏi thêm là cái phần ( "OSMODE" 0)  ; ("CMDECHO" 0) và ( "OSMODE" oldos) nghĩa là thế nào với. Tại e thấy mấy lisp kiểu này họ hay đưa vào nhưng cũng chưa hiểu được ý nghĩa của nó. Mong các bác giải đáp giúp :D

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

(getvar "osmode)  --> Lấy ra giá trị biến hệ thống "Osmode" của Cad.

(setq oldos (getvar "osmode"))   ----> Gán giá trị biến hệ thống vào biến do người dùng tự tạo "oldos"

(setvar "osmode" 0)    ---> Thiết lập biến Osmode về 0, tức là không bắt điểm. Thao tác này nhằm vẽ các đối tượng sau câu lệnh không bị bắt điểm nhầm.

(setvar "osmode" oldos )   --> Trả lại thiết lập Osmode về giá trị cũ, được lưu trong "oldos".

  • Like 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
Quote

(getvar "osmode)  --> Lấy ra giá trị biến hệ thống "Osmode" của Cad.

(setq oldos (getvar "osmode"))   ----> Gán giá trị biến hệ thống vào biến do người dùng tự tạo "oldos"

(setvar "osmode" 0)    ---> Thiết lập biến Osmode về 0, tức là không bắt điểm. Thao tác này nhằm vẽ các đối tượng sau câu lệnh không bị bắt điểm nhầm.

(setvar "osmode" oldos )   --> Trả lại thiết lập Osmode về giá trị cũ, được lưu trong "oldos".

Cám ơn bác Danh Cong rất nhiều :D

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

×