vietduc147258 49 Báo cáo bài đăng Đã đăng Tháng 11 11, 2022 Mình có sưu tập được lisp lọc để chọn đối tượng block cùng tên rất tiện dụng. Nhưng không lọc được các block động (Dynamic Block). Đã thử QSELECT và FILTER nhưng cũng thất bại. Mong các bác giúp em sửa lisp lọc này. (defun c:fb ( / blockname sset); filter all blocks of same name (setq blockname (cdr (assoc 2 (entget (car (entsel)))))) (setq sset (ssget (list (cons 2 blockname)))) (sssetfirst sset sset) (princ (strcat "\nSelected " (itoa (sslength sset)) " instances of block \"" blockname "\".")) (princ) ) P/S: Có lisp SelDB.vlx làm được việc này nhưng khi load lisp nó mở lên trang web cộng với chức năng tìm kiếm chuyên sâu hơn. Nên lisp dùng hơi nhiều thao tác. https://www.cadstudio.cz/dl/SelDB.vlx 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
huunhantvxdts 195 Báo cáo bài đăng Đã đăng Tháng 11 11, 2022 2 giờ trước, vietduc147258 đã nói: Mình có sưu tập được lisp lọc để chọn đối tượng block cùng tên rất tiện dụng. Nhưng không lọc được các block động (Dynamic Block). Đã thử QSELECT và FILTER nhưng cũng thất bại. Mong các bác giúp em sửa lisp lọc này. (defun c:fb ( / blockname sset); filter all blocks of same name (setq blockname (cdr (assoc 2 (entget (car (entsel)))))) (setq sset (ssget (list (cons 2 blockname)))) (sssetfirst sset sset) (princ (strcat "\nSelected " (itoa (sslength sset)) " instances of block \"" blockname "\".")) (princ) ) P/S: Có lisp SelDB.vlx làm được việc này nhưng khi load lisp nó mở lên trang web cộng với chức năng tìm kiếm chuyên sâu hơn. Nên lisp dùng hơi nhiều thao tác. https://www.cadstudio.cz/dl/SelDB.vlx Bạn xem được không nhé (defun C:CBLM (/ ent1 ss ssblc tenblmau) (setq ent1 (car (LM:SelectIf "\nCh\U+1ECDn Block m\U+1EABu:" (lambda (x) (eq "INSERT" (cdr (assoc 0 (entget (car x))))) ) entsel nil))) (setq tenblmau (laytenblock ent1)) (princ "\nChon vung:") (setq ss (ss->lst (ssget (list (cons 0 "INSERT"))))) (setq ssblc (List-to-ss (vl-remove-if-not '(lambda (x) (= (laytenblock x) tenblmau)) ss))) (sssetfirst ssblc ssblc) (princ) ) ;;---------------------=={ Select if }==----------------------;; ;; ;; ;; Provides continuous selection prompts until either a ;; ;; predicate function is validated or a keyword is supplied. ;; ;;------------------------------------------------------------;; ;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;; ;;------------------------------------------------------------;; ;; Arguments: ;; ;; msg - prompt string ;; ;; pred - optional predicate function [selection list arg] ;; ;; func - selection function to invoke ;; ;; keyw - optional initget argument list ;; ;;------------------------------------------------------------;; ;; Returns: Entity selection list, keyword, or nil ;; ;;------------------------------------------------------------;; (defun LM:SelectIf ( msg pred func keyw / sel ) (setq pred (eval pred)) (while (progn (setvar 'ERRNO 0) (if keyw (apply 'initget keyw)) (setq sel (func msg)) (cond ((= 7 (getvar 'ERRNO)) (princ "\nMissed, Try again.")) ((eq 'STR (type sel)) nil) ((vl-consp sel) (if (and pred (not (pred sel))) (princ "\nInvalid Object Selected.")))))) sel) ;;;;;;;;;;;;;;; (defun List-to-ss (lst / ss) (setq ss (ssadd)) (foreach item lst (or (= (type item ) 'Ename) (setq item (vlax-vla-object->ename item))) (setq ss (ssadd item ss)) ) ss ) ;;;;;;;;;;;;;;;;; (defun laytenblock (ent / blk_name) (if (not (setq blk_name (vlax-get (vlax-Ename->Vla-Object ent) 'Effectivename))) (setq blk_name (vla-get-name (vlax-Ename->Vla-Object ent))) ) blk_name ) ;;;;;;;;;;;;;;;;;;;;;;;;; (defun ss->lst (ss / lst) (if ss (setq lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))) ) ) 1 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
vietduc147258 49 Báo cáo bài đăng Đã đăng Tháng 11 12, 2022 thank @huunhantvxdts đúng ý mình cần 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
Minh Nghĩa 2 Báo cáo bài đăng Đã đăng Tháng 11 13, 2022 Bạn dùng thử lệnh select similar xem, mình thấy lệnh này chọn nhanh đối tượng theo nhiều thuộc tí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
vietduc147258 49 Báo cáo bài đăng Đã đăng Tháng 11 14, 2022 17 giờ trước, Minh Nghĩa đã nói: Bạn dùng thử lệnh select similar xem, mình thấy lệnh này chọn nhanh đối tượng theo nhiều thuộc tính Thank! lệnh rất hay mà giờ mới biết. nhưng nó chọn tất cả luôn. không cho chọn đối tượng riêng 1 vù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