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

[Yêu cầu] lisp fillet,copy,champer, đo diện tích.

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

Như hình vẽ sau:

3.jpg

-copy tức là nhập lệnh c6, sau đó chọn đối tượng, rồi chọn phương. Nó giống như lệnh copy thông thường, chỉ khác mỗi chỗ là không phải nhập số vào. Tương tự như cái lệnh offset này

(defun c:o6 () (command "offset" "6000"))

fillet và champer(d1=d2=6000) cũng tương tự, chỉ cần 2 đối tượng với nhau, giống lệnh gốc của nó chỉ đơn giản là không phải nhập bán kính thôi. Mình vẽ quy hoạch nên rất hay phải vẽ đường và fillet bán kính cua, nếu cứ nhập lệnh và nhập số thì rất lâu nên muốn giảm bớt thời gian thôi. Thanks cả 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

Mình thật không hiểu, lệnh fillet chỉ nhập bán kính có 1 lần thôi mà? Còn copy như bạn thì dùng offset cũng chỉ nhập distance có 1 lần? Bạn có thể mô tả rõ hơn không? Thế này không ai giúp bạn được đâ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

Như hình vẽ sau:

-copy tức là nhập lệnh c6, sau đó chọn đối tượng, rồi chọn phương. Nó giống như lệnh copy thông thường, chỉ khác mỗi chỗ là không phải nhập số vào. Tương tự như cái lệnh offset này

fillet và champer(d1=d2=6000) cũng tương tự, chỉ cần 2 đối tượng với nhau, giống lệnh gốc của nó chỉ đơn giản là không phải nhập bán kính thôi. Mình vẽ quy hoạch nên rất hay phải vẽ đường và fillet bán kính cua, nếu cứ nhập lệnh và nhập số thì rất lâu nên muốn giảm bớt thời gian thôi. Thanks cả nhà.

 

Nói chung là bạn hơi bị... làm biếng! Fillet chỉ nhập R có 1 lần, còn Chamfer chỉ nhập d1 và d2 cũng chỉ 1 lần rồi sau đó mặc định. Nhưng thôi kệ, code cho bạn đây. Lần sau y/c cái gì cho hoành tráng luôn (nhưng hoành tráng vừa vừa kẻo botay.com đó nghe).

;Doan Van Ha - CADViet.com - Ngay 15-12-2011
(defun C:C6( / ss p1 p2)
(BAT_DAU)
(acet-sysvar-set (list "osmode" 0 "cmdecho" 0))
(princ "\nChon cac doi tuong de Copy...")
(setq ss (ssget))
(setq p1 (acet-geom-midpoint (car (LM:SSBoundingBox ss)) (cadr (LM:SSBoundingBox ss))))
(setq p2 (getpoint p1 "\nChon diem lam huong de Copy: "))
(command "copy" ss "" p1 (polar p1 (angle p1 p2) 6000))
(KET_THUC)
(princ))
;-----
(defun C:F6( / ent1 ent2)
(BAT_DAU)
(acet-sysvar-set (list "osmode" 0 "cmdecho" 0))
(setq ent1 (car (entsel "\nChon doi tuong thu 1 de Fillet: ")))
(setq ent2 (car (entsel "\nChon doi tuong thu 2 de Fillet: ")))
(command "Fillet" "t" "t" "r" 6000)
(command "Fillet" ent1 ent2)
(KET_THUC)
(princ))
;-----
(defun C:CH6( / ent1 ent2)
(BAT_DAU)
(acet-sysvar-set (list "osmode" 0 "cmdecho" 0))
(setq ent1 (car (entsel "\nChon doi tuong thu 1 de Chamfer: ")))
(setq ent2 (car (entsel "\nChon doi tuong thu 2 de Chamfer: ")))
(command "Chamfer" "t" "t" "d" 6000 6000)
(command "Chamfer" ent1 ent2)
(KET_THUC)
(princ))
;----- Hµm nµy ®Æt ®Çu ch­¬ng tr×nh.
(defun BAT_DAU()
(vl-load-com)
(setq AcDoc (vla-get-activeDocument (vlax-get-acad-object)))
(vla-StartUndoMark AcDoc)
(setq err *error* *error* KHI_LOI))
;----- Hµm nµy ®Æt cuèi ch­¬ng tr×nh.
(defun KET_THUC()
(acet-sysvar-restore)
(vla-EndUndoMark AcDoc)
(setq *error* err))
;----- Hµm nµy xö lý khi cã lçi x·y ra.
(defun KHI_LOI(msg)
(acet-sysvar-restore)
(vla-EndUndoMark AcDoc)
(redraw)
(command "u")
(princ (strcat "\n" msg ", Reset System Variables\n"))
(setq *error* err))
;---
(defun LM:SSBoundingBox ( ss / i l1 l2 ll ur )
(repeat (setq i (sslength ss))
   	(vla-getboundingbox (vlax-ename->vla-object (ssname ss (setq i (1- i)))) 'll 'ur)
   	(setq l1 (cons (vlax-safearray->list ll) l1)
         	l2 (cons (vlax-safearray->list ur) l2)))
(mapcar '(lambda ( a b ) (apply 'mapcar (cons a B))) '(min max) (list l1 l2)))

  • 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

Khổ cái là phải nhiều lần mới đau, mình nhờ các bạn viết 1 cái rồi mình tự chế ra nữa mà. Ví dụ bán kính đường cua nhỏ thì 3m, lớn hơn 6m,12m.... vẽ quy hoạch mấy cái này thay đổi liên tục nên mình phải tự chế ra như f3,f6,f12...

Thanks bạn Doan Van Ha, lệnh ch6 và f6 dùng tốt nhưng mình muốn bạn sửa lại lệnh c6 tý được không? Lệnh c6 khi chọn hướng có thể bắt điểm bất kỳ y như lệnh copy bình thường ấy.

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

Khổ cái là phải nhiều lần mới đau, mình nhờ các bạn viết 1 cái rồi mình tự chế ra nữa mà. Ví dụ bán kính đường cua nhỏ thì 3m, lớn hơn 6m,12m.... vẽ quy hoạch mấy cái này thay đổi liên tục nên mình phải tự chế ra như f3,f6,f12...

Thanks bạn Doan Van Ha, lệnh ch6 và f6 dùng tốt nhưng mình muốn bạn sửa lại lệnh c6 tý được không? Lệnh c6 khi chọn hướng có thể bắt điểm bất kỳ y như lệnh copy bình thường ấy.

Hề hề hề, chả biết có phải là bạn cần cái này hay không, nhưng thú thực là mình không khoái cái thói ỷ lại của bạn. Là một thành viên có hạng của CADviet rồi, bạn cũng đã yêu cầu không ít các vấn đề, và cũng không phải là người không biết gì về lisp. Những yêu cầu đơn giản kiểu này bạn hoàn toàn có đủ khả năng tự làm nếu như bạn thực sự là cần nó và muốn tự làm ra nó. Đằng này bạn hoàn toàn chả có ý gì muốn tự mình làm mà chỉ muốn đi nhờ và ăn sẵn. Như vậy thực là không hay chút nào, và nó chỉ làm bạn trở nên người lợi dụng bạn bè chứ chả thể khá lên được đâu.

Cũng chính vì lý do này nên mặc dầu không quá khó nhưng người muốn giúp bạn sẽ chả bao giờ là nhiều cả. Mình viết cái này có nhẽ chả phải là cho riêng bạn đâu nhưng mong rằng qua cái này bạn sẽ tự hiểu được mình cần gì để mà cố gắng chứ đừng ỷ lại nhé.


(defun c:c6 ()
       (command "copy" (car (entsel "\n Chon doi tuong goc")) "" (setq p1 (getpoint "\n Chon diem goc")) 
                           (setq p2 (polar p1 (angle p1 (getpoint p1 "\n Chon huong copy")) 6000)))
)
(defun c:f6 ()
      (command "fillet" "r" 6000 "fillet" (car (entsel "\n Chon doi tuong thu nhat")) (car (entsel "\n Chon doi tuong thu hai")))
)
(defun c:ch6 ()
     (command "chamfer" "d" 6000 "" "chamfer" (car (entsel "\n Chon doi tuong thu nhat")) (car (entsel "\n chon doi tuong thu hai")))
)

Chúc bạn chóng thành công trong cuộc sống.

  • 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

Hề hề hề, chả biết có phải là bạn cần cái này hay không, nhưng thú thực là mình không khoái cái thói ỷ lại của bạn. Là một thành viên có hạng của CADviet rồi, bạn cũng đã yêu cầu không ít các vấn đề, và cũng không phải là người không biết gì về lisp. Những yêu cầu đơn giản kiểu này bạn hoàn toàn có đủ khả năng tự làm nếu như bạn thực sự là cần nó và muốn tự làm ra nó. Đằng này bạn hoàn toàn chả có ý gì muốn tự mình làm mà chỉ muốn đi nhờ và ăn sẵn. Như vậy thực là không hay chút nào, và nó chỉ làm bạn trở nên người lợi dụng bạn bè chứ chả thể khá lên được đâu.

Cũng chính vì lý do này nên mặc dầu không quá khó nhưng người muốn giúp bạn sẽ chả bao giờ là nhiều cả. Mình viết cái này có nhẽ chả phải là cho riêng bạn đâu nhưng mong rằng qua cái này bạn sẽ tự hiểu được mình cần gì để mà cố gắng chứ đừng ỷ lại nhé.


(defun c:c6 ()
       (command "copy" (car (entsel "\n Chon doi tuong goc")) "" (setq p1 (getpoint "\n Chon diem goc"))
                           (setq p2 (polar p1 (angle p1 (getpoint p1 "\n Chon huong copy")) 6000)))
)
(defun c:f6 ()
  	(command "fillet" "r" 6000 "fillet" (car (entsel "\n Chon doi tuong thu nhat")) (car (entsel "\n Chon doi tuong thu hai")))
)
(defun c:ch6 ()
     (command "chamfer" "d" 6000 "" "chamfer" (car (entsel "\n Chon doi tuong thu nhat")) (car (entsel "\n chon doi tuong thu hai")))
)

Chúc bạn chóng thành công trong cuộc sống.

Cảm ơn bác Thanh Bình đã viết lisp và góp ý. Nhưng thực sự mình không biết về thuật toán lisp và chưa có thời gian tìm hiểu. Nhờ các bạn viết lisp xong mình chỉ biết thay đổi thông số như "f6" và đơn vị như "6000" theo ý mình. Cũng có thể mình yêu cầu một số cái hơi nhỏ nhặt và đôi lúc vi phạm nội quy diễn đàn vì mình ít tham gia và mình không phải là người đam mê ngành lắm. Nhưng trước lúc yêu cầu mình đã cố gắng google nhưng không được. Cảm ơn sự nhiệt tình của các bạn trên diễn đà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

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

×