Chuyển đến nội dung
Diễn đàn CADViet
hai_1401

Lisp xóa toàn bộ đối tượng được ngăn bởi đường thẳng

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

Em có được đọc topic về lisp xóa toàn bộ đối tượng trong vùng khép kín ở đây: http://www.cadviet.com/forum/index.php?showtopic=11747 Em muốn thay đổi lisp để có thể xóa toàn bộ các đối tượng nằm về 1 phía của 1 đường thẳng như trong ví dụ này http://www.cadviet.com/upfiles/2/vi_du.dwg. Nhờ bác Thiep và bác Gia_bach và các bác am hiểu về lisp sửa giúp nhé :s_big:

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
Em có được đọc topic về lisp xóa toàn bộ đối tượng trong vùng khép kín ở đây: http://www.cadviet.com/forum/index.php?showtopic=11747 Em muốn thay đổi lisp để có thể xóa toàn bộ các đối tượng nằm về 1 phía của 1 đường thẳng như trong ví dụ này http://www.cadviet.com/upfiles/2/vi_du.dwg. Nhờ bác Thiep và bác Gia_bach và các bác am hiểu về lisp sửa giúp nhé :s_big:

Hay quá! Nhưng tôi nghĩ rằng là được điều đó thật khó!

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
Em có được đọc topic về lisp xóa toàn bộ đối tượng trong vùng khép kín ở đây: http://www.cadviet.com/forum/index.php?showtopic=11747 Em muốn thay đổi lisp để có thể xóa toàn bộ các đối tượng nằm về 1 phía của 1 đường thẳng như trong ví dụ này http://www.cadviet.com/upfiles/2/vi_du.dwg. Nhờ bác Thiep và bác Gia_bach và các bác am hiểu về lisp sửa giúp nhé :s_big:

 

Với các công cụ của cad bạn làm việc này cũng chẳng mất bao nhiêu công sức và thời gian mà. Bạn thử lệnh extrim của express tool chưa?lisp chi cho rắc rối hả bạ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

Lệnh Extrim thì em biết rồi, có điều có nhiều lúc mình làm thế nó hơi thủ công, em nghĩ là dùng lisp nhiều lúc vẫn hay hơn. Không phải em ko biết lệnh trước khi biết autolisp như bác Trang nói đâu. Em cũng nghĩ điều này cũng ko phải là quá khó, nếu như các bác kia đã viết được cái lisp EWB

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 không có ý nói bạn không biết các lệnh của AutoCAD. Mà là mình nên sử dụng hết tất cả các lệnh của AutoCAD rồi hãy nghĩ đến việc tạo 1 lệnh AutoLisp mới. Không nên lạm dụng AutoLisp. AutoLisp không phải là chiếc đũa thần của chúng ta.

 

Thế này nhé, bạn có biết các lệnh sau không nhé:

 

1- Chuyển 1 block thành Xref

 

2- Copy từ bản vẽ A và paste vào bản vẽ B với cùng tọa độ của bản vẽ A

 

3- Copy thông tin từ file Excel vào file *.dwg với định dạng của AutoCAD - đối tượng của CAD

 

4- Set lại đường dẫn cho các đối tượng trong file AutoCAD

 

5- Thay đổi hàng loạt giá trị của Attribute Block mà không cần mở bản vẽ

 

Nếu bạn trả lời được hết câu hỏi của mình thì rất hoan nghênh bạn gia nhập thế giới lập trình hỗ trợ cho AutoCAD :s_big:

Ko cần phải xem, em có thể nói luôn là có nhiều cái bác yêu cầu em hoàn toàn chưa biết, và em có thể khẳng định là nhiều người trong diễn đàn và nhiều người sử dụng autocad cũng sẽ ko biết mấy cái lệnh của bác yêu cầu. Tuy nhiên em nghĩ rằng, học autocad là 1 quá trình lâu dài và 1 trong những phương pháp học đó là học hỏi mọi người trên diễn đàn. Em cũng biết rất nhiều người trên diễn đàn ngày trước chỉ được coi là "học mót" thôi, tuy nhiên sau một quá trình cố gắng thì họ đã đạt được những kiến thức cực tốt. Và em cũng biết các bác đó sau khi đã thành công thì đã quay lại và giúp đỡ những newbie như em và những người khác một cách nhiệt tình mà không bao h phải đặt ra những điều lệ này nọ hay phải bắt bọn em phải trả lời hết câu hỏi này nọ mới hỗ trợ cho đâu.

Như bác nói thì em (và nhiều người khác) có thể ko bao h được hỗ trợ bởi 1 tài năng lớn như bác (cứ cho là thế đi), và thú thật, nếu được bác giúp đỡ kiểu này em cũng chẳng có hứng thú j mấy đâ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

Em chẳng phải là dân Hà Thành, cũng chẳng thông minh và sắc sảo, em nghĩ mình hợp với câu "cần cù bù thông minh" hơ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
Mình không có ý nói bạn không biết các lệnh của AutoCAD. Mà là mình nên sử dụng hết tất cả các lệnh của AutoCAD rồi hãy nghĩ đến việc tạo 1 lệnh AutoLisp mới. Không nên lạm dụng AutoLisp. AutoLisp không phải là chiếc đũa thần của chúng ta.

 

Thế này nhé, bạn có biết các lệnh sau không nhé:

 

1- Chuyển 1 block thành Xref

 

2- Copy từ bản vẽ A và paste vào bản vẽ B với cùng tọa độ của bản vẽ A

 

3- Copy thông tin từ file Excel vào file *.dwg với định dạng của AutoCAD - đối tượng của CAD

 

4- Set lại đường dẫn cho các đối tượng trong file AutoCAD

 

5- Thay đổi hàng loạt giá trị của Attribute Block mà không cần mở bản vẽ

 

Nếu bạn trả lời được hết câu hỏi của mình thì rất hoan nghênh bạn gia nhập thế giới lập trình hỗ trợ cho AutoCAD :s_big:

 

Chung quy lại là bạn A muốn bạn B cũng fải qua một quá trình giống như "nhiều người trên diễn đàn ngày trước chỉ được coi là "học mót" thôi, tuy nhiên sau một quá trình cố gắng thì họ đã đạt được những kiến thức cực tốt", chứ ko muốn bạn B ...

Xin gợi ý cho B một cách làm rất "Việt Nam" thế này (vẫn dùng được lisp sẵn có mà ko fải fiền ai cả :cheers: ):

B1- Lấy đường line của bạn làm cơ sở, vẽ đại một đường rồng rắn bao tất cả các thứ cần xóa đi (vẽ thật to, thật rộng sao cho bao ...hết 1/2 mặt fẳng Model là tốt nhất - cái này để cho giống ý nghĩa "đuờng phân cách" :gun: )

B2- Lấy cái lisp mà bạn đã load được, dùng vô tư :s_big:

B3- nếu bạn vẫn bảo lưu ý kiến, xem lại ...buớc 1 :s_big:

  • 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
Lệnh Extrim thì em biết rồi, có điều có nhiều lúc mình làm thế nó hơi thủ công, em nghĩ là dùng lisp nhiều lúc vẫn hay hơn. Không phải em ko biết lệnh trước khi biết autolisp như bác Trang nói đâu. Em cũng nghĩ điều này cũng ko phải là quá khó, nếu như các bác kia đã viết được cái lisp EWB

Mình không hiểu lệnh extrim thì thủ công chổ nào vì theo mình biết thì cách dừng nó như sau:

-Nhập lệnh.

-Chọn đối tượng (cụ thề trường hợp của bạn là line)

-Pick ra phía muốn xóa

=====>xong. Cad sẽ cắt trụi lủi cái gì nó cắt qua và bạn xóa phần còn lại chưa đầy 1 phút mà. Còn đúng như snowman nói đấy nếy thích dùng lisp thì dùng vậy là được. Chúc buổi sáng vui vẽ!

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 không hiểu lệnh extrim thì thủ công chổ nào vì theo mình biết thì cách dừng nó như sau:

-Nhập lệnh.

-Chọn đối tượng (cụ thề trường hợp của bạn là line)

-Pick ra phía muốn xóa

=====>xong. Cad sẽ cắt trụi lủi cái gì nó cắt qua và bạn xóa phần còn lại chưa đầy 1 phút mà. Còn đúng như snowman nói đấy nếy thích dùng lisp thì dùng vậy là được. Chúc buổi sáng vui vẽ!

Thiep nghĩ Hai_1401 muốn kết hợp 2 lệnh: extrim để xóa các đối tượng giao với line, và lệnh xóa các đối tượng còn lại trong miền trên hay dưới line.

Nếu ta phối hợp với 2 biến hệ thống "extmin" và "extmax" thì sẽ tìm được đường bao miền trên hay miền dưới 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
Mình không hiểu lệnh extrim thì thủ công chổ nào vì theo mình biết thì cách dừng nó như sau:

-Nhập lệnh.

-Chọn đối tượng (cụ thề trường hợp của bạn là line)

-Pick ra phía muốn xóa

=====>xong. Cad sẽ cắt trụi lủi cái gì nó cắt qua và bạn xóa phần còn lại chưa đầy 1 phút mà. Còn đúng như snowman nói đấy nếy thích dùng lisp thì dùng vậy là được. Chúc buổi sáng vui vẽ!

Thế nếu bản vẽ có số lượng cực lớn, thì lại phải chọn toàn bộ các đối tượng ở vùng đó để Earse đi hả bác? Nếu dung lượng bản vẽ mà lên đến 50M thì em nghĩ là ko thể dưới 1 phút được đâ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
Thế nếu bản vẽ có số lượng cực lớn, thì lại phải chọn toàn bộ các đối tượng ở vùng đó để Earse đi hả bác? Nếu dung lượng bản vẽ mà lên đến 50M thì em nghĩ là ko thể dưới 1 phút được đâu!

nhưng với lisp EWB thì bạn phải chờ lâu hơn rất nhiều đấ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
Thế nếu bản vẽ có số lượng cực lớn, thì lại phải chọn toàn bộ các đối tượng ở vùng đó để Earse đi hả bác? Nếu dung lượng bản vẽ mà lên đến 50M thì em nghĩ là ko thể dưới 1 phút được đâu!

Đây là một trường hợp bạn tưởng tượng ra để nói. Một bản vẽ lên đến 50M, bạn chẳng thể vô tư vạch 1 đuờng line rồi cắt phéng 1 nhát cho bay luôn một phần bản vẽ.

Với mình mỗi một đối tượng trên bản vẽ, trước khi xoá đi mình luôn fải cân nhắc xem chắc chắn mình có muốn xoá nó ko. vì xoá thì nhanh lắm, nhưng vẽ thì mất công hon rất nhiều.

 

Mình đồng ý với ý kiến của Trang. Mặc dù lisp giúp hỗ trợ tự động hoá công việc khá tốt. Nhưng nếu lê thuộc vào lisp quá nhiều sẽ khiến khả năng thao tác với cad rất kém. Trước khi đến với Lisp, mình đã tương đối hài lòng với những gì mà cad cung cấp.

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 không có ý nói bạn không biết các lệnh của AutoCAD. Mà là mình nên sử dụng hết tất cả các lệnh của AutoCAD rồi hãy nghĩ đến việc tạo 1 lệnh AutoLisp mới. Không nên lạm dụng AutoLisp. AutoLisp không phải là chiếc đũa thần của chúng ta.

 

Thế này nhé, bạn có biết các lệnh sau không nhé:

 

1- Chuyển 1 block thành Xref

 

2- Copy từ bản vẽ A và paste vào bản vẽ B với cùng tọa độ của bản vẽ A

 

3- Copy thông tin từ file Excel vào file *.dwg với định dạng của AutoCAD - đối tượng của CAD

 

4- Set lại đường dẫn cho các đối tượng trong file AutoCAD

 

5- Thay đổi hàng loạt giá trị của Attribute Block mà không cần mở bản vẽ

 

Nếu bạn trả lời được hết câu hỏi của mình thì rất hoan nghênh bạn gia nhập thế giới lập trình hỗ trợ cho AutoCAD :s_big:

b có thể trả lời đơn giản những câu hỏi đó không,1 chút gợi ý cho mọi ng chảng hạ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
1- Chuyển 1 block thành Xref --> Express/Block/Convert block to Xref

 

2- Copy từ bản vẽ A và paste vào bản vẽ B với cùng tọa độ của bản vẽ A --> Edit/Paste to Original Coordinate

 

3- Copy thông tin từ file Excel vào file *.dwg với định dạng của AutoCAD - đối tượng của CAD --> Edit/Paste Special/AutoCAD Entity

 

4- Set lại đường dẫn cho các đối tượng trong file AutoCAD --> Express/File Tools/Redefine Path

 

5- Thay đổi hàng loạt giá trị của Attribute Block mà không cần mở bản vẽ --> Express/File Tools/Update Drawing Property Data

 

AutoCAD hỗ trợ rất nhiều. Nếu bạn nắm vững hết AutoCAD thì bạn có thể làm được mọi thứ mà không cần đến AutoLisp. Bạn chỉ nên nghĩ đến AutoLisp khi bạn nhập dữ liệu ra hết mặt bằng, mặt đứng, mặt cắt công trình của bạn :s_big:

 

Nếu bạn trả lời được hết câu hỏi của mình thì rất hoan nghênh bạn gia nhập thế giới lập trình hỗ trợ cho AutoCAD

Chào bạn Trang.

 

Trong 5 câu thì

câu 1 ; câu 4; câu 5 : -> Vận dụng AutoLisp

Câu 2; câu 3 -> Sử dụng CAD

 

đúng là AutoCAD hỗ trợ rất nhiều. Bạn có chắc rằng bạn nắm vững hết AutoCAD thì bạn có thể làm được mọi thứ mà không cần đến AutoLisp không? Tue_NV nghĩ là bạn không thể. Bằng chứng là bạn đưa ra 5 câu hỏi mà trong đó có 3 câu là vận dụng Lisp rồi

 

Mình đồng ý với ý kiến của Trang. Mặc dù lisp giúp hỗ trợ tự động hoá công việc khá tốt. Nhưng nếu lê thuộc vào lisp quá nhiều sẽ khiến khả năng thao tác với cad rất kém. Trước khi đến với Lisp, mình đã tương đối hài lòng với những gì mà cad cung cấp.

Tue_NV đồng ý với bạn là nên tìm hiểu các lệnh của CAD. Nó có tác dụng hỗ trợ công việc vẽ của ta rất tốt. Hơn nữa khi nắm vững kiến thức của CAD, ta lại dùng kiến thức của CAD hỗ trợ lại khi ta viết Lisp

 

Còn hài lòng với những gì mà cad cung cấp ư? Bạn nên trả lời thật lòng của mình thì hay hơn

 

TB : Extrim là lệnh của Lisp chứ không nằm trong CAD

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

Thôi các bác ạ đừng đi lan man về việc này nửa. Mổi người có cách nghỉ riêng và làm việc theo thói quen. Riêng bản thân mình thì khoái dùng lisp nhứt hạng nên có nhửng lisp làm những việc rất vớ vẩn mình vẫn viết lisp. Còn việc dùng hoài rồi bị phụ thuộc thì mình làm 1 bộ di động lun đi đâu thì đem theo <_< .

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 không có ý nói bạn không biết các lệnh của AutoCAD. Mà là mình nên sử dụng hết tất cả các lệnh của AutoCAD rồi hãy nghĩ đến việc tạo 1 lệnh AutoLisp mới. Không nên lạm dụng AutoLisp. AutoLisp không phải là chiếc đũa thần của chúng ta.

 

Thế này nhé, bạn có biết các lệnh sau không nhé:

 

1- Chuyển 1 block thành Xref

 

2- Copy từ bản vẽ A và paste vào bản vẽ B với cùng tọa độ của bản vẽ A

 

3- Copy thông tin từ file Excel vào file *.dwg với định dạng của AutoCAD - đối tượng của CAD

 

4- Set lại đường dẫn cho các đối tượng trong file AutoCAD

 

5- Thay đổi hàng loạt giá trị của Attribute Block mà không cần mở bản vẽ

 

Nếu bạn trả lời được hết câu hỏi của mình thì rất hoan nghênh bạn gia nhập thế giới lập trình hỗ trợ cho AutoCAD :s_big:

 

Câu 1: Không biết

Câu 2: Cái này thì biết

Câu 3: Chưa hiểu

Câu 4: Chưa hiểu luôn

Câu 5: Chưa làm bao giờ

Hehhehhe

Vậy mà cũng được anh em trong diễn đàn gọi là cao thủ rùi

Tự nhiên nhớ nhân vật Hư Trúc trong "Thiên Long Bát Bộ", dùn có mỗi võ công nhập môn của Thiếu lâm là Vi Đà Chưởng mà đánh Cưu Ma Trí lên bờ xuống ruông luôn

hehhehhe

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
Nếu không đổi linetype thì trim được. :s_big:

Cái mình thật sự muốn biết là vì cớ gì mà cad kg thực hiện đc extrim trong trường hợp trên. Nếu trim thì tất nhiên nhưng rất chậ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
Cách của bạn cũng rất hay. Nếu vậy bạn cần lập trình để đặt bộ lisp của bạn trên web sau đó đi đâu cũng có thể xài được. AutoLisp online. :s_big:

Không phải ở đâu cũng có internet đâu bạn. Tụi mình ở nhà quê thì có USB là linh động lắm rồ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
Cái mình thật sự muốn biết là vì cớ gì mà cad kg thực hiện đc extrim trong trường hợp trên. Nếu trim thì tất nhiên nhưng rất chậm

Bởi vì như sau:

- Thứ nhất đường của bác tạo là 1 linetype không chuẩn của Cad.

- Thứ 2 Lệnh Extrim nó giống như trim với lựa chọn "F" . Nếu đường "fence" không cắt qua đường "chấm chấm" của bác (ở đây là cắt qua đường gạch liền chứ đoạn trống không được coi là cắt) thì nó không tìm thấy giao điểm và không cắt cho bác được. Bác không tin thì thử làm lệnh Trim với lựa chọn "F" xem sao. Điều này cũng xảy ra tương tự với đường Hidden của Cad chứ không riêng gì đường của bác. Sở dĩ lệnh Extrim vẫn cắt được đường Hidden vì : khoảng trống của nó nhỏ hơn so với đường liền, lệnh extrim nó có mấy tầng Fence

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
Bởi vì như sau:

- Thứ nhất đường của bác tạo là 1 linetype không chuẩn của Cad.

- Thứ 2 Lệnh Extrim nó giống như trim với lựa chọn "F" . Nếu đường "fence" không cắt qua đường "chấm chấm" của bác (ở đây là cắt qua đường gạch liền chứ đoạn trống không được coi là cắt) thì nó không tìm thấy giao điểm và không cắt cho bác được. Bác không tin thì thử làm lệnh Trim với lựa chọn "F" xem sao. Điều này cũng xảy ra tương tự với đường Hidden của Cad chứ không riêng gì đường của bác. Sở dĩ lệnh Extrim vẫn cắt được đường Hidden vì : khoảng trống của nó nhỏ hơn so với đường liền, lệnh extrim nó có mấy tầng Fence

Mình biết lệnh select với lựa chọn "f" kg tìm thấy đối tg khi đi qua khoảng trống. Nhưng mình kg hiểu cơ chế chọn của cad là cáí kiểu gì mà kg tìm đc các đg thẳng cắt ngang qua đg "fence". Đôi lúc cad cũng rất "ngớ ngẩn" với một số bài toán khá đơn giản. Với trường hợp trên chỉ cần chọn các đối tg với lựa chọn "c" hoặc "cp", sau đó kiểm tra sự giao nhau của các đối tg với đg "fence" có xét đến bên trong hay ngoài rồi cắt đi là đc. Nếu các bạn làm việc nhiều với các lệnh chọn đối tượng của cad, các bạn sẽ thấy cad còn nhiều "sơ hở", ví dụ việc chọn đối tượng với lựa chọn "cp" đi qua giữa hai đa giác lồng nhau, hay các đối tượng nằm gần đg "fence", cad vẫn chọn nhầm. Hay lệnh tìm đg boundary kg phải lúc nào cũng thành công. Theo mình, lệnh extrim và một số lệnh khác (như boundary...) cần phải đc viết lại. Bác nào đủ bản lĩnh thì ra tay cho anh em mở rộng tầm nhìn (mình kg làm đ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
Mình biết lệnh select với lựa chọn "f" kg tìm thấy đối tg khi đi qua khoảng trống. Nhưng mình kg hiểu cơ chế chọn của cad là cáí kiểu gì mà kg tìm đc các đg thẳng cắt ngang qua đg "fence". Đôi lúc cad cũng rất "ngớ ngẩn" với một số bài toán khá đơn giản. Với trường hợp trên chỉ cần chọn các đối tg với lựa chọn "c" hoặc "cp", sau đó kiểm tra sự giao nhau của các đối tg với đg "fence" có xét đến bên trong hay ngoài rồi cắt đi là đc. Nếu các bạn làm việc nhiều với các lệnh chọn đối tượng của cad, các bạn sẽ thấy cad còn nhiều "sơ hở", ví dụ việc chọn đối tượng với lựa chọn "cp" đi qua giữa hai đa giác lồng nhau, hay các đối tượng nằm gần đg "fence", cad vẫn chọn nhầm. Hay lệnh tìm đg boundary kg phải lúc nào cũng thành công. Theo mình, lệnh extrim và một số lệnh khác (như boundary...) cần phải đc viết lại. Bác nào đủ bản lĩnh thì ra tay cho anh em mở rộng tầm nhìn (mình kg làm đc)

Theo em thì không nên viết lại. Mình chỉ thay đổi, thêm thắt một chút trong lisp express là có thể khắc phục được lỗi gây ra

Ví dụ:

(defun C:EXX ()
(setq ss (ssget "X"))
(vl-cmdf "CHPROP" ss "" "LT" "Continuous" "")
(C:EXTRIM)
(vl-cmdf "CHPROP" ss "" "LT" "bylayer" "")
)

Đảm bảo là lệnh EXX luôn cắt được. Việc Bylayer chỉ là một ví dụ. Mình có thể lưu lại kiểu đường nét rồi gán lại sau. Đây là một cách để chữa chá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

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

×