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

[HELP] Lấy đối tượng đầu tiên trong tập chọn

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

Mình tham gia 1 cái, không dùng đường  "công vụ" và gọn hơn tý!

(defun c:tt  (/ ang els ent etp lst p10 ss)
  (if (and (setq ent (car (entsel "\nChon Dimension trong hang can loai bo: ")))
           (member (setq etp (vla-get-ObjectName (vlax-ename->vla-object ent)))
                   '("AcDbAlignedDimension" "AcDbRotatedDimension"))
           (setq els (entget ent))
           (setq ss (ssget '((0 . "DIMENSION") (-4 . "<NOT") (-4 . "&") (70 . 6) (-4 . "NOT>")))))
    (progn (setq ang (rem (cond ((eq etp "AcDbRotatedDimension") (cdr (assoc 50 els)))
                                ((eq etp "AcDbAlignedDimension") (angle (cdr (assoc 13 els)) (cdr (assoc 14 els)))))
                          pi)
                 p10 (polar (cdr (assoc 10 els)) ang 1.0)
                 lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
           (foreach e  lst
             (if (equal (rem (angle p10 (cdr (assoc 10 (entget e)))) pi) ang 1e-8)
               (setq ss (ssdel e ss))))
           (sssetfirst nil ss)))
  (princ))

 

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
3 giờ trước, quocmanh04tt đã nói:

Mình tham gia 1 cái, không dùng đường  "công vụ" và gọn hơn tý!


(defun c:tt  (/ ang els ent etp lst p10 ss)
  (if (and (setq ent (car (entsel "\nChon Dimension trong hang can loai bo: ")))
           (member (setq etp (vla-get-ObjectName (vlax-ename->vla-object ent)))
                   '("AcDbAlignedDimension" "AcDbRotatedDimension"))
           (setq els (entget ent))
           (setq ss (ssget '((0 . "DIMENSION") (-4 . "<NOT") (-4 . "&") (70 . 6) (-4 . "NOT>")))))
    (progn (setq ang (rem (cond ((eq etp "AcDbRotatedDimension") (cdr (assoc 50 els)))
                                ((eq etp "AcDbAlignedDimension") (angle (cdr (assoc 13 els)) (cdr (assoc 14 els)))))
                          pi)
                 p10 (polar (cdr (assoc 10 els)) ang 1.0)
                 lst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
           (foreach e  lst
             (if (equal (rem (angle p10 (cdr (assoc 10 (entget e)))) pi) ang 1e-8)
               (setq ss (ssdel e ss))))
           (sssetfirst nil ss)))
  (princ))

 

Hay quá, nhưng khác tí ở lisp trước. Bác đang viết là nó sẽ chọn tất cả các đối tượng dim ngoại trừ dim cùng hàng. Còn lisp kia mà nó sẽ chọn tất cả các đối tượng dim ngoại trừ dim cùng hàng và khác gó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

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  

×