Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
10 replies to this topic

#1 npkh1981

npkh1981

    biết zoom

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

Đã gửi 12 March 2008 - 10:01 PM

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

#2 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 12 March 2008 - 10:33 PM

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

#3 npkh1981

npkh1981

    biết zoom

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

Đã gửi 12 March 2008 - 10:38 PM

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 đó
  • 0

#4 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 12 March 2008 - 11:37 PM

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

  • 3

#5 sakurayuki

sakurayuki

    biết vẽ line

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

Đã gửi 12 March 2008 - 11:50 PM

Bác Nguyen Hoanh Pro quá <_<
  • 0
Cảm ơn đời mỗi sớm mai thức dậy
Cho ta thêm một ngày để yêu thương

--------------------------------------
Luôn luôn lắng nghe lâu lâu mới hiểu!!!

#6 npkh1981

npkh1981

    biết zoom

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

Đã gửi 13 March 2008 - 09:02 PM

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

#7 duongthanh85

duongthanh85

    biết vẽ pline

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

Đã gửi 31 March 2008 - 09:55 PM

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?
  • 0
Dương Đình Thành


EDI.com.vn
Mobile : 0903.269.830
duongdinhthanh@edi.com.vn



Thiết kế thi công: Trạm biến áp, đường dây, cáp ngầm, hạ ngầm đường dây, điện tòa nhà, hệ điện thông minh ...

#8 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 31 March 2008 - 10:24 PM

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.c...download-1.html
  • 0

#9 kegiaumat

kegiaumat

    biết vẽ circle

  • Members
  • PipPip
  • 39 Bài viết
Điểm đánh giá: -2 (bình thường)

Đã gửi 12 March 2010 - 06:25 PM

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

#10 xuangiangtedi

xuangiangtedi

    biết vẽ line

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

Đã gửi 13 March 2010 - 07:50 AM

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

#11 ngocthach132

ngocthach132

    Chưa sử dụng CAD

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

Đã gửi 29 November 2011 - 05:44 PM

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