Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
kid_a2pbc

[Yêu cầu] – Lisp Trim hàng loạt đoạn thẳng nằm giữa nhiều đoạn thẳng song song.

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

kid_a2pbc    1

Hề hề hề,

Sau nhiều tí ngẫm nghĩ thì mình làm ra được cái này, không biết đã đúng ý bạn chưa. Hãy dùng thử và cho ý kiến để nếu có thể được mình sẽ chỉnh sửa thêm.

http://www.cadviet.c...4_multitrim.lsp

Chúc bạn hết sốt ruột.

Hề hề hề,...

Cám ơn bác rất nhiều, em đã dùng thử rồi, test trên 2 bản vẽ khác nhau thì có một bản vẽ bão lỗi như sau :

Untitled-1.png

Còn một bản thì nó chỉ cắt được một phần, tức là chỉ được một vài đường ngang thôi. Lúc nào có thời gian bác chỉnh sửa cho em với, em cám ơn 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
EDIT    0

Đây! Có đây. Muốn giúp ah? Đi mua kem rồi mang sang biếu anh ngồi bên phải đây. Có liền, có liề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
EDIT    0

Do đặc thù công việc như vậy nên bạn kid_a2 mới bắt buộc phải trim như vậy. Vì đây là bản sửa từ bản vẽ kiến trúc ( k phải bản vẽ mới do mình vẽ) mà còn phụ thuộc nhiều yếu tố như cách chia thanh dọc thanh ngang như là cắt đến đâu, thanh nào continue, thanh nào phải cắt. Mong mọi ng viết lisp cho bạn theo ý của bạn ấy chứ đừng nên bắt bạn ấy làm theo ý các bạn. Tuy các ý kiến đó cũng hay nhưng k phù hợp với công việc của bạn ấy. Cảm ơn mọi ngườ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
EDIT    0

http://www.cadviet.com/upfiles/3/113486_zxcv.dwg

Ví dụ như thế này ah. Mình phải chia các lại các thanh từ hình trái thành hình bên phải. Các thanh dọc để continue, các thanh ngang sẽ bị cắt. Tại những vị trị có cửa trượt thì các thanh ngang lại continue, các thanh dọc bị cắt. Vì khoảng cách nhỏ nên zoom, pan nhiều sẽ rất lâu và mỏi mắt. Khối lượng công vc lớn nên làm thủ công thì k ổn. Mong các anh e xem lại yêu cầu rồi viết lại lisp đc như ý chủ thớt.

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
phamthanhbinh    3.123

Cám ơn bác rất nhiều, em đã dùng thử rồi, test trên 2 bản vẽ khác nhau thì có một bản vẽ bão lỗi như sau :

 

Còn một bản thì nó chỉ cắt được một phần, tức là chỉ được một vài đường ngang thôi. Lúc nào có thời gian bác chỉnh sửa cho em với, em cám ơn bác! :)

Hề hề hề,

Việc nó chỉ cắt được một vài đường là có thể do khi bạn chọn đối tượng, màn hình chưa zoom all.

Việc ở bản vẽ sau bạn không dùng được có thể do bạn chưa load lisp này vào bản vẽ đó. Bạn nên nhớ lisp chỉ hoạt động trên bản vẽ nào bạn có load nó mà thôi, trừ trường hợp bạn load lisp vào trong Startup Suite.

Mình đã test thử thì thấy hoàn toàn không có lỗi như bạn nói. Có thể bạn sử dụng chưa đúng cách chăng.

Cách dùng cụ thể như sau:

1/- Mở bản vẽ cần sửa,

2/- Load lisp multitrim vào bản vẽ.

3/- Gõ lệnh multr

4/- Khi lisp hiện thông báo, nhấp Ok và chọn các đường cần cắt bỏ (khác với lệnh trim là chọn đường cắt trước rồi mới chọn đường cần cắt).Phải zomm màn hình về sao cho thấy hết các đường cần cắt.

5/- Khi đã chọn xong các đường cần cắt thì nhấn enter để lisp thực hiện nhiệm vụ.

 

Mình đã bổ sung lệnh zoom extents và zoom previous để bạn không cần zoom màn hình bằng tay nữa.

 

Hãy thử lại nhé.

http://www.cadviet.com/upfiles/3/5194_multitrim_1.lsp

 

Chúc bạn vui.

Hề hề hề,..

  • 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
Hoan1111    694

Cám ơn bác rất nhiều, em đã dùng thử rồi, test trên 2 bản vẽ khác nhau thì có một bản vẽ bão lỗi như sau :

Untitled-1.png

Còn một bản thì nó chỉ cắt được một phần, tức là chỉ được một vài đường ngang thôi. Lúc nào có thời gian bác chỉnh sửa cho em với, em cám ơn bác! :)

1) Một bản bị lỗi là do chưa Ap đã gõ lệnh!

2) Một bản chỉ cắt được một phần là do phần còn lại vẽ bằng lệnh MLINE

3) Nếu vẽ bằng lệnh MLINE phải phá vỡ MLINE mới dùng lisp trim được, và nó cũng chỉ trim được một phần nào thôi, còn lại vẫn phải trim thủ công!

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
ketxu    2.653

http://www.cadviet.c...113486_zxcv.dwg

Ví dụ như thế này ah. Mình phải chia các lại các thanh từ hình trái thành hình bên phải. Các thanh dọc để continue, các thanh ngang sẽ bị cắt. Tại những vị trị có cửa trượt thì các thanh ngang lại continue, các thanh dọc bị cắt. Vì khoảng cách nhỏ nên zoom, pan nhiều sẽ rất lâu và mỏi mắt. Khối lượng công vc lớn nên làm thủ công thì k ổn. Mong các anh e xem lại yêu cầu rồi viết lại lisp đc như ý chủ thớt.

Qua file bản vẽ - nếu nó giống chủ topic (vì mình thấy hình như 2 bạn ngồi một chỗ) - thì khẳng định luôn là chủ topic đã làm mất khá nhiều thời gian của NHỮNG AI ĐỊNH VIẾT GIÚP. Khác hoàn toàn với hình vẽ nhé :) Mặc dù kêu gọi post file từ những bài đầu nhưng đến bài 29 mới lộ ra thế này @@

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
EDIT    0

Mong mọi người thông cảm vì chủ thớt trình bày chưa được rõ ý đồ lắm. Lisp này anh Ketxu viết thì đơn giản rồi. Hì! Các a vất vả quá.

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
Doan Van Ha    2.678

Tôi cũng định giúp chủ topic vì thấy bạn ấy rên quá (và đang viết gần xong). Tình cờ đọc bản vẽ của bạn, thấy y/c khác hoắc khác hơ. Với y/c này thì.... Nhất là mấy cái "cửa kính" nằm trên cùng, nó ngẫu hứng quá đi 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
kid_a2pbc    1

Qua file bản vẽ - nếu nó giống chủ topic (vì mình thấy hình như 2 bạn ngồi một chỗ) - thì khẳng định luôn là chủ topic đã làm mất khá nhiều thời gian của NHỮNG AI ĐỊNH VIẾT GIÚP. Khác hoàn toàn với hình vẽ nhé :) Mặc dù kêu gọi post file từ những bài đầu nhưng đến bài 29 mới lộ ra thế này @@

Cái của em nó không giống như bạn Edit bảo đâu bác. Các bác cứ làm giống như em là đượ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
EDIT    0

Cái file e up chỉ là ví dụ thôi. Công việc thì đại loại là như vậy. Anh Ketxu, anh Doan Van Ha, anh Pham Thanh Binh và mọi người xem rồi viết hộ bạn chủ thớt đúng theo như yêu cầu của bạn ấy nhé.

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
phamthanhbinh    3.123

Cái của em nó không giống như bạn Edit bảo đâu bác. Các bác cứ làm giống như em là được. @@

Hề hề hề,

Bạn đã test lại như mình nói chưa??? Nếu vẫn chưa được thì hãy gửi b3n vẽ của bạn lên chứ đoán mò thì khó quá...

  • 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
Doan Van Ha    2.678

Hề hề hề,

Bạn đã test lại như mình nói chưa??? Nếu vẫn chưa được thì hãy gửi b3n vẽ của bạn lên chứ đoán mò thì khó quá...

Bác Bình: tôi test của bác rồi. Nó cắt xong và tạo thành từng hình chữ nhật riêng lẻ chứ không như y/c chủ topic. Bác xem lại thứ tự các line bất kỳ xem sao.

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
Hoan1111    694

Bác Bình: tôi test của bác rồi. Nó cắt xong và tạo thành từng hình chữ nhật riêng lẻ chứ không như y/c chủ topic. Bác xem lại thứ tự các line bất kỳ xem sao.

Nếu tất cả các đường vẽ bằng LINE em thấy nó vẫn cắt được bình thường

Chỉ có vẽ bằng MLINE không cắt được , sau khi phá vỡ bằng lệnh X thì cắt được bình thường . Chỉ khác thường là sau khi bấm chọn 0K xong hình vẽ nó tự động Zoom thay đổi vị trí trên màn hình.

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
Doan Van Ha    2.678

Nếu tất cả các đường vẽ bằng LINE em thấy nó vẫn cắt được bình thường

Chỉ có vẽ bằng MLINE không cắt được , sau khi phá vỡ bằng lệnh X thì cắt được bình thường . Chỉ khác thường là sau khi bấm chọn 0K xong hình vẽ nó tự động Zoom thay đổi vị trí trên màn hình.

Cắt bình thường đối với người này mà không bình thường đối với kia là vẫn chưa bình thường.

Tất nhiên đang nói tới Line.

  • 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
Doan Van Ha    2.678

Lisp Trim 2n Lines này bởi 2m Lines khác, mà các Lines này song song với trục X và Y.

(defun C:HA( / ssd ssb layo lay lst3 lst4 pd pc p i)
;Doan Van Ha - CADViet.com - Ngay 10/12/2012
;Chuc nang: Trim 2n Lines boi 2m Lines khac. Cac Lines nay // voi truc X va Y.
(vl-load-com) (command "undo" "be") (setq layo (getvar "clayer"))
(if
 (and
  (princ "\nChon cac Line lam dao cat...")
  (setq ssd (ssget '((0 . "Line"))))
  (princ "\nChon cac Line bi cat...")
  (setq ssb (ssget '((0 . "Line")))))
 (progn
  (foreach ent1 (vl-remove-if 'listp (mapcar 'cadr (ssnamex ssb)))
   (setq lay (cdr (assoc 8 (entget ent1))))
   (setq lst3 (list (setq pd (cdr (assoc 10 (entget ent1)))) (setq pc (cdr (assoc 11 (entget ent1))))))
   (foreach ent2 (vl-remove-if 'listp (mapcar 'cadr (ssnamex ssd)))
	(if (setq p (car (acet-geom-intersectwith ent1 ent2 0)))
     (setq lst3 (cons p lst3))))
   (if (equal (cadr pd) (cadr pc) 1E-8)
	(setq lst4 (cons (list lay (vl-sort lst3 '(lambda (p1 p2) (> (car p1) (car p2))))) lst4))
	(setq lst4 (cons (list lay (vl-sort lst3 '(lambda (p1 p2) (> (cadr p1) (cadr p2))))) lst4)))
   (vla-delete (vlax-ename->vla-object ent1)))
  (foreach lst (reverse lst4)
   (setq i 0)
   (repeat (/ (length (cadr lst)) 2)
	(setvar "clayer" (car lst))
	(entmake (list (cons 0 "LINE") (cons 10 (nth i (cadr lst))) (cons 11 (nth (1+ i) (cadr lst)))))
	(setq i (+ i 2))))))
(setvar "clayer" layo) (command "undo" "end") (princ))

  • Vote tăng 5

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
Hoan1111    694

Cắt bình thường đối với người này mà không bình thường đối với kia là vẫn chưa bình thường.

Tất nhiên đang nói tới Line.

Command: multr undo Current settings: Auto = On, Control = All, Combine = Yes

Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back]

<1>: be

Command: zoom

Specify corner of window, enter a scale factor (nX or nXP), or

[All/Center/Dynamic/Extents/Previous/Scale/Window/Object] <real time>: e

Command:

Select objects: Specify opposite corner: 8 found

 

Select objects: trim

Current settings: Projection=UCS, Edge=None

Select cutting edges ...

Select objects or <select all>: 9 found

 

Select objects:

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]:

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]:

Select object to trim or shift-select to extend or

[Fence/Crossing/Project/Edge/eRase/Undo]:

Command: trim

Current settings: Projection=UCS, Edge=None

Select cutting edges ...

Select objects or <select all>: 9 found

 

Select objects:

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]:

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]:

Select object to trim or shift-select to extend or

[Fence/Crossing/Project/Edge/eRase/Undo]:

Command: trim

Current settings: Projection=UCS, Edge=None

Select cutting edges ...

Select objects or <select all>: 9 found

 

Select objects:

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]:

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]:

Select object to trim or shift-select to extend or

[Fence/Crossing/Project/Edge/eRase/Undo]:

Command: trim

Current settings: Projection=UCS, Edge=None

Select cutting edges ...

Select objects or <select all>: 9 found

 

Select objects:

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]:

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]:

Select object to trim or shift-select to extend or

[Fence/Crossing/Project/Edge/eRase/Undo]:

Command: trim

Current settings: Projection=UCS, Edge=None

Select cutting edges ...

Select objects or <select all>: 9 found

 

Select objects:

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]:

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]:

Select object to trim or shift-select to extend or

[Fence/Crossing/Project/Edge/eRase/Undo]:

Command: trim

Current settings: Projection=UCS, Edge=None

Select cutting edges ...

Select objects or <select all>: 9 found

 

Select objects:

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]:

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]:

Select object to trim or shift-select to extend or

[Fence/Crossing/Project/Edge/eRase/Undo]:

Command: trim

Current settings: Projection=UCS, Edge=None

Select cutting edges ...

Select objects or <select all>: 9 found

 

Select objects:

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]:

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]:

Select object to trim or shift-select to extend or

[Fence/Crossing/Project/Edge/eRase/Undo]:

Command: trim

Current settings: Projection=UCS, Edge=None

Select cutting edges ...

Select objects or <select all>: 9 found

 

Select objects:

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]:

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]:

Select object to trim or shift-select to extend or

[Fence/Crossing/Project/Edge/eRase/Undo]:

Command: zoom

Specify corner of window, enter a scale factor (nX or nXP), or

[All/Center/Dynamic/Extents/Previous/Scale/Window/Object] <real time>: p

Command: Regenerating model.

undo Current settings: Auto = On, Control = All, Combine = Yes

Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back]

<1>: e

Command:

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
Hoan1111    694

Thử lisp của anh Hà:

Command: ha undo Current settings: Auto = On, Control = All, Combine = Yes

Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back]

<1>: be

Command:

Chon cac Line lam dao cat...

Select objects: Specify opposite corner: 8 found

Select objects:

Chon cac Line bi cat...

Select objects: Specify opposite corner: 8 found

Select objects: undo Current settings: Auto = On, Control = All, Combine = Yes

Enter the number of operations to undo or [Auto/Control/BEgin/End/Mark/Back]

<1>: end

Command:

 

"Cắt bình thường đối với người này mà không bình thường đối với kia là vẫn chưa bình thường.

Tất nhiên đang nói tới Line."

Em không hiể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
Doan Van Ha    2.678

Nhắc lại:

Cắt bình thường đối với người này mà không bình thường đối với kia là vẫn chưa bình thường.

Tất nhiên đang nói tới Line.

Minh họa (dùng lisp bác PTB mà bạn Hoằn cứ chắc như đinh đóng cột):

http://www.cadviet.c...7029_trim_2.dwg

67029_trim_ptb1.png

  • Vote tăng 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
EDIT    0

E đã test thử lisp của anh Ha. Lisp làm việc đúng ý em rồi. Cám ơn a rất nhiều. Từ nay công vc đỡ vất vả hơn rồi. hô hô. Cadviet muôn năm!

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
Hoan1111    694

Nhắc lại:

 

 

Minh họa (dùng lisp bác PTB mà bạn Hoằn cứ chắc như đinh đóng cột):

http://www.cadviet.c...7029_trim_1.dwg

67029_trim_ptb_1.png

114276_fssa777_1.png

Lỗi do anh thao tác kiểu của anh, còn em thì làm kiểu của em:

Sau khi gõ lệnh Multr >> Quét chọn đối tượng >> là các cột >> sẽ được :

1)- Nếu quét chọn tiếp hàng, nó sẽ ra cái của anh

2)- Không quét chọn mà gõ Enter nó sẽ ra cái của em

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
Hoan1111    694

E đã test thử lisp của anh Ha. Lisp làm việc đúng ý em rồi. Cám ơn a rất nhiều. Từ nay công vc đỡ vất vả hơn rồi. hô hô. Cadviet muôn năm!

Cái này chỉ sử dụng sửa bản vẽ của người khác thì chấp nhận được.

Còn nếu như tự mình vẽ bản vẽ rồi tự thò trim cút ra để chữa cháy buồn cười lắm! :rolleyes:

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
Hoan1111    694

Dòm kỹ hình lại đi: kiểu của em cũng không đúng nốt.

Em Hoằn thử trim bằng lisp của anh Hà! :rolleyes: chọn hàng trước cột sau:

114276_8770.png

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
Doan Van Ha    2.678

Anh sơ ý post lên bản vẽ bị thừa 1 line nên mới vậy. Em down lại bản vẽ anh vừa up (link cũ) hoặc tự phóng tác ra thì sẽ thấy không sai đâ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

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  

×