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

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

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

 

 

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

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

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.

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

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.

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

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?

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

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

  • Vote tăng 1

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

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

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

  • Vote tăng 1

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ì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:

  • Vote tăng 1

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

 

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

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

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

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

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

 

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

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

 

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

  • Vote tăng 1

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à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 ^^

  • Vote tăng 1

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á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 !

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: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ử

  • Vote tăng 1

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ác quansla ơi. em download về dùng thì cad báo lỗi:

Command: tinhtong ; error: AutoCAD variable setting rejected: "clayer"

"defpoints"

Bác xem lại giúp em với. Chân thành cảm ơ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

(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ử

Hề hề hề,

Ngoài lỗi trên lisp của bạn quansla dùng tính tổng khoảng cách chứ không phải độ dài tính theo pline như yêu cầu. Độ dài tinh theo pline không phải lúc nào cũng đúng là khoảng cách giữa hai điểm pick.

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

×