Đến nội dung


Hình ảnh
- - - - -

[Nhờ viết lisp] mirror qua 2 đường thẳng song song!


  • Please log in to reply
20 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 03 April 2011 - 05:01 PM

Hình đã gửi
Như hình trên, mình muốn vẽ cửa đối xứng qua 2 đường thẳng màu đỏ thì phải vẽ thêm đường phụ rồi mirror qua trung điểm của đường ấy. Như vậy khá bất tiện vì cái này mình sử dụng nhiều. Nhờ bro nào viết giúp mình. Thanks :rolleyes:
  • 0

#2 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 03 April 2011 - 06:07 PM

Hình đã gửi
Như hình trên, mình muốn vẽ cửa đối xứng qua 2 đường thẳng màu đỏ thì phải vẽ thêm đường phụ rồi mirror qua trung điểm của đường ấy. Như vậy khá bất tiện vì cái này mình sử dụng nhiều. Nhờ bro nào viết giúp mình. Thanks :rolleyes:

Bạn dùng cái này xem:

(defun C:M2L()
(vl-load-com) (if (not cal) (arxload "geomcal"))
(prompt "\nChon cac doi tuong can Mirror: ")
(setq ss (ssget))
(setq l1 (entsel "\nChon duong Line thu 1: "))
(setq l2 (entsel "\nChon duong Line thu 2: "))
(setq p1d (cdr (assoc 10 (entget (car l1)))))
(setq p1c (cdr (assoc 11 (entget (car l1)))))
(setq p2d (cdr (assoc 10 (entget (car l2)))))
(setq p2c (cdr (assoc 11 (entget (car l2)))))
(setq p3d (cal "plt(p1d,p2d,0.5)"))
(setq p3c (cal "plt(p1c,p2c,0.5)"))
(initget "Y N") (setq xoa (getkword "\nXoa doi tuong cu <NO>: "))
(if (or (= xoa "N") (not xoa))
(command ".mirror" ss "" p3d p3c "N")
(command ".mirror" ss "" p3d p3c "Y")))

  • 3

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


#3 Detailing

Detailing

    biết lệnh imageclip

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

Đã gửi 03 April 2011 - 08:41 PM

Dùng lệnh MIRORR bình thường khi đến đoạn chọn trục đối xứng hold Shift + click phải chuột chọn Miđle between two point chọn 2 điểm đầu của đường đỏ, phần tiếp theo bạn tự làm tiếp nha. viết lisp chi cho mất công
  • 0

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#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 03 April 2011 - 11:14 PM

Bạn dùng cái này xem:
(defun C:M2L()
(vl-load-com) (if (not cal) (arxload "geomcal"))
(prompt "\nChon cac doi tuong can Mirror: ")
(setq ss (ssget))
(setq l1 (entsel "\nChon duong Line thu 1: "))
(setq l2 (entsel "\nChon duong Line thu 2: "))
(setq p1d (cdr (assoc 10 (entget (car l1)))))
(setq p1c (cdr (assoc 11 (entget (car l1)))))
(setq p2d (cdr (assoc 10 (entget (car l2)))))
(setq p2c (cdr (assoc 11 (entget (car l2)))))
(setq p3d (cal "plt(p1d,p2d,0.5)"))
(setq p3c (cal "plt(p1c,p2c,0.5)"))
(initget "Y N") (setq xoa (getkword "\nXoa doi tuong cu <NO>: "))
(if (or (= xoa "N") (not xoa))
(command ".mirror" ss "" p3d p3c "N")
(command ".mirror" ss "" p3d p3c "Y")))

Cảm ơn bạn. Lisp dùng tốt lắm ^^
  • 0

#5 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 03 April 2011 - 11:15 PM

Dùng lệnh MIRORR bình thường khi đến đoạn chọn trục đối xứng hold Shift + click phải chuột chọn Miđle between two point chọn 2 điểm đầu của đường đỏ, phần tiếp theo bạn tự làm tiếp nha. viết lisp chi cho mất công

Do mình dùng cái này khá nhiều nên thích dùng lisp hơn bạn à. Thanks bạn ^^
  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 04 April 2011 - 08:56 AM

Bạn dùng cái này xem:
(defun C:M2L()
(vl-load-com) (if (not cal) (arxload "geomcal"))
(prompt "\nChon cac doi tuong can Mirror: ")
(setq ss (ssget))
(setq l1 (entsel "\nChon duong Line thu 1: "))
(setq l2 (entsel "\nChon duong Line thu 2: "))
(setq p1d (cdr (assoc 10 (entget (car l1)))))
(setq p1c (cdr (assoc 11 (entget (car l1)))))
(setq p2d (cdr (assoc 10 (entget (car l2)))))
(setq p2c (cdr (assoc 11 (entget (car l2)))))
(setq p3d (cal "plt(p1d,p2d,0.5)"))
(setq p3c (cal "plt(p1c,p2c,0.5)"))
(initget "Y N") (setq xoa (getkword "\nXoa doi tuong cu <NO>: "))
(if (or (= xoa "N") (not xoa))
(command ".mirror" ss "" p3d p3c "N")
(command ".mirror" ss "" p3d p3c "Y")))

Thanks bạn. Giờ mình mới biết Expression PLT :">
P/S :
- Bạn có thể đổi việc kích chọn 2 Line thành 1 thao tác quét chọn 2Line thì thao tác của User sẽ nhanh hơn.
- Mình rất thích cách viết tường minh như của bạn, sẽ dễ dàng hơn để sửa và người khác theo dõi cũng dễ. Việc tinh chỉnh thì có thể để sau, chủ yếu xét tính hiệu dụng trước ^^
-

(initget "Y N") (setq xoa (getkword "\nXoa doi tuong cu <NO>: "))
(if (or (= xoa "N") (not xoa))
(command ".mirror" ss "" p3d p3c "N")
(command ".mirror" ss "" p3d p3c "Y"))

Đoạn này của bạn nên thay bằng

(command ".mirror" ss "" p3d p3c pause)

Vì Y, N thuộc trong bước thao tác của lệnh Mirror, nên ta lợi dụng nó cho tiện hè ^^
  • 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


#7 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 04 April 2011 - 10:05 AM

Thanks bạn. Giờ mình mới biết Expression PLT :">
P/S :
- Bạn có thể đổi việc kích chọn 2 Line thành 1 thao tác quét chọn 2Line thì thao tác của User sẽ nhanh hơn.
- Mình rất thích cách viết tường minh như của bạn, sẽ dễ dàng hơn để sửa và người khác theo dõi cũng dễ. Việc tinh chỉnh thì có thể để sau, chủ yếu xét tính hiệu dụng trước ^^
-
Đoạn này của bạn nên thay bằng

Vì Y, N thuộc trong bước thao tác của lệnh Mirror, nên ta lợi dụng nó cho tiện hè ^^

Thanks tất cả góp ý của Bác ^^. Riêng quét 1 lúc 2 line thì hay cái này nhưng có khi cũng chưa hay
ở cái khác. VD: có 1 line nằm giữa 2 line thì lại phải sửa code. Chúc Bác vui
  • 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.


#8 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 04 April 2011 - 10:25 AM

Hề hề, can chi đâu, vì yêu cầu của chủ topic là 2 Line đó song song, nên ta chỉ cần lấy thằng ssname 0 và ssname cuối cùng, muốn bao nhiêu Line thì kệ hắn. Cũng có thể là nhanh hơn chăng ^^. Dù sao đó cũng là tiểu tiết. Chúc bạn ngày càng giúp đỡ được nhiều người hơn :)
  • 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


#9 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 04 April 2011 - 10:34 AM

Hề hề, can chi đâu, vì yêu cầu của chủ topic là 2 Line đó song song, nên ta chỉ cần lấy thằng ssname 0 và ssname cuối cùng, muốn bao nhiêu Line thì kệ hắn. Cũng có thể là nhanh hơn chăng ^^. Dù sao đó cũng là tiểu tiết. Chúc bạn ngày càng giúp đỡ được nhiều người hơn :)

ssname 0 và ssname cuối cùng có thể không tính ra trung điểm !
  • 0

#10 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 04 April 2011 - 12:02 PM

(setq p3d (cal "plt(p1d,p2d,0.5)"))

Cái này hay đây, nó còn những lựa chọn nào để tính toán nữa không hả bạn?
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#11 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 04 April 2011 - 12:55 PM

Cái này hay đây, nó còn những lựa chọn nào để tính toán nữa không hả bạn?

Trong CAD help ý bác ạ, còn kha khá ^^
  • 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


#12 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 04 April 2011 - 01:46 PM

Cái này hay đây, nó còn những lựa chọn nào để tính toán nữa không hả bạn?

Cái này tổng quát là (cal "plt(p1,p2,k)"). Tiếc là Bác chưa sử dụng mấy thứ này, nó rất hữu hiệu, ngắn gọn.
Còn rất nhiều công thức CAL nữa Bác ạ, trong Help có hết, hay ra phết.
  • 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.


#13 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 04 April 2011 - 02:32 PM

thảo nào mình mò Help Developer không có. cảm ơn các bạn
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#14 AutoTay.com

AutoTay.com

    biết lệnh move

  • Members
  • PipPipPip
  • 125 Bài viết
Điểm đánh giá: 19 (tàm tạm)

Đã gửi 19 September 2011 - 05:29 PM

Sorry! Ngoài lề!
Các bác cho em xin lisp sau khi MI, đối tượng được chọn sẽ bị xoá!
Thanksssssss!
  • 0

#15 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 19 September 2011 - 05:54 PM


(defun c:mi(/ p1)
(command "._mirror" (ssget) "" (setq p1(getpoint)) (getpoint p1) "Y"))

  • 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


#16 khanhtam05

khanhtam05

    Chưa sử dụng CAD

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

Đã gửi 30 October 2013 - 08:22 PM

Anh Ketxu cho em hỏi là: Em add lisp của anh vào nhưng cũng có những trường hợp em muốn giữ lại đối tượng vừa Mirror thì em phải làm thế nào ạ?


  • 0

!...KHANHTAM05...!


#17 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 30 October 2013 - 08:41 PM

@@ Bạn dùng lệnh bình thường đi


  • 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


#18 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 31 October 2013 - 08:21 AM

Bạn dùng cái này xem:

(defun C:M2L()
(vl-load-com) (if (not cal) (arxload "geomcal"))
(prompt "\nChon cac doi tuong can Mirror: ")
(setq ss (ssget))
(setq l1 (entsel "\nChon duong Line thu 1: "))
(setq l2 (entsel "\nChon duong Line thu 2: "))
(setq p1d (cdr (assoc 10 (entget (car l1)))))
(setq p1c (cdr (assoc 11 (entget (car l1)))))
(setq p2d (cdr (assoc 10 (entget (car l2)))))
(setq p2c (cdr (assoc 11 (entget (car l2)))))
(setq p3d (cal "plt(p1d,p2d,0.5)"))
(setq p3c (cal "plt(p1c,p2c,0.5)"))
(initget "Y N") (setq xoa (getkword "\nXoa doi tuong cu <NO>: "))
(if (or (= xoa "N") (not xoa))
  (command ".mirror" ss "" p3d p3c "N")
  (command ".mirror" ss "" p3d p3c "Y")))

Bạn chưa xét trường hợp 2 line // nhưng ngược chiều nhau, khi đó p3c và p3d trùng nhau.

Nếu 2 line // thì không cần p2c

(setq p3c (cal "plt(p1c,p2d,0.5)"))


  • 1

#19 khanhtam05

khanhtam05

    Chưa sử dụng CAD

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

Đã gửi 01 November 2013 - 11:41 AM

@@ Bạn dùng lệnh bình thường đi

Nhưng em dùng lệnh bình thường thì cad lại hiểu là đang dùng lệnh lisp, vì cái lisp anh đưa ra cũng là "mi" nên nó trùng với lệnh trong cad. Anh có thể sửa tên lệnh lisp thành "mii" giúp em được không ạ!


  • -1

!...KHANHTAM05...!


#20 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 November 2013 - 03:53 PM

Bạn tự bật file lên và sửa chữ mi đằng sau chữ c: thành chữ gì bạn muốn, nó là 1 file text thôi mà


  • 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