Đến nội dung


Hình ảnh

XIN HỎI VỀ LỆNH FILLET


  • Please log in to reply
34 replies to this topic

#21 nguyencanh160890

nguyencanh160890

    Edu level: ao5

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

Đã gửi 01 January 2013 - 04:32 PM

Nghĩa là bạn muốn nhập bán kính chỉ 1 lần, rồi lần sau thì không cần nhập bán kính nữa? Vậy thì dùng cái này.
Chú ý: khi cần thay đổi bán kính thì bạn phải load lisp lại nhé.


(setq bk nil)
(defun C:HA1 (/ e1 e2 p2 l e ss)
(setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "undo" "be")
(if (not bk) (setq bk (getreal (strcat "\nNhap ban kinh:"))))
(command "fillet" "R" bk)
(while (null (setq e1 (entsel "\nChon object 1: "))))
(while (null (setq e2 (entsel "\nChon object 2: "))))
(setq p2 (cadr e2))
(setq e2 (car e2))
(if
(and
(= (cdr (assoc 0 (entget (car e1)))) "LWPOLYLINE")
(= (cdr (assoc 0 (entget e2))) "LWPOLYLINE"))
(progn
(setq l (entlast))
(command "explode" e2)
(setq ss (ssadd))
(ssadd (setq e (entnext l)) ss)
(while (setq e (entnext e))
(ssadd e ss))
(command "fillet" e1 (nentselp p2))
(command "pedit" e1 "_J" ss "" "")
(command "erase" ss ""))
(command "fillet" e1 (nentselp p2)))
(setvar "cmdecho" cmd) (command "undo" "e") (princ))




HÌ HÌ , câu này Chú ý: khi cần thay đổi bán kính thì bạn phải load lisp lại nhé. Nghĩa là khi em muốn thay đổi bán kính lại load lại lisp, trong bài có 3 cái bán kính, em phải load 3 lần ạ?
  • 0

#22 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 01 January 2013 - 04:39 PM

1). Bạn muốn chỉ nhập bán kính một lần mà dùng được cho những lần sau, đúng không? Nếu vậy thì cái bán kính này nó chết cứng đó => muốn thay bán kính thì load lại lisp là lẽ đương nhiên.
2). Còn nếu như bạn muốn mỗi lần đều có thể thay đổi bán kính thì bạn dùng lisp thứ 1 (tôi đã sửa thêm, bạn down lại) => phải nhập bán kính mỗi lần.
3). Nếu cả 2 trường hợp trên không đúng thì bạn nên cho 1 ví dụ rõ 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.


#23 nguyencanh160890

nguyencanh160890

    Edu level: ao5

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

Đã gửi 01 January 2013 - 04:42 PM

1). Bạn muốn chỉ nhập bán kính một lần mà dùng được cho những lần sau, đúng không? Nếu vậy thì cái bán kính này nó chết cứng đó => muốn thay bán kính thì load lại lisp là lẽ đương nhiên.
2). Còn nếu như bạn muốn mỗi lần đều có thể thay đổi bán kính thì bạn dùng lisp thứ 1 (tôi đã sửa thêm, bạn down lại) => phải nhập bán kính mỗi lần.
3). Nếu cả 2 trường hợp trên không đúng thì bạn nên cho 1 ví dụ rõ hơn.



Vâng, em cảm ơn Anh rất nhiều. Em nghĩ rồi nhập lại bán kính là nhanh nhất, chứ kiểu load lisp sẽ lâu hơn. Một lần nữa chân thành cảm ơn Anh. Chúc Anh và gia đình sức khỏe, thành công, may mắn.
Em sẽ tích cực tham gia diễn đàn học hỏi, có gì mong Anh chỉ dẫn tiếp.
  • 0

#24 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 01 January 2013 - 04:53 PM



Vâng, em cảm ơn Anh rất nhiều. Em nghĩ rồi nhập lại bán kính là nhanh nhất, chứ kiểu load lisp sẽ lâu hơn. Một lần nữa chân thành cảm ơn Anh. Chúc Anh và gia đình sức khỏe, thành công, may mắn.
Em sẽ tích cực tham gia diễn đàn học hỏi, có gì mong Anh chỉ dẫn tiếp.

Vụ này thiết nghĩ đâu cần Lisp đâu bạn
Cứ sử dụng lệnh Fillet -> Muốn thay R thì nhập R ở dòng
: Select first object or [Undo/Polyline/Radius/Trim/Multiple]: r
-> Rồi nhập bán kính

Current settings: Mode = TRIM, Radius = 200.0000 -> Giá trị này chính là Radius bán kính cần bo

Còn muốn chấp nhận bán kính đã khai trước đó thì xem giá trị bán kính cần bo là bao nhiêu
-> Chọn đối tượng cần Fillet là xong


"Giết con gà đâu cần tới dao mổ trâu" :)
  • 1

#25 nguyencanh160890

nguyencanh160890

    Edu level: ao5

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

Đã gửi 02 January 2013 - 08:19 AM

Vụ này thiết nghĩ đâu cần Lisp đâu bạn
Cứ sử dụng lệnh Fillet -> Muốn thay R thì nhập R ở dòng
: Select first object or [Undo/Polyline/Radius/Trim/Multiple]: r
-> Rồi nhập bán kính

Current settings: Mode = TRIM, Radius = 200.0000 -> Giá trị này chính là Radius bán kính cần bo

Còn muốn chấp nhận bán kính đã khai trước đó thì xem giá trị bán kính cần bo là bao nhiêu
-> Chọn đối tượng cần Fillet là xong


"Giết con gà đâu cần tới dao mổ trâu" :)



hihi, cái em cần là không muốn nhập lại bán kính R lần thứ 2 đó Bác, Bác chưa hiểu ý của em nên mới giải thích vậy.
  • 0

#26 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 02 January 2013 - 09:07 AM

hihi, cái em cần là không muốn nhập lại bán kính R lần thứ 2 đó Bác, Bác chưa hiểu ý của em nên mới giải thích vậy.

Bạn không muốn nhập lại, nhưng nếu có bán kính R lần thứ 2 thì bạn cũng phải chọn lại thôi. Bởi cái R2 nó khác với cái R đã đặt trước đó
Nếu nhập lại hay chọn lại thời gian cũng như nhau cả, có nhanh hơn tí nào đâu hè?
  • 0

#27 nguyencanh160890

nguyencanh160890

    Edu level: ao5

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

Đã gửi 02 January 2013 - 09:37 AM

Bạn không muốn nhập lại, nhưng nếu có bán kính R lần thứ 2 thì bạn cũng phải chọn lại thôi. Bởi cái R2 nó khác với cái R đã đặt trước đó
Nếu nhập lại hay chọn lại thời gian cũng như nhau cả, có nhanh hơn tí nào đâu hè?


Vâng, thì vậy đó Bác, hihi, tóm lại là nhập lại bán kính.hihi cảm ơn Bác góp ý cho em.
  • 0

#28 leem

leem

    biết pan

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

Đã gửi 02 January 2013 - 09:39 AM

Trường hợp này như chúng ta đang lạm dụng nhỉ!
Thật ra - cho dù bạn tương tác bằng cách nào, thì các bước thủ tục vẫn như nhau thui
1. gọi lệnh
2. dữ kiện đầu vào
3. thực thi
Có thể rằng, bạn chỉ cần dùng giới hạn một số bán kính nằm trong list (300<1> ; 200<2> ; 100<1>). Nếu như vậy, thay vì phải nhập 300 thì bạn chỉ cần nhập 1 ; nhưng như vậy cũng đâu nhanh hơn nhiều lắm!!!
Còn nếu mỗi loại dây bo bằng một bán kính nhất định - bạn nên phân thành 3 layer riêng, sau đó lọc từng layer và tự động bo với bán kính xác định căn cứ theo tên layer - trường hợp này lisp có thể hổ trợ bạn tốt hơn - mình nghĩ vậy.

@ Chúc các anh chị em một năm mới nhiều và thật nhiều sức khỏe nhé!
  • 0

#29 nguyencanh160890

nguyencanh160890

    Edu level: ao5

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

Đã gửi 02 January 2013 - 10:09 AM

Trường hợp này như chúng ta đang lạm dụng nhỉ!
Thật ra - cho dù bạn tương tác bằng cách nào, thì các bước thủ tục vẫn như nhau thui
1. gọi lệnh
2. dữ kiện đầu vào
3. thực thi
Có thể rằng, bạn chỉ cần dùng giới hạn một số bán kính nằm trong list (300<1> ; 200<2> ; 100<1>). Nếu như vậy, thay vì phải nhập 300 thì bạn chỉ cần nhập 1 ; nhưng như vậy cũng đâu nhanh hơn nhiều lắm!!!
Còn nếu mỗi loại dây bo bằng một bán kính nhất định - bạn nên phân thành 3 layer riêng, sau đó lọc từng layer và tự động bo với bán kính xác định căn cứ theo tên layer - trường hợp này lisp có thể hổ trợ bạn tốt hơn - mình nghĩ vậy.

@ Chúc các anh chị em một năm mới nhiều và thật nhiều sức khỏe nhé!



Đó cũng là một cách, nhưng cách này không khả thi đâu ạ. Nếu mà mình phải thêm layer, sau đó chọn theo từng layer rắc rườm rà hơn, xem ra nhập lệnh lần đầu, sau đó khi nào bo bán kính phần nào thì ta nhập thôi.
  • 0

#30 leem

leem

    biết pan

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

Đã gửi 02 January 2013 - 01:32 PM

Không! Rắc rối rườm rà gì đâu - bạn chủ động phân từng layer trước mà!
Từ đó viết LISP bo cho từng layer riêng theo từng bán kính cụ thể - cái này tự động lọc layer - bạn đâu cần bận tâm?! Tự động mà!
  • 0

#31 nguyencanh160890

nguyencanh160890

    Edu level: ao5

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

Đã gửi 02 January 2013 - 01:44 PM

Không! Rắc rối rườm rà gì đâu - bạn chủ động phân từng layer trước mà!
Từ đó viết LISP bo cho từng layer riêng theo từng bán kính cụ thể - cái này tự động lọc layer - bạn đâu cần bận tâm?! Tự động mà!


Anh có thể làm ví dụ cho em 1 bản vẽ trong đó theo ý Anh nói được không? em sẽ save về và xem để tham khảo.
  • 0

#32 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2882 Bài viết
Điểm đánh giá: 1556 (rất tốt)

Đã gửi 02 January 2013 - 01:55 PM

Không nên lạm dụng lisp:

"Giết con gà đâu cần tới dao mổ trâu" :)


  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#33 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 02 January 2013 - 02:01 PM

Không nên lạm dụng lisp:



Lần thứ 1 bạn phải nhập tên, nhưng lần thứ 2, 3,... liên tiếp thì bạn chỉ cần nhấn enter thôi mà. Nếu muốn chơi như bạn thì dùng lisp thôi, nhưng chắc gì nhanh hơn 1 cú enter?


  • 1

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


#34 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2882 Bài viết
Điểm đánh giá: 1556 (rất tốt)

Đã gửi 02 January 2013 - 02:05 PM

Quan điểm của em là vẫn không nên lạm dụng lisp khi dùng lệnh Fillet!
  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#35 w1nDream

w1nDream

    biết lệnh ddedit

  • Members
  • PipPipPipPip
  • 293 Bài viết
Điểm đánh giá: 73 (tàm tạm)

Đã gửi 02 January 2013 - 02:14 PM

Theo mình thì bạn ấy hay dùng các R300, R200, R100..
Nên các anh có thể viết cho bạn ấy 1 lisp có các lệnh:
R1: Đóng bán kính 100
R2: Đóng bán kính 200
R3: Đóng bán kính 300

Cả 3 chỉ cần chọn 2 đối tượng cần filet nữa là ok ^_^
  • 0
__Tâm tựa lưu thủY__
Vi nhân nan