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

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

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

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:

 

 

85848_untitled1011.jpg

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

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.

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

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)
)

  • 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

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  

×