Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
4 replies to this topic

#1 Nguyenvanquyetvtt

Nguyenvanquyetvtt

    Chưa sử dụng CAD

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

Đã gửi 15 February 2016 - 01:35 AM

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

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 15 February 2016 - 08:59 AM

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

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

790312

    biết lệnh fillet

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

Đã gửi 16 February 2016 - 08:00 AM

 

Đâ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?


  • -1

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 16 February 2016 - 08:24 AM

Bạn xem khi load có bị lỗi không, vì forum down hay bị lỗi.

Down cái này xem:


  • 0

* 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.


#5 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 16 February 2016 - 04:44 PM

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.


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