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

Nhờ kiểm tra lỗi lisp

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

Em có một lisp vẽ thép sàn rất hay. Trước đây vẫn sử dụng bình thường sau một vài lần cài lại máy thì ko dùng được nữa. Mặc dù lisp vẫn đúng vì copy sang một máy khác thì vẫn có thể dùng được (chỉ một số máy). Có cao thủ nào về lisp dành thời gian check hộ em. Em rất cần vì đã vẽ thép sàn quen bằng cái này. Giờ không có khổ quá

 

(defun c:ttt ( )

(setvar "cmdecho" 0)

(laythongso)

(setq ent (car (entsel "\nChon thep:")))

(setq ent0 (entget ent))

(setq n (length ent0) i 0 dlist nil)

(while (< i n)

(progn

(if (= (car (nth i ent0)) 10)

(setq dlist (append dlist (list (cdr (nth i ent0)))))

)

)

(setq i (1+ i))

)

(if (= (length dlist) 2) (setq dlist dlist))

(if (= (length dlist) 4) (setq dlist (list (nth 1 dlist)(nth 2 dlist))))

(if (= (length dlist) 10) (setq dlist (list (nth 4 dlist)(nth 5 dlist))))

(initget "1 2 3")

(setq chu (getkword "\nLoai thep 1/2/3 :"))

(cond ((= chu "1")(tt1 (nth 0 dlist) (nth 1 dlist) 100 0.0))

((= chu "2")(tt2 (nth 0 dlist) (nth 1 dlist) 100 0.0))

((= chu "3")(tt3 (nth 0 dlist) (nth 1 dlist) 100 0.0))

)

(entdel ent)

(setvar "cmdecho" 1)

(ghithongso)

)

(defun tt1 ( p1 p2 d1 d2 / p1a p2a p1b p2b d d1 ang ang1)

(setvar "cmdecho" 0)

(laythongso)

(setq gf (getvar "fillet"))

;(setq d2 100)

(osmode "512")

(osmode "128")

(setq ang (angle p1 p2)

d (distance p1 p2)

p1 (polar p1 ang (/ d2 2))

p2 (polar p2 (+ pi ang) (/ d2 2))

ang1 (+ ang (* pi 0.5))

p1a (polar p1 ang1 d1)

p2a (polar p2 ang1 d1)

p1b (polar p1a ang d1)

p2b (polar p2a (+ ang pi) d1)

)

(e_lwpolyline (list p1b p1a p1 p2 p2a p2b) 0 0 "thep")

(command "setvar" "filletrad" (/ d1 2))

(command "fillet" "p" "l")

(command "setvar" "filletrad" gf)

(ghithongso)

(setvar "cmdecho" 1)

)

(defun c:tt1 ( / p1 p2)

(setq p1 (getpoint "\nDiem dau:" ))

(setq p2 (getpoint "\nDiem sau:" p1))

(tt1 p1 p2 100 100 )

)

;;;;--------------------------------------------------------------------------------

(defun tt2 ( p1 p2 d1 d2 / p1a p2a d d1 ang ang1)

(setvar "cmdecho" 0)

(laythongso)

;(setq d1 100)

(osmode "512")

(osmode "128")

(setq ang (angle p1 p2)

d (distance p1 p2)

p1 (polar p1 ang (/ d2 2))

p2 (polar p2 (+ pi ang) (/ d2 2))

ang1 (+ ang (* pi 0.5))

p1a (polar p1 ang1 (* d1 3))

p2a (polar p2 ang1 (* d1 3))

)

(e_lwpolyline (list p1a p1 p2 p2a ) 0 0 "thep")

 

(ghithongso)

(setvar "cmdecho" 1)

)

(defun c:tt2 ( / p1 p2)

(setq p1 (getpoint "\nDiem dau:" ))

(setq p2 (getpoint "\nDiem sau:" p1))

(tt2 p1 p2 100 100)

)

;;;;--------------------------------------------------------------------------------

(defun tt3 ( p1 p2 d1 d2 / p1a p2a d d1 ang )

(setvar "cmdecho" 0)

(laythongso)

;(setq d1 100)

(osmode "512")

 

(osmode "128")

 

(setq ang (angle p1 p2)

d (distance p1 p2)

p1 (polar p1 ang (/ d2 2))

p2 (polar p2 (+ pi ang) (/ d2 2))

p1a (polar p1 (+ ang (* pi 0.15)) (* d1 1.5))

p2a (polar p2 (+ ang (* pi 0.85)) (* d1 1.5))

)

(e_lwpolyline (list p1a p1 p2 p2a ) 0 0 "thep")

 

(ghithongso)

(setvar "cmdecho" 1)

)

 

(defun c:tt3 ( / p1 p2)

(setq p1 (getpoint "\nDiem dau:" ))

(setq p2 (getpoint "\nDiem sau:" p1))

(tt3 p1 p2 100 100)

)

 

;;;;--------------------------------------------------------------------------------

(defun c:gth ( ) ;p1 p2 p3 p1a p1b d ang ang1 tx1 tx2 tx3 style1 style2 layer)

(setvar "cmdecho" 0)

;(laythongso)

(setq style1 "romans"

style2 "text1"

layer1 "text-thep"

layer2 "text-thep")

(set_text_style1 style2 "vharialn.ttf" 1)

;(set_text_style1 style1 "romans.shx" 0.8)

 

;(osmode "512")

(setq p1 (getpoint "\nDiem dau:" ))

;(osmode "128")

(setq p2 (getpoint "\nDiem sau:" p1))

(setq tx1a (nth 0 (read_file "th1.dat"))

tx2a (nth 1 (read_file "th1.dat"))

tx3a (nth 2 (read_file "th1.dat"))

)

(setq tx1 (getint (strcat "\nFi<" tx1a ">:")))

(if (null tx1) (setq tx1 (atoi tx1a)))

 

(setq tx2 (getint (strcat "\na=<" tx2a ">:")))

(if (null tx2) (setq tx2 (atoi tx2a)))

 

(setq tx3 (getint (strcat "\nKi hieu <" tx3a ">:")))

(if (null tx3) (setq tx3 (atoi tx3a)))

(write_file "th1.dat" (list (rtos tx1 2 0) (rtos tx2 2 0) (rtos (+ 1 tx3) 2 0)))

(setq tx3 (rtos tx3 2 0))

(setq d (distance p1 p2)

ang (angle p1 p2)

n (/ d tx2)

)

(if (< (- n (fix n)) 0.5)

(setq n (+ (fix n) 1))

(setq n (+ (fix n) 2))

)

 

(if (> tx1 8)

(setq tx1 (strcat "/g" (rtos tx1 2 0)))

(setq tx1 (strcat "%%C" (rtos tx1 2 0))

)

)

(setq n (rtos n 2 0)

tx1 (strcat n tx1)

tx2 (strcat "a" (rtos tx2 2 0))

)

(if (/= (abs (sin ang)) 0.0)

(setq ang 0 )

(setq ang (/ pi 2) )

)

;(osmode "512")

(setq p1 (getpoint "\nDiem dat:" )

p2 (polar p1 (+ ang (/ pi 2)) 500)

p3 (polar p2 ang 1000)

p1a (polar p2 ang 500)

p1a (polar p1a (+ ang (/ pi 2)) 180)

p1b (polar p1a (- ang (/ pi 2)) 400)

)

;(osmode "0")

(command "_qleader" p1 p2 p3 "" "" "" "")

(ch_layer_lastobj layer2)

 

 

;(e_lwpolyline (list p1 p2 p3) 0 0 layer2)

(e_text p1a style1 tx1 250 ang 0.8 1 2 layer1)

 

(e_text p1b style1 tx2 250 ang 0.8 1 2 layer1)

 

(setq p1a (polar p3 ang 300))

(e_circle p1a 275 layer2)

(setq ent (entlast)

ent0 (entget ent)

ent0 (append ent0 (list (cons 62 8)))

)

(entmod ent0)

(entupd ent)

(e_text p1a style2 tx3 300 ang 1.0 1 2 layer1)

 

;(ghithongso)

(setvar "cmdecho" 1)

)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:gth1 ( ) ;p1 p2 p3 p1a p1b d ang ang1 tx1 tx2 tx3 style1 style2 layer)

(setvar "cmdecho" 0)

;(laythongso)

(setq style1 "romans"

style2 "text1"

layer1 "text-thep"

layer2 "text-thep")

(set_text_style1 style2 "vharialn.ttf" 1)

;(set_text_style1 style1 "romans.shx" 0.8)

 

;(osmode "512")

(setq p1 (getpoint "\nDiem dau:" ))

;(osmode "128")

(setq p2 (getpoint "\nDiem sau:" p1))

(setq tx1a (nth 0 (read_file "th1.dat"))

tx2a (nth 1 (read_file "th1.dat"))

tx3a (nth 2 (read_file "th1.dat"))

)

(setq tx1 (getint (strcat "\nFi<" tx1a ">:")))

(if (null tx1) (setq tx1 (atoi tx1a)))

 

(setq tx2 (getint (strcat "\na=<" tx2a ">:")))

(if (null tx2) (setq tx2 (atoi tx2a)))

 

(write_file "th1.dat" (list (rtos tx1 2 0) (rtos tx2 2 0) tx3a))

 

(setq d (distance p1 p2)

ang (angle p1 p2)

n (/ d tx2)

)

(if (< (- n (fix n)) 0.5)

(setq n (+ (fix n) 1))

(setq n (+ (fix n) 2))

)

 

(if (> tx1 8)

(setq tx1 (strcat "/g" (rtos tx1 2 0)))

(setq tx1 (strcat "%%C" (rtos tx1 2 0))

)

)

(setq n (rtos n 2 0)

tx1 (strcat n tx1)

)

(if (/= (abs (sin ang)) 0.0)

(setq ang 0 )

(setq ang (/ pi 2) )

)

;(osmode "512")

 

(setq ent (entsel "\nChon so can sua:")

ent (car ent)

ang (cdr (assoc 50 (entget ent)))

p1a (cdr (assoc 11 (entget ent)))

)

(entdel ent)

 

(e_text p1a style1 tx1 250 ang 0.8 1 2 layer1)

 

 

;(ghithongso)

(setvar "cmdecho" 1)

)

 

(defun c:lo () (command "layon"))

(defun c:ll () (command "layiso"))

(defun c:lf () (command "layoff"))

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

Thiếu 2 defun (laythongso) và (ghithongso), bạn kiểm tra xem còn sót ở đâu không.

THứ 2 nữa là bạn không nói lỗi khi dùng lệnh nào

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

Thiếu 2 defun (laythongso) và (ghithongso), bạn kiểm tra xem còn sót ở đâu không.

THứ 2 nữa là bạn không nói lỗi khi dùng lệnh nào

 

Khi dùng lệnh ttt thì báo lỗi: no function definition: LAYTHONGSO

còn các lệnh còn lại vẫn dùng được nhưng do có lỗi trên nên nó không trả về kế quả mà lại báo lại lỗi trên sau khi thực hiện xong lệnh.

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

Em có một lisp vẽ thép sàn rất hay. Trước đây vẫn sử dụng bình thường sau một vài lần cài lại máy thì ko dùng được nữa. Mặc dù lisp vẫn đúng vì copy sang một máy khác thì vẫn có thể dùng được (chỉ một số máy). Có cao thủ nào về lisp dành thời gian check hộ em. Em rất cần vì đã vẽ thép sàn quen bằng cái này. Giờ không có khổ quá

 

Hề hề hề,

Cái lisp bạn post đang bị thiếu hai cái hàm con là (laythongso) và (ghithongso). Do vậy không thể test nó được. Có thể ở các máy mà bạn chạy được trong đường dẫn tìm kiếm của CAD đã có thư mục chứa các file có hàm con này. Bạn hãy kiểm tra lại và copy các hàm con này về máy của bạn và chạy thử.

Nếu vẫn không được, hãy post lại lisp với đầy đủ các hàm con thì mọi người mới kiểm tra giùm bạn được.

Chúc bạn vui...

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

Hề hề hề,

Cái lisp bạn post đang bị thiếu hai cái hàm con là (laythongso) và (ghithongso). Do vậy không thể test nó được. Có thể ở các máy mà bạn chạy được trong đường dẫn tìm kiếm của CAD đã có thư mục chứa các file có hàm con này. Bạn hãy kiểm tra lại và copy các hàm con này về máy của bạn và chạy thử.

Nếu vẫn không được, hãy post lại lisp với đầy đủ các hàm con thì mọi người mới kiểm tra giùm bạn được.

Chúc bạn vui...

 

Tớ đã tìm thử nhưng không thể tìm thấy cái hàm cậu nói ở đâu că. nếu biết về lisp hi vọng cậu có thể giúp tớ viết nốt 2 hàm đấy. Tớ đã post đầy đủ nôi dung của cái lisp đó rồ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

Tớ đã tìm thử nhưng không thể tìm thấy cái hàm cậu nói ở đâu că. nếu biết về lisp hi vọng cậu có thể giúp tớ viết nốt 2 hàm đấy. Tớ đã post đầy đủ nôi dung của cái lisp đó rồi

bạn mở toàn bộ số lisp mà bạn có ra rồi search với từ khoá laythongso rồi port lên. Ai mà biết trong cái function laythongso đó tác giả viết cái gì mà giúp bạn viết 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

×