Đến nội dung


Hình ảnh
- - - - -

[YÊU CẦU] Lisp đo tổng khoảng cách AB + CD nằm trên 2 đường Pline khác nhau


  • Please log in to reply
23 replies to this topic

#1 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 21 May 2012 - 01:02 AM

xem file đính kèmhttp://www.cadviet.c...g_chieu_dai.dwg
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 21 May 2012 - 01:16 AM

xem file đính kèmhttp://www.cadviet.c...g_chieu_dai.dwg



CHưa đến mức VIP vậy chứ ???


Nội dung đúng theo quy định post bài thì có gì là sai.
Ngắn gọn mà xúc tích

Không phải thái độ thế đâu nha.


Mình muốn tốt cho bạn thôi. Đúng nhưng phải đủ. Ai nuôi cơm những người ngồi chờ bạn quăng file lên (theo đúng nghĩa đen nhé), hì hục down về rồi viết cho bạn không ? Phần diễn đạt ý tưởng, đầu vào đầu ra của bạn đâu ? Bạn đang đi NHỜ chứ có phải RA LỆNH đâu. Một câu nhờ cũng không có.
Cũng rất hi vọng có người nhiệt tình giúp bạn, nhưng với văn phong thế này thì hơi khó đây

Mình để topic đến 8h30p ngày mai, hoặc bạn thêm thông tin hoặc mình lại thành lao công, mong bạn thông cảm nhé :)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 21 May 2012 - 02:57 AM

Nội quy post bài :
+ Nếu là yêu cầu viết lisp mới : Thêm tiền tố [Yêu cầu]. VD: "[Yêu cầu] Lisp tính diện tích các hình elip", ( chứ không phải . " [Yêu cầu] Nhờ các bạn viết hộ mình cái lisp tính diện tích các hình elip")
Quan điểm nhờ vả của bạn hết sức lỗi thời nếu không nói là quan liêu. Tại sao phần ít số người cứ nghĩ rằng : cái gì mà nó khó, mình không làm được thì có lẽ nên đi nhờ người khác làm vậy. Sao không hiểu theo cái cách của phần đa số người : coi đó là một bài toán để mọi người cùng giải, khó thì giúp nhau cùng làm, "nhờ" nhau thì khó mấy mà chẳng xong.
Bạn nói : "Ai nuôi cơm những người ngồi chờ bạn quăng file lên" , từ quăng = từ upload phải không ạ. Xin lỗi , tôi cũng có một phần nhỏ trong việc duy trì diễn đàn này, bằng cách nào ư, tôi đoán bạn hiểu.
Bạn nói "hì hục Down" nhầm. Diễn đàn đâu có cho phép Upload lên đến 100Mb đâu mà phải hì hục..

- Nếu yêu cầu Lisp thì phải trình bày cụ thể thao tác mong muốn, hình ảnh minh họa, file cad thể hiện trạng thái trước và sau khi dùng lisp
Ngay phần mở đầu topic của mình, nội dung câu hỏi đã thể hiện rất rõ, hay phải diễn đạt thế này :" Nhờ các bạn làm hộ mình một cái Lisp như sau: Có 4 điểm A, B, C, D, tính tổng khoảng cách của 2 đoạn AB + CD, mình đã loay hoay tim trên diễn đàn mấy cái lisp đo khoảng cách, lisp tính tổng ,nhưng không đúng với ý bài toán của mình. Rất mong các bạn trả lời sớm hộ mình, vì mình đang rất cần. Mình cảm ơn các bạn rất nhiều. " ....
Hơn nữa file CAD mình upload lên rất nhẹ, nội dung thì mình đã trình bày sẵn ở trong file CAD đó và có hình ảnh minh họa. Bạn tải về rồi góp ý nốt cho mình nha.
  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 21 May 2012 - 07:03 AM

Nội quy post bài :
+ Nếu là yêu cầu viết lisp mới : Thêm tiền tố [Yêu cầu]. VD: "[Yêu cầu] Lisp tính diện tích các hình elip", ( chứ không phải . " [Yêu cầu] Nhờ các bạn viết hộ mình cái lisp tính diện tích các hình elip")
Quan điểm nhờ vả của bạn hết sức lỗi thời nếu không nói là quan liêu. Tại sao phần ít số người cứ nghĩ rằng : cái gì mà nó khó, mình không làm được thì có lẽ nên đi nhờ người khác làm vậy. Sao không hiểu theo cái cách của phần đa số người : coi đó là một bài toán để mọi người cùng giải, khó thì giúp nhau cùng làm, "nhờ" nhau thì khó mấy mà chẳng xong.
Bạn nói : "Ai nuôi cơm những người ngồi chờ bạn quăng file lên" , từ quăng = từ upload phải không ạ. Xin lỗi , tôi cũng có một phần nhỏ trong việc duy trì diễn đàn này, bằng cách nào ư, tôi đoán bạn hiểu.
Bạn nói "hì hục Down" nhầm. Diễn đàn đâu có cho phép Upload lên đến 100Mb đâu mà phải hì hục..

- Nếu yêu cầu Lisp thì phải trình bày cụ thể thao tác mong muốn, hình ảnh minh họa, file cad thể hiện trạng thái trước và sau khi dùng lisp
Ngay phần mở đầu topic của mình, nội dung câu hỏi đã thể hiện rất rõ, hay phải diễn đạt thế này :" Nhờ các bạn làm hộ mình một cái Lisp như sau: Có 4 điểm A, B, C, D, tính tổng khoảng cách của 2 đoạn AB + CD, mình đã loay hoay tim trên diễn đàn mấy cái lisp đo khoảng cách, lisp tính tổng ,nhưng không đúng với ý bài toán của mình. Rất mong các bạn trả lời sớm hộ mình, vì mình đang rất cần. Mình cảm ơn các bạn rất nhiều. " ....
Hơn nữa file CAD mình upload lên rất nhẹ, nội dung thì mình đã trình bày sẵn ở trong file CAD đó và có hình ảnh minh họa. Bạn tải về rồi góp ý nốt cho mình nha.

Ái dà! Bạn đưa ra 1 ví dụ màu hồng tôi thấy rất phù hợp. Và phải nên thế bạn ạ!
Bạn đã lập topic đúng, gọn gàng, nhưng chí ít trong phần nội dung bạn cũng nên nói vài điều về y/c của mình, còn file minh hoạ thì sẽ chi tiết hơn nữa. Thế là ổn.
Và tôi nghĩ ý của mod cũng chỉ mong có thế thôi.
Yêu cầu của bạn thì không khó, nhưng còn thiếu ý, đó là: khoảng cách này là khoảng cách từng cặp điểm hay khoảng cách dọc theo pline? Vì pline nói chung là 1 curve nên có thể cong.
Mong bạn hiểu để chúng ta cùng nhau xây dựng diễn đàn ngày một tốt hơn.
  • 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 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 21 May 2012 - 11:02 AM

Khoảng cách từng cặp điểm bạn ạ. là 1 đoạn thẳng mà
  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 21 May 2012 - 11:15 AM

Khoảng cách từng cặp điểm bạn ạ. là 1 đoạn thẳng mà

Nếu là đoạn thẳng thì khái niệm nằm trên Pline đâu có ý nghĩa nhỉ? Chỉ là tổng khoảng cách giữa 2 cặp điểm bất kỳ được chọn mà thôi, phải không?
  • 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.


#7 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 21 May 2012 - 11:49 AM

Khoảng cách từng cặp điểm bạn ạ. là 1 đoạn thẳng mà

Hề hề hề,
Xin lỗi bạn nếu như bạn phật ý. Thế nhưng vẫn phải góp ý rằng, cho dù bạn đã post tới 3 bài về cái yêu cầu của bạn , nhưng nó thật sự vẫn chưa rõ ràng.
Bạn nên nhớ rằng, bài toán là do bạn đặt ra, chỉ có bạn mới là người hiểu rõ nhất về nó. còn những người khác đều chỉ là đoán qua các dữ kiện bạn đã đưa ra chứ không thể hiểu như chính bạn cần.
Mặc dù nội dung không quá khó nhưng để đúng ý bạn cần thì còn cần nhiều hơn những gì bạn đã post bạn ạ.
Cái hình mà bạn gửi lên chả thể hiện hết những điều bạn cần đâu,
Tỷ như bạn nói :
Lisp đo tổng khoảng cách AB + CD nằm trên 2 đường Pline khác nhau

Nhưng trên hình vẽ lại là:
Tính tổng chiều dài hai đoạn thẳng AB, DE khi biết 4 điểm cho trước đó (AB, DE thuộc đường pline)
Chỉ hai cái này đã thầy nó mâu thuẫn rồi bạn ạ.
Bạn hãy giải thích thêm là 4điểm cho trước đó được bạn lấy ra làm sao, theo phương pháp pick điểm trên bản vẽ hay theo một list các điểm mà bạn đã có. Thứ tự chọn các điểm ấy ra sao, A,B,D,E hay A,D,B,E hay .....
A và B cũng như D và E có phải là hai đỉnh liên tiếp của pline hay nó là tùy ý bạn muốn trên pline. Nên nhớ rằng pline khác với line đấy bạn ạ.
AB và DE thuộc cùng một pline hay nó thuộc hai pline khác nhau như bạn đã vẽ???
........
Túm lại là bạn chớ có tự ái vì những điều đã được nhắc nhở. Bài toán bạn đưa ra chả phải là quá khó như bạn nghĩ đâu, chỉ là bạn chưa hiểu rõ chính cái bạn cần mà thôi. Do vậy các dữ kiện bạn đưa ra là chưa đủ để có thể làm một cái lisp đúng theo ý của bạn. Rất có khả năng sẽ có ai đó làm theo các dữ liệu đó rồi post lên, song nó lại hoàn tòan chả giống cái bạn cần và thế là lại mất công hì hục sửa bạn ạ.

Đành rằng ngắn gọn, xúc tích là tốt, Nhưng mà xúc tích tới độ không thể hiểu đúng cái bạn cần thì lại hoàn toàn không tốt một tí nào, nếu như không nói là còn gây họa đấy bạn ạ.
Cũng đành rằng giúp nhau giải quyết những vấn đề khó khăn trong công việc là tốt nhưng mà cái sự tôn trọng lẫn nhau cũng không phải là không tốt. Đừng bao giờ nghĩ rằng công việc của bạn là công việc chung của tất cả mọi người trên diễn đàn mà ai cũng phải có trách nhiệm giúp đỡ. Diễn đàn này có hàng trăm ngàn thành viên và các thành viên thì chả phải ai cũng làm cái nghề của bạn . Vì thế mà không phải tất cả mọi người đều có thể hiểu những cái bạn cần nếu như bạn không chịu trình bày cho rõ ràng và mạch lạc vấn đề.

Mong bạn hãy tự rút kinh nghiệm cho chính bạn khi tham gia diễn đàn cùng mọi người..
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#8 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 21 May 2012 - 03:09 PM

Ý mình thế này :
Mình chỉ quan tâm đến tổng khoảng cách của AB + DE như trên hình.
Các bạn nhìn vào hình nhé:
Cách mình làm thông thường khi chưa có lisp : Dùng lệnh " di "đo khoảng cách AB, ghi nhớ kết quả vào một chỗ nào đấy. DE cũng tương tự như thế, sau đó cộng chúng lại với nhau thì được tổng AB +DE
  • 0

#9 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 21 May 2012 - 03:13 PM

PLINE của bạn để làm gì???
Nói gọn: tính tổng khoảng cách giữa 2 cặp điểm được chọn cho nó lẹ đi!
  • 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.


#10 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 21 May 2012 - 03:24 PM

PLINE của bạn để làm gì???
Nói gọn: tính tổng khoảng cách giữa 2 cặp điểm được chọn cho nó lẹ đi!


:) Thế mới khó lường. Ngắn gọn và xúc tích :D Trong khi đáng ra chỉ cần 1 dòng miêu tả, cũng chẳng cần file bạn ạ


(defun c:test() (+ (distance (setq a (getpoint "\nA :")) (getpoint a "\nB:"))(distance (setq c(getpoint "\nC:")) (getpoint c "\nD:"))))

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#11 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 21 May 2012 - 03:26 PM

Ý mình thế này :
Mình chỉ quan tâm đến tổng khoảng cách của AB + DE như trên hình.
Các bạn nhìn vào hình nhé:
Cách mình làm thông thường khi chưa có lisp : Dùng lệnh " di "đo khoảng cách AB, ghi nhớ kết quả vào một chỗ nào đấy. DE cũng tương tự như thế, sau đó cộng chúng lại với nhau thì được tổng AB +DE

Bạn thử xem nhé :

(defun c:abde(/ p s)
(setq s 0)
(while (setq p (entsel "\n Pick vao doan Pline :"))
(setq s (+ s (vlax-curve-getdistatparam (car p) (fix (1+ (vlax-curve-getparamatpoint (car p) (vlax-curve-getClosestPointTo (car p) (cadr p))))))
(- (vlax-curve-getdistatparam (car p) (fix (vlax-curve-getparamatpoint (car p) (vlax-curve-getClosestPointTo (car p) (cadr p))))))
)
)
(princ s)
)
(alert (strcat "Tong L = " (rtos s 2 3)))
(princ s)
)
Thực ra, chỉ cần 2 cú pick là tính là ra rồi :lol:
  • 1

#12 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 21 May 2012 - 03:33 PM


:) Thế mới khó lường. Ngắn gọn và xúc tích :D Trong khi đáng ra chỉ cần 1 dòng miêu tả, cũng chẳng cần file bạn ạ


(defun c:test() (+ (distance (setq a (getpoint "\nA :")) (getpoint a "\nB:"))(distance (setq c(getpoint "\nC:")) (getpoint c "\nD:"))))

Đúng ý em rồi đấy ! Thanks nhiều ! :P
  • 0

#13 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 21 May 2012 - 03:42 PM

PLINE của bạn để làm gì???
Nói gọn: tính tổng khoảng cách giữa 2 cặp điểm được chọn cho nó lẹ đi!

Thực ra em có cái Lisp đo khoảng cách tổng, nhưng đối tượng là cả 1 pline nhiều đoạn
  • 0

#14 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 21 May 2012 - 03:48 PM

Bạn thử xem nhé :


(defun c:abde(/ p s)
(setq s 0)
(while (setq p (entsel "\n Pick vao doan Pline :"))
(setq s (+ s (vlax-curve-getdistatparam (car p) (fix (1+ (vlax-curve-getparamatpoint (car p) (vlax-curve-getClosestPointTo (car p) (cadr p))))))
(- (vlax-curve-getdistatparam (car p) (fix (vlax-curve-getparamatpoint (car p) (vlax-curve-getClosestPointTo (car p) (cadr p))))))
)
)
(princ s)
)
(alert (strcat "Tong L = " (rtos s 2 3)))
(princ s)
)
Thực ra, chỉ cần 2 cú pick là tính là ra rồi :lol:

Dùng được bạn ạ. Thanks nha
  • 0

#15 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 21 May 2012 - 04:00 PM


:) Thế mới khó lường. Ngắn gọn và xúc tích :D Trong khi đáng ra chỉ cần 1 dòng miêu tả, cũng chẳng cần file bạn ạ


(defun c:test() (+ (distance (setq a (getpoint "\nA :")) (getpoint a "\nB:"))(distance (setq c(getpoint "\nC:")) (getpoint c "\nD:"))))


Đúng ý em rồi đấy ! Thanks nhiều ! :P



Bác bổ sung dùm em t/hợp 2 điểm pick thuộc 2 đọan thẳng khác nhau (PLINE gấp khúc) hay PLINE có Arc ạ
Cám ơn bác nhiều.
yeah yeah! Trời nóng quá! làm đỡ cốc bia nào
Xin lỗi Nếu em nói hơi bị "súc _ích" nhé.


......
Thực ra, chỉ cần 2 cú pick là tính là ra rồi :lol:

Dùng được bạn ạ. nhưng không bắt điểm đựoc! :lol:

Thực ra chỉ cần 1 cú pick là KO rồi. :angry2:
  • 0

#16 vantuan18nd

vantuan18nd

    biết vẽ rectang

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

Đã gửi 21 May 2012 - 04:03 PM

em vẫn bắt điểm bình thường mà . 2 Lisp dùng ok cả
  • 0

#17 quocloc213

quocloc213

    biết pan

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

Đã gửi 02 November 2012 - 09:16 AM


:) Thế mới khó lường. Ngắn gọn và xúc tích :D Trong khi đáng ra chỉ cần 1 dòng miêu tả, cũng chẳng cần file bạn ạ


(defun c:test() (+ (distance (setq a (getpoint "\nA :")) (getpoint a "\nB:"))(distance (setq c(getpoint "\nC:")) (getpoint c "\nD:"))))

bạn ơi! Có thể giúp mình Lisp này được không?
Mình có 1 PL cho trước bất kì. Giờ mình muốn đo khoảng cách từng đoạn nhỏ trên PL đó bằng cách pick điểm (khoảng cách thực theo PL chứa khoảng phải đo bằng dimension), rồi xuất giá trị, sau đó xuất ra file txt. (Nếu có Lisp đó thì sẽ giúp mình làm nhanh hơn, thay vì phải break nó ra từng đoạn nhỏ, dùng lisp tg để tính tổng chiều dài). Thanks bạn!
  • 1

#18 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 02 November 2012 - 10:17 AM

Làm được, với điều kiện máy bạn phải hỗ trợ vl-load-com :) Chứ lại giống phần MAC OS của bạn thì mình k làm được ^^
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#19 trangnhung

trangnhung

    biết vẽ pline

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

Đã gửi 16 January 2013 - 03:29 PM

Bác Ketxu ơi. Em thử lisp test của bác thấy rất hay. Bác có thể sửa lisp để lisp có thể tính tổng ABDE rồi thay thế cho 1 text có trước được không ? Hix nếu đc bác viết hộ em 1 lisp chỉ tính cho 1 đoạn thẳng AB được không. Mong hồi âm của bác. Thân !
  • 0

#20 quansla

quansla

    biết lệnh xclip

  • Members
  • PipPipPipPipPipPipPip
  • 643 Bài viết
Điểm đánh giá: 224 (khá)

Đã gửi 16 January 2013 - 09:30 PM


(defun c:tinhtong (/ L p1 p2 ll s1 olay)
(vl-load-com)
(setq olay (getvar "clayer"))
(setvar "clayer" "defpoints")
(setvar "cmdecho" 0)
(setq p1 (getpoint "chon diem")
L 0
ll (list p1))
(while (setq p2 (getpoint p1 "chon diem"))
(setq L ( + L (distance p1 p2)))
(setq ll (append ll (list p2)))
(setq p1 p2))
(acet-pline-make (list ll))
L
(entmod(subst (cons 1 (rtos L 2 2)) (assoc 1 (setq dt(entget(car(entsel "chontext"))))) dt))
(initget 1 "Y N")
(setq s1 (strcase(getkword "Co Xoa bo PL vua tao[Y,N]")))
(if (or (= s1 "")(= s1 "Y")) (entdel (entlast)))
(setvar "clayer" olay)
(setvar "cmdecho" 1)
)
Bạn có thể thử
  • 1