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

[Đã xong] Lisp hide & show object

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

Các bác cho e hỏi là: INVIS thì có ẩn đối tượng, mà e gõ VIS k có thấy hiện ra, k biết là do sao ạ, e dùng cad 2012. Thx 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

các bác cho e hỏi tý, e load lệnh này về rồi, dùng lệnh ẩn thì được, vậy giờ e muốn hiện những đối tượng đã ẩn thì bấm lệnh nào vậy?

Hề hề hề,

Lệnh vis

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: Ở biểu tượng ngọn đèn ở góc dưới bên phải màn hình có 3 lệnh :

1./ Lệnh hideobjects : Ẩn đối tượng được chọn

2./ Lệnh isolateobjects : Hiện đối tượng đã chọn, các đối tượng còn lại của CAD (không phải đối tượng chọn) sẽ bị ẩn

3./ Lệnh unisolateobjects: Hiện toàn bộ đối tượng đã bị ẩn

 

Có cách nào chế lại lệnh này để nó có hiệu lực trên từng viewport ko các bác :-s

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ó cách nào chế lại lệnh này để nó có hiệu lực trên từng viewport ko các bác :-s

Bác kiệm lời quá!

 -có phải là : khi chọn viewport nào đó -> tất cả đối tượng trong viewport đó sẽ ần/hiệ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

Làm được, n viết hơi ngại. Cơ chế là khi chọn 1 đt nào đó, chuyển tất cả các đối tượng khác sang 1 layer đặc biệt hoặc ngược lại rồi Òff nó trong Current VP. Khi nào Un-isolated thì trả lại trạng thái Layer ban đầu

  • 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

Bác Gia Bach hiểu sai ý em rồi, nó như là lệnh freeze layer trong vplayer nhưng được dùng ở cấp độ đối tượng chứ ko phải layer.

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ác Gia Bach hiểu sai ý em rồi, nó như là lệnh freeze layer trong vplayer nhưng được dùng ở cấp độ đối tượng chứ ko phải layer.

Trên viewport làm sao chọn được đối tượng nhỉ ?

(thông thường vẽ trên model)

  • 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

Nghĩa là ở tab layout, truy cập vào viewport ý 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

Đã bảo là ở cấp độ đối tượng mờ lị, layon vs layoff thì cần chi lisp.

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ó cách nào chế lại lệnh này để nó có hiệu lực trên từng viewport ko các bác :-s

Với Cad 2014-15  : các lệnh này (hideobjects, isolateobjects, unisolateobjects) chạy ngon trong active viewport.

  • 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

Bác gia bach vẫn chưa hiểu ý em rồi, ý em là nó tương tự như lệnh lệnh vplayfreeze, nghĩa là nó chỉ ẩn đối tượng trong viewport mình cần ẩn thôi, còn cáC viewport khác nó vẫn hiện.
Ví dụ cụ thể:
- Có 1 mặt bằng gồm tường, 2 cái cửa. (2 cửa cùng chung 1 layer).
- Có 2 viewport bên layout cùng chiếu vào mặt bằng đó.
Bây giờ ở viewport 1, em muốn ấn đi 1 cái cửa, viewport 2 giữ nguyên, không ẩn gì cả.
Lệnh hideobject sẽ không làm được việc này mà nó sẽ làm ẩn đi cái cửa ở cả 2 viewport.

  • 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

Có phải ý bác Mũn thế này ko ah?

     Chọn 1 layer, cho nó option:

1- Hoặc cho phép hiển thị trong viewport hiện hành (- viewport đang đặt con trỏ) ko được hiển thị trong các layout khác

Mục đích: Để khi thể hiện bản vẽ bên layout, khi người vẽ bổ sung thêm 1 layer mới thì ko phải chọn từng viewport để vplayfreeze lại lần lượt rất tốn thời gian và dễ bị bỏ sót.

 

2- Hoặc chỉ cho phép layer đó hiển thị trong các viewport khác và bị vplayfreeze trong chính viewprot hiện hành.

 

Vì e đang dùng CAD2007 nên ko biết các phiên bản về sau có tính năng như e trình bày ko, các bác "chém" nhẹ tay hihi

  • 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

Bác gia bach vẫn chưa hiểu ý em rồi, ý em là nó tương tự như lệnh lệnh vplayfreeze, nghĩa là nó chỉ ẩn đối tượng trong viewport mình cần ẩn thôi, còn cáC viewport khác nó vẫn hiện.

Ví dụ cụ thể:

- Có 1 mặt bằng gồm tường, 2 cái cửa. (2 cửa cùng chung 1 layer).

- Có 2 viewport bên layout cùng chiếu vào mặt bằng đó.

Bây giờ ở viewport 1, em muốn ấn đi 1 cái cửa, viewport 2 giữ nguyên, không ẩn gì cả.

Lệnh hideobject sẽ không làm được việc này mà nó sẽ làm ẩn đi cái cửa ở cả 2 viewport.

Bác có thể tạo ViewPort đa giác lõm, tham khảo :  http://www.cadviet.com/forum/topic/13772-muon-viewport-de-len-viewport-truoc-do/

  • 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

16719_capture.png

 

Ở đây em có 2 viewport cùng nhìn vào 1 vị trí bên model. Cả 6 cái ghế này đều nằm trên 1 layer. Bây giờ em muốn ẩn đi 1 cái ghế ở viewport 1 nhưng vẫn hiện ở viewport 2.
Nếu dùng lệnh hideobject thì ở viewport 2, cái ghế cũng sẽ bị ẩn đi.

Để làm được như thế này thì em phải làm thủ công bằng cách đẻ thêm 1 layer có thuộc tính giống với layer chứa cái ghế, sau đó em chuyển cái ghế muốn ẩn sang layer đó, rồi tắt nó đi ở viewport 1.
Em muốn hỏi là có thể chế lại lệnh hideobject hoặc sử dụng lisp để rút ngắn thao tác và ko phải đẻ thêm layer như em làm ko?

  • 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

OP nói rõ là object, bạn cứ lái sang Layer chi vậy ??

Sorry bác Ketxu nhé!

Vậy nhân tiện cho mình hỏi ko biết có lệnh nào trong CAD2007 hoặc lisp nào có tính năng như mình trình bày ko ah? Thanks all

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

Sorry bác Ketxu nhé!

Vậy nhân tiện cho mình hỏi ko biết có lệnh nào trong CAD2007 hoặc lisp nào có tính năng như mình trình bày ko ah? Thanks all

Mấy tính năng này trong bảng layer ở layout đều có hết mà 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

Có thể là:

Khi người dùng chọn đối tượng, xác định Boundary >>> tạo LWpolyline theo Bo đó >>> Chspace để chuyển LWpoly vừa tạo sang môi trường layout và Wipeout theo LWpoly đó để che

 

p/s: Chỉ thực hiện thao tác này khi đã bố trí bản vẽ xong, hoặc là nhờ cao nhân hiến kế để quản lý tốt mấy cái Wipeout sinh ra đó, tránh lằng nhằng :D

 

:D Trình còn non nhưng xin góp ý, mấy bác nghĩ sao ạ ! :D

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ó thể là:

Khi người dùng chọn đối tượng, xác định Boundary >>> tạo LWpolyline theo Bo đó >>> Chspace để chuyển LWpoly vừa tạo sang môi trường layout và Wipeout theo LWpoly đó để che

 

p/s: Chỉ thực hiện thao tác này khi đã bố trí bản vẽ xong, hoặc là nhờ cao nhân hiến kế để quản lý tốt mấy cái Wipeout sinh ra đó, tránh lằng nhằng :D

 

:D Trình còn non nhưng xin góp ý, mấy bác nghĩ sao ạ ! :D

Dùng wipeOut thì e rằng nó cũng che luôn cái cạnh bàn (trong viewport1 OP vẽ thấy cạnh bàn, chỉ ko thấy cái ghế).

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ấy tính năng này trong bảng layer ở layout đều có hết mà bạn.

Mình ví dụ thế này nhé! Bác vẽ 1 bộ bản vẽ các bộ môn tầm 50 layout, mọi thứ vẽ xong. Đến lúc này phát sinh thêm 01 HT thoát nước mưa chẳng hạn với layer nuoc_mua. Khi đó bác hướng dẫn giúp e là làm sao chỉ hiển thị layer này - layer nuoc_mua chỉ trong layout thứ 51 mới p/sinh thêm mà ko cần phải click từng viewport trong 50 layout trước đó. Tại e cũng mới dùng layout CAD nên ko rành lắm. Thanks

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

16719_untitled.png

 

Bạn tạo mới layer nuoc_mua bằng nút này, nó sẽ frozen trong 50 viewport bạn đã có.

  • 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ấn đề của bác Mũn tưởng đơn giản nhưng không đơn giản tí nào, viết ra rồi lại xóa. Có rất nhiều trường hợp chưa lường trước được ở mức tự động. Làm tay như bác vẫn là kiểm soát dễ nhất

  • 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

Em mù tịt trong vấn đề lập trình, nhưng em hiểu nôm na cơ chế lệnh của nó sẽ dư lày:
Khi pick chọn đối tượng thì lisp sẽ làm những công việc sau:
1: Đẻ thêm 1 lớp layer có thuộc tính như layer hiện đang chứa đối tượng (ví dụ đối tượng thuộc layer 3 thì đẻ thêm 1 layer có tên là 3_hide với thuộc tính như layer 3)
2: Chuyển đối tượng về layer mới đẻ thêm.
3: Set vp freeze cho layer mới đẻ thêm tại viewport hiện hành.
Bước 2 và bước 3 có thể đổi chỗ cho nhau.

Đấy là em nghĩ như thế, còn ko biết có thể thực hiện được hay ko.

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


×