Chuyển đến nội dung
Diễn đàn CADViet
npkh1981

lisp tính chiều dài một phần polyline

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

các bác giúp em đoạn lisp mà có thể lấy chiều dài khi ta kích vào 1 điểm nào đó trên polyline( chứa đoạn thẳng và cung tròn) ta có thể biết được chiều dài của nó

vd: ta kích vào 1 điểm bất kì nào đó trên polyline đó ta có thể biết chiều dài từ đầu polyline đến điểm kích được khô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
các bác giúp em đoạn lisp mà có thể lấy chiều dài khi ta kích vào 1 điểm nào đó trên polyline( chứa đoạn thẳng và cung tròn) ta có thể biết được chiều dài của nó

vd: ta kích vào 1 điểm bất kì nào đó trên polyline đó ta có thể biết chiều dài từ đầu polyline đến điểm kích được không

Ta không biết.

 

Nhưng mục đích để làm gì bạn?

 

- Nếu bạn muốn thì bạn dùng lệnh break để bẻ gãy pline tại điểm bạn pick, sau đó dùng lệnh list để xem chiều dài.

- Nếu bạn muốn 'rút ngắn' một pline thành một đoạn có chiều dài cho trước, bạn hãy dùng lệnh lengthen

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
Ta không biết.

 

Nhưng mục đích để làm gì bạn?

 

- Nếu bạn muốn thì bạn dùng lệnh break để bẻ gãy pline tại điểm bạn pick, sau đó dùng lệnh list để xem chiều dài.

- Nếu bạn muốn 'rút ngắn' một pline thành một đoạn có chiều dài cho trước, bạn hãy dùng lệnh lengthen

bạn không hiểu ý mình

Mình có một polyline vdụ tim đường chẳng hạn

có một số mặt cắt ngang qua đó

Mình muốn xác định nhanh chóng bằng 1 clịck chuột vào 1 điểm mà cắt ngang cắt qua xem nó ở

lý trình nào

Còn break hay lengthen thì dễ rồi

Nhưng tốn thời gian lắm mình làm vài trăm mặt cắt cơ

Mà làm đi làm lại nhiều lần lắm

Mỗi lần làm 1 công trình mình tốn mất vài ngày vào chuyện đó

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 không hiểu ý mình

Mình có một polyline vdụ tim đường chẳng hạn

có một số mặt cắt ngang qua đó

Mình muốn xác định nhanh chóng bằng 1 clịck chuột vào 1 điểm mà cắt ngang cắt qua xem nó ở

lý trình nào

Còn break hay lengthen thì dễ rồi

Nhưng tốn thời gian lắm mình làm vài trăm mặt cắt cơ

Mà làm đi làm lại nhiều lần lắm

Mỗi lần làm 1 công trình mình tốn mất vài ngày vào chuyện đó

 

Lệnh LTR (Lý trình) dưới đây sẽ giúp bạn:

(defun c:ltr()
 (setq
   ent (car (entsel "\nVao pline: "))
   p   (getpoint "\nVao diem xac dinh ly trinh: ")
 )
(command ".copy" ent "" "0,0,0" "@")
 (setq ent (entlast))
 (command ".break" ent p "@")
 (setq ent1 (entlast))
 (command ".lengthen" ent "")
 (setq l (rtos (getvar "perimeter")))
 (command ".lengthen" ent1 "")
 (setq l1 (rtos (getvar "perimeter")))
 (command ".erase" ent ent1 "")
 (alert (strcat "diem vua pick chia pline thanh 2 doan\n\nTu dau den diem pick: " l "\n\nTu diem pick den cuoi: " l1))
 (princ)
)

  • Vote tăng 3

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 LTR (Lý trình) dưới đây sẽ giúp bạn:

(defun c:ltr()
 (setq
   ent (car (entsel "\nVao pline: "))
   p   (getpoint "\nVao diem xac dinh ly trinh: ")
 )
(command ".copy" ent "" "0,0,0" "@")
 (setq ent (entlast))
 (command ".break" ent p "@")
 (setq ent1 (entlast))
 (command ".lengthen" ent "")
 (setq l (rtos (getvar "perimeter")))
 (command ".lengthen" ent1 "")
 (setq l1 (rtos (getvar "perimeter")))
 (command ".erase" ent ent1 "")
 (alert (strcat "diem vua pick chia pline thanh 2 doan\n\nTu dau den diem pick: " l "\n\nTu diem pick den cuoi: " l1))
 (princ)
)

Cảm ơn bác hoành nhé

Bác giỏi thật có lẽ cái gì bác cũng làm được chắc bác sử dụng cad giỏi lắ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

Em cần một lisp tính tổng chiều dài tất cả đường vẽ bằng 1 layer, cụ thể là tính tổng chiều dài đường dây điện trong công trình; tất cả các đường dây em vẽ bằng 1 layer riêng( duongdien) Cả line, arc. Không biết bác hoàng có thể giúp được khô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
Em cần một lisp tính tổng chiều dài tất cả đường vẽ bằng 1 layer, cụ thể là tính tổng chiều dài đường dây điện trong công trình; tất cả các đường dây em vẽ bằng 1 layer riêng( duongdien) Cả line, arc. Không biết bác hoàng có thể giúp được không?

bạn tìm ở đây: http://www.cadviet.com/caddata/2_Auto_Lisp...download-1.html

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 LTR (Lý trình) dưới đây sẽ giúp bạn:

(defun c:ltr()
 (setq
   ent (car (entsel "\nVao pline: "))
   p   (getpoint "\nVao diem xac dinh ly trinh: ")
 )
(command ".copy" ent "" "0,0,0" "@")
 (setq ent (entlast))
 (command ".break" ent p "@")
 (setq ent1 (entlast))
 (command ".lengthen" ent "")
 (setq l (rtos (getvar "perimeter")))
 (command ".lengthen" ent1 "")
 (setq l1 (rtos (getvar "perimeter")))
 (command ".erase" ent ent1 "")
 (alert (strcat "diem vua pick chia pline thanh 2 doan\n\nTu dau den diem pick: " l "\n\nTu diem pick den cuoi: " l1))
 (princ)
)

bác viết cho em đoạn ghi kết quả đó ra màn hình. chỉ cần ghi từ đầu đến điểm pick thô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
Lệnh LTR (Lý trình) dưới đây sẽ giúp bạn:

(defun c:ltr()
 (setq
   ent (car (entsel "\nVao pline: "))
   p   (getpoint "\nVao diem xac dinh ly trinh: ")
 )
(command ".copy" ent "" "0,0,0" "@")
 (setq ent (entlast))
 (command ".break" ent p "@")
 (setq ent1 (entlast))
 (command ".lengthen" ent "")
 (setq l (rtos (getvar "perimeter")))
 (command ".lengthen" ent1 "")
 (setq l1 (rtos (getvar "perimeter")))
 (command ".erase" ent ent1 "")
 (alert (strcat "diem vua pick chia pline thanh 2 doan\n\nTu dau den diem pick: " l "\n\nTu diem pick den cuoi: " l1))
 (princ)
)

Bác Hoành ơi giúp em thêm một đoạn líp ghi kết quả vừa tra được ra màn hình được khônng ví dụ khi pick vào một điểm bất kỳ sẽ ghi ra màn hình " từ đầu đến điẻm pick là 350.53m" hoặc đơn giản chỉ ghi " 350.53" cũng được. Cảm ơn bác 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

Lệnh LTR (Lý trình) dưới đây sẽ giúp bạn:

(defun c:ltr()  (setq    ent (car (entsel "\nVao pline: "))    p   (getpoint "\nVao diem xac dinh ly trinh: ")  ) (command ".copy" ent "" "0,0,0" "@")  (setq ent (entlast))  (command ".break" ent p "@")  (setq ent1 (entlast))  (command ".lengthen" ent "")  (setq l (rtos (getvar "perimeter")))  (command ".lengthen" ent1 "")  (setq l1 (rtos (getvar "perimeter")))  (command ".erase" ent ent1 "")  (alert (strcat "diem vua pick chia pline thanh 2 doan\n\nTu dau den diem pick: " l "\n\nTu diem pick den cuoi: " l1))  (princ))

"

Cái này sẽ hoàn thiện hơn nều bác Hoanh sửa lại pick được chiều dài ra text!

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


×