Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
- - - - -

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


  • Please log in to reply
7 replies to this topic

#1 vietanh2108

vietanh2108

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 07 April 2017 - 05:46 PM

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)
)

  • 1

#2 dinhvantrang

dinhvantrang

    biết lệnh mirror

  • Members
  • PipPipPip
  • 158 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 07 April 2017 - 07:33 PM

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...iew?usp=sharing


  • 1

Thanks and Best Regards

Skype : dinhvantrang73

 

Group hướng dẫn lập trình VBA cho Autocad & Excel

https://www.facebook...46532865799936/

 

Series video hướng dẫn lập trình VBA cho Autocad & Excel

https://www.youtube....m54mGak6O9YSmfT


#3 vietanh2108

vietanh2108

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 08 April 2017 - 10:03 AM

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ờ á ^^


  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5515 Bài viết
Điểm đánh giá: 2658 (tuyệt vời)

Đã gửi 08 April 2017 - 10:48 AM

Đâ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)))

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#5 vietanh2108

vietanh2108

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 08 April 2017 - 11:20 AM

Sao em sử dụng nó cứ báo lỗi thế này ko bác ơi!! :(

Capturee66f8.jpg


  • 0

#6 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5515 Bài viết
Điểm đánh giá: 2658 (tuyệt vời)

Đã gửi 08 April 2017 - 11:22 AM

Bạn down bị lỗi ấy. Copy code paste vào file đi.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#7 dinhvantrang

dinhvantrang

    biết lệnh mirror

  • Members
  • PipPipPip
  • 158 Bài viết
Điểm đánh giá: 38 (tàm tạm)

Đã gửi 08 April 2017 - 11:37 AM

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


  • 1

Thanks and Best Regards

Skype : dinhvantrang73

 

Group hướng dẫn lập trình VBA cho Autocad & Excel

https://www.facebook...46532865799936/

 

Series video hướng dẫn lập trình VBA cho Autocad & Excel

https://www.youtube....m54mGak6O9YSmfT


#8 vietanh2108

vietanh2108

    biết zoom

  • Members
  • Pip
  • 17 Bài viết
Điểm đánh giá: 5 (bình thường)

Đã gửi 08 April 2017 - 01:27 PM

Em sử dụng được rồi!!! cám ơn 2 bác nhiều... :D


  • 1