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

đo chiều dài đường cong tại hai điểm bất kỳ

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

Mọi người ơi. có ai biết cách đo chiều dài đường cong giữa 2 điểm bất kỳ ko? giúp mình với.

hình như là có lệnh DAR để đo thì phải nhưng mình ko biết dùng. ai biết chỉ giùm nhé.

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

Lệnh DAR là lệnh tắt của DIMARC, tức là đo khoảng cách của Arc và Pline, còn đường cong nói chung thì không dùng được.

Vấn đề của bạn có thể dùng vài dòng lisp thì đo được.

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

Lệnh DAR là lệnh tắt của DIMARC, tức là đo khoảng cách của Arc và Pline, còn đường cong nói chung thì không dùng được.

Vấn đề của bạn có thể dùng vài dòng lisp thì đo được.

bạn chỉ mình cụ thể được ko?

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
(defun C:HA( / obj p1)
(vl-load-com) ;toi moi them dong nay
(setq obj (car (entsel "\nChon duong cong: ")))
(abs (- (vlax-curve-getDistAtPoint obj (setq p1 (getpoint "\nP1: "))) (vlax-curve-getDistAtPoint obj (getpoint p1 "\nP2: ")))))

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

(defun C:HA( / obj p1)
(setq obj (car (entsel "\nChon duong cong: ")))
(abs (- (vlax-curve-getDistAtPoint obj (setq p1 (getpoint "\nP1: "))) (vlax-curve-getDistAtPoint obj (getpoint p1 "\nP2: ")))))

bạn ơi. mình mới chỉ đọc qua lisp nên chưa hiểu lắm.

đại khái là down về rồi. load rồi. sau đó chạy : HA --> chọn đường cong --> (nó hiện ra P1. mình bấm chọn tọa độ thì nó bến mất --> ko đo được gì)( mình làm thế đúng ko. bạn chỉ hộ mình cụ thể tí nhé.)

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

Bạn làm đúng rồi đó.

Chọn 1 đường cong.

Pick chọn điểm P1.

Pick chọn điểm P2.

Nhấn F2 để xem kết quả.

uh. nhưng mình chỉ pick được P1 thôi. còn ko pick được P2. vì nó biến mất ngay sau khi mình pick P1

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

Bạn làm đúng rồi đó.

Chọn 1 đường cong.

Pick chọn điểm P1.

Pick chọn điểm P2.

Nhấn F2 để xem kết quả.

Bác thêm dòng này vào Lisp :

(textscr)

Lisp bật kết quả lên cho bác

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

uh. nhưng mình chỉ pick được P1 thôi. còn ko pick được P2. vì nó biến mất ngay sau khi mình pick P1

 

uh. nhưng mình chỉ pick được P1 thôi. còn ko pick được P2. vì nó biến mất ngay sau khi mình pick P1

Sao có chuyện ngộ như vậy được nhỉ? Chỉ khi là bạn chọn không trúng đối tượng hoặc bạn chọn trúng đối tượng không có chiều dài mà thôi. Có thể sửa lisp để đáp ứng 2 điều trên nhưng thấy không cần thiết lắm.

Sau khi chọn P1 và tự thoát, bạn nhấn F2 rồi copy và paste những dòng ấy lên đây xem sao nhé.

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

 

 

Sao có chuyện ngộ như vậy được nhỉ? Chỉ khi là bạn chọn không trúng đối tượng hoặc bạn chọn trúng đối tượng không có chiều dài mà thôi. Có thể sửa lisp để đáp ứng 2 điều trên nhưng thấy không cần thiết lắm.

Sau khi chọn P1 và tự thoát, bạn nhấn F2 rồi copy và paste những dòng ấy lên đây xem sao nhé.

đây nè bạn

 

 

Command: ha

 

Chon duong cong:

P1: ; error: no function definition: VLAX-CURVE-GETDISTATPOINT

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

srr! Bạn down lại nhé. Tôi sót 1 dòng. Máy tôi cài sẵn nên không sao.

oh. ra là vậy. mấy lâu nay chạy loanh quanh tìm cái nè mà ko được. mong lần này được.hi

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

Ở chỗ cũ tôi đã post lên đó. Tôi đã sửa ở đó luôn.

ui. mình down về rồi nhưng giờ lại ko chạy được lệnh HA nữa. unknown command "HA" mới chết !!!

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

 


(defun C:HA( / obj p1)

(vl-load-com) ;toi moi them dong nay

(setq obj (car (entsel "\nChon duong cong: ")))

(abs (- (vlax-curve-getDistAtPoint obj (setq p1 (getpoint "\nP1: "))) (vlax-curve-getDistAtPoint obj (getpoint p1 "\nP2: ")))))

Anh có thể cho xuất ra text sẵn có và đổi thành màu đỏ được ko ạ?

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

Anh có thể cho xuất ra text sẵn có và đổi thành màu đỏ được ko ạ?

Đây bạn.

 

(defun C:HA( / obj1 obj2 p1 p2)
 (vl-load-com)
 (setq obj1 (car (entsel "\nChon duong cong: "))
       p1 (getpoint "\nP1: ")
  p2 (getpoint p1 "\nP2: ")
       obj2 (vlax-ename->vla-object (car (entsel "\nChon text: "))))
 (vla-put-TextString obj2 (rtos (abs (- (vlax-curve-getDistAtPoint obj1 p1) (vlax-curve-getDistAtPoint obj1 p2))) 2))
 (vla-put-Color obj2 1)
 (princ))
 

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

Đây bạn.

 

(defun C:HA( / obj1 obj2 p1 p2)
 (vl-load-com)
 (setq obj1 (car (entsel "\nChon duong cong: "))
       p1 (getpoint "\nP1: ")
  p2 (getpoint p1 "\nP2: ")
       obj2 (vlax-ename->vla-object (car (entsel "\nChon text: "))))
 (vla-put-TextString obj2 (rtos (abs (- (vlax-curve-getDistAtPoint obj1 p1) (vlax-curve-getDistAtPoint obj1 p2))) 2))
 (vla-put-Color obj2 1)
 (princ))
 

 anh ơi em hỏi đến bước chon text thì mình ấn gì để ra kết quả.

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

 


 anh ơi em hỏi đến bước chon text thì mình ấn gì để ra kết quả.

Đến bước chọn text thì mình bấm chọn vào 1 text trên bản vẽ.

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

 

Mọi người ơi. có ai biết cách đo chiều dài đường cong giữa 2 điểm bất kỳ ko? giúp mình với.

hình như là có lệnh DAR để đo thì phải nhưng mình ko biết dùng. ai biết chỉ giùm nhé.

Hoặc là bạn có thể để cho nó hiện luôn ra Dim có Layer và kích thược màu đỏ cũng được.


(defun C:DIMARC ( / pt1 pt2 cen a1 a2 D1 D2 p r oldOs)
 (setq oldOs (getvar "OSMODE"))
 (prompt "Pick 2 points on an arc - ")
 (setvar "OSMODE" 512)
   (COMMAND "-LAYER" "m" "Dim" "color" 1 "" "")(PRINC)
 (while (not cen)
  (setq   pt1 (getpoint "1st pt: ")
   cen (osnap pt1 "_CEN")
  )
  (if (not cen) (alert "Doesn't lie on an arc, retry")
      (setq pt2 (getpoint cen " 2nd pt: ")))
 );while
 (setvar "OSMODE" 0)
 (setq a1 (angle cen pt1) a2 (angle cen pt2) ad (abs (- a2 a1))
   r (distance pt1 cen)
   D1 (* r ad)
   D2 (* r (- (* 2 pi) ad)) )
 (prompt (strcat "\nArc length: " (rtos D1) ",   complementar arc: " (rtos D2))) 
 (command "_DIMANGULAR" "" cen pt1 pt2 "_T" (rtos D1) pause)
 (setvar "OSMODE" oldOs)
 (prin1))
(princ "\nDIMARC command loaded.")
(princ)

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

Anh có thể cho xuất ra text sẵn có và đổi thành màu đỏ được ko ạ?

bạn có thể dùng cái này để đo và xuất luôn ra Dim có Layer và kích thước màu đỏ cũng được

(defun C:DIMARC ( / pt1 pt2 cen a1 a2 D1 D2 p r oldOs)
 (setq oldOs (getvar "OSMODE"))
 (prompt "Pick 2 points on an arc - ")
 (setvar "OSMODE" 512)
   (COMMAND "-LAYER" "m" "Dim" "color" 1 "" "")(PRINC)
 (while (not cen)
  (setq   pt1 (getpoint "1st pt: ")
   cen (osnap pt1 "_CEN")
  )
  (if (not cen) (alert "Doesn't lie on an arc, retry")
      (setq pt2 (getpoint cen " 2nd pt: ")))
 );while
 (setvar "OSMODE" 0)
 (setq a1 (angle cen pt1) a2 (angle cen pt2) ad (abs (- a2 a1))
   r (distance pt1 cen)
   D1 (* r ad)
   D2 (* r (- (* 2 pi) ad)) )
 (prompt (strcat "\nArc length: " (rtos D1) ",   complementar arc: " (rtos D2))) 
 (command "_DIMANGULAR" "" cen pt1 pt2 "_T" (rtos D1) pause)
 (setvar "OSMODE" oldOs)
 (prin1))
(princ "\nDIMARC command loaded.")
(princ)

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

l

 

Đây bạn.

 

(defun C:HA( / obj1 obj2 p1 p2)
 (vl-load-com)
 (setq obj1 (car (entsel "\nChon duong cong: "))
       p1 (getpoint "\nP1: ")
  p2 (getpoint p1 "\nP2: ")
       obj2 (vlax-ename->vla-object (car (entsel "\nChon text: "))))
 (vla-put-TextString obj2 (rtos (abs (- (vlax-curve-getDistAtPoint obj1 p1) (vlax-curve-getDistAtPoint obj1 p2))) 2))
 (vla-put-Color obj2 1)
 (princ))
 

Bác ơi có thể sửa lại một chút là mình đo được ra kết quả như một đường kích thước bình thường không? Cảm ơn bác rất nhiều.

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  

×