Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
almodeus

nhờ xem lỗi lisp đánh cao độ

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

mình có lisp cao độ của diễn đàn nhưng không hiểu sao lúc được lúc không

(defun c:ccd(/ tlv blm blname dmo cdm cd dm cdmi dmoc)

(setvar "attreq" 1)

(setvar "cmdecho" 0)

(setq oldim (getvar "DimZin"))

(setvar "Dimzin" 0)

(setq tlv (/ 1 (getreal "\n Nhap ti le ve : 1/")))

(setq blm (entget(car(entsel "\n Pick chon Block mau :"))))

(setq blname (cdr(assoc 2 blm)))

(setq TLX (cdr(assoc 41 blm)))

(setq TLY (cdr(assoc 42 blm)))

(setq dmo (getpoint "\n Pick diem moc : "))

 

(setq cdm (getreal "\n Nhap cao do cua diem moc :"))

(if (= cdm 0) (setq cd (strcat "%%p" (rtos cdm 2 3))))

(if (> cdm 0) (setq cd (strcat "+" (rtos cdm 2 3))))

(if (< cdm 0) (setq cd (rtos cdm 2 3)))

(command "insert" blname dmo TLX TLY "0" cd)

(setq dmoc dmo)

(while (setq dm (getpoint dmoc "\n Pick diem tiep theo :"))

(setq cdmi (* (- (cadr dm) cdm (cadr dmo)) tlv))

(if (= cdmi 0) (setq cdi (strcat "%%p" (rtos cdmi 2 3))))

(if (> cdmi 0) (setq cdi (strcat "+" (rtos cdmi 2 3))))

(if (< cdmi 0) (setq cdi (rtos cdmi 2 3)))

(command "insert" blname dm TLX TLY "0" cdi)

(setq dmoc dm)

)

 

(setvar "Dimzin" oldim)

(princ)

)

 

đây là file cad mẫu, cùng là hai block nhưng cái thì được cái thì bị lỗi nó cứ cho ra cot O và bị quay một góc nhỏ

xuất hiện cái dòng thế này :

Pick diem tiep theo :*Cancel*

; error: Function cancelled

My link

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

Block đấy của bạn có vấn đề. Mình tạo block mới vẫn làm ngon lành mà tạo Block khác đi bạn à. Bạn vào property scale X, Y, Z của 1 Block thay đổi được hết 1 block chỉ cho nhập scale X đó là 2 điểm khác nhau ở 2 block bạn đưa lên. Khi bạn tạo Block mà thay đổi được cả 3 scale thì lsp trên okie.

  • Vote tăng 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

cám ơn bạn...thì ra là block mình để chế độ scale uniform nên bị lỗi...ah bạn cho mình hỏi là làm sau bỏ các con số 0.000 phía sau dấu chấm không

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

Đây bạn ạ bạn chỉnh số thập phân sau dấu phẩy ở đây:

(if (= cdm 0) (setq cd (strcat "%%p" (rtos cdm 2 3))))

(if (> cdm 0) (setq cd (strcat "+" (rtos cdm 2 3))))

(if (< cdm 0) (setq cd (rtos cdm 2 3)))

(rtos cdm 2 3) Bạn chỉ cần thay đổi số 3 bằng số tương ứng sau dấu phẩy. VD bạn lấy 2 số sau dấu phẩy thì sửa thành (rtos cdm 2 2), Nếu không có số nào thì (rtos cdm 2 0). Vậy thôi. Chúc bạn sửa được theo ý muốn.

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

Đăng nhập để thực hiện theo  

×