Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
vietanh2108

[Help] Nhờ Chỉnh Sửa Lisp Zoom Tới Handle Id

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

vietanh2108    6

Em tìm được lisp này trên mạng với chức năng highlight và zoom tới đối tượng có Handle ID tương ứng. Nhờ bác nào đi qua giúp em thêm chức năng làm việc vơi 1 và cả với nhiều ID với.

Kiểu như em có list ID

A;B;C;D...

thì nó hightlight và zoom tất cả các đối tượng có ID trong chuỗi ngăn cách bởi ";"

Em xin chân thành cám ơn. :D

P/s: zhid để zoom tới, còn chid để tạo text ID của đối tượng.

;Zoom to handle ID
    (defun c:zhid ( / YourHandle ll ur )
      (vl-load-com)
      (setq YourHandle (getstring "\nEnter Handle: "))
      (if (handent YourHandle)
        (progn
          (vla-getboundingbox (vlax-ename->vla-object (handent YourHandle)) 'll 'ur)
          (vla-zoomwindow (vlax-get-acad-object) ll ur)
          (sssetfirst nil (ssadd (handent YourHandle)))
        )
        (princ "\nHandle not in drawing")
      )
      (princ)
    )
;Tao Handle ID
(defun c:chid (/ ss n ed sz)
  (setq sz (getvar 'TextSize))
  (prompt "Select objects: ")
  (if (and (setq ss (ssget)) (setq n (sslength ss)))
    (while (>= (setq n (1- n)) 0)
      (setq ed (entget (ssname ss n)))
      (entmake (list '(0 . "TEXT")
                     (assoc 10 ed)
                     (cons 1 (cdr (assoc 5 ed)))
                     (cons 40 sz)
               )
      )
    )
  )
  (princ)
)
  • 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
dinhvantrang    64

Gửi bạn file Excel này nhé.

bạn muốn chọn ID trong bản vẽ cũng được hoặc paste ID vào trong cột A cũng được.

 

Muốn Zoom tới đối tượng thì Double Click vào ID bất kỳ trong cột A để Zoom tới.

 

https://drive.google.com/file/d/0B-rpPA7_FcJkY25GMFVDSU10dXM/view?usp=sharing

  • 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
vietanh2108    6

Cảm ơn bác đã quan tâm, nhưng mà sử dụng file excel này còn nhiều hạn chế với em! kiểu e vẫn phải bật lên cóp handle qua tool này, thêm nữa nó chưa hỗ trợ 1 list các handle như thớt e 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
Doan Van Ha    2.676

Đây bạn!

 

;Zoom to handle ID
(defun c:zhid ( / YourHandle lst lst1 ss)
 (vl-load-com)
 (setq YourHandle (getstring "\nEnter List Handle: "))
 (setq lst (#String->ListString YourHandle ";"))
 (setq lst (mapcar 'handent (vl-remove-if '(lambda(x) (not (handent x))) lst)))
 (if lst
  (progn
   (setq lst1 (LM:ListBoundingBox (mapcar 'vlax-ename->vla-object lst)))
   (vla-zoomwindow (vlax-get-acad-object) (vlax-3d-point (car lst1)) (vlax-3d-point (cadr lst1)))
   (setq ss (ssadd)) (foreach s lst (ssadd s ss)) (sssetfirst nil ss))
  (princ "\nHandle not in drawing"))
 (princ))
;Tao Handle ID
(defun c:chid (/ ss n ed sz)
 (setq sz (getvar 'TextSize))
 (prompt "Select objects: ")
 (if (and (setq ss (ssget)) (setq n (sslength ss)))
  (while (>= (setq n (1- n)) 0)
   (setq ed (entget (ssname ss n)))
   (entmake (list '(0 . "TEXT") (assoc 10 ed) (cons 1 (cdr (assoc 5 ed))) (cons 40 sz)))))
 (princ))
(defun LM:ListBoundingBox ( objlst / l1 l2 ll ur )
 (foreach obj objlst
  (vla-getboundingbox obj 'll 'ur)
  (setq l1 (cons (vlax-safearray->list ll) l1) l2 (cons (vlax-safearray->list ur) l2)))
  (mapcar (function (lambda (a b) (apply 'mapcar (cons a b)))) '(min max) (list l1 l2)))
;; Convert String to List of Strings. EX1: (#String->ListString "1,2,3" ",") >> ("1" "2" "3") ; EX2: (#String->ListString "1ab2ab3" "ab") >> ("1" "2" "3")
(defun #String->ListString(str del / pos lst) (while (setq pos (vl-string-search del str)) (setq lst (cons (substr str 1 pos) lst) str (substr str (+ pos 1 (strlen del))))) (reverse (cons str lst)))
  • 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
dinhvantrang    64

Cảm ơn bác đã quan tâm, nhưng mà sử dụng file excel này còn nhiều hạn chế với em! kiểu e vẫn phải bật lên cóp handle qua tool này, thêm nữa nó chưa hỗ trợ 1 list các handle như thớt e nhờ á ^^

Cũng không hiểu bác sử dụng thế nào nữa. Bác Click nút chọn "GET ID HANDLE" để quét chọn đối tượng trong Autocad, nó sẽ ghi ID thêm vào file Excel cho bác.

Sau đó bác Double Click vào ID trong cột "A" để Zoom thôi.

 37575_capture_1.png

  • 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

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  

×