Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Offset, chuyện cũ với yêu cầu mới


  • Please log in to reply
62 replies to this topic

#41 Truong_AAn

Truong_AAn

    biết dimradius

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

Đã gửi 29 March 2013 - 03:00 PM

Nhờ các bạn viết giúp mình lisp cải tạo lệnh Extrude.

 khi gõ E10 thì cad sẽ exrude từ hình 2d  thành khối solid có chiều cao 10 thay vì phải đánh lệnh ext nhập chiều cao...

Thnk các bạn


  • 0
Hình đã gửi
----------------------------------------------------------------------------------//-------------------------------------------------------------------------------------

#42 AGi

AGi

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 13 (tàm tạm)

Đã gửi 30 March 2013 - 10:05 AM

Bạn xây dựng được định nghĩa đi là có hết. Còn không định nghĩa được thì hiển nhiên là không có

 

Theo mình biết thì biết thì chỉ có thể thực hiện lệnh Chamfer giữa 2 đường thẳng với nhau.

Còn giữa 1 đường thẳng và 1 đường cong hoặc giữa 2 đường cong thì ko thể Chamfer đc.

Vì vậy mình nhờ các pro viết một Lisp cải tiến lệnh Chamfer, giúp Chamfer giữa đường thẳng và đường cong và giữa 2 đường cong theo kiểu như mình Chamfer giữa 2 đường thẳng với nhau.

Ví dụ: Mình cần Chamfer 1 đường thẳng và 1 đường cong (hoặc 2 đường cong, hoặc 2 đường thẳng) với biến D = 5 thì Cad sẽ làm như sau:

 * Bước 1: Hai đường thẳng và cong (hoặc cả 2 đường cong hoặc cả 2 đường thẳng) sẽ bị cắt tại vị trí cách điểm giao nhau 1 khoảng bằng 5 (có thể 2 đường giao nhau hoặc phương của 2 đường giao nhau).

 * Bước 2: Nối 2 điểm mới vừa cắt lại với nhau bằng 1 đường thẳng.

 Hết.

Thanks all!


  • 0

#43 AGi

AGi

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 13 (tàm tạm)

Đã gửi 31 March 2013 - 08:20 AM

Theo mình biết thì biết thì chỉ có thể thực hiện lệnh Chamfer giữa 2 đường thẳng với nhau.

Còn giữa 1 đường thẳng và 1 đường cong hoặc giữa 2 đường cong thì ko thể Chamfer đc.

Vì vậy mình nhờ các pro viết một Lisp cải tiến lệnh Chamfer, giúp Chamfer giữa đường thẳng và đường cong và giữa 2 đường cong theo kiểu như mình Chamfer giữa 2 đường thẳng với nhau.

Ví dụ: Mình cần Chamfer 1 đường thẳng và 1 đường cong (hoặc 2 đường cong, hoặc 2 đường thẳng) với biến D = 5 thì Cad sẽ làm như sau:

 * Bước 1: Hai đường thẳng và cong (hoặc cả 2 đường cong hoặc cả 2 đường thẳng) sẽ bị cắt tại vị trí cách điểm giao nhau 1 khoảng bằng 5 (có thể 2 đường giao nhau hoặc phương của 2 đường giao nhau).

 * Bước 2: Nối 2 điểm mới vừa cắt lại với nhau bằng 1 đường thẳng.

 Hết.

Thanks all!

Vấn đề này rất nhiều ae gặp phải mà ko ai có lisp giải quyết sao ta ???!!!


  • 0

#44 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 31 March 2013 - 05:30 PM

Ai hay gặp phải vậy bạn :0  Mình k hiểu nó ad khi nào


  • 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


#45 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 31 March 2013 - 06:17 PM

Theo mình biết thì biết thì chỉ có thể thực hiện lệnh Chamfer giữa 2 đường thẳng với nhau.

Còn giữa 1 đường thẳng và 1 đường cong hoặc giữa 2 đường cong thì ko thể Chamfer đc.

Vì vậy mình nhờ các pro viết một Lisp cải tiến lệnh Chamfer, giúp Chamfer giữa đường thẳng và đường cong và giữa 2 đường cong theo kiểu như mình Chamfer giữa 2 đường thẳng với nhau.

Ví dụ: Mình cần Chamfer 1 đường thẳng và 1 đường cong (hoặc 2 đường cong, hoặc 2 đường thẳng) với biến D = 5 thì Cad sẽ làm như sau:

 * Bước 1: Hai đường thẳng và cong (hoặc cả 2 đường cong hoặc cả 2 đường thẳng) sẽ bị cắt tại vị trí cách điểm giao nhau 1 khoảng bằng 5 (có thể 2 đường giao nhau hoặc phương của 2 đường giao nhau).

 * Bước 2: Nối 2 điểm mới vừa cắt lại với nhau bằng 1 đường thẳng.

 Hết.

Thanks all!

 

Giữa đường thẳng và đường cong có nhiều hơn 1 điểm giao nhau, Vậy sẽ lấy điểm giao nhau nào?


  • 0

#46 AGi

AGi

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 13 (tàm tạm)

Đã gửi 15 April 2013 - 12:39 PM

Mình nhờ các pro viết một Lisp rút gọn lệnh Fillet như sau:

Bình thường khi muốn fillet với bán kinh r=100 (lệnh fillet trc đó R#100) thì mình sẽ phải làm tuần tữ là:

F :enter

R :enter

100 :enter

....

Giờ mình muốn khi cần fillet với một bán kính R=100 thì chỉ cần gõ: R100 thì CAD sẽ hiểu là Lệnh Fillet với tham số b.kính R=100 (bỏ qua 3 bước ở trên).

Thanks tất cả mọi người! Phần này coi như đã xong

 

Bổ sung:

Mình nhờ các pro viết bổ sung thêm tính năng Lisp chamfer nhập biến trực tiếp của bro Ketxu mình , giúp Chamfer giữa đường thẳng và đường cong và giữa 2 đường cong theo kiểu như mình Chamfer giữa 2 đường thẳng với nhau. Yêu cầu như sau:

 * Sau khi nhập lệnh (ví dụ D5) thì chọn đối tượng. Có 2 trường hợp xảy ra:

1/ Nếu 2 đối tượng là đường thẳng thìm thực hiện lệnh Chamfer bình thường với biến D=5 (cái này lisp của bro Ketxu đã có ).

2/ Nếu 2 đối tượng được chọn có 1 hoặc cả 2 là đường cong thì sẽ thực hiện từng bớc như sau:

   + Bước 1: Thực hiện lệnh Fillet 2 đối tượng được chọn với bk R = D (ở đây R=D=5);[hoặc nhập R, rồi nhập bk, rồi fillet 2 đ.tượng được chọn với bk R vừa nhập.

   + Bước 2: Xóa bỏ cung tròn vừa được tạo ra bằng lệnh Fillet ở bước 1.

   + Bước 3: Nối 2 điểm trên 2 đối tượng lại bằng 1 đường thẳng. Mọi người xem hình minh họa sẽ rõ hơn.3

   + Bước 4: Chọn đối tượng tiếp theo hoặc Enter kết thúc lệnh. Xong

guicadviet_zps63056014.jpg

 

 

 Hết.

Thanks all!

 

Mấy hôm nay bận quá không ghé dđ.

Mình mới viết lại yêu cầu, hy vọng nhận đc phản hồi.

Cái này ae nào làm quy hoạch rất hay gặp phải khi thiết kế đường giao thông vì không phải đường giao thông lúc nào cũng thẳng.

Tùy theo tính chất, yêu cầu, thế đất sẽ có đường giao thông thẳng, cong, uốn lượn, .....

Mà nguyên tắc thì góc giao lộ không được bo tròn mà phải vạt góc.

Lúc vẽ mà gặp mấy cái đường cong này hơi bị phiền hihihhi.

Thanks tất cả ae dđ.


  • 0

#47 hochoaivandot

hochoaivandot

    biết dimradius

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

Đã gửi 19 May 2013 - 04:52 PM

(vl-load-com)
(if (null unknownCMD_reactor)(setq unknownCMD_reactor (vlr-command-reactor nil '((:vlr-unknownCommand . fillet_chamfer_offset)))))
(defun fillet_chamfer_offset (reactor_object  lst / cmdLine cmd dis)
(if 
(and 
(setq cmdLine (strcase (nth 0 lst)))
(setq cmd (substr cmdLine 1 1))
(wcmatch cmd "F,D,O,Z,H")
(setq dis (distof (substr cmdLine 2)))
)
(cond
(
(eq cmd "F")
(and 
(setvar 'FILLETRAD dis)
(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "fillet ")
)
)
(
(eq cmd "D")
(and 
(setvar 'CHAMFERA dis) 
(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "chamfer ")
)
)
(eq cmd "O")
(and 
(setvar 'OFFSETDIST dis) 
(vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) "offset  ")
)
)
(eq cmd "H")
(setq ss (ssget (list (cons 0 "TEXT,MTEXT"))))
(vlax-for Ent (vla-get-ActiveSelectionSet (vla-get-activedocument (vlax-get-acad-object)))
(vla-put-height Ent dis)
)
)
( t nil)
)
)
(princ)
)
 
hochoaivandot muốn thêm chức năng thay đổi chiều cao text, mtext bằng lệnh H2 (cao chữ 2).
Nên viết thêm đoạn code trên vào. Tuy nhiên kết quả chạy ra trên dòng command line có hiện dòng chữ 

 

Select objects:  Unknown command "H0.7".  Press F1 for help.
 

Mọi người giải thích và giải quyết giúp được không ạ?


  • -1

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#48 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 28 December 2013 - 04:44 PM

Theo y/c ở topic dưới đây tôi viết thêm một số lệnh rút gọn:

http://www.cadviet.c...-tri-cho-truoc/

Có 3 lisp, dùng để Copy, Move, Rotate rút gọn.

Lệnh Copy và Move: giảm bớt công đoạn nhập khoảng cách.

Lệnh Rotate: giảm bớt công đoạn nhập góc quay.

Nếu bạn nào hay phải Copy, Move, Rotate kiểu này thì tải về dùng.

;; Cac lenh Copy, Move, Rotate rut gon.
;; Doan Van Ha - CadViet.com - 28/12/2013
(vl-load-com)
;----- Copy_Distance (by HA). Copy Objects voi Distance, diem goc va huong tu chon. Nhap lenh theo cau truc: CD10, CD100, CD1.5 ...
(if (null copy_reactor) (setq copy_reactor (vlr-command-reactor nil '((:vlr-unknownCommand . Copy_HA)))))
(defun Copy_HA (a b / cmd dis)
 (and
  (wcmatch (setq cmd (strcase (nth 0 b))) "CD*")
  (setq dis (distof (substr cmd 3)))
  (setq ss (ssget))
  (setq p (getpoint "\nSpecify base point: "))
  (setq q (getpoint p "\nSpecify point to the direction of the copy: "))
  (setq q (polar p (angle p q) dis))
  (vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "(command \"_.Copy\" ss \"\" p q) "))
 (princ))
;----- Move_Distance (by HA). Move Objects voi Distance, diem goc va huong tu chon. Nhap lenh theo cau truc: MD10, MD100, MD1.5 ...
(if (null move_reactor) (setq move_reactor (vlr-command-reactor nil '((:vlr-unknownCommand . Move_HA)))))
(defun Move_HA (a b / cmd dis)
 (and
  (wcmatch (setq cmd (strcase (nth 0 b))) "MD*")
  (setq dis (distof (substr cmd 3)))
  (setq ss (ssget))
  (setq p (getpoint "\nSpecify base point: "))
  (setq q (getpoint p "\nSpecify point to the direction of the move: "))
  (setq q (polar p (angle p q) dis))
  (vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "(command \"_.Move\" ss \"\" p q) "))
 (princ))
;----- Rotate_Angle (by HA). Rotate Objects voi Angle, diem goc tu chon. Nhap lenh theo cau truc: RA10d5'3", RA90, RA1.5 ...
(if (null rotate_reactor) (setq rotate_reactor (vlr-command-reactor nil '((:vlr-unknownCommand . Rotate_HA)))))
(defun Rotate_HA (a b / cmd)
 (and
  (wcmatch (setq cmd (strcase (nth 0 b))) "RA*")
  (setq ang (substr cmd 3))
  (setq ss (ssget))
  (setq p (getpoint "\nSpecify base point: "))
  (vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "(command \"_.Rotate\" ss \"\" p ang) "))
 (princ))
 

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


#49 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 28 December 2013 - 09:21 PM

Lisp bac Ha viết chỉ đỡ công nhấn phím Enter thôi, chứ công đoạn nhập khoảng cách vẫn có, nó nằm trong tên lệnh

-Cái lệnh cd* không hay: Chỉ copy có 1 lần, và các lệnh cd*, md*, ra* đều không hiển thị được hình ảnh động


  • 0

#50 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 28 December 2013 - 09:38 PM

Lisp bac Ha viết chỉ đỡ công nhấn phím Enter thôi, chứ công đoạn nhập khoảng cách vẫn có, nó nằm trong tên lệnh

-Cái lệnh cd* không hay: Chỉ copy có 1 lần, và các lệnh cd*, md*, ra* đều không hiển thị được hình ảnh động

Có ai viết được 1 lệnh, ví dụ circle, mà không cần nhập radius và/hoặc center không?

Cần phải hiểu y/c ở bên topic kia. Đôi khi vì công việc nên người ta cần vậy. Và nếu họ cần như vậy thì rõ ràng nó nhanh hơn. Xem từ trang đầu của topic này thì sẽ rõ. Chẳng hạn lệnh fillet ở đầu topic chẳng để làm gì ư?


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


#51 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 29 December 2013 - 07:49 AM

Có ai viết được 1 lệnh, ví dụ circle, mà không cần nhập radius và/hoặc center không?

Cần phải hiểu y/c ở bên topic kia. Đôi khi vì công việc nên người ta cần vậy. Và nếu họ cần như vậy thì rõ ràng nó nhanh hơn. Xem từ trang đầu của topic này thì sẽ rõ. Chẳng hạn lệnh fillet ở đầu topic chẳng để làm gì ư?

1./ Không có ai có thể viết ví dụ circle, mà không cần nhập radius và/hoặc center. Nhưng bác viết là giảm bớt công đoạn nhập khoảng cách" là không đúng rồi....

 

2./Về mục đích và code thì Tue_NV biết trước rồi, biết trước cả khi lệnh fillet ở trang đầu topic trên viết lên. Chỉ có điều là muốn góp ý cho mã Lisp trên tốt hơn thôi. Tỉ như trước đó sử dụng lệnh cd100 chẳng hạn. Lần kế tiếp thay vì nhấn enter để thực hiện lệnh cd100 thì phải gõ lại cd100. Nếu không gõ lại lệnh thì bấm mũi tên đi lên, đi xuống để lấy tên lệnh. Đó chẳng phải "mất công" hay sao? Và các góp ý ở bài viết trên nữa.............


  • 0

#52 eakarphan

eakarphan

    biết zoom

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

Đã gửi 29 December 2013 - 03:38 PM

Theo y/c ở topic dưới đây tôi viết thêm một số lệnh rút gọn:

http://www.cadviet.c...-tri-cho-truoc/

Có 3 lisp, dùng để Copy, Move, Rotate rút gọn.

Lệnh Copy và Move: giảm bớt công đoạn nhập khoảng cách.

Lệnh Rotate: giảm bớt công đoạn nhập góc quay.

Nếu bạn nào hay phải Copy, Move, Rotate kiểu này thì tải về dùng.

 

;; Cac lenh Copy, Move, Rotate rut gon.
;; Doan Van Ha - CadViet.com - 28/12/2013
(vl-load-com)
;----- Copy_Distance (by HA). Copy Objects voi Distance, diem goc va huong tu chon. Nhap lenh theo cau truc: CD10, CD100, CD1.5 ...
(if (null copy_reactor) (setq copy_reactor (vlr-command-reactor nil '((:vlr-unknownCommand . Copy_HA)))))
(defun Copy_HA (a b / cmd dis)
 (and
  (wcmatch (setq cmd (strcase (nth 0 b))) "CD*")
  (setq dis (distof (substr cmd 3)))
  (setq ss (ssget))
  (setq p (getpoint "\nSpecify base point: "))
  (setq q (getpoint p "\nSpecify point to the direction of the copy: "))
  (setq q (polar p (angle p q) dis))
  (vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "(command \"_.Copy\" ss \"\" p q) "))
 (princ))
;----- Move_Distance (by HA). Move Objects voi Distance, diem goc va huong tu chon. Nhap lenh theo cau truc: MD10, MD100, MD1.5 ...
(if (null move_reactor) (setq move_reactor (vlr-command-reactor nil '((:vlr-unknownCommand . Move_HA)))))
(defun Move_HA (a b / cmd dis)
 (and
  (wcmatch (setq cmd (strcase (nth 0 b))) "MD*")
  (setq dis (distof (substr cmd 3)))
  (setq ss (ssget))
  (setq p (getpoint "\nSpecify base point: "))
  (setq q (getpoint p "\nSpecify point to the direction of the move: "))
  (setq q (polar p (angle p q) dis))
  (vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "(command \"_.Move\" ss \"\" p q) "))
 (princ))
;----- Rotate_Angle (by HA). Rotate Objects voi Angle, diem goc tu chon. Nhap lenh theo cau truc: RA10d5'3", RA90, RA1.5 ...
(if (null rotate_reactor) (setq rotate_reactor (vlr-command-reactor nil '((:vlr-unknownCommand . Rotate_HA)))))
(defun Rotate_HA (a b / cmd)
 (and
  (wcmatch (setq cmd (strcase (nth 0 b))) "RA*")
  (setq ang (substr cmd 3))
  (setq ss (ssget))
  (setq p (getpoint "\nSpecify base point: "))
  (vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object)) "(command \"_.Rotate\" ss \"\" p ang) "))
 (princ))
 

 

Trước tiên em cảm ơn bác đã giúp đở em.  :)

Lisp này gần được nhưng có thể nào  em chỉ cần nhập c1 thôi là tự hiểu khoảng cách là 50 không ạ.


  • 0

#53 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 29 December 2013 - 10:08 PM

Lisp Copy với Distance cố định.

Ví dụ cách gọi lệnh: C12, để copy objects với distance 12, có hướng tự chọn (xác định bởi 2 điểm).

ttp://www.cadviet.com/upfiles/3/67029_copy_distance.zip

 


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


#54 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 29 December 2013 - 10:09 PM

Lisp Copy với Distance cố định.

Ví dụ cách gọi lệnh: C12, để copy objects với distance 12, có hướng tự chọn (xác định bởi 2 điểm).

http://www.cadviet.c..._distance_1.zip

 


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


#55 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 29 December 2013 - 10:10 PM

Lisp Copy với Distance cố định.

Ví dụ cách gọi lệnh: C12, để copy objects với distance 12, có hướng tự chọn (xác định bởi 2 điểm).

http://www.cadviet.c..._distance_2.zip

 


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


#56 eakarphan

eakarphan

    biết zoom

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

Đã gửi 02 January 2014 - 12:46 PM

Lisp Copy với Distance cố định.

Ví dụ cách gọi lệnh: C12, để copy objects với distance 12, có hướng tự chọn (xác định bởi 2 điểm).

http://www.cadviet.c..._distance_2.zip

Vẫn không phải như thế này bác Hà ơi,

Em nói rõ rồi mà bác, không có cách nào chỉ cần gỏ c1 thôi là tự hiểu copy với khoảng cách 50 được ạ? ( và c2 là 100, c3 là 150). Nó giống hệt lệnh copy nhưng bỏ bước nhập khảng cách thôi.


  • 0

#57 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 2014 - 01:39 PM

Vẫn không phải như thế này bác Hà ơi,

Em nói rõ rồi mà bác, không có cách nào chỉ cần gỏ c1 thôi là tự hiểu copy với khoảng cách 50 được ạ? ( và c2 là 100, c3 là 150). Nó giống hệt lệnh copy nhưng bỏ bước nhập khảng cách thôi.

Viết lisp mà chỉ copy với 1 trong 3 khoảng cách 50, 100, 150 thôi ư? Vậy khi muốn copy 400 thì lisp chịu à?

Sửa thì quá dễ nhưng tôi phiền bạn là sẽ không bao giờ sửa theo cái kiểu như vậy, bởi tôi không thể chiều lòng sự làm biếng quá giới 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.


#58 phamthe

phamthe

    biết vẽ polygon

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

Đã gửi 20 January 2014 - 04:14 PM

Lisp của bác đây:

;========LISP OFFSET==========
;====KANGKUNG 28/03/2013======
(defun C:LG12()
  (command "UNDO" "BE")
  (setq os(getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (setq dt (car(entsel)) i (/ pi 2))
  (repeat 2
    (setq pt (polar (vlax-curve-getPointAtDist dt 0) (+ (angle (vlax-curve-getPointAtDist dt 0) (vlax-curve-getPointAtDist dt (+ 0 0.1))) i) 1))
    (of "3" pt "00_Mep duong")
    (of "6" pt "00_Mep he")
    (setq i (/ pi -2))
    )
  (setvar "OSMODE" os)
  (command "UNDO" "END")
  )
(defun C:LG13()
  (command "UNDO" "BE")
  (setq os(getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (setq dt (car(entsel)) i (/ pi 2))
  (repeat 2
    (setq pt (polar (vlax-curve-getPointAtDist dt 0) (+ (angle (vlax-curve-getPointAtDist dt 0) (vlax-curve-getPointAtDist dt (+ 0 0.1))) i) 1))
    (of "3.5" pt "00_Mep duong")
    (of "6.5" pt "00_Mep he")
    (setq i (/ pi -2))
    )
  (setvar "OSMODE" os)
  (command "UNDO" "END")
  )
(defun of(di pt la)
  (command "offset" di dt pt "")
  (if (= (tblsearch "Layer" la) nil)
    (progn
      (command "LAYER" "N" la "")
      (vla-put-layer (vlax-ename->vla-object (entlast)) la))
    (vla-put-layer (vlax-ename->vla-object (entlast)) la)))
(princ "\n                Written By KangKung - 28/03/2013\n")

Nhờ các anh giúp em sửa cái lisp trên để khi ta chon tim đường thì nó sẽ offset sang 2 bên, với khoảng cách là 6m từ tim và đổi màu 2 đối tượng vừa offset sẽ thuộc layer màu xanh và và có nét chấm chấm như đoạn code này với ạ: 

(COMMAND "-LAYER" "M" "Lo gioi" "COLOR" 3 "" "")

...........................................

(COMMAND "CHPROP" A PAUSE "C" "GREEN" "LA" "LO GIOI" "lT" "DOT" "S" "2.5" "LW" "0.5" "")


  • -1

#59 phamthe

phamthe

    biết vẽ polygon

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

Đã gửi 23 January 2014 - 09:13 AM

nhờ các anh giúp em với


  • 0

#60 ad.pham234

ad.pham234

    biết zoom

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

Đã gửi 14 July 2015 - 09:57 AM

http://www.cadviet.c...144248_oo_2.lsp

Nhờ các bác sửa dùm líp này với em muốn khi opset sang hai bên thì đối tượng mới tạo chuyển thành 1 layer mới không giống với layẻ gốc các bác giúp em với

 

 

 

 

  • -1