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

Nhờ sửa lisp ctn

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

Em có đoạn mã lisp nội suy ctn copy trên diễn đàn.

Sau khi chỉnh sửa lisp như sau nhưng không cho đúng kết quả nhờ các bác sửa giúp.

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=13203&st=220
(defun DXF (code elist)  (cdr (assoc code elist)))
(prompt"\n[cmd : CTN] - GHI CAO DO TRAC NGANG\n")
(defun c:ctn ()
(command "Undo" "BEGIN")
(setq CMLAST (getvar "cmdecho"))
(setq OSLAST (getvar "OSMODE"))
(setq DZ (getvar "DIMZIN"))
(setq OT (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 0)
(setvar "cmdecho" 0)
(command "osmode" 1)
(setq pt0 (osnap (getpoint "Diem tim TN tu nhien") "end")) (print)
(setq y0 (cadr pt0))
(setq ed (entget (car (entsel "\nChon text cao do tim: "))))
(setq H0 (read (DXF 1 ed)))    
(command "osmode" 4335)
(setq pt (getpoint "\nDiem tra cao do: "))
(While (/= pt nil)
(setq y (- (cadr pt) y0 (- H0)) out 0)
(while (= out 0)
(setq res (entsel "\n Chon text ghi cao do"))
(if res
(progn
(setvar "dimzin" 0)
(entmod (subst (cons 1 (rtos y 2 2)) (assoc 1 (entget (car res))) (entget (car res))))
(setq out 1)
);progn
);if
);while
(setvar "DIMZIN" DZ)
(command "osmode" 4335)
(setq pt (getpoint "\nDiem chen: "))
);while 
(setvar "OSMODE" OSLAST)
(setvar "ORTHOMODE" OT)
(setvar "cmdecho" CMLAST)
(prompt"\n[GHI CAO DO TREN TRAC NGANG] by Thaistreetz - huuthais@yahoo.com\n")
(command "Undo" "End")
(princ)
);end
;---------------------------------------------------------------

Đoạn lisp sửa: cho tỷ lệ bản vẽ vào để tìm cao độ:

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=13203&st=220
(defun DXF (code elist)  (cdr (assoc code elist)))
(prompt"\n[cmd : CTN] - GHI CAO DO TRAC NGANG\n")
(defun c:ctn ()
(command "Undo" "BEGIN")
(if (= ty nil) (setq ty 1)); 
(setq ty1 (getreal (strcat "\nTy le theo phuong Y <1/"(rtos ty 2 2)">: 1/")))
(if ty1 (setq ty ty1))
(setq CMLAST (getvar "cmdecho"))
(setq OSLAST (getvar "OSMODE"))
(setq DZ (getvar "DIMZIN"))
(setq OT (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 0)
(setvar "cmdecho" 0)
(command "osmode" 1)
(setq pt0 (osnap (getpoint "Diem tim TN tu nhien") "end")) (print)
(setq y0 (cadr pt0))
(setq ed (entget (car (entsel "\nChon text cao do tim: "))))
(setq H0 (read (DXF 1 ed)))    
(command "osmode" 4335)
(setq pt (getpoint "\nDiem tra cao do: "))
(While (/= pt nil)
(setq y (- (cadr pt) y0 (- H0)) out 0)
(while (= out 0)
(setq res (entsel "\n Chon text ghi cao do"))
(if res
(progn
(setvar "dimzin" 0)
(entmod (subst (cons 1 (rtos *( y ty) 2 2)) (assoc 1 (entget (car res))) (entget (car res)))): 
(setq out 1)
);progn
);if
);while
(setvar "DIMZIN" DZ)
(command "osmode" 4335)
(setq pt (getpoint "\nDiem chen: "))
);while 
(setvar "OSMODE" OSLAST)
(setvar "ORTHOMODE" OT)
(setvar "cmdecho" CMLAST)
(prompt"\n[GHI CAO DO TREN TRAC NGANG] by Thaistreetz - huuthais@yahoo.com\n")
(command "Undo" "End")
(princ)
);end
;---------------------------------------------------------------

Mong các bác xem giúp

Thâ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

Bạn k gửi kèm file test, mọi người hok trong chuyên ngành của bạn khó mà hình dung lắm. Hơn nữa, mình chạy cả 2 đều báo lỗi 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

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


×