Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
TrungOji

Em đang gặp phải 1 vấn đề. Mong các bác giúp đỡ. Em xin cảm ơn

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

Thưa các bác, em đang có vấn đề cần được giúp đỡ. Đặc thù công việc của em là vận hành cái máy cắt CNC. mà theo yêu cầu hàng ngày em phải vẽ rất nhiều đường thẳng, polyline, cung tròn, đường tròn nét đứt đoạn với kích thước yêu cầu 5x5; 10x10; 20x10mm (nghĩa là nét cắt 20mm, rồi lại liền 10mm) . ...  Do không biết phương pháp nào khác nên em toàn phải vẽ thủ công, mất rất nhiều thời gian. Nhất là với đường polyline và cung tròn. Nhờ các bác chỉ giúp em cách giải quyết vấn đề này ạ. Yêu cầu các nét đứt đoạn rời rạc, ko có liên kết để máy cắt hoạt động và tiện chỉnh sửa. Mong các bác giúp đỡ ạ. Em cảm ơn. Hình ảnh như file đính kèm.

 

bv mau.PNG

Chỉnh sửa theo TrungOji
load file bị lỗi

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
27 phút trước, TrungOji đã nói:

Các tiền bối chỉ giúp em với. Chứ em ko biết làm cách nào ngoài copy với array. mất rất nhiều thời gian ạ.

 

1. Tạo 1 File đuôi .lin  , ví dụ ABC.lin

2. Copy dòng code dưới đây vào file đó.

 


*HIDDEN-5x5,Hidden5x5 __ __ __ __ __ __ __ __ __ __ __ __ __ __
A,5.0,-5.0

*HIDDEN-10x10,Hidden10x10 __ __ __ __ __ __ __ __ __ __ __ __ __ __
A,10.0,-10.0

*HIDDEN-20x10,Hidden20x10 __ __ __ __ __ __ __ __ __ __ __ __ __ __
A,20.0,-10

 

 

3. Gõ lệnh LTYPE, load file ABC.lin vừa tạo. 

----> Vậy là bạn đã có các loại đường theo yêu cầu. Chú ý tỷ lệ Line type Scale phải bằng 1 ( Bật bảng Ctrl+1 lên), biến hệ thống LTS phải bằng 1.

  • 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
1 giờ} trướ}c, TrungOji đã nói:

Vâng. Trước em có từng tạo kiểu đường rồi. Nhưng yêu cầu đối tượng phải là các line riêng lẻ, ko có liên kết cơ các bác ạ.

 

Cái này chắc phải nhờ các cao thủ viết lisp thôi, với mình chắc làm được line và pl còn các đường khác thì chịu thôi

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
1 giờ} trướ}c, TrungOji đã nói:

Vâng. Trước em có từng tạo kiểu đường rồi. Nhưng yêu cầu đối tượng phải là các line riêng lẻ, ko có liên kết cơ các bác ạ.

 

+ Trên trang mạng có lisp phá vỡ Line Type , tuy nhiên mình test thì chỉ áp dụng được với các loại đoạn thẳng. Còn cong thì chắc ko đúng ý chủ thớt rồi. 

Điều kiện dùng lisp : UNIT để dạng Milimeter.

+ Trang gốc : https://www.cadstudio.cz/en/download.asp?file=LinExp

 

linexp.lsp

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
12 phút trước, Danh Cong đã nói:

 

+ Trên trang mạng có lisp phá vỡ Line Type , tuy nhiên mình test thì chỉ áp dụng được với các loại đoạn thẳng. Còn cong thì chắc ko đúng ý chủ thớt rồi. 

Điều kiện dùng lisp : UNIT để dạng Milimeter.

+ Trang gốc : https://www.cadstudio.cz/en/download.asp?file=LinExp

 

linexp.lsp

Dạ vâng. Dùng lisp để phá vỡ Linetype cũng là 1 giải pháp hay trong trường hợp này. Em cảm ơn bác nhiề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
5 phút trước, Doan Nguyen Van đã nói:

Thế này oke không nhỉ?

1864080362_ezgif.com-gif-maker(1).gif.23f3c9c5f683afb4f377791dd111c88b.gif

woa. Bác @ Doan Nguyen Van có lisp giải quyết vấn đề hiệu quả thế. Bác chia sẻ giúp em với. Em cảm ơ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
2 giờ trước, TrungOji đã nói:

Vâng. Trước em có từng tạo kiểu đường rồi. Nhưng yêu cầu đối tượng phải là các line riêng lẻ, ko có liên kết cơ các bác ạ.

 

Mình cũng làm lisp này, bạn cần thì tải lisp số 7 mục Free ở link này nhé https://www.cadviet.com/forum/topic/173984-lisp-biết-vẽ-cad-share/

 

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 vừa sửa lại 1 chút cho lisp chạy ngon, và mở quyền truy cập. Bạn nào cần thì tải về nhé

1 giờ} trướ}c, Biet ve CAD đã nói:

Mình cũng làm lisp này, bạn cần thì tải lisp số 7 mục Free ở link này nhé https://www.cadviet.com/forum/topic/173984-lisp-biết-vẽ-cad-share/

 

 

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
2 giờ trước, Biet ve CAD đã nói:

Mình vừa sửa lại 1 chút cho lisp chạy ngon, và mở quyền truy cập. Bạn nào cần thì tải về nhé

 

Lisp hoạt động tốt nhưng em thấy lisp chạy gốc cut từ 1 đầu pline sang đầu bên kia. Bác có thể sửa giúp em gốc ở trung điểm đối tượng chọn sau cut sang 2 bên được không ạ. Cụ thể là trung điểm của đường continous trùng với trung điểm của đối tượng chọn (trung điểm của đường thẳng, cung tròn) còn đường hidden đối xứng sang 2 bên ấy ạ. Tại khi em dùng lisp này để cắt cung tròn thì sau khi cut nó không đối xứng ko đạt yêu cầu bác ạ.

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
21 phút trước, TrungOji đã nói:

Lisp hoạt động tốt nhưng em thấy lisp chạy gốc cut từ 1 đầu pline sang đầu bên kia. Bác có thể sửa giúp em gốc ở trung điểm đối tượng chọn sau cut sang 2 bên được không ạ. Cụ thể là trung điểm của đường continous trùng với trung điểm của đối tượng chọn (trung điểm của đường thẳng, cung tròn) còn đường hidden đối xứng sang 2 bên ấy ạ. Tại khi em dùng lisp này để cắt cung tròn thì sau khi cut nó không đối xứng ko đạt yêu cầu bác ạ.

Có áp dụng cho đường tròn, hình chữ nhật, spline kín không bạn, nếu có thì hơi khoai vì khó xác định trung điểm mà bạn cần. Còn lại thì chắc là ok được bạn à

  • 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
3 phút trước, Biet ve CAD đã nói:

Có áp dụng cho đường tròn, hình chữ nhật, spline kín không bạn, nếu có thì hơi khoai vì khó xác định trung điểm mà bạn cần. Còn lại thì chắc là ok được bạn à

Dạ. Bác sửa giúp em để Lisp áp dụng cho đường thẳng, spline và cung tròn là tốt lắm rùi ạ. ko cần spline kín đâu bác. 

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

Hic mấy bác cũng hay thật. Mình đọc chỉ hiểu sơ được ý chủ thớt thôi. Theo mình thì bài toán này có mấy trường hợp.

- Chiều dài được tính là theo khoảng cách hay chiều dài. (Vd như arc length hay distance khoảng cách điểm đầu điểm cuối.

- Khoảng 2 đầu được vẽ như thế nào khi chiều dài lẻ.

- Khi Pline kín mà khoảng cách lẻ thì vẽ như thế nào?

Theo AutoCad thì linetype nó vẽ theo chiều dài. Lypetype generation thì nó xác định theo toàn đường hay từng đoạn.

Phần 2 đầu thì nó làm phần dư. Nếu pline khép kín thì nó chuyển qua chia đều.

Mình viết thử 1 phương án khoảng cách theo length, Nhưng trim luôn 2 đầu. Không chạy được với Pline - Fit/smooth( Với đường này cần explore nó ra rồi join lại sẽ chạy được)

Các đường khác như circle,arc, elip, elip arc, spline chạy bình thường.

Lisp sử dụng command break nên chạy hơi chậm.

(defun c:br1(/ oso l1 l2 l0 n ob)
  
  (initget 0 "5x5 10x10 20x10")
  (mapcar 'set '(l1 l2)
	  (nth (vl-position (cond ((getkword " Chon [5x5/10x10/20x10]:"))
				  ("5x5"))
		 '("5x5" "10x10" "20x10"))
	       '((5 10) (10 20) (20 30))))
  (setq oso (getvar 'osmode))
  (setvar 'osmode 0)
  (foreach ex (acet-ss-to-list (ssget))
    (if (/= (setq ob  (vlax-ename->vla-object ex)
		  Len (vlax-curve-getdistatparam ob (vlax-curve-getendparam ob))
		  n   (fix (/ (- len l1) l2))
		  l0  (/ (- len l1 (* n l2)) 2)) 0)
      (progn
	(command "break" (list ex (vlax-curve-getpointatdist ob (- len l0))) (vlax-curve-getendpoint ob))
	(command "break" (list ex (vlax-curve-getstartpoint ob)) (vlax-curve-getpointatdist ob l0))))
    (repeat n
      (command "break" (list ex (vlax-curve-getpointatdist ob l1)) (vlax-curve-getpointatdist ob l2))
      (setq ex (entlast)ob (vlax-ename->vla-object ex))))
  
  (setvar 'osmode oso)
  (princ))

 

 

  • Like 2
  • 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
23 giờ trước, TrungOji đã nói:

Dạ. Bác sửa giúp em để Lisp áp dụng cho đường thẳng, spline và cung tròn là tốt lắm rùi ạ. ko cần spline kín đâu bác. 

Đã sửa lại lisp theo yêu cầu, bạn vô trang này tải lại nhé lisp số 7 mục Free ở link https://www.cadviet.com/forum/topic/173984-lisp-biết-vẽ-cad-share/

 

 

  • 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
Vào lúc 28/11/2020 tại 12:37, ngokiet đã nói:

Hic mấy bác cũng hay thật. Mình đọc chỉ hiểu sơ được ý chủ thớt thôi. Theo mình thì bài toán này có mấy trường hợp.

- Chiều dài được tính là theo khoảng cách hay chiều dài. (Vd như arc length hay distance khoảng cách điểm đầu điểm cuối.

- Khoảng 2 đầu được vẽ như thế nào khi chiều dài lẻ.

- Khi Pline kín mà khoảng cách lẻ thì vẽ như thế nào?

Theo AutoCad thì linetype nó vẽ theo chiều dài. Lypetype generation thì nó xác định theo toàn đường hay từng đoạn.

Phần 2 đầu thì nó làm phần dư. Nếu pline khép kín thì nó chuyển qua chia đều.

Mình viết thử 1 phương án khoảng cách theo length, Nhưng trim luôn 2 đầu. Không chạy được với Pline - Fit/smooth( Với đường này cần explore nó ra rồi join lại sẽ chạy được)

Các đường khác như circle,arc, elip, elip arc, spline chạy bình thường.

Lisp sử dụng command break nên chạy hơi chậm.


(defun c:br1(/ oso l1 l2 l0 n ob)
  
  (initget 0 "5x5 10x10 20x10")
  (mapcar 'set '(l1 l2)
	  (nth (vl-position (cond ((getkword " Chon [5x5/10x10/20x10]:"))
				  ("5x5"))
		 '("5x5" "10x10" "20x10"))
	       '((5 10) (10 20) (20 30))))
  (setq oso (getvar 'osmode))
  (setvar 'osmode 0)
  (foreach ex (acet-ss-to-list (ssget))
    (if (/= (setq ob  (vlax-ename->vla-object ex)
		  Len (vlax-curve-getdistatparam ob (vlax-curve-getendparam ob))
		  n   (fix (/ (- len l1) l2))
		  l0  (/ (- len l1 (* n l2)) 2)) 0)
      (progn
	(command "break" (list ex (vlax-curve-getpointatdist ob (- len l0))) (vlax-curve-getendpoint ob))
	(command "break" (list ex (vlax-curve-getstartpoint ob)) (vlax-curve-getpointatdist ob l0))))
    (repeat n
      (command "break" (list ex (vlax-curve-getpointatdist ob l1)) (vlax-curve-getpointatdist ob l2))
      (setq ex (entlast)ob (vlax-ename->vla-object ex))))
  
  (setvar 'osmode oso)
  (princ))

 

 

 Sau 1 thời gian sử dụng em thấy Lisp bác Ngokiet viết rất hữu dụng, đáp ứng khá tốt yêu cầu công việc của em. Mong bác viết giúp em thêm tùy chọn 10x5 (continuos 10mm, hidden5mm ) và 15x5  (continuos 15mm, hidden5mm ) với ạ, kiến thức của em có hạn nên em ko biết sửa lại lisp kia sao cho đúng. Em cảm ơn bác nhiều.

  • Vote giảm 2

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
Đăng nhập để thực hiện theo  

×