Đến nội dung


Hình ảnh
- - - - -

Nhờ viết Lisp thay đổi lệnh Trim (TR)


  • Please log in to reply
11 replies to this topic

#1 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 31 March 2015 - 12:24 PM

Nhờ các anh em viết dùm Lisp về lệnh Trim như sau:

- Mình có một đường thẳng bị cắt bởi 2 đường thẳng (Line, XLine, PLine...)

- Mình sử dựng lệnh: TR, Enter, chọn 2 đường thẳng cắt, Enter, Click vào đường thẳng bị cắt ở phía trong 2 đường thẳng cắt. Thì đoạn phía trong 2 đường cắt sẽ bị trim

- Giờ mình muốn Trim như trên mà giữ lại phần giữa, chỉ trim phần phía ngoài 2 đường thẳng cắt nó (giữ lại đoạn giữa nằm trong 2 đường cắt)

Mong anh em viết giúp lisp nhé, cảm ơn rất nhiều!

Đính kèm: http://www.cadviet.c...80_drawing1.dwg

 


  • -1

#2 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2882 Bài viết
Điểm đánh giá: 1556 (rất tốt)

Đã gửi 31 March 2015 - 01:25 PM

Nhờ các anh em viết dùm Lisp về lệnh Trim như sau:

- Mình có một đường thẳng bị cắt bởi 2 đường thẳng (Line, XLine, PLine...)

- Mình sử dựng lệnh: TR, Enter, chọn 2 đường thẳng cắt, Enter, Click vào đường thẳng bị cắt ở phía trong 2 đường thẳng cắt. Thì đoạn phía trong 2 đường cắt sẽ bị trim

- Giờ mình muốn Trim như trên mà giữ lại phần giữa, chỉ trim phần phía ngoài 2 đường thẳng cắt nó (giữ lại đoạn giữa nằm trong 2 đường cắt)

Mong anh em viết giúp lisp nhé, cảm ơn rất nhiều!

Đính kèm: http://www.cadviet.c...80_drawing1.dwg

 

Nếu viết lisp theo đúng ý tưởng của anh thao tác sẽ hơi bị ....chậm! :) :) :)

Cách tươi đẹp nhất vừa nhanh vừa đỡ hao tổn nơ-tron vẫn là:  gõ TR >>> gõ Enter 02 phát >>> bấm chuột 02 phát >>>Xong!

Command: TR
TRIM
Current settings: Projection=UCS, Edge=None
Select cutting edges ...
Select objects or <select all>:
Select object to trim or shift-select to extend or
[Fence/Crossing/Project/Edge/eRase/Undo]:
Select object to trim or shift-select to extend or
[Fence/Crossing/Project/Edge/eRase/Undo]:

 


  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#3 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 31 March 2015 - 02:50 PM

Cảm ơn bạn nhé nhưng cách bạn nói mình cũng biết rồi, mất công ở chỗ 2 lần click chuột, nếu mà bản vẽ nhiều và rộng thì 2 phát đó click phê lắm


  • 0

#4 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 31 March 2015 - 03:04 PM

Mục đích của lisp là:

1. Tạo ra lệnh mới mà cad chưa có.

2. Thay một số lớn thao tác lập đi lập lại 1 cách nhàm chán bằng 1 lệnh duy nhất.

Yêu cầu của bạn chỉ thay 2 click = 1 click , có vẻ không kinh tế lắm!!


  • 1

#5 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 31 March 2015 - 04:30 PM

Công việc của mình là thiết kế các cây cột điện cao thế (trụ thép 4 chân), khi vẽ trục và offset các thanh thép, nếu trim như thế này thì lâu lắm (do nhiều thanh lắm). Có vẻ yêu cầu của mình ít có ai ủng hộ, nên đành phải TR, enter, enter, click, rê.rê..rê.rê..và click vậy. Cảm ơn các bạn!


  • 0

#6 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

  • Members
  • PipPipPipPip
  • 288 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 31 March 2015 - 06:26 PM

Bạn dùng lệnh extrim đi. Chọn đường cắt -> chọn phía muốn cắt -> ok, tất cả các đường giao với đường cắt sẽ bị cắt hết ở phía muốn cắt. Nhanh lắm


  • 1

#7 haanh

haanh

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 2882 Bài viết
Điểm đánh giá: 1556 (rất tốt)

Đã gửi 31 March 2015 - 07:04 PM



Công việc của mình là thiết kế các cây cột điện cao thế (trụ thép 4 chân), khi vẽ trục và offset các thanh thép, nếu trim như thế này thì lâu lắm (do nhiều thanh lắm). Có vẻ yêu cầu của mình ít có ai ủng hộ, nên đành phải TR, enter, enter, click, rê.rê..rê.rê..và click vậy. Cảm ơn các bạn!

 

Lỗi do anh đã ra đề: "Mình sử dựng lệnh: TR, Enter, chọn 2 đường thẳng cắt, Enter, Click vào đường thẳng bị cắt ở phía trong 2 đường thẳng cắt. Thì đoạn phía trong 2 đường cắt sẽ bị trim" + hình minh họa đơn chiếc...

 

Nếu vẽ nhiều anh có thể gõ  EXTR > chọn dao cắt > chọn phía cần cắt ;  hoặc gõ TR >> Enter 2 lần > quét chọn đồng loạt , đều nhanh như nhau!

 

Em chưa vẽ cột điện bao giờ, nhưng cái giông giống cột điện thì em đã vẽ hơi bị nhiều. :) :) :)

 

aacutedsadfas.png


  • 0

“Sống trong đời sống cần có một tấm lòng / Để làm gì em biết không ? / Để gió cuốn đi, để gió cuốn đi...”


#8 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 01 April 2015 - 12:08 PM

Cảm ơn các bạn đã góp ý, mình minh hoạ đơn giản để các bạn hiểu ý và viết hộ lisp thôi. Chứ mình cần để áp dụng vào các bản vẽ thế này: http://www.cadviet.c...136880_tktd.dwg

Mình nghĩ viết lisp này cũng đơn giản với các bạn mà, ai tốt bụng giúp mình nhé!! Thanku!


  • -1

#9 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 01 April 2015 - 01:03 PM

Slow code cho bạn đây. Chọn 2 line rồi chọn những line cần cắt.

(defun c:trx (/ A B SS TT10A TT10B TT11A TT11B)
(defun dxf(id v) (cdr (assoc id (entget v))))
(command "undo" "be") (setvar 'cmdecho 0)
(princ "\nChon 2 line:")
(while (/= 2 (length (setq ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE")))))))))
(Alert "\nChi chon 2 line!!")
)
(setq tt10a (dxf 10 (car ss))
tt11a (dxf 11 (car ss))
tt10b (dxf 10 (last ss))
tt11b (dxf 11 (last ss))
)
 
(princ "\nChon cac line bi cat:") 
(foreach v (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE"))))))
(if (and (setq a (inters tt10a tt11a (dxf 10 v) (dxf 11 v)))
(setq b (inters tt10b tt11b (dxf 10 v) (dxf 11 v))))
(command "trim" (car ss) (last ss) "" (dxf 10 v) (dxf 11 v) "")))
(command "undo" "e") (setvar 'cmdecho 1)
(princ)
)

  • 1

#10 pphung183

pphung183

    biết dimstyle

  • Members
  • PipPipPipPipPip
  • 384 Bài viết
Điểm đánh giá: 425 (tốt)

Đã gửi 01 April 2015 - 04:08 PM

Cảm ơn các bạn đã góp ý, mình minh hoạ đơn giản để các bạn hiểu ý và viết hộ lisp thôi. Chứ mình cần để áp dụng vào các bản vẽ thế này: http://www.cadviet.c...136880_tktd.dwg

Mình nghĩ viết lisp này cũng đơn giản với các bạn mà, ai tốt bụng giúp mình nhé!! Thanku!

Không hiểu bạn đã nắm bắt lệnh Trim ntn mà chê nó chậm :o

Gỏ Tr  Enter Enter   Pick khung cửa sổ Window phủ qua 2 thằng rìa muốn cắt và cứ thế làm tiếp        xong Enter :)


  • 0

#11 pawuta

pawuta

    biết lệnh move

  • Members
  • PipPipPip
  • 126 Bài viết
Điểm đánh giá: -12 (hơi kém)

Đã gửi 01 April 2015 - 05:50 PM

 

Slow code cho bạn đây. Chọn 2 line rồi chọn những line cần cắt.

(defun c:trx (/ A B SS TT10A TT10B TT11A TT11B)
(defun dxf(id v) (cdr (assoc id (entget v))))
(command "undo" "be") (setvar 'cmdecho 0)
(princ "\nChon 2 line:")
(while (/= 2 (length (setq ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE")))))))))
(Alert "\nChi chon 2 line!!")
)
(setq tt10a (dxf 10 (car ss))
tt11a (dxf 11 (car ss))
tt10b (dxf 10 (last ss))
tt11b (dxf 11 (last ss))
)
 
(princ "\nChon cac line bi cat:") 
(foreach v (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LINE"))))))
(if (and (setq a (inters tt10a tt11a (dxf 10 v) (dxf 11 v)))
(setq b (inters tt10b tt11b (dxf 10 v) (dxf 11 v))))
(command "trim" (car ss) (last ss) "" (dxf 10 v) (dxf 11 v) "")))
(command "undo" "e") (setvar 'cmdecho 1)
(princ)
)

Cảm ơn bạn Tot77 nhiều đã làm theo đúng ý mình, nhưng chỉ có tác dụng với Line thôi hả bạn, bạn có thể chỉnh lại một chút xíu là có thể áp dụng cho Line, Pline, Xline, Rectang, Circle không. Thanks bạn nhiều! chúc các bạn buổi tối vui vẻ !!!


  • 0

#12 Nguyen Giap

Nguyen Giap

    Edu level: ao10, to6

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

Đã gửi 26 September 2015 - 08:54 AM

Gõ lệnh Trim rồi chọn thông số Fence ( chọn đối tượng giao với một đường Polyline). yêu cầu của bạn hơi máy móc


  • 0