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

Nhờ viết lisp delete dimension có giá trị bằng 0 ( measurement =0)

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

Mình có 1 vấn đề nhờ a e trên diễn đàn giúp với. Mình sử dụng lệnh Qdim ( cad minh 2020, chắc lệnh này cad đời cao mới có) nên nó xuất hiện vài dimension có giá trị bằng 0 ( measurement =0). Và click từng cái để delete đi thì lâu, dùng lệnh FI thì không lọc được đối tượng đó. 

- Mình muốn delete các dimension có giá trị bằng 0 đó 1 cách nhanh nhất. ( gõ lệnh 1 phát là nó tự chọn các dimension có giá trị bằng 0, chỉ việc delete đi thôi ạ )

- Cảm ơn a e/ ( p/s: nếu lisp này đơn giản thì cho mình xin, còn nếu phức tạp thì mình xin gửi mấy cốc cafe )

1.jpg

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

Mình có 1 vấn đề nhờ a e trên diễn đàn giúp với. Mình sử dụng lệnh Qdim ( cad minh 2020, chắc lệnh này cad đời cao mới có) nên nó xuất hiện vài dimension có giá trị bằng 0 ( measurement =0). Và click từng cái để delete đi thì lâu, dùng lệnh FI thì không lọc được đối tượng đó. 

- Mình muốn delete các dimension có giá trị bằng 0 đó 1 cách nhanh nhất. ( gõ lệnh 1 phát là nó tự chọn các dimension có giá trị bằng 0, chỉ việc delete đi thôi ạ )

- Cảm ơn a e/ ( p/s: nếu lisp này đơn giản thì cho mình xin, còn nếu phức tạp thì mình xin gửi mấy cốc cafe )

1.jpg

Đang cafe rảnh code cho bạn không biết ok không ? Chủ thớt test nhé.

(defun c:test  (/)
  (vl-load-com)
  (vlax-for x  (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
    (if (and
          (member (vla-get-ObjectName x) '("AcDbRotatedDimension"))
          (= (vla-get-measurement x) 0.0)
          )
      (vla-delete x)
      )
    )
  )

 

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
23 phút trước, Bee đã nói:

Đang cafe rảnh code cho bạn không biết ok không ? Chủ thớt test nhé.


(defun c:test  (/)
  (vl-load-com)
  (vlax-for x  (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
    (if (and
          (member (vla-get-ObjectName x) '("AcDbRotatedDimension"))
          (= (vla-get-measurement x) 0.0)
          )
      (vla-delete x)
      )
    )
  )

 

 

bạn check lại hộ mình nhé, load về nó hiện ra ntn: 

Command: AP APPLOAD TEST LISP.lsp successfully loaded.


Command:
Command:
Command: TEST nil

Command:

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
23 phút trước, jangboko đã nói:

 

bạn check lại hộ mình nhé, load về nó hiện ra ntn: 

Command: AP APPLOAD TEST LISP.lsp successfully loaded.


Command:
Command:
Command: TEST nil

Command:

Bạn check lại trg bản vẽ có còn dim 0.0 ?

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
12 phút trước, jangboko đã nói:

vẫn còn bạn ạ, như chưa bắt đầu :D

vậy bạn up bản vẽ lên xem thế nào.

 

Khả năng dim đấy có giá trị rất bé nhg không phải là 0.0

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
30 phút trước, jangboko đã nói:

bạn xem bản vẽ giùm mình nhé

new block.dwg

Thử code này xem



(defun c:DC ( / ss number)
  (setq number (getreal "\nNhap gia tri sai so :"))
  (setq ss (ssget (append (list '(0 . "*DIMENSION")  '(-4 . "<")) (list (Cons 42 Number) ))))
  (SSSETFIRST nil ss)
  )

  • Like 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
47 phút trước, jangboko đã nói:

bạn xem bản vẽ giùm mình nhé

new block.dwg

(defun c:test  (/)
  (vl-load-com)
  (vlax-for x  (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
    (if (and (member (vla-get-ObjectName x) '("AcDbRotatedDimension"))
             (< (vla-get-measurement x)
                (read (strcat "1e-" (itoa (vla-get-PrimaryUnitsPrecision x))))))
      (vla-delete x)))
  (princ))

  • Like 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
1 giờ trước, jangboko đã nói:

bạn xem bản vẽ giùm mình nhé

new block.dwg

Bạn thay = thành < và 0.0 thành 0.0001 hoặc 0.1 sai số bn tùy bạn thử xem.

 

Của bạn nó rất nhỏ:

1907949875_nh.png.66f90b291e294a25a94c07b89bda76c7.png384862794_nh.png.f72ad6f16ff914adf6d6c4d9ea6f0c2a.png

  • Like 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
2 giờ trước, Bee đã nói:

Bạn thay = thành < và 0.0 thành 0.0001 hoặc 0.1 sai số bn tùy bạn thử xem.

 

Của bạn nó rất nhỏ:

1907949875_nh.png.66f90b291e294a25a94c07b89bda76c7.png384862794_nh.png.f72ad6f16ff914adf6d6c4d9ea6f0c2a.png

 

2 giờ trước, NTHAHT đã nói:

(defun c:test  (/)
  (vl-load-com)
  (vlax-for x  (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))
    (if (and (member (vla-get-ObjectName x) '("AcDbRotatedDimension"))
             (< (vla-get-measurement x)
                (read (strcat "1e-" (itoa (vla-get-PrimaryUnitsPrecision x))))))
      (vla-delete x)))
  (princ))

 

2 giờ trước, Danh Cong đã nói:

Thử code này xem

 





	(defun c:DC ( / ss number)
	  (setq number (getreal "\nNhap gia tri sai so :"))
	  (setq ss (ssget (append (list '(0 . "*DIMENSION")  '(-4 . "<")) (list (Cons 42 Number) ))))
	  (SSSETFIRST nil ss)
	  )

Cảm ơn mọi người đã quan tâm giúp đỡ nhé. mình làm được 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

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  

×