Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
6 replies to this topic

#1 dragontalon0802

dragontalon0802

    biết lệnh erase

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

Đã gửi 15 December 2011 - 02:07 PM

Như hình vẽ sau:
Hình đã gửi
-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à.
  • 0

#2 Chiron

Chiron

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 90 (tàm tạm)

Đã gửi 15 December 2011 - 03:47 PM

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

#3 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 15 December 2011 - 04:56 PM

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

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


#4 dragontalon0802

dragontalon0802

    biết lệnh erase

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

Đã gửi 16 December 2011 - 11:39 AM

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

#5 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 16 December 2011 - 12:22 PM

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.
  • 3
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#6 dragontalon0802

dragontalon0802

    biết lệnh erase

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

Đã gửi 17 December 2011 - 02:09 PM

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

#7 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 17 December 2011 - 02:15 PM

Hãy Like This !
  • 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