Đến nội dung


Hình ảnh

Nhờ kiểm tra lỗi lisp


  • Please log in to reply
5 replies to this topic

#1 dinhtuyendevil

dinhtuyendevil

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 01 March 2011 - 11:43 AM

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"))
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 01 March 2011 - 11:47 AM

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

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 dinhtuyendevil

dinhtuyendevil

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 02 March 2011 - 10:21 AM

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.
  • 0

#4 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 02 March 2011 - 11:47 AM

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...
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#5 dinhtuyendevil

dinhtuyendevil

    biết pan

  • Members
  • Pip
  • 6 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 03 March 2011 - 08:33 PM

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

#6 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 03 March 2011 - 08:56 PM

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.
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!