Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Nguyenvanquyetvtt

Tìm Tung Độ Của Điểm Trên Đường Polyline Khi Biết Hoành Độ Của Nó

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

Minh có một bài toán như sau: cho trước một đường polyline, mình vẽ một đường thẳng đứng cách trục OY một đoạn = X, giả sử đường thẳng này cắt đường polyline tại một điểm. Làm thế nào để xác định được tung độ Y của điểm đó nhỉ? Mọi người giúp mình để mình viết code lisp với vì bài toán này của mình nó lập đi lập lại hàng trăm lần, mất nhiều time lắm. Thank mọi ngườ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
Doan Van Ha    2.676

Đây bạn!

 

(defun C:HA( / ent1 ent2 x y lst)
 (vl-load-com)
 (if
  (and
   (setq ent1 (car (entsel "Chon Polyline: ")))
   (setq x (getreal "\nNhap hoanh do X: "))
   (setq ent2 (entmakex (list '(0 . "XLINE") '(100 . "AcDbEntity") '(100 . "AcDbXline") (list 10 x 0 0) '(11 0.0 1.0 0.0))))
   (setq y (cadar (setq lst (#Inter:2Ent ent1 ent2 acExtendNone))))
   (= 1 (length lst))
   (entdel ent2))
  y))
(defun #Inter:2Ent(ent1 ent2 flag / l r)
 (setq l (vlax-invoke (vlax-ename->vla-object ent1) 'intersectwith (vlax-ename->vla-object ent2) flag))
 (repeat (/ (length l) 3)
  (setq r (cons (list (car l) (cadr l) (caddr l)) r) l (cdddr l)))
 (reverse r))
  • 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
790312    4

 

Đây bạn!

(defun C:HA( / ent1 ent2 x y lst)
 (vl-load-com)
 (if
  (and
   (setq ent1 (car (entsel "Chon Polyline: ")))
   (setq x (getreal "\nNhap hoanh do X: "))
   (setq ent2 (entmakex (list '(0 . "XLINE") '(100 . "AcDbEntity") '(100 . "AcDbXline") (list 10 x 0 0) '(11 0.0 1.0 0.0))))
   (setq y (cadar (setq lst (#Inter:2Ent ent1 ent2 acExtendNone))))
   (= 1 (length lst))
   (entdel ent2))
  y))
(defun #Inter:2Ent(ent1 ent2 flag / l r)
 (setq l (vlax-invoke (vlax-ename->vla-object ent1) 'intersectwith (vlax-ename->vla-object ent2) flag))
 (repeat (/ (length l) 3)
  (setq r (cons (list (car l) (cadr l) (caddr l)) r) l (cdddr l)))
 (reverse r))

Sao khi đánh lệnh HA lisp không chạy bác ơi?

  • Vote giảm 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
phamthanhbinh    3.123

Sao khi đánh lệnh HA lisp không chạy bác ơi?

Hề hề hề,

.Bạn hãy copy code rồi dán vào notepad. Save lại với duôi lsp. Load lisp và test. Hy vọng thành công.

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


×