Đến nội dung


Hình ảnh
- - - - -

[HỎI] có phải lisp bị lỗi hàm acet-geom-intersectwith không ?


  • Please log in to reply
6 replies to this topic

#1 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 14 November 2012 - 04:49 PM

e có viết 1 cái lisp để stick thép.chạy thử thì cad báo lỗi.hic.dùng vlide để kiếm lỗi thì nó lỗi ở đoạn acet-geom-intersectwith.mong các bác xem lỗi này là sao.thanks các bác trước.
file đính kèm nha các bác:
http://www.cadviet.c..._drawing1_2.dwg


(defun kihieu1 (tam / cu po1 po2)
(setq po1 (polar tam (* pi 0.75) +20))
(setq po2 (polar tam (* pi 1.75) +20))
(vl-cmdf "pline" po1 po2 "")
)
;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:w1 (/ cu bloc p1 p2 danhsach duongthang ten tam )
(vl-load-com)
(setq p1 (getpoint "\n Ve duong cat: "))
(setq p2 (getpoint p1))
(vl-cmdf "pline" p1 p2 "")
(setq duongthang (entlast))
(setq danhsach (ssget "f" (list p1 p2) bloc))
(while (> (sslength danhsach) 0)
(setq ten (ssname danhsach 0))
(setq tam (car (acet-geom-intersectwith duongthang ten 0)))
(kihieu1 tam)
(setq danhsach (ssdel ten danhsach))
)
(princ)
)

lisp chạy như sau:


Hình đã gửi
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 14 November 2012 - 05:07 PM

Lỗi do bạn down hàm vẽ PL. Xem để bỏ mấy chữ này nhé:
&quot
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#3 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 14 November 2012 - 06:17 PM

hic.thank bác ha đã xem qua.mấy cái chữ đó chắc do lỗi up code lên diễn đàn hay sao ấy.e đã up lại file lisp mới ko dùng entmake mà dùng command rồi nhưng vẫn bị lỗi như thế.báo lỗi nhưng lisp vẫn chạy hết vòng lặp.mong các bác xem hộ e cái.
  • 0

#4 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 106 (tàm tạm)

Đã gửi 14 November 2012 - 08:05 PM

hic.thank bác ha đã xem qua.mấy cái chữ đó chắc do lỗi up code lên diễn đàn hay sao ấy.e đã up lại file lisp mới ko dùng entmake mà dùng command rồi nhưng vẫn bị lỗi như thế.báo lỗi nhưng lisp vẫn chạy hết vòng lặp.mong các bác xem hộ e cái.


1. Hàm acet-geom-intersectwith không lỗi.
2. Lỗi là do biến danhsach có chứa cả PL bạn mới tạo ra (PL nối P1 P2)
Và khi setselection lặp đến PL này thì không thể tìm ra giao điểm với chính nó.
3. (setq danhsach (ssget "f" (list p1 p2) bloc))
Mình không hiểu bloc này là gì?
4. Sửa lỗi:
Lấy setq biến danhsach trước khi tạo PL
(defun kihieu1 (tam / cu po1 po2)
(setq po1 (polar tam (* pi 0.75) +20))
(setq po2 (polar tam (* pi 1.75) +20))
(vl-cmdf "pline" po1 po2 "")
)
;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:w1 (/ cu bloc p1 p2 danhsach duongthang ten tam )
(vl-load-com)
(setq p1 (getpoint "\n Ve duong cat: "))
(setq p2 (getpoint p1))
(setq danhsach (ssget "f" (list p1 p2)))
(vl-cmdf "pline" p1 p2 "")
(setq duongthang (entlast))
(while (> (sslength danhsach) 0)
(setq ten (ssname danhsach 0))
(setq tam (car (acet-geom-intersectwith duongthang ten 0)))
(kihieu1 tam)
(setq danhsach (ssdel ten danhsach))
)
(princ)
)

  • 1

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#5 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 14 November 2012 - 09:37 PM

chuẫn men rồi bác hochoaivandot ơi.hehe.thank bác nhé.
  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 14 November 2012 - 09:46 PM

Bạn soluuhuong2903 chú ý: nếu bạn dùng entmake để vẽ thì không sao, chứ dùng vl-cmdf hoặc command thì nhớ tắt osnap nhé!
  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#7 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 14 November 2012 - 10:07 PM

Bạn soluuhuong2903 chú ý: nếu bạn dùng entmake để vẽ thì không sao, chứ dùng vl-cmdf hoặc command thì nhớ tắt osnap nhé!

yup.thank bác ha đã nhắc nhở.cadviet tuyệt vời :D
  • 0