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

hiện những nét ẩn dùng líp

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

Em chào cả nhà Cadviet! :)

Các anh ah! em mới dùng lisp lên ko hiểu nhiều còn phải chăm chỉ nhiều. Em dùng lisp ẩn từng đối tượng đường nhưng ko làm thế nào để hiện lại nhung dường ẩ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

Bạn dùng Lisp nào để ẩn từng đối tượng đường ??Ẩn layer chứa đối tượng đó hay ẩn đối tượng riêng biệt bằng lisp invis trên diễn đàn ? Bạn nhớ là cùng 1 việc nhưng có nhiều hướng giải quyết, và mỗi người viết lisp lại đi theo hướng riêng của mình, và nó không có quy chuẩn. Không giống như bạn nói đến AutoCAD2008 là ai cũng biết nó là thằng đấy ^^.

Gói gọn lại là : bạn dùng lisp nào?

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

(defun c:ivone()

(defun Dxf (Id Obj) ;định nghĩa hàm dxf

(cdr (assoc Id (entget Obj)))

);end Dxf

(setq elem (car (entsel "\nDoi tuong can an: "))) ;chọn đối tượng

(if (dxf 60 Elem) ; kiểm tra xem có mã 60 không?

;nếu có thấy:

(entmod (subst (cons 60 1) (cons 60 (dxf 60 elem)) (entget Elem)))

;nếu không thêm:

(entmod (append (entget Elem) (list '(60 . 1))))

)

)

Chương trình này đay ạ! mong bác chỉ giáo

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

Đúng là ẩn đối tượng bằng dxf60 rồi, bạn dùng lisp này trên diễn đàn, lệnh mình để là hn, bạn thích đặt lại ntn thì đặt nhé

 

;free lisp from cadviet.com @ 
(defun c:hn (/ WhatNextSSet Count Elem)

 (defun Dxf (Id Obj)
   (cdr (assoc Id (entget Obj)))
 );end Dxf

(cond
 ((setq SSet (ssget "_X" '((60 . 1))))
  (initget "Yes No")
  (setq WhatNext (cond
	   ((getkword "\nAll hidden entities will be visible. Continue? No, : "))
	   (T "Yes")))
  (cond
  ((= WhatNext "Yes")
   (prompt "\nPlease wait...")
    (repeat (setq Count (sslength SSet))
      (setq Count (1- COunt)
     Elem (ssname SSet Count))
      (if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
 (entmod (subst '(60 . 0) '(60 . 1) (entget Elem)))
 (prompt "\nEntity on a locked layer. Cannot make visible this entity. ")
      );end if
    );end repeat
   (prompt "\nDone...")
   )
  );end cond
 )
 (T (prompt "\nNo objects was hidden. "))
)
)

  • 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

Invis cũng giống như của bạn thôi, chỉ thêm phần kiểm tra locked layer.Mình post bên dưới,để lệnh là an (ẩn)

 

(defun c:an (/ SSet Count Elem)

 (defun Dxf (Id Obj)
   (cdr (assoc Id (entget Obj)))
 );end Dxf

 (prompt "\nSelect object(s) to hide: ")
 (cond
   ((setq SSet (ssget))
    (repeat (setq Count (sslength SSet))
      (setq Count (1- COunt)
     Elem (ssname SSet Count))
      (if (/= 4 (logand 4 (Dxf 70 (tblobjname "layer" (Dxf 8 Elem)))))
 (if (Dxf 60 Elem)
   (entmod (subst '(60 . 1) (assoc 60 (entget Elem)) (entget Elem)))
   (entmod (append (entget Elem) (list '(60 . 1))))
 )
 (prompt "\nEntity on a locked layer. Cannot hide this entity. ")
      );end if
    );end repeat
   )	 	
 );end cond
 (princ)
);end c:InVis

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  

×