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

[Yêu Cầu] Lisp Nhận Dạng Dim Thay Đổi Sau Khi Dùng Lệnh

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

Xin chào mọi người

Công việc của em đang làm hiện tại dùng lệnh Stretch nhiều mà nhiều lúc Stretch xong có một vài dim nó bị thay đổi kích thước so với ban đầu. Vậy xin hỏi có lsp nào có thể đổi màu các dim đó sang một màu riêng biệt nếu như nó thay đổi giá trị sau khi dùng lệnh không?

Ví dụ em dùng lệnh Stretch Kéo một hình vuông 100x100 lên 100x110 thì cái dim 110 nó sẽ chuyển sang màu đỏ. hoặc bất cứ loại gì đó mà mình có thể dễ nhận ra
Vì khi Stretch đôi khi có những dim không muốn thay đổi nhưng vô tình nó thay đổi mà mình không kiểm soát  được khiến bản vẽ bị sai,

Ngoài ra cho em hỏi. Nếu có lsp đó thì có thể áp dụng cho lệnh khác ngoài Stretch được không?

Mong được mọi người giúp đỡ. Em xin cảm ơ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

Lisp đánh dấu (gán màu đỏ cho text của dim) các Dim bị thay đổi trước và sau khi dùng 1 số lệnh, như Stretch/Scale/Trim/Extened...

Xem cách sử dụng trong file lisp.

 

; Doan Van Ha - CadViet.com - Ngay 16/7/2015
; Lisp danh dau cac text cua dim bi thay doi truoc va sau khi dung mot so lenh, mark by red color.
; Cach dung:
; - Truoc khi thay doi: dung lenh HA1
; - Sau khi thay doi: dung lenh HA2.
; - VD: HA1 -> Strecth/Scale/Trim/Extend... -> HA2.
(defun C:HA1() 
 (setq lst1 (#SS->List (setq ss (ssget "_X" '((0 . "DIMENSION"))))))
 (princ))
(defun C:HA2( / lst2 i)
 (setq lst2 (#SS->List ss))
 (setq i 0)
 (repeat (length lst1)
  (if
   (and
    (equal (car (nth i lst1)) (car (nth i lst2)))
    (not (equal (cdr (nth i lst1)) (cdr (nth i lst2)))))
   (vla-put-TextColor (vlax-ename->vla-object (car (nth i lst2))) 1))
  (setq i (1+ i)))
 (setq lst1 nil) 
 (princ))
(defun #SS->List (ss / i ent lst)
 (repeat (setq i (sslength ss))
  (setq ent (ssname ss (setq i (1- i))))
  (setq lst (cons (cons ent (Get_txt ent)) lst))))
(defun Get_Txt(ent)
 (if (= "" (cdr (assoc 1 (entget ent))))
  (rtos (cdr (assoc 42 (entget ent))) 2 4)
  (cdr (assoc 1 (entget ent)))))
(vl-load-com)
  • 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

Hay là do bạn chép thiếu? Bạn gởi file đã chép lên tôi coi lại.

 

Có 2 điều phải xin lỗi Bác Ha

Thứ nhất là đăng bài xin lisp rồi để lâu quá mới rep lại Bác trong khi bác giúp đỡ nhiệt tình

Thứ 2 là trong khi copy lisp của bác cẩu thả để có một khoảng trắng đầu dòng nên lisp không chạy

Giờ thì e copy lại và tất cả đã ok rồi. Cảm ơn bác đã giúp đỡ và mong bác tha lỗi

Chúc bác Sức khỏe và luôn may mắn. cảm ơn bác lần nữa

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  

×